Bloom Filter(布隆过滤器)
布隆过滤器本质上是一种数据结构 设计得十分精巧
特点是高效的插入和查询 可以用来告诉你 某种东西是否一定不存在。
false is false
true but be true.
相比较于List Set Map 他更高效,占用的空间少
那么这种过滤器是如何实现其功能的呢?
首先我们想一下我们之前是如何如何快速检索某个集合是否存在某个元素,最快是不是用hashmap?
虽然Hashmap快 但是也要考虑到他所占的空间(内存)大小。
因此 布隆过滤器在此基础上进行路改进 他是一个bit数组
现在我们要想办法把我们的值映射到数组中 而且一提到映射 我们就立刻想到哈希函数 但是哈希函数就是Hash Map组成原理,其实这样搞也没差了。所以这就是我们为什么用一个Bit数组 而不是渐渐单单一个数字。
由于哈希函数总是会出现冲突 所以我们用多个哈希函数,如果每一次映射的哈希值都一样 那么就说明有很大的概率是存在的 如果有任何一次哈希值不一样 那就说明肯定是不存在的。
下面图解一下:

从其中我们可以明显的看出来 布隆过滤器使用的数组的长度和我们选择的哈希函数的个数会直接影响到过滤器对true判断的准确率。


浙公网安备 33010602011771号