起因是这样的,今天在一个开发者群里面讨论布隆过滤器是元素是否存在判定的问题。一个老哥说书上讲的不对,布隆过滤器对不存在判定准确,对于元素存在判定不一定准确。我是认同这个说法的,但是这是实践。跟书上讲的理论还是有差异的。这个老哥又跟我一顿说还得看我考虑什么hash 算法,那我可就得展开说说了。

因为我们在现实开发中,资源是有限的,所以我们不能肆无忌惮的使用资源。所以在使用布隆过滤器的时候位数是有限的。此时我们就要对判定的资源进行 hash 运算。如果布隆过滤器位数太小或者资源量太大,那么碰撞的概率就会存在。

此时,如果重复率很高的情况下,要么优化 hash 算法,要么扩大过滤器位数。

这都是开发的时候有共识的东西。

但是理论不是这样啊,资源无限使用,我还考虑什么hash ,直接按位算,至死都不会有碰撞。没毛病啊。