- 博客(7)
- 收藏
- 关注
原创 tokyo cabinet源码分析-mdb设计和实现
mdb - memory db mdb是cabinet的一种数据组织方式,其他还有hdb(hash)、bdb(btree)等,详见"tokyo cabinet源码分析"。由名字可知,mdb使用纯内存(不一定,见下面),速度最快。它是后面其他较高级的数据组织方式的基础,hdb、bdb的read cache都是直接使用mdb实现。而且mdb的实现最简单,所以先从mdb分析。
2009-11-05 20:52:00
1572
2
原创 宏的一些副作用
1、优先级问题 1) 传入变量优先级 #define MULTI(a,b) a * b MULTI(1+2,3) => 1 + 2 * 3 其实是想要(1 + 2) * 3 2) 作为值返回时,类似1) #define ADD(a,b) (a) + (b) int c = ADD(a,b) * 3; => (a
2009-10-28 10:40:00
3223
原创 tokyo tyrant源码分析-编程小技巧
----------------1、内存分配---------------- char stack[TTIOBUFSIZ]; //65536char *buf = (rsiz ...free((buf == stack) ? NULL : buf); rsiz是运行时才能确定的值。这种方法的思想是尽可能使用静态分配,因为动态分配有损效率。因为rsiz的未
2009-10-27 10:18:00
1070
原创 tokyo tyrant源码分析
目录> -总体设计 -主从复制实现 -日志系统实现 -编程小技巧 分析的tyrant版本为:1.1.18各节的标题已经清晰表明了其内容。各节的重点是尽可能简单的描述设计和实现,不会对函数或技术点做任何注释。基础知识还是通过书本系统的学习较好。另外描述的风格是剪裁过的源代码+文字解释,没有图片(画图比较浪费时间),而且我觉得图片除了给点直观的第一印象,
2009-10-27 09:35:00
974
原创 tokyo tyrant源码分析-日志系统实现
enum { /* enumeration for logging levels */ TTLOGDEBUG, /* debug */ TTLOGINFO, /* information */ TT
2009-10-24 22:18:00
970
原创 tokyo tyrant源码分析-主从复制实现
"tyrant分析-总体设计"中已经提到,slave起一个线程(do_slave)做主从复制,它和master建立tcp连接,发送请求命令和起始时间rts +1(上次的更新时间加1秒)给master,然后循环的从master那里接收一条条的记录,更新自己db、ulog和rts file。do_slave是以1秒为频率执行的。(实际是等待一次do_slave执行完毕后,再等待1秒,然后进
2009-10-24 22:14:00
2269
7
原创 tokyo tyrant源码分析-总体设计
------------------------ 总体设计---------------------------------------结构:---------------多线程。三类线程: 主线程(1个): 监听socket,将接收到的请求sockfd分发给工作线程,以及信号处理。 worker线程(thnum个,参数指定,默认为8): 从
2009-10-15 18:49:00
1898
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人