布隆过滤器

判定一个字符串是否存在

1.使用word文档时,判断某个单词是否拼写正确

2.网络爬虫程序,不去爬相同url页面

3.垃圾邮件过滤算法如何设计

4.缓存崩溃后造成的缓存击穿

5.一个嫌疑人的名字是否已经在嫌疑名单上

 

布隆过滤器原理:当一个元素被加入集合时,通过K个Hash函数将这个元素映射成一个位数组中的K个点,把它们置为1.

检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了。如果这些点有任何一个0,则被检元素一定不在,

如果都是1,则被检元素很可能在。

 

Hash函数

常见的应用比较广的hash函数有MD5,SHA1,SHA256,一般用于信息安全方面,比如签名认证和加密等。 比如我们传输文件时习惯用对原文件内容计算它的MD5值,生成128 bit的整数,通常我们说的32位MD5值, 是转换为HEX格式后的32个字符

 

在布隆过滤器算法中,不能因为有碰撞的可能,即添加一个元素后,如果设置了k个bit为1,且某个bit位碰撞后,我们删除该元素时恰恰设置该bit位为0,

则碰撞的元素无法判断,那么不能在布隆过滤器中删除元素

 

posted @ 2020-02-12 22:26  -Ryan-  阅读(98)  评论(0编辑  收藏  举报