知识杂记(持续更新)

进程间通信方式:

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段     动态申请数据:堆 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值