摘要: from http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html1.聊一聊跳表作者的其人其事2. 言归正传,跳表简介3. 跳表数据存储模型4. 跳表的代码实现分析5. 论文,代码下载及参考资料<1>. 聊一聊作者的其人其事跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lists: a probabilistic alternative to balanced trees,在该论文中详细解释了跳表的数 阅读全文
posted @ 2013-03-22 19:05 tangr206 阅读(188) 评论(0) 推荐(0)
摘要: from http://kenby.iteye.com/blog/1187303SkipList 跳表博客分类:algorithms为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟 阅读全文
posted @ 2013-03-22 19:01 tangr206 阅读(174) 评论(0) 推荐(0)
摘要: from: http://www.programfan.com/article/2782.html1.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public:virtual void foo() { cout << "A::foo() is called" << endl;}};class B: public A{public:virtual void foo() { cout << "B::foo() is calle 阅读全文
posted @ 2013-03-22 18:39 tangr206 阅读(134) 评论(0) 推荐(0)
摘要: Memcached源码分析之网络模型篇 memcached 采用多线程的工作方式, 主线程接收连接, 然后把连接平摊给工作线程, 工作线程处理业务逻辑,memcached 使用 libevent 处理网络事件, 主线程和工作线程都有一个 event base, 这是 libevent的核心数据结构, event base 能够监听多个 socket 的网络事件, 概括起来, memcached 大体框架如 图1所示.图1 memcached的多线程模型主线程的初始化主线程首先初始化 libevent 的核心数据结构 main base, 然后创建监听socket, 把监听 socket 封装. 阅读全文
posted @ 2013-03-22 12:53 tangr206 阅读(323) 评论(0) 推荐(0)
摘要: TCP / IP 协议浅析fron http://kenby.iteye.com/blog/1013313博客分类:Network 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port ... 阅读全文
posted @ 2013-03-22 12:50 tangr206 阅读(286) 评论(0) 推荐(0)