- 博客(22)
- 资源 (2)
- 收藏
- 关注
原创 广播地址结算方法
IP:192.168.1.211子网掩码:255.255.255.240翻译成二进制:IP:11000000 10101000 00000001 11010011子网掩码: 11111111 11111111 11111111 1111 0000 根据子网源码推算 IP的网络ID为 :前28位,主机id为后四位也就是子网掩码与任...
2019-07-21 08:54:42
533
原创 linux 原生aio API详解
如下:extern int io_setup(int maxevents, io_context_t *ctxp);extern int io_destroy(io_context_t ctx);extern int io_submit(io_context_t ctx, long nr, struct iocb *ios[]);extern int io_cancel(io_conte...
2018-12-09 22:53:40
1082
原创 nginx-启动分析
目录 源码如下1.函数ngx_debug_init()函数在linux是未定的,什么事情都不做2.ngx_strerror_init()函数是用来初始化系统错误信息的3.ngx_get_options(argc, argv) 根据输入参数设置全局变量4.ngx_time_init()设置以下全局变量全是表示时间。5.ngx_regex_init()如果有正则表达式的库引...
2018-11-24 03:17:41
288
原创 Nginx-环境变量
今日看nginx源码,有个environ变量,在没有赋值的情况下就用了,翻遍源码也没看到是在哪儿负的值,于是想到可能是系统中的变量,或者宏或者函数。在系统头文件中找到有关于他的信息,但是还是没有找到他的本意,于是在网上搜索https://blog.youkuaiyun.com/tom601/article/details/70036701?utm_source=blogkpcl8 这篇文章说明了e...
2018-11-23 23:21:45
3657
原创 epoll编程
实例编程后续完善各种问题处理,以及定时处理等等:myepoll.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/epoll.h>#include <netinet/in.h>#include <sys/socket.h&...
2018-10-17 00:01:52
258
原创 外部排序-2路平衡归并-k路平衡算法和败者树
思路:开辟出三个缓存区,两个用于输入数据,一个用于归并后的输出缓存。两个缓存正好可用于内部2路归并排序。输出缓存满了之后,则输出到外部文件中。直到两个输入缓存中的数据一方为空时,再从外部读入数据,继续进行2路归并排序,如此循环直到外部文件排序完成为止。它与内部排序法中的二路归并算法的区别就是有个从外部获取数据和把数据输出到外部的步骤,仅此而已。k路平衡:最简单的就是直接把上面的两个输入...
2018-10-09 00:19:23
1517
原创 基数排序
说到基数排序就需要谈到,多排码排序,多排码排序就是,有n个记录,每个记录都是由x个元素构成属性key,并且有其他的属性key2。那么就可以按照他的属性的key2优先级排序,然后再按照他的属性key排序或者反过来都行。他的关键点是:有多个属性(key1.....keyn)。基数排序的关键点就是:基数 排序 是 利用“ 分配” 和“ 收集” 两种 操作 对 单 排序 码 进行 排序 的 一种内...
2018-10-09 00:06:38
122
原创 排序学习-快速排序
快速排序的思想:快速排序(quicksort)又称划分交换排序。它是在1962年由C.A.Hoare提出来的,是一种平均性能非常好的排序方法。其基本思想是:在待排序文件的n个记录中任取一个记录(例如就取第一个记录)作为基准,将其余的记录分成两组,第一组中所有记录的排序码都小于或等于基准记录的排序码;第二组中所有记录的排序码都大于或等于基准记录的排序码,基准记录则排在这两组的中间(这也是该记...
2018-10-08 02:27:49
110
原创 归并排序-源码
读周颜军; 王玉茹; 关伟洲. 数据结构 (21世纪高等教育计算机规划教材) (p. 216). 人民邮电出版社. 此书源码也是摘自此书归并 排序( merge sort) 是 又一 类 不同 的 排序 方法。 归并 排序 的 基本 思想: 将 已 有序 的 子 文件 进行 合并, 得到 完全 有序 的 文件。 合并 时 只要 比较 各 有序 子 文件 的 第一个 记录 的 排序 码, ...
2018-10-08 00:16:00
262
原创 排序学习-冒泡排序法
冒泡 排序( bubble sort) 又称 为 起泡 排序 , 它是 一种 简单 的 交换 排序 方法。 其 具体 做法 是: 设 n 个 记录 的 待 排序 文件 存放 在 数组 R[ 1‥ n] 中 , 首先 比较 Kn- 1 和 Kn , 如果 Kn- 1> Kn( 发生 逆 序) , 则 交换 Rn- 1 和 Rn; 然后 Kn- 2 和 Kn- 1( 可能 是 刚 交换 ...
2018-09-27 03:35:06
183
原创 字符串匹配算法kmp
关于kmp算法:本人参考了很多博客和书籍,没找到很好的方法去理解它。被搜索字符串T:ababdaababcd需要查找的字符串P:ababckmp算法的next数组,首先它是储存的字符串P中的相应位置之前的前缀和后缀中前缀和后缀匹配的最大缀字符串的长度。例如:P字符串中: a b a b c 下标分别是0,1,2,3,4在下标为0时,即P[0]=a,在P[0]前面没有字符串,...
2018-09-25 22:57:04
124
原创 排序法-堆排序
要理解堆排序需要理解一下概念:二叉树:树中每个节点至多有两个子节点二叉搜索树:对于树中任何节点,如果其左子节点不为空,那么该节点的value值永远 >= 其左子节点;如果其右子节点不为空,那么该节点的value值永远 <= 其右子节点满二叉树:树中除了叶子节点,每个节点都有两个子节点完全二叉树:在满足满二叉树的性质后,最后一层的叶子节点均需在最左边完美二叉树:满足完...
2018-09-09 20:54:58
196
原创 选择排序—简单选择排序
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。#include <stdio.h>void print(int *iarry,int n,int i);int gnum=0;void simple...
2018-08-29 21:05:52
222
原创 排序法学习1-直插排序-希尔排序
1 排序思想① 先取一个正整数d1(d1<n)作为第一个增量,将全部n个记录分成d1组,把所有相隔d1的记录放在一组中,即对于每个k(k=1, 2, … d1),R[k], R[d1+k], R[2d1+k] , …分在同一组中,在各组内进行直接插入排序。这样一次分组和排序过程称为一趟希尔排序;② 取新的增量d2<d1,重复①的分组和排序操作;直至所取的增量di=1...
2018-08-29 19:52:00
250
原创 排序法学习1
本部分内容参考了:https://www.cnblogs.com/chenglc/p/7880029.html 摘抄的源码做了一下修改排序法按照存储分为:内部排序法,外部排序法。内部排序法分为:插入排序法,选择排序法,交换排序法,归并排序法,基数排序法。插入排序法分为:直接插入排序法,希尔排序法选择排序法分为:简答排序法和堆排序法交换排序法分为:冒泡排序法和快速排序法。...
2018-08-25 13:36:43
154
原创 nginx 动态内存分配分析
创建一个内存池函数源码如下ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log){ ngx_pool_t *p;/*NGX_POOL_ALIGNMENT大小对齐,分配size大小内存,返回地址为NGX_POOL_ALIGNMENT的整数倍*/ p = ngx_memalign(NGX_POOL_ALIGNM...
2018-08-05 08:08:01
675
原创 关于数组声明元素数量可否使用enum类型变量的测试
关于枚举型变量在声明数组的时候可否使用,一直没有思考过,也从未研究过数组声明的时候元素个数的规定,今天测试了下,代码如下:#include int main()
2018-01-25 16:41:20
537
原创 linux c 关于switch case的研究
很多人认为 switch case中的deault的是在最后执行,其实是错了,按照实验来看,只与代码顺序有关与否。源代码如下。#include <stdio.h>#include <stdlib.h>#ifdef CASE8 int x=8;#elif CASE9 int x=9;#else int x=10; ...
2018-01-23 16:49:16
1294
转载 关于linux下的传递文件描述符的方法研究
最近在看unix环境高级编程,在15章高进进程间通信中看到可已传递文件描述符的问题,结果在linux是没有send_to和send_err以及recv_fd函数的,于是在网上查找资料,查看在linux下实现进程间传递文件描述符的方法,最后有个牛人给出了答案,在这儿直接贴出源代码,大牛是用的unix域套接字进行传递,我们可以举一反三用管道等方法进行测试,本人没有管道进行测试至于详细内容请参照大牛原文
2018-01-18 16:53:41
331
原创 linux下关于除数为0的信号为总结
今天在处理除数为0的时候的信号问题,发现了一个问题,暂时没有找到答案.现象一:代码如下:#include <stdio.h>#include <signal.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcn...
2018-01-10 16:53:15
1271
原创 关于exit和_exit在vfork之后的研究
这段时间回过头看unix高级环境编程,感觉以前不理解的现在有了明显的提升。在第八章的第四节中提到vfork在调用exit之后父进程会导致printf输出出错返回1,做了一个实验,结果显示exit和_exit结果是一样的。除非在子进程中调用函数关闭输出流,才会导致printf返回-1.不是很理解,希望大牛能帮忙给个解答。实验环境为:CentOS release 6.8 (Final)内核版本
2017-12-15 14:10:17
275
1
纯C语言单链表的逆转,前驱插入,后驱插入,排序(适用于节点数据大,避免对数据拷贝的排序,可以对节点数据较大的程序提升性能)
2019-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人