Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

《UNIX环境高级编程》文件共享及fork函数

《UNIX环境高级编程》文件共享及fork函数

UNIX系统支持在不同进程间共享打开文件。内核使用3种数据结构表示打开文件,它们之间的关系决定了文件共享方面一个进程对另一个进程可能产生的影响。 内核维持了3个表,即进程表,文件表和v节点表。具体如下: 1>每个进程在进程表中都有一个纪录项,记录项中包含一张打开文件描述符表,每个描述符占用一项。与每个文件描述符相关联的是: a. 文件描述符标志(close_on_exec); b. 指向一个文件表项的指针。 2>内核为所有打开文件维持...
二叉查找树转换成排序的双向链表

二叉查找树转换成排序的双向链表

题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。比如将二元查找树10/ 6 14/ / 4 8 12 16转换成双向链表4=6=8=10=12=14=16。思路:对于树的很多题目,都可以使用递归的方法来处理。这道题目也不例外。我们从最基本的思路来考虑这个题目。把一个二叉树编程双向链表,最终是一个有序的序列,也就是中序遍历之后的结果,那么当我们采用中序遍历的方式遍历二叉树时,遍历到某个节点,是的...
STL源码剖析--各个容器迭代器的分类

STL源码剖析--各个容器迭代器的分类

五类迭代器如下:1、输入迭代器:只读,一次传递为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流istream中读取。一个输入迭代器仅能对它所选择的每个元素进行一次解析,它们只能向前移动。一个专门的构造函数定义了超越末尾的值。总是,输入迭代器可以对读操作的结果进行解析(对每个值仅解析一次),然后向前移动。2、输出迭代器:只写,一次传递这是对输入迭代器的补充,不过是写操作而不是读操作。为输出迭...
Java并发编程 -volatile关键字

Java并发编程 -volatile关键字

Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他的线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序,volatile变量 不会被缓存在寄存器或者对处理器不可见的地方,因此在读取volatile变量时总会返回最新写入的值。访问volatile变量不会执行加锁操作,因此也就不会使得执行线程阻塞,因此volatile变量是一种比s...
C#的未来:追踪空引用

C#的未来:追踪空引用

在 .NET 中最常见的错误类型大概要数空引用异常了。这个错误的根源在于 C# 无法表达出非空引用的概念,这也导致让编译器强制进行空检查变成一种过于繁重的任务。为了应对这个问题,某条提议建议使用一种强制引用,以及一种明确的可空引用的定义。在提议中,可空引用将使用?后缀进行定义,正如可空值类型的定义方式一样。而强制引用,或者说非空引用将使用!后缀进行定义。强制引用以及可空引用都应该被视为一种仅限于语言本身的概念,它们只是改变了编译器的行为,但不会改动所生成的...
C++string中有关大小和容量的函数浅析

C++string中有关大小和容量的函数浅析

1.length()与size()length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。 string类的size()/length()方法返回的是字节数,不管是否有汉字。两者原型如下:size_type__CLR_OR_THIS_CALLlength()const { //returnlengthofse...
Lua解析脚本过程中的关键数据结构介绍

Lua解析脚本过程中的关键数据结构介绍

在这一篇文章中我先来介绍一下lua解析一个脚本文件时要用到的一些关键的数据结构,为将来的一系列代码分析打下一个良好的基础。在整个过程中,比较重要的几个源码文件分别是:llex.h,lparse.h、lobject.h和lopcode.h。在llex.h中1 typedef struct Token {2int token;3SemInfo seminfo;4 } Token;Token代表了一个词法单元,其中token表示词法类型如TK_NAME、TK_N...
Lua中的string类型

Lua中的string类型

在lua中用union TString来表示字符串类型lobject.h:其中结构体tsv中 reserved字段表示字符串是不是保留关键字,hash是其哈希值,len是其长度。我们在TString中没有看到lua将字符串的内容存在任何地方啊,其实lua是将内容同一存在了另一个地方,global_state中的strt里面:lstate.h:lstate.h:其中字段hash为二维数组,这里面保存了lua中所有的字符串。接下来让我们来看看lua是怎样生成一...
[C/C++基础] C语言常用函数strlen的使用方法

[C/C++基础] C语言常用函数strlen的使用方法

函数声明:extern unsigned int strlen(char *s);所属函数库:<string.h>功能:返回s所指的字符串的长度,其中字符串必须以’’结尾参数:s为字符串的初始地址使用举例:代码如下编译运行结果说明:函数strlen比较容易理解,其功能和sizeof很容易混淆。其中sizeof指的是字符串声明后占用的内存长度,它就是一个操作符,不是函数;而strlen则是一个函数,它从第一个字节开始往后数...
[C/C++基础] C语言常用函数memset的使用方法

[C/C++基础] C语言常用函数memset的使用方法

函数声明:void *memset(void *s, int ch, size_t n);用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码。所属函数库:<memory.h> 或者 <string.h>参数:(1)s,开始内存的地址;(2)ch和n,从地址s开始,在之后的n字节长度内,把每一个字节的值都赋值为n。使用举例:代码如下编译运行结果说明:该函数最常用的用途就是将一段新分配的内存初始化为0。例如我们代码...
Java中如何实现单例模式

Java中如何实现单例模式

Java中,单例模式通常有2种分类饿汉模式和懒汉模式。饿汉模式指的是单例实例在类装载时就被创建了。懒汉方式值的是单例实例在首次使用时才被创建。无论是饿汉模式还是懒汉模式,都是用了一个静态成员变量来存放真正的实例。并且私有化构造函数,防止被外部实例化。单例(饿汉模式)代码:public class Singleton { private final static Singleton INSTANCE = new Singleton(); //私有化...
C# 泛型的协变和逆变

C# 泛型的协变和逆变

1. 可变性的类型:协变性和逆变性可变性是以一种类型安全的方式,将一个对象当做另一个对象来使用。如果不能将一个类型替换为另一个类型,那么这个类型就称之为:不变量。协变和逆变是两个相互对立的概念:如果某个返回的类型可以由其派生类型替换,那么这个类型就是支持协变的如果某个参数类型可以由其基类替换,那么这个类型就是支持逆变的。2. C# 4.0对泛型可变性的支持在C# 4.0之前,所有的泛型类型都是不变量——即不支持将一个泛型类型替换为另...
Python进程池:multiprocessing.pool

Python进程池:multiprocessing.pool

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,十几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,此时可以发挥进程池的功效。Pool可以提供指定数量的进程供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的...
<< 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 >>