- 博客(14)
- 资源 (27)
- 收藏
- 关注
原创 signal信号处理基础篇
signal函数的原型如下void ( *signal( int ,void (*fun)(int) ) ) (int),由此可见该函数的返回值是一个指向 void fun(int)类型的指针,即返回上一次和该信号绑定的 信号处理函数地址。 进程对信号的处理有三种方式:(1)忽略此信号,如signal(SIGINT,SIG_IGN); (2)捕捉该信号 ,如signal(SI...
2018-03-04 14:50:55
705
原创 信号处理---可重入函数
信号发生时,信号函数调用了系统函数如malloc。main主进程中也调用这个系统函数malloc。这种情况下会给main主进程的malloc调用带来不可预期的结果。因为malloc维护着一个内存分配的链表,信号函数也会对这个链表做修改。固malloc为不可重入函数。反之两者同时调用,而不会相互影响的则为可重入函数。 不可重入函数,通常包括以下特点: a:使用静态数据结构;b:调用...
2018-03-03 16:03:52
550
原创 关于python中的全局变量global
在python中global的声明代表的是全局变量,今天写了个damex=99#test globaldef editglb(isglb=False): if isglb: global x x=123 else: x=8888 print('now x is',x)edit
2017-05-14 09:29:52
394
原创 归并排序及延伸(找出数组中的逆序对)
////////////////////////////////////////////////归并排序,时间复杂度nlog(n),空间复杂度o(n),稳定排序////先把数字折半划分递归下去,直到每组的个数为1,///然后相邻的两组各自排序,然后合并。递归回来合并///较大数组。log(n)层完成排序,每层比较n次。int dosort(int *pdata,int *pcopy,in
2017-03-16 19:05:26
270
原创 vector/list/deque小结
1、VECTOR是一种将数据存放在连续内存上有序容器。其关键的实现技术在于a:容器大小的分配b:内存重新分配时的数据移动效率。注意点:所谓的动态内存分配,并不是直接在原来的地址后面重新申请一块内存拼接上去(因为有可能原地址后面可用的内存大小满足不了新的需求),而是重新申请一块是原来内存大小的两倍值。然后将旧数据从原空间拷贝到新空间上,在开始在后面内存构建新插入的元素。
2017-03-03 16:00:22
271
原创 tcp协议随笔
1、滑动窗口:为了避免网络拥塞,滑动窗口里已发送但未收到ack确认的消息,收到ack后,发送消息的窗口往前移以便发送新的数据。 这个过程就是滑动窗口2、为了避免网络拥塞,发送端的发送速度由(接收窗口和拥塞窗口大小决定,发送端窗口大小取两者最小值)a、慢开始算法:tcp连接后拥塞窗口为1,然后每次收到消息确认后 指数增加(不断乘以2),当拥塞窗口的值达到慢开始门限时,改用拥塞避免算法b、
2017-02-23 23:17:02
314
原创 冒泡排序、选择排序、插入排序、快速排序
#include//冒泡排序,思想:从最末位开始 往前一位一位比较,比前一位小的话,就交换位置//两个for,第一个for循环用于固定位置,第二个for循环用于固定位置的数和前面的数循环比较void maopaosort(int *p ,int n){int i=0,j=0;int temp= 0;for(i=n-1;i>0;i--){for(j=i;j>0;j
2017-02-21 21:29:57
285
原创 最大传输单元---MTU
数据链路层传输数据包有个最大的大小上限,mtu。位于数据链路层的上层协议--IP层向数据链路层传输的数据包长度如果超过mtu,那么IP层就需要进行分片,把数据分成若干片,使得每片都小于 mtu的大小,然后在传输给数据链路层。
2017-02-18 23:20:31
706
原创 c语言中的数组名注意点
int a[5]={1,2,3,4,5};int *p=(int *)(a+1);int *ptr=(int *)(&a+1); 上述的三行代码得出的指针p和ptr的值是不一样的: (1)a+1是以步长为一个int长度(这里当成是4字节)移动一步。 (2)&a+1是以步长为整个数组(5个int的大小,这里是20字节)
2013-10-16 20:41:37
663
翻译 linux下的预处理--编译--汇编---连接
linux下的预处理命令如下:gcc -E hello.c -o hello.i 将hello.c源文件预处理生成hello.i文件 预编译主要处理一‘#’开头的预编译指令: 将所有的"#define"删除,并且展开所有的宏定义处理所有条件预编译指令处理"#include",将包含的文件插入到该预编译指令的位置。注意,这个过程是递归进行.
2013-08-12 20:02:59
585
转载 ARM板中的NAND Flash和NOR Flash
NoR Flash的特点是在芯片内执行,这样应用程序可以直接在Flash内运行,不必再把代码读到系统RAM中。NARD Flash中每个块的最大擦写次数是100万次,是NOR Flash的10倍,使得NAND FLASH 越来越受到人们的喜爱
2013-08-08 23:25:00
722
翻译 linux 下exit()和_exit()区别
_exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构; exit() 函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。 exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况
2013-08-08 16:59:10
472
原创 linux 下两类主要的设备文件:字符设备,块设备
linux下有两类主要的设备文件:一种是字符设备,另一种是块设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧着接发生了;而对于块设备而言,它是利用系统内存作缓冲区,如果该缓冲区里的数据能满足用户进程对设备的请求,就返回请求的数据,如果不能,就调用函数来进行实际的I/O 操作。 块设备主要是针对磁盘等速度比较慢的设备设计的,以避
2013-08-05 23:57:58
983
原创 socket中数据流与数据报
常见的socket有流式socket、数据报socket和原始socket三种类型。流式套接字(SOCK_STREAM)提供可靠的、面向连接的通信流,它使用TCP协议,保证正确性和顺序性 数据报套接字(SOCK_DGRAM)定义一种无连接服务,数据通过相互独立的报文进行传输,是无序的,不保证是可靠的。 原始套接字允许对底层协议如IP或ICMP进行直接访问,它
2013-08-05 21:58:21
2475
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人