标签:Set hash 集合 bitset 过滤器 bit 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,否则判定不能存在。
三、回顾总结
(1)通常一组hash函数的个数是8。
(2)计算hash值时,通过& bitset长度的方法,保证hash取值范围。
(3)bitset长度越大,准确率越高,hash函数越多,准确率也越高。
标签:Set,hash,集合,bitset,过滤器,bit,Bloom,分布式 来源: https://www.cnblogs.com/jaco32/p/14976086.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。