10 2018 档案
摘要:官方网站:http://www.graphviz.org/ Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源工具包。DOT是一种图形描述语言,非常简单的, Graphviz就是用来处理这种语言的工具。只需要简单了解一下DOT语言,就可以
阅读全文
摘要:总体布局 在32位系统中,linux进程的虚拟地址空间布局如下: 进程虚拟地址空间为 0x0 ~ 0xFFFFFFFF,一共4G大小。其中低位的3G为用户空间,高位的1G为内核空间。空间的各个部分为: 保留区 它并不是一个单一的内存区域,而是对地址空间中受到操作系统保护而禁止用户进程访问的地址区域的
阅读全文
摘要:c语言支持可变参数函数。这里的可变指,函数的参数个数可变。 其原理是,一般情况下,函数参数传递时,其压栈顺序是从右向左,栈在虚拟内存中的增长方向是从上往下。所以,对于一个函数调用 func(int a, int b, int c); 如果知道了参数a的地址,那么,可以推导出b,c的地址 对于上面的代
阅读全文
摘要:使用 c语言的宏是在预处理时候对字符进行简单替换。 优点:1.如果要改一个变量,只需要改宏就可以了,也就是只改一次;2.宏函数展开和普通函数一样,但是它没有普通函数调用的过程,不需要压栈出栈等操作,所以效率高。 缺点:增大了编译后可执行文件的大小 比如常见的 变量使用括号包围,否则这样调用时 结果并
阅读全文
摘要:查询速度非常快的数据结构,查询时间复杂度是O(1)。 #ifndef _COMMON_H_ #define _COMMON_H_ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #endif
阅读全文
摘要:问题 对于两个很大的整数相乘,比如,两个数的位数都是1024, c语言表示不了这么大的数。不过我们可以使用分治法来求它们的乘积。 解决 不失一般性,两个数A 和 B都是n位,n是2的幂次。如果不满足这个条件,可以通过补0操作,使它们满足。 A: B: 则A*B 可以写为: A*B = (a1*10^
阅读全文
摘要:作用 在互联网上传输二进制数据。在互联网上传输非可打印字符时,可能会导致乱码、不能被网关有效处理等问题,而可打印字符不会有这些问题。故将二进制字符转为可打印字符就可以了。 原理 base64就是将3个8位的数据,转为4个6位的数据。转换后的字符都是可打印字符。一般设置为"ABCDEFGHIJKLMN
阅读全文