无聊之人--除了技术,还是技术,你懂得
发布时间:2012-12-26 18:48:12
打算利用自己的业余时间,将APUE上的DB动手进行实际操作演练一遍,以加深自己的对DB的理解。将采用分而治之的思想,首先讲解源文件,makefile,然后从最重要的函数开始讲起,最后给出gdb调试步骤。数据库的函数库使用两个文件来存储信息:索引文件数据文件索引文件包含键值(通过hash)以及指向该键值所对应数据的指针,本文中采用取模的方法,此处的指针同C中的指针不是一个概念,但是功能是类似的,不要混淆)数据文件 主要包含数据记录(同我们常见DB中的record相对应)索引文件使用固定大小的hash表来存储键值(大小为137),这也就意味着即使存储的数据时均匀分布,在插入137条记录(最理想的情......【阅读全文】
发布时间:2012-12-24 23:28:12
DB2 使用claim & drain来控制SQL 与utility对数据库对象的访问。claim说明有对象正在访问或是将要访问该对象而drain则是在对象上面加一个drain lock,等所有的claimers执行完成以后,对该对象进行特定的处理操作。drain lock的目的是防止多个process同时drain一个对象,从而出现drain deadlock。二者都是对象级别的,它独立于事务锁而存在。需要注意的drain是action,即它也是一个claim,它发出drain的指令,拿到drain lock,然后就等待其他的claimers执行完成,然后执行自己的drained &......【阅读全文】
发布时间:2012-12-20 15:21:46
如果不运行程序,猜猜程序的运行结果?#include <stdio.h>#include <stdlib.h>#include <assert.h>int main(int argc,char * argv[]){ int i=0; int a[4]; for ( i = 0 ; i <= 4; i++) { a[i] = 0; printf("#"); } printf("the function reach here \r\n"); exit(0);}该程序由于数组越界,导致变量I的值被override,从而程序无限循环。......【阅读全文】
发布时间:2012-12-19 18:42:56
macro看似只进行简单的文本替换,在预处理阶段它会根据你所定义的macro生成一个hash,稍后再处理的时候,根据遇到的macro名查找hash,得到宏的内容,使用hash存储速度非常快。下面我们进行一个简单的实验,猜猜程序的运行结果?macro.c 点击(此处)折叠或打开#include <assert.h>#define WIDTH 40#define HEIGHT 80#define AREA 2*(WIDTH* HEIGHT)#define MAX(a,b) ( ((a) > (b))?(a): (b))int main(int argc......【阅读全文】
发布时间:2012-12-14 18:49:03
看来斯坦福大学的CS107以后,以为自己对C已经很熟悉了,但是发现事情根本不是想象中的那样问题还是很多。假设是面试官提问的话,我感觉自己肯定挂了,,,同时也发现C语言中的字符串功能虽然很强大,但是其中的陷阱太多了,不要以为编译器通过了就万事大吉,其实你的程序问题多的去了。。。。首先我们从整数的栈的定义,入栈,出栈,销毁开始 点击(此处)折叠或打开#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef struct {int * elebase;int logicallength;int......【阅读全文】