07 2012 档案
摘要:Source Insight 作为一款优秀的代码浏览和编辑器应用十分广泛,对于一些重复使用的功能,我们可以定义相关的宏来提高开发效率。1:宏的编写Source Insight Help文档中Macro Language Guide一节详细的介绍了宏的编写,结构和C语言相似,通过阅读文档,相信就可以编写出各种功能强大的宏。这里我编写了一个简单的添加函数注释的宏。View Code macro GetCommentsTime(){ var year var month var day var commTime var sysTime sysTime =...
阅读全文
摘要:新建一个数据库,执行“create table t1(id integer,info text);”命令后对数据库文件结构的简要分析如下:数据库中第一个页是Btree页。第一个页面的前100个字节是一个对数据库文件进行描述的“文件头”,通过对应关系可以获得“包括数据库的版本、格式的版本、页大小、编码等所有创建数据库时设置的永久性参数”。文件头后面紧跟sqlite_master表的页面,也就是数据库的第一个页面,每个页面由四个部分构成1:页头信息0D表示页面的类型,00 00 表示第一个自由块偏移,00 01表示本页的CELL个数,03 C8表示CELL的开始地址(偏移地址),00表示碎片数。2
阅读全文
摘要:Btree结构中最要包含一个BtShared结构,该结构包含了一个打开的数据库的所有页面相关信息。View Code struct BtShared { Pager *pPager; /* The page cache */ BtCursor *pCursor; /* A list of all open cursors */ MemPage *pPage1; /* First page of the database */ u8 inStmt; /* True if we are in a statement subtransact...
阅读全文
摘要:通常一个软件系统都包含不同部分互相交互耦合,我们希望设计能够将系统划分为有意义的各个部件,各个部件能够独立的开发、演进、部署。这时整体性的设计已经无法满足这些挑战,这就需要我们对系统进行合理清晰的划分。通常我们为待开发的系统定义多个层次,每一层完成独立的功能。设计原则:1:系统分为多层,每层完成独立的功能,层内部继续细分子模块,每层能够独立演进、部署。分层原则可以基于业务抽象、硬件、变化性等来划分,比如sqlite就是基于业务抽象来进行分层的。实际的框架设计可能同时结合多种维度比如常见的表示层、逻辑层、数据层就结合了业务抽象和变化两个维度。2:各层的功能基于同层和底层的功能之上,如图所示L1的
阅读全文
摘要:对于32位的机器,INT整形占四个字节,这意味着如果我们要保存一个INT类型数据需要占用4个字节空间,但实际的情况是4个字节的空间中并非所有的空间都保存了有效的数据位,比如整数1,在内存中以0x00000001表示,实际只有最低位表示了实际数据,通过实现一个整形的压缩算法可以有效的减少存储空间的使用。1:在一个字节数据中只保存7bit有效数据,第8位作为一个INT数据是否表示完成的指示位(1表示未完成,0表示已经完成)。2:通过判断字节的最高BIT位是否为0来获取一个INT型数据,这样我们可以通过1-5个字节数据来表示一个INT型。3:数据转换通过去除每个字节的指示位,其它bit数据拼接构成I
阅读全文

浙公网安备 33010602011771号