bloom filter

bloom filter是什么?

Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见 Bloom filter 是牺牲了正确率和时间以节省空间。

上面这段说明是来自百度百科,听起来有点 绕口,我重新带入点画面感来描述一下:
Bloom filter像是一个宁杀错不放过的暴力执法者,他特别历害,当这块空间范围内有坏蛋就一定会被抓住并且从未失过手,但比较坑的是小机率会抓错人。

什么时候用bloom filter?

当需要判断元素是否在集合中的时候,通常是把元素先保存在集合内,当集合内的元素越来越多,且单个元素的量又有一点长的时候(比如说URL),集合占用的内存空间就会越来越大,检索速度会越来越慢、内存空间越占越多。这个时候可以考滤用bloom filter了。但是要注意的是它并不是精确的,如果你的场景对精度要求不高可以考滤使用。 我是在做爬虫框架时做URL去重用的,要求并没有那么精确。

具体细节我也是在百度百科上看的,想了解更多去这里吧
https://baike.baidu.com/item/bloom filter/6630926?fr=aladdin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值