进程间通信方式:
1. 信号 ( Sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生;
2. 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(通常是指父子进程关系)
的进程间使用;
3. 命名管道FIFO:命名管道(Named Pipe)也是半双工的通信方式,但是它允许无亲缘关系进程间的通信;
4. 命名socket或UNIX域socket(Named Socket或Unix Domain Socket):socket也是一种进程间通信机制,与其他通
信机制不同的是,它可用于不同进程间的进程通信;
5. 信号量(Semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止
某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段;
6. 共享存储(Shared Memory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但
多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其
他通信机制,如信号两,配合使用,来实现进程间的同步和通信;
7. 消息队列(Message Queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信
号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点;
C++中内存泄漏问题:
二叉树的时间复杂度:O(n)
结构体对齐
文件操作方式:w+,a,w,wb等等
r:打开一个文本文件只读
w:打开一个文本文件只写
a:对一个文本文件添加
rb:打开一个二进制文件只读
wb:打开一个二进制文件只写
ab:对一个二进制文件添加
r+:打开一个文本文件读/写
w+:生成一个文本文件读/写
a+:打开一个文本文件读/写
rb+:打开二进制文件读/写
wb+:生成二进制文件读/写
ab+:打开二进制文件读/写
如果用写方式打开一个文件,则原先该文件的任何内容会被抹掉,并开始一个新文件。如果不存在那个名字的文件,就生成一个文件。如果你想往文件的尾部再加写一个内容,就必须使用模式“a”。如果文件不存在,就返回出错信息。在打开 一个文件准备进行读操作是,该文件必须存在。如果文件不存在,返回一个出错信息。最后,打开一个读/写操作的文件,如果文件存在它不会被抹掉;如果文件不存在就生成一个文件。
删除函数
iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
void pop_back():删除向量中最后一个元素
void clear():清空向量中所有元素
动态库和静态库的使用:
处理器调度的基本单位是 :线程 资源分配的基本单位是:进程
内联函数(inline):相当于C中的 #define
用宏定义判断一个数是否为2的n次幂的数: #define x if(x/2)
原码反码补码的关系:正整数的原码反码补码都是一样的,看符号位(第一位)为零
原码转换为反码:符号位不变,数值位分别“按位取反”
反码转换为原码也是一样:符号位不变,数值位分别“按位取反”
原码转换为补码:符号位不变,数值位按位取反,末位再加1
补码转换为原码:符号位不变,数值位按位取反,末位再加1。即补码的补码等于原码
求补(变补),即已知[X]补,求[-X]补 。符号位和数都取反,末位加1。
总结一下:
正整数的原码、反码和补码都一样;
负数部分:
原码和反码的相互转换:符号位不变,数值位按位取反
原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1
已知补码,求原码的负数的补码:符号位和数值位都取反,末位再
结构体对齐的问题,sizeof求结构体大小(详情准备写博客) 参照: https://www.cnblogs.com/0201zcr/p/4789332.html
用宏定义求数组table元素个数表达式:#define size(table) sizeof(table)/sizeof(table[0])
O(n^2) 各种算法的时间复杂度: https://www.cnblogs.com/wuxiangli/p/6399266.html
将整型数2017直接赋值地址0x6880表达式:(unigned int*)0x6880 = 2017
宏定义:简单的替换 不运算 eg:#define MUTIP(a,b) a*b 则MUTIP(2+3,5+1) 2+3*5+1=18
func((e1,e2),(e3,e4,e5))中(e1,e2)和(e3,e4,e5)都是“逗号表达式”,只有最后一个表达式起作用,(e1,e2)中e2起作用,(e3,e4,e5)中e5 起作用;所以func((e1,e2),(e3,e4,e5))就调用实参而言等价于func(e2,e5),只有两个实参.
本题中实参有4个:a,b,c,e
局部变量:栈 全局变量(静态变量):初始化的在数据段,未初始化的在bss段 动态申请数据:堆