- 博客(12)
- 资源 (7)
- 收藏
- 关注
原创 线段Hash算法(原创)
线段Hash算法原理是:通过Hash算法把Key转换成一个int类型的数字,然后按照每次比较2个bit来定位到一个内存块。结构图如图1-1: 图1-1 图1-1中的每个节点成为bucket,而每个bucket有4个元素。我们可以使用
2011-08-31 13:07:19
1374
原创 一种高效的外部索引算法
增量hash算法B+树是一种效率非常高的外存索引算法,但是B+树实现比较复杂。而使用hashtable作为索引要解决的问题是:怎么可以是bucket动态增长。现在已经存在的解决方案是可扩展hash,但是此算法也比较复杂,而且当不同的key有同样的hash值的时候,会出现无限扩展的
2011-07-28 12:03:26
1627
转载 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
3058
原创 自己写的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
1086
原创 8086CPU的段寄存器
段地址由段寄存器提供。8086CPU的段寄存器有4个,包括:CS,DS,SS,ES。CS而CS是提供代码段的段地址(code segment),而偏移地址是由IP寄存器提供。在8086CPU中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M x 16 + N单元开始读取一条指令并执行。(注意:当CPU读取一条指令之后,IP中的值会根据读取当前指令的长度自动增加到下一条指令的偏移地址)。可以通过修改CS,IP寄存器的值控制CPU执行目标指令。可以通过:jmp 段地址:偏移地址来实现修
2010-09-26 23:27:00
4147
原创 CUP寻址的方式
<br />80x86的内存访问方式是通过:物理地址 = 段地址 x 16 + 偏移地址<br /><br />段寄存器是一个16位的寄存器,乘以16等于右移4位,即变成20位。而偏移地址也是一个16位的数,所以80x86最大能访问到220 = 1MB的内存。<br /> <br />而偏移地址的取值范围是:0~FFFFH,所以仅用偏移地址来寻址最多可寻64KB个内存单位。
2010-09-26 23:01:00
939
原创 汇编语言 — 中断
<br />任何一个CPU,都有处理中断的能力。中断的意思是,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。<br />根据中断信息的来源,中断分为内中断和外中断两种。<br />中断向量表是保存中断处理程序入口地址的列表。<br />中断过程指的是在找到中断向量后,CPU的硬件自动完成设置CS和IP的过程。<br />当CPU接收到中断信息后,整个的过程如下:CPU接收中断信息根据中断类型码在中断向量表中找相应的中断向量引发中断过程——CS:IP指向中断处理程序的入口开始执行中断处理
2010-08-24 16:28:00
1052
原创 程序计数器
<br />程序计数器是用于存放下一条指令地址的地方。单片机及汇编语言中常称作PC(program counter)。<br /> 为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC
2010-08-19 19:39:00
1453
原创 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
1514
原创 我的学习目标
1.学习Linux下的C编程(unix环境高级编程)2.了解TCP/IP协议(TCP/IP协议详解)3.学习Linux下的网络编程(unix网络编程)另外要学习数据结构和C语言的一些技巧等。
2010-08-19 01:30:00
746
原创 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
953
原创 Linux静态/动态链接库的创建和使用
假设有下面几个文件:头文件String.h,声明相关函数原形,内容如下:Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实际长度,内容如下:生成静态库: 利用GCC生成对应目标文件:gcc –c Strlen.c Strnlen.c如
2009-09-10 17:14:00
1016
AVL树详细解释,AVL树详细解释
2011-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人