05并查集 + 散列表 + 布隆过滤器 + 跳表 + 自动机(D3_布隆过滤器)

目录

一、定义

二、原理

1. 布隆过滤器的数据结构

2. 检索和插入原理

3. 修改和删除

三、使用场景

1. Redis通过布隆过滤器防止缓存穿透

2. RocketMQ通过布隆过滤器防止消息重复消费

四、优缺点

1. 优点

2. 缺点


一、定义

以下定义来自百度百科:

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系

列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和

查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。

从上述定义我们可以得到以下关键信息:

  • 布隆过滤器是由很长的二进制向量(即可以理解成很长的0、1数组)与一系列随机映射函数(Hash函数)构成。
  • 布隆过滤器的作用是检索一个元素是否存在我们的集合之中。
  • 优点是空间效率和查询时间都比一般的算法要好的多;缺点是有一定的误识别率和删除困难。

注意!接下来的原理我们都会基于定义来逐句解释和讲解布隆过滤器,请大家记住上述三点关键

信息。

二、原理

1. 布隆过滤器的数据结构

我们从定义总结的关键信息可知:布隆过滤器是由很长的二进制向量(即可以理解成很长的0、1

数组)与一系列随机映射函数(Hash函数)构成。因此我们可以将布隆过滤器理解成下图这种很

长的一个二进制数组:

正是由于布隆过滤器的数据结构仅需要存储“0”或“1”,因此所占用内存极少,这也是布隆过滤器的

一大优点。

2. 检索和插入原理

从上图布隆过滤器的数据结构图和定义的关键信息我们可以知道:布隆过滤器实际上是个很长的

二进制数组,作用是检索一个元素是否存在我们的集合之中。那么布隆过滤器是如何通过上述数

据结构判断一个元素是否存在我们的集合之中的呢?

这里就需要用到我们定义中提到的“一系列随机映射函数(Hash函数)”了。

首先我们需要知道什么是Hash函数?这里我们给出Hash函数的一个简要的说明:

简单来说Hash函数就是把输入值通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingW丨编程之路

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值