- 博客(22)
- 收藏
- 关注
原创 Sqlite3源代码学习之外篇—哈希表
多姿多彩的哈希表自从通过数据结构课程学习哈希表以来,对于哈希表的实现一直都是固定的课本上的理论,使用链表作为冲突消解策略,分配一个数组作为哈希表的基本结构,基本上实现哈希表的方法就是这样,但是一般因为找不到好的哈希函数而放弃使用哈希表。由于使用的少,对于哈希表的具体实现方式就没有花太多心思,就是使用哈希表基本上就是直接把库里的哈希表结构拿来使用,最近学习了berkelyDB和sqlite3的源代码,其它收获不说,单单哈希表的使用与实现就让我长了见识,至于berkelyDB中对哈希表的使用和实现,适合
2010-06-16 22:14:00
4519
4
转载 嵌入式数据库典型技术―SQLite和Berkeley DB的研究
摘 要: 与常见的数据库相比,嵌入式数据库具有体积小、功能齐备、可移植性、健壮性等特点,本文分析和比较了典型的嵌入式数据库SQLite和Berkeley DB。首先从体系结构、子系统间调用关系、任务执行过程等角度对SQLite和Berkeley DB进行了详细分析,然后重点从数据类型、存储方式、模式、数据库引擎和错误处理及加密功能等方面讨论了SQLite和Berkeley DB
2010-04-10 12:43:00
2603
3
转载 SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL
SQLite数据库是中小站点CMS的最佳选择作者:孙毓波 (AKCMS 作者)SQLite 是一个类似Access的轻量级数据库系统,但是更小、更快、容量更大,并发更高。为什么说 SQLite 最适合做 CMS (内容管理系统)呢?并不是说其他数据库不好, Oracle、MySQL
2010-04-10 12:37:00
5211
原创 Berkeley DB 1.8.6源代码学习(九)
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2010-04-03 16:19:00
1971
6
原创 Berkeley DB 1.8.6源代码学习(八)
hash_bigkey.c文件:关于大数据记录操作的函数;__big_insert函数:插入大数据记录;函数参数:hashp:HTAB指针;pagep:PAGE16类型指针,接收记录的页面;key:DBT类型指针;记录的键值部分;val:DBT类型指针,记录的数据值部分;
2010-04-01 20:53:00
1400
2
原创 Berkeley DB 1.8.6源代码学习(七)
函数分析:文件hash.c__hash_open:哈希表打开函数,根据数据库文件名和哈希函数信息打开哈希表,函数有6个参数:file:字符指针,传入数据库文件名;flags:整型,文件打开标志;mode:整型,文件打开模式;info:HASHINFO类型数据,导入哈希表信息;df
2010-04-01 12:34:00
2382
原创 Berkeley DB 1.8.6源代码学习(六)
动态哈希表哈希表就是通过对键值使用哈希函数计算得到入口点,从而可以插入或获取需要的值。对于计算得到相同入口点的情况,可以使用冲突消解策略来解决,一般使用附加链表的方式;哈希表在初始化时固定了入口点的个数,如果随着哈希表的使用,不断有数据进入,哈希表膨胀到一定的程度,需要扩展哈希表,该如何设计一个动态的、可扩展的哈希表呢?一般来讲需要解决两个问题:1
2010-03-29 21:02:00
1682
原创 一个小程序重新透视C语言Switch语句
最近看berkerly DB的源代码,在hash函数的hash4中一段代码让我很困惑,将其简化如下:/*ctest.c*/void testSwitch(int sw){ int loop = 3; switch(sw){ case 0: do{ printf("case 0:%d/n",loop);
2010-03-24 22:13:00
1250
6
原创 Berkeley DB 1.8.6源代码学习(五)
bt_delete.c文件:删除B树中的数据;__bt_delete函数:删除指定的记录;int __bt_delete(dbp, key, flags) const DB *dbp; const DBT *key;
2010-02-02 22:03:00
1948
12
原创 Berkeley DB 1.8.6源代码学习(四)
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2010-01-31 15:48:00
2127
1
原创 Berkeley DB 1.8.6源代码学习(三)
B树bt_page.c文件:辅助文件,用于页面的部分操作;__bt_free函数:将一个空闲页放入树的空闲列表;参数列表:t:树指针;h:空闲页指针;返回值:成功则返回RET_SUCCESS;伪代码:将h的左兄弟置无效;将h的有兄弟指向树的空闲列表头;将树的空闲列表头
2010-01-31 15:44:00
3404
原创 Berkeley DB 1.8.6源代码学习(二)
函数信息数据库db.c文件dbopen函数:参数:fname:数据库文件名;flags:打开数据库的标志;mode:访问数据库文件的方式,只读、读写等;type:数据树采用的数据结构:B树、哈希表、RECNO算法等;openinfo:数据库的基本信息,根据使用不同的数据结
2010-01-21 20:55:00
3325
4
原创 Berkeley DB 1.8.6源代码学习(一)
阅读Berdely DB 1.8.6版。基本数据结构1、 数据库数据库结构只含有两个成员变量:type:DBTYPE类型,用于标示数据库使用的数据类型,为枚举类型,枚举值可以为DB_BTREE, DB_HASH, DB_RECNO,分别表示B树、哈希表、RECNO算法;internal:vo
2010-01-18 21:49:00
5572
2
原创 Windows CE学习之属性数据库(二)
4、 打开数据库数据库卷挂载之后,在使用数据库之前需要先打开数据库,CEDB使用CeOpenDatabaseEx2函数打开数据库。HANDLECeOpenDatabaseEx2( PCEGUID pguid,PCEOID poid, LPWSTR lpszName,SORTORDERSPE
2010-01-07 21:29:00
1437
原创 Windows CE学习之属性数据库(一)
开始使用 Windows CE ,最近学习了一下其自带的属性数据库,天天翻 MSDN 太麻烦了,整理总结一下,以备以后使用时方便查询。 Windows CE 属性数据库有 CEDB 和 EDB 两种,其中前者是早期的版本,后者随 WINCE 5.0 发布。 EDB 与 CEDB 相比具备事务的功能,同时支持更多的更全的索引,支持更多的属性数量和更好的性能,特别是存储较大数据时。 虽然 WI
2010-01-07 21:27:00
1628
原创 ubuntu 9.10安装小结
今天重装ubuntu 9.10,忘了上次怎么装的了,又在网上搜的半天,记录一下,免得忘了。1、下载下载grub4dos下载ubuntu9.10,并保存至某个盘的根目录(譬如:D盘)2、提取并放置文件将grub4dos中的grldr复制到系统根目录下面,并在boot.ini中作如下修改:将timeout=0改为timeout=5最后一行添加c:/grldr="ubunt
2009-10-30 22:33:00
2017
1
转载 [EB/OL]是什么意思啊
[EB/OL]是非纸张型载体电子文献的载体类型及其标识中的一种,电子文献的载体类型及其标识的格式是:[文献类型标识/载体类型标识]。[EB/OL]是指网上电子公告(electronic bulletin board online)。类似的还有: [DB/OL]——联机网上数据库(database online) [DB/MT]——磁带数据库(database on magnetic t
2009-07-08 13:41:00
25394
转载 Ubuntu 8.04源
#以下为ubuntu hardy 8.04 LTS (3年长期支持,2008年4月24日发布正式版) #传说中的中国科技大学 5M/s deb http://debian.ustc.edu.cn/ubuntu/ hardy main restricted universe multiverse deb http://debian.ustc.edu.cn/ubuntu/ hard
2009-03-08 18:48:00
730
1
原创 正则表达式简介
一个正则表达式就是一个模式,由与文本进行匹配的字符序列组成。正则表达式有着广泛的应用:grep、sed、vim、make等等,某些脚本语言如perl等更是将正则表达式纳入语言内部。 正则表达式由原子和运算符组成。 最简单的原子是单个字符,如果一个正则表达式由单个字符组成,则该字符必须出现在目标文本的某处,以使模式进行成功的匹配。 “.”匹配除了换行符(
2009-02-28 09:03:00
871
2
转载 cvs命令简介
索引:权限设定配置cvs口令服务器初始化服务器使用基础常用命令缩写标签的管理版本分支cvs输出export清除工作拷贝日志管理关键字扩展模块配置二进制文件配置触发器文件其他配置文件1.权限设定(1).设定规则cvs用户必须拥有对$CVSROOT/CVSROOT目录及其中所有文件的读权限。cvs用户必须拥有对$C
2009-02-18 10:16:00
1553
转载 Ubuntu命令行下修改网络配置
以eth0为例1. 以DHCP方式配置网卡编辑文件/etc/network/interfaces:sudo vi /etc/network/interfaces并用下面的行来替换有关eth0的行:# The primary network interface - use DHCP to find our addressauto eth0iface eth0 inet d
2009-02-12 17:07:00
907
1
原创 ubuntu使用终端设置网络代理
ubuntu下使用终端设置网络代理,只需设置http_proxy系统变量即可:export http_proxy=http://usr_name:usr_password@HTTP代理:端口/ 文件/etc/wgetrc中的use_proxy变量的设置可以控制是否能够使用网络代理
2009-02-12 16:52:00
2126
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人