关于布隆过滤器(Bloom-Filter)的理解

简介:
Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元素是否在一个集合中,其优点是空间效率和查询时间都远远超过其他算法,其不足在于Bloom- Filter存在着误判。  因此,  Bloom Filter  不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,  Bloom Filter  通过极少的错误换取了存储空间的极大节省。 
实质:牺牲准确率来换取时间和空间

基本思想:
Bloom-Filter实际上是一个很长的二进制向量和一系列随机映射函数
Bloom-Filter算法的核心思想就是利用多个不同的Hash函数来解决“冲突  ”。计算某元素x是否在一个集合中,首先能想到的方法是将所有的已知元素保存起来构成有一个集合R,然后用元素x跟这个R中的元素一一比较来判断是否存在于集合R中,我们可以采用链表等数据结构来实现,但是,随着集合R中元素的增加,其占用的内存将越来越大。试想,如果有几千万的不同的网页需要下载,所需的内存足以占用掉整个进程的内存地址空间。即使是使用MD5,UUID这个方法将URL转成固定的短小的字符串,内存占用也是相当巨大的。
    一般来讲,计算机中的集合是用hash table来存储的,它的好处就是快速、准确,缺点是浪费存储空间。当集合巨大是,存储效率低的问题就显现出来了。但是当我们使用多个hash函数的时候可大大的节省存储空间。

应用:
Bloom-Filter一般用于在大数据量的集合中判定某元素是否存在。例如邮件服务其中的垃圾邮件过滤器。在搜索引擎中,Bloom-Filter常用于网络爬虫的URL过滤。网络爬虫通常有一个URL列表,保存着和将要下载和已经下载的网页的URL,网络蜘蛛下载了一个网页,从网页中提取到亲的URL后,判断该URL是否已存在于列表中,此时,Bloom-Filter是最好的选择

在java实现中需要导入第三方的jar包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值