上一页 1 ··· 61 62 63 64 65
摘要: 今天想看看linux的c库源码,但是那源码结构比较乱,跳来跳去比较难看。于是想写个小程序进入c库调试,发现要调试c库还不容易。写了个小程序,用gdb装载,下断点到我关注的c库函数位置,s命令回车发现进去不了,直接跳过了。折腾了半天,终于调试进去了,总结了以下步骤:1,首先下载c库的debug版sudo apt-get install libc6-dbg安装成功后,在usr/lib下面会多出debug目录,里面有安装的debug版c库的动态链接文件。2,编译程序,使用新的debug版c库。比如我写的例子程序名为test.cpp , 使用如下命令编译:g++ -g test.cpp -Wl,-rp 阅读全文
posted @ 2010-10-26 14:39 Lunaa 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 今天想看看linux的c库源码,但是那源码结构比较乱,跳来跳去比较难看。于是想写个小程序进入c库调试,发现要调试c库还不容易。写了个小程序,用gdb装载,下断点到我关注的c库函数位置,s命令回车发现进去不了,直接跳过了。折腾了半天,终于调试进去了,总结了以下步骤:1,首先下载c库的debug版sudo apt-get install libc6-dbg安装成功后,在usr/lib下面会多出debug目录,里面有安装的debug版c库的动态链接文件。2,编译程序,使用新的debug版c库。比如我写的例子程序名为test.cpp , 使用如下命令编译:g++ -g test.cpp -Wl,-rp 阅读全文
posted @ 2010-10-26 14:39 Lunaa 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 本文,我们来看5种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 不可以用开源代码的作者/机构名字和 阅读全文
posted @ 2010-10-26 14:20 Lunaa 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 本文,我们来看5种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 不可以用开源代码的作者/机构名字和 阅读全文
posted @ 2010-10-26 14:20 Lunaa 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 最近看到mysql的hash表,发现一个特点。当hash表满的时候,hash表size总是扩展成一个素数。上网查了一下资料,素数可以有效的减少hash冲突。想了一下,这个确实是有道理的。假设hash表大小为size,这是一个合数,即有size=a*n。当有hash值为hashcode,且hashcode = b*n.则hashcode取模之后为hashcode = hashcode%size = hashcode - (hashcode / size) * size = hashcode - (b/a) * size因为a是固定的,那么上面的hashcode的取值只有b种可能,这样显然会增加冲 阅读全文
posted @ 2010-08-03 14:51 Lunaa 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 最近看到mysql的hash表,发现一个特点。当hash表满的时候,hash表size总是扩展成一个素数。上网查了一下资料,素数可以有效的减少hash冲突。想了一下,这个确实是有道理的。假设hash表大小为size,这是一个合数,即有size=a*n。当有hash值为hashcode,且hashcode = b*n.则hashcode取模之后为hashcode = hashcode%size = hashcode - (hashcode / size) * size = hashcode - (b/a) * size因为a是固定的,那么上面的hashcode的取值只有b种可能,这样显然会增加冲 阅读全文
posted @ 2010-08-03 14:51 Lunaa 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 一种方法是使用fseek到你想要的大小,然后随便写上一个什么字节。代码如下:FILE *fp = fopen("test1.txt","w");nRetCode = fseek(fp, 1000, SEEK_END);nRetCode = fwrite("hello", 5, 1, fp);文件的大小会增加1005。fseek函数从其源代码可以知道内部调用了系统API:SetFilePointer()。第二种就是使用filemapping:Windows下先用CreateFile创建一个0字节的文件或者打开一个文件, 再用Create 阅读全文
posted @ 2007-02-12 15:43 Lunaa 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 一种方法是使用fseek到你想要的大小,然后随便写上一个什么字节。代码如下:FILE *fp = fopen("test1.txt","w");nRetCode = fseek(fp, 1000, SEEK_END);nRetCode = fwrite("hello", 5, 1, fp);文件的大小会增加1005。fseek函数从其源代码可以知道内部调用了系统API:SetFilePointer()。第二种就是使用filemapping:Windows下先用CreateFile创建一个0字节的文件或者打开一个文件, 再用Create 阅读全文
posted @ 2007-02-12 15:43 Lunaa 阅读(770) 评论(0) 推荐(0) 编辑
上一页 1 ··· 61 62 63 64 65