常见分布式算法之(一)——Bloom过滤器

一、 快速定义

(1)布隆过滤器实现的功能类似与Set集合,用于判断容器中数据是否存在。

(2)当Set集合特别大时,可以使用Bloom过滤器替代Set集合节省内存空间。

(3)与Set集合不同的是,布隆过滤器判断不存在时则一定不存在;判断存在时,则不一定存在(误判是一个小概率事件,取决与Bloom过滤器的大小和Hash算法)。

二、 实现原理

(1)初始化申请一个bitset集合,用于记录存储内容;确定一组hash函数及每个hash函数的算法(注意这里的hash取值范围是bitset长度,即保证每个bit位都有机会被hash到)。

(2)插入时,key依次调用hash方法,算出每个hash值,并通过该hash值找到具体的bit,同时置该bit值为1。

(3)查找时,key依次调用hash方法,算出每个hash值,并通过该hash值找到具体的bit,读取bit值,如果所有的值都同时为1时,即判定存在该key,否则判定不能存在。

 常见分布式算法之(一)——Bloom过滤器

三、回顾总结

(1)通常一组hash函数的个数是8。

(2)计算hash值时,通过& bitset长度的方法,保证hash取值范围。

(3)bitset长度越大,准确率越高,hash函数越多,准确率也越高。

上一篇:golang go 中字符串和各种int类型之间的相互转换方式


下一篇:北大肖臻《区块链技术与应用》学习笔记