- 联系方式:1761430646@qq.com
- 菜狗摸索,有误勿喷,烦请联系
布隆过滤器
-
作用:类似于
Set
集合,判断某个元素是否存在集合中 -
实现原理
-
类似于
HashMap
的实现过程,通过构建一个bit[]
数组(初始值为 0 ),以及构造多个散列函数 -
存放某元素时:将要存放的元素通过多个散列函数计算得到多个位置值,并把
bit[]
对应的位置值置为 1 -
判断某元素是否存在时:也是将此元素通过多个散列函数计算得到多个位置值,然后在
bit[]
数组对应的位置看是否为 1,如果对应位置中某个为 0,则此元素一定不存在,如果所有对应位置均为 0,则此元素时可能存在
-
-
优点:
- 空间效率和查询时间都远远超过一般的算法
- 保密性强,布隆过滤器本身不存储元素本身
-
缺点:
-
不能删除元素:由于哈希冲突的问题,所以
bit[]
数组上某个位置上的值为 1,其可能是几个元素共有的,删除后会导致其他元素的误识别 -
元素越多,误报率越大
-
无法获取元素本身
-
-
应用场景:
- 解决
Redis
缓存穿透问题 - 推荐类事物不再推荐
- 垃圾邮件过滤
- 解决
-
使用
- 现在自己还基本上用不到,先理论为主