Bloom Filter 是由Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。...
分类:
其他好文 时间:
2015-08-27 21:16:44
阅读次数:
587
最近被网络爬虫中的去重策略所困扰。使用一些其他的“理想”的去重策略,不过在运行过程中总是会不太听话。不过当我发现了BloomFilter这个东西的时候,的确,这里是我目前找到的最靠谱的一种方法。...
分类:
Web程序 时间:
2015-08-25 23:49:05
阅读次数:
212
布隆过滤器[1](Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例...
分类:
其他好文 时间:
2015-08-11 18:12:25
阅读次数:
176
1.Bloom Filter
由一个很长的二进制向量和一系列hash函数组成
优点:可以减少IO操作,省空间
缺点:不支持删除,有误判
如果要支持删除操作: 改成计数布隆过滤器
2.SkipList(跳表)
核心思路: 由多层组成,每层都是一个有序链表,最底层包含所有元素,元素数逐层递减。每个节点包含两个指针,一个->,一个向下。
并行编程情况下可以用...
分类:
编程语言 时间:
2015-08-10 14:53:22
阅读次数:
225
布隆过滤器基本对于做后端服务的同学,应该是耳熟能详。扫了一下比较容易搜到的资料,都能够比较明白的讲出布隆过滤器是一个什么东西?如何推导?如何选取k值?如何根据数据量的大小和冲突率的需求,选择布隆过滤器的容器大小。如果有不明白,参见下面的链接。但是我发现似乎没有哪个资料讲了,布隆过滤器为什么会比bitmap更加优秀?
布隆过滤器基本原理参见 http://www.cnblogs....
分类:
其他好文 时间:
2015-08-04 00:39:35
阅读次数:
259
布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制矢量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash tab...
分类:
其他好文 时间:
2015-08-03 22:45:38
阅读次数:
175
1、主要功能
提高随机读的性能
2、存储开销
bloom filter的数据存在StoreFile的meta中,一旦写入无法更新,因为StoreFile是不可变的。Bloomfilter是一个列族(cf)级别的配置属性,如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock...
分类:
其他好文 时间:
2015-06-11 13:08:17
阅读次数:
188
提高缓存命中率,使用计数改进Bloom filter。
1、一致性哈希。在分布式系统用途广泛。2、局部敏感哈希LSH:simhash和minhash。可以用于相似度检测等。谷歌有篇文章利用LSH进行网页去重。3、布隆过滤器。判断一个元素是否在一个集合中。4、在数据流算法中哈希算法应用更是广泛。比如数据流中独立元素计数等。5、特征哈希。近几年在nips等机...
分类:
其他好文 时间:
2015-05-24 15:34:48
阅读次数:
111
网上教程一抓一把,跟风来一发。首先有几个重点:1.存在过滤器名单中的在过滤过程中一定会被查出来,但是不在名单的也有很小的几率被拦下来换言之,该拦的都被拦了,不该拦的也可能被拦操作原理:对于一个字符串,根据不同的hash函数将Bitvector中的不同位置1,检测时,将一个字符串走相同的n个hash函...
分类:
其他好文 时间:
2015-04-29 00:35:03
阅读次数:
202