C语言
文章平均质量分 63
liexusong
这个作者很懒,什么都没留下…
展开
-
Linux静态/动态链接库的创建和使用
假设有下面几个文件:头文件String.h,声明相关函数原形,内容如下:Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实际长度,内容如下:生成静态库: 利用GCC生成对应目标文件:gcc –c Strlen.c Strnlen.c如原创 2009-09-10 17:14:00 · 1002 阅读 · 0 评论 -
一种高效的外部索引算法
增量hash算法B+树是一种效率非常高的外存索引算法,但是B+树实现比较复杂。而使用hashtable作为索引要解决的问题是:怎么可以是bucket动态增长。现在已经存在的解决方案是可扩展hash,但是此算法也比较复杂,而且当不同的key有同样的hash值的时候,会出现无限扩展的原创 2011-07-28 12:03:26 · 1580 阅读 · 0 评论 -
B树的详解
<br />B树是为磁盘或其他直接存储设备设计的一种平衡查找树。如下图所示。每一个结点箭头指向的我们称为入度,指出去的称为出度。树结构的结点入度都是1,不然就变成图了,所以我们一般说树的度就是指树结点的出度,也就是一个结点的子结点个数。有了度的概念我们就简单定义一下B树(假设一棵树的最小度数为M):<br /> 1.每个结点至少有M-1个关键码,至多有2M-1个关键码;<br /> 2.除根结点和叶子结点外,每个结点至少有M个子结点,至多有2M个子结点;<br /> 3.根结点至少有2个子结点,唯一例转载 2010-12-07 15:38:00 · 2905 阅读 · 0 评论 -
自己写的hashtable
<br />/**<br /> This program is free software; you can redistribute it and/or modify<br /> it under the terms of the GNU General Public License as published by<br /> the Free Software Foundation;<br /> <br /> author:liexusong<280259971@qq.co原创 2010-10-10 15:46:00 · 1066 阅读 · 0 评论 -
C语言实现析构器
<br />按照ISO C的规定,一个进程可以注册多大32个函数,这些函数将由exit自动调用。这些函数被称为“终止处理程序”(exit handler),并调用atexit函数来注册这些函数。<br /> <br />#include <stdlib.h><br /> <br />/*成功返回0,失败返回非0*/<br />int atexit(void (*func)(void));<br /> <br /> <br />从原型我们可以看到,被注册的函数是一个没有返回值很没有参数的函数,我们可以使用这个原创 2010-08-19 15:25:00 · 1469 阅读 · 0 评论 -
程序计数器
<br />程序计数器是用于存放下一条指令地址的地方。单片机及汇编语言中常称作PC(program counter)。 <br /> 为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下 一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址 送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC原创 2010-08-19 19:39:00 · 1406 阅读 · 0 评论 -
我的学习目标
1.学习Linux下的C编程(unix环境高级编程)2.了解TCP/IP协议(TCP/IP协议详解)3.学习Linux下的网络编程(unix网络编程)另外要学习数据结构和C语言的一些技巧等。原创 2010-08-19 01:30:00 · 727 阅读 · 0 评论 -
Unix的连接详解
<br />最近看Linux的文件,发现Unix的文件系统跟Win的相差甚远。有一个比较大的区别就是连接。<br /> <br />Unix可以通过link函数来为一个文件命名多个名字:<br /> <br />#include <unistd.h><br />#include <fcntl.h><br />#include <stdio.h><br /> <br />int main(void) {<br /> int fd;<br /> fd = open("tmp", O_RDWR | O_CREAT原创 2010-08-16 17:28:00 · 925 阅读 · 0 评论 -
线段Hash算法(原创)
线段Hash算法原理是:通过Hash算法把Key转换成一个int类型的数字,然后按照每次比较2个bit来定位到一个内存块。结构图如图1-1: 图1-1 图1-1中的每个节点成为bucket,而每个bucket有4个元素。我们可以使用原创 2011-08-31 13:07:19 · 1340 阅读 · 0 评论