文章分类 -  数据结构

摘要:浅析Linux Kernel中的那些链表出处信息链表是Linux内核中最重要的数据结构,但Linux内核中的链表与传统的数据结构书中看到的链表结构略有不同。这里简单写一下我对于Linux内核中链表的理解,不足之处欢迎路过的大牛给出批评意见。1.传统形式的链表数据结构书中的链表一般是下面这种形式:struct list { struct list *pre; struct list *next; void *data;};每一个链表结构中都包括两个同类型的指针,分别指向链表的上一个节点和下一个节点。这样当该节点处于一个循环链表中时,链表的首节点一般不用于保存数据,但首节点也需要是一个struct 阅读全文
posted @ 2013-08-30 11:14 tangr206 阅读(468) 评论(0) 推荐(0)
摘要:分类:数据结构与算法大数据处理2012-08-14 16:521345人阅读评论(1)收藏举报目录(?)[-]Bloom FilterHashBit-map堆双层桶数据库索引及优化数据库索引什么是索引概述为什么要创建索引在哪建索引数据库优化倒排索引搜索引擎之基石外排序trie树分布式处理 mapreduce 前面我们说海量数据处理提到,从算法的角度去考虑处理海量数据。1. Bloom Filter【Bloom Filter】Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概 阅读全文
posted @ 2013-07-24 10:43 tangr206 阅读(278) 评论(0) 推荐(0)
摘要:分类:数据结构与算法大数据处理云计算hadoop2012-08-14 18:401670人阅读评论(1)收藏举报filter算法vectorfunctionurlfile目录(?)[-]Bloom-Filter算法简介Bloom-Filter的基本思想扩展CounterBloom FilterCounterBloom FilterCompressed Bloom FilterBloom-Filter的应用网络应用垃圾邮件地址过滤Bloom-Filter的具体实现1. Bloom-Filter算法简介 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元.. 阅读全文
posted @ 2013-07-24 10:34 tangr206 阅读(144) 评论(0) 推荐(0)
摘要:上一篇文章,我介绍了KMP 算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore 算法。 Boyer-Moore 算法不仅效率高,而且构思巧妙,容易理解。1977 年,德克萨斯大学的 Robert S. Boyer 教授和 J Strother Moore 教授发明了这种算法。 下面,我根据 Moore 教授自己的例子来解释这种算法。 1. 假定字符串为"HERE IS A SIMPLE EXAMPLE",搜索词为"EXAMPLE"。 2. 首先," 阅读全文
posted @ 2013-05-03 18:16 tangr206 阅读(173) 评论(0) 推荐(0)
摘要:字符串匹配的KMP算法Posted: 01 May 2013 03:46 AM PDT字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一 阅读全文
posted @ 2013-05-03 16:24 tangr206 阅读(138) 评论(0) 推荐(0)
摘要: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 阅读(185) 评论(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)