Bloom Filter的证明以及如何使用
前言, 原理就不讲了
如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通
过比对来判定是否在集合内:链表、树,map等数据结构都是这种思路。但是随着集合中元素数目的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。map速度是o(1),但是存储空间会越来越大,这时候可以使用Bitmap的思想,也就是使用Bloom Filter来做。
本文也不想将什么原理,将讲一下证明与参数的确定,我也推了一遍,感觉还是挺有意思的,而且想到目前的工作有时候可能也用得上。
证明方法涉及到一点点概率论和微积分吧,并不算难
使用的话: 可以自己写,但是知道有哪些些hash函数
来一张参考的
,不过既然原理都懂了,我也就懒得造轮子了,
github上一搜一大把,而且调用起来也挺方便,
下面推荐一下,感觉这个做的挺不错的, 怎么使用上面也有讲了
https://github.com/Baqend/Orestes-Bloomfilter