用于网页黑名单系统,垃圾邮件过滤系统,爬虫的网址判重系统。
一般的意思是在大量数据集合中,判断一个新数据是否存在于这个集合中。
数据量少还可以使用hashmap和位图bitmap。数据一大占用内存不理想。
布隆的做饭法是,开辟一个长度为m的位图数组,对于每一个集合的元素使用多个hash函数计算得值%m,落在数组上的位置
都置1,这样计算完一个集合样本之后,位图数组就被置了很多1,当一个新数据来了,将那多个hash函数计算一下,如果得到的%m之后发现在位图数组上都是1了,那么可以确定这个数据在集合里,如有一个或多个为0,那就不是。删一个样本不容易。
样本数量为n,失误率为p,
m = -(n*lnp)/(ln2)^2
哈希函数的个数k = ln2 * m/n;