大数据量处理
moonhedgehog
这个作者很懒,什么都没留下…
展开
-
Bloom Filter 原理与应用
<br />Bloom Filter 原理与应用介绍<br />Bloom Filter是一种简单的节省空间的随机化的数据结构,支持用户查询的集合。一般我们使用STL的std::set, stdext::hash_set,std::set是用红黑树实现的,stdext::hash_set是用桶式哈希表。上述两种数据结构,都会需要保存原始数据信息,当数据量较大时,内存就会是个问题。如果应用场景中允许出现一定几率的误判,且不需要逆向遍历集合中的数据时,Bloom Filter是很好的结构。优点查询操作十分高效。原创 2011-02-21 15:53:00 · 2080 阅读 · 0 评论 -
Bloom Filter 数据结构的应用
<br /><br />应用1:存储字典。大家可能对于 Word 的拼写检查功能非常了解,当你拼错一个单词的时候,Word 会自动将这个单词用红线标注出来。 Word 的具体工作原理不得而知,但是在另一个拼写检查器 UNIX spell-checkers 这个软件中用到了 Bloom Filter。UNIX spell-checkers 将所有的字典单词存成 Bloom Filter 数据结构,而后直接在 Bloom Filter 上进行查询。<br />出错的情况:漏掉出错的单词。<br /> 应用2转载 2011-02-21 15:56:00 · 2254 阅读 · 0 评论 -
用bitmap减少hash算法所用空间
hash的空间复杂度又相对比较大,所以用bitmap来减少hash算法所需的空间。一般的hash,例如对数组[2, 3, 5, 10] 运用桶排序算法,需要声明10个整数的bucket,如下图所示:011010000112345678910但是如果用bitmap的话,只需一个整数,因为一个整数(32位机)的话有32bit,每个bit都能map一个整数,如下图所示: 1 1 11 3130…321031…9…543210数组元素1数组元素0所以关键就是位操作set, clear, test:转载 2011-02-22 14:28:00 · 2591 阅读 · 0 评论 -
Bloom Filter概念和原理
Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。集合表示和元素查询下面我们具体来看Bloom Filter是如转载 2011-02-21 15:46:00 · 2057 阅读 · 0 评论 -
大数据量,海量数据 处理方法总结
<br />下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。 <br /><br />1.Bloom filter <br /><br />适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 <br /><br />基本原理及要点: <br />对 于原理来说很简单,位数组+k个独立hash函转载 2011-02-21 15:51:00 · 2330 阅读 · 0 评论