应用场景:现有10亿个邮件地址,都是非垃圾邮件地址,存在集合S中。那么对于输入的任意邮件地址,如何判断是否在集合S中。
如果将10亿个地址都放入内存中查找,假设一个地址是10个字符,占用10个字节,那么10亿个地址需要占用10G内存,很显然是非常浪费资源的。
Bloom Filter 的思路:
1. 在内存中开1G的空间,记为R,总共80亿个bit,初始全部置为0。
2. 将10亿个邮件地址通过某个随机的hash函数,计算出一个整数,然后将R中对应的bit置为1。例如,整数
是1000,则将R中第1000位记为置为1。当然很有可能会对同一个位