布隆过滤器

一、布隆过滤器介绍

布隆过滤器实际上是一个很长的二进制向量【位数组】和一系列随机哈希映射函数【是为了减少误判】,每个哈希函数会映射元素到位数组中某一位上。主要用于检索一个元素是否在一个集合中。 一次查询返回的结果是可能在集合里或者绝对不在集合里。
原理:当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了。如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能存在。
优点是空间效率和查询时间都远远超过一般的算法;
缺点是有一定的误识别率和删除困难。
操作方式
添加:设置每一个哈希函数映射到的位为1。
查询:查询每一个哈希函数映射到的位是否都为1。只要有任意一个位不为1,则表明该元素绝对不存在。如果都为1,但也只能表明该元素可能存在(对于一般的bloom filter实现)。 删除:不支持。

二、布隆过滤器源码解读

1、以guava的BloomFilter源码进行解读

在这里插入图片描述
使用Bloom Filter时,会由预估数据量n和期望的误判率fpp会计算出hash函数选取个数和bit数组大小;</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy_W.W.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值