1、使用场景
布隆过滤器用于检查元素是否存在在集合中,比list、set、dict占用空间更少。当以上类型的集合特别大时,以至于无法加载进内存时,布隆过滤器则显得更加有用。天下没有免费的午餐,布隆过滤器是一种概率数据结构,存在一定误报。
2、实现原理
布隆过滤器由以下几个部分组成:
- 个位组成的数组,每个位的初始值都为
- 一系列哈希函数组成的集合。每个哈希函数都将“键”值映射到上述的个桶中(对应于位数组中的个位)。
- 个键值组成的集合。
假设我们将布隆过滤器应用于流数据,我们的目的是让所有键值在中的元素通过,而阻挡不在中的元素。
位数组的所有初始位为,对于中的每个键值,利用哈希函数进行处理,得到一个哈希值序列,将这个序列对应的位数组位全部设置为.
当一个新的元素键L过来时,先计算出哈希值序列,在位数组对应的位全部为时通过,否则拒绝。
由于存在序列值全为1,而不在集合中,故布隆过滤器存在一定误报。
来源:CSDN
作者:kakarotte99
链接:https://blog.csdn.net/weixin_42433740/article/details/103733623