首页 > 代码库 > 谈谈我对bloom filter的理解。

谈谈我对bloom filter的理解。

我们都看过封神榜吧,每一个神位都对应着一个人。

在西周时代,如果一个人声称自己是神,那么他必须可以通过封神榜的验证,如果封神榜验证了下这个人,发现神位上根本没这号人,那么这个人绝对不是神。

但是封神榜的验证方式是有漏洞的,那些企图依靠神的名声招摇撞骗的人之中,有些人发现了这个秘密,他们可以通过伪造自己的名字,来欺骗封神榜,虽然符合

要求的名字很少很少。但是总有一些人找到了些能欺骗封神榜的名字。

这样一来,封神榜验证一个人是不是神,只有两种结果。 一种是这个人不是神,这个结果是肯定正确的,只能说明这个人伪装的不是很好。第二种这个人是神,那么就得好好斟酌了,有可能是这个人找到一个漏洞,欺骗了封神榜,冒充了某个神。

那么海量处理利器,bloom filter是个什么东东呢?   它有两样东西,一个位数组,一组hash函数。每个hash函数都可以将这个人映射到一个特定位上。   这组hash函数就是用来验证一个人是不是神的规则。而位数组就相当于封神榜,封神榜呢?有一个规则,必须是代表这个人的几个不同位置同时为1,才承认这个人是神。hash函数将一个人映射到封神榜的不同位置,若发现这些不同的位置的值都是1,那么就勉强的认为这个人是神。如果发现这个人通过这组hash函数映射的不同位,上,居然有些位置是0,或是全是0,那么封神榜就会无情的告诉它,你丫不是神,玩蛋儿去。偷笑

谈谈我对bloom filter的理解。