原来布隆,他还会.......

简介: 原来布隆,他还会.......

前言:

今天小面就和大家来聊一下布隆!!!他可以开盾,大招起飞!可保人可开团!!!......不对不对 走错片场了..... 小面明明是it技术博主啊!

小面今天要讲的是布隆过滤器!!

隆过滤器是干什么的呢?比如一般我们碰上缓存穿透问题,我们就可以用布隆过滤器去解决这个问题。

正文:

什么是布隆过滤器?

布隆过滤器,我们可以把他简单的认为就是一个固定大小的位图(bitmap)和映射函数构成。在初始状态下所有的位置都是0。我们一般是在某个需要去判断是否重复的业务场景去使用布隆过滤器。

布隆过滤器的原理

[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

假设我们初始化一个固定长度的布隆过滤器,假设一个变量进入布隆过滤器,我们将使用k个映射函数将这个变量映射进bitmap并且把0变成1. [0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0]

在查询这个变量是否存在的时候,只需要判断是否有1,如果这个变量进行函数后所有的位置都是1,那么说明该变量有可能存在 如果有0,那么该变量肯定不存在

为什么布隆过滤器说存在,那么是可能存在

如果多个变量进入了一定大小的布隆过滤器,就会存在一定概率的误判 假设:

[1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0]

此时我进入一个变量,在进行函数运算后得到的位数是1,4,6 那么4,6的位置是本来已经就是1了,无法判断究竟是哪个变量输入的,这就是导致误判的原因。

为什么布隆过滤器说不存在,那么是一定不存在

当我们用布隆过滤器进行过滤的时候,如果查询到其中一位的值为0,说明在这个布隆过滤器的bitmap中从来没有变量在函数运算后使该位置变为1,所以我们就确定该变量是肯定不存在的。

布隆过滤器的优点

我们使用布隆过滤器最常见的用处就是查看是否重复,像平常使用hashmap或者hashset是可以去实现的,但是在数据量非常庞大的时候,使用hashmap或者hashset占用的存储空间都是很大的。相反布隆过滤器占用的空间就很小,因为他是bitmap位图实现的。布隆过滤器插入查询的效率也很高。

布隆过滤器的缺点

布隆过滤器的缺点就是,有一定误判的概率。布隆过滤器不能去删除元素。我们只能去开新的bitmap去使用

对于布隆过滤器,无法删除,有两个解决办法,一个是计数布隆过滤器,另一个就是布谷鸟过滤器,在文末做补充。

布隆过滤器的使用场景

redis缓存穿透问题:大量查询不存在数据库的数据,用布隆过滤器就可以直接屏蔽这些查询,避免并发打进数据库 黑白名单校验 判断用户是否有某些浏览记录等等

拓展:计数布隆过滤器

为了解决布隆过滤器无法删除的问题,就出现了一个计数布隆过滤器或者叫做增强版布隆过滤器,这个过滤器简单来说就是 原来的布隆过滤器采用bitmap,而计数过滤器使用的是数组。当变量进入布隆过滤器经过函数运算那么就+1,当删除时就-1,无法删除的问题这样子可以去解决,但是这个计数过滤器仍然也还是有误判的概率

拓展:布谷鸟过滤器

布谷鸟过滤器的原理简单来说就是,一个变量进行函数运算,算出两个位置,如果有空位则插入,如果没有空位就会挤走一个指纹,并且为这个指纹重新去寻找新的位置(当然不会去无限寻找的情况,一般会设置一个阈值,超过阈值就会去扩容) 布谷鸟过滤器是可以进行删除的。之后我将新开一篇文章给大家详细讲一下布谷鸟过滤器的原理。

总结

布隆.....过滤器~ 你懂了吗~

相关文章
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
199 1
|
7月前
|
存储 机器学习/深度学习 缓存
vLLM 核心技术 PagedAttention 原理详解
本文系统梳理了 vLLM 核心技术 PagedAttention 的设计理念与实现机制。文章从 KV Cache 在推理中的关键作用与内存管理挑战切入,介绍了 vLLM 在请求调度、分布式执行及 GPU kernel 优化等方面的核心改进。PagedAttention 通过分页机制与动态映射,有效提升了显存利用率,使 vLLM 在保持低延迟的同时显著提升了吞吐能力。
3538 19
vLLM 核心技术 PagedAttention 原理详解
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
6.2二叉树的迭代遍历
6.2二叉树的迭代遍历
154 1
|
消息中间件 负载均衡 Java
Java微服务通讯方式有哪些?
【8月更文挑战第18天】Java微服务通讯方式有哪些?
330 1
|
资源调度 数据可视化 项目管理
看板视图如何提升团队效率?
看板视图源自丰田生产系统的管理工具,通过可视化手段展示任务、工作流和项目进度,以卡片形式表示任务,在不同列间移动反映工作进展。它能提高团队协作效率、优化工作流、减少瓶颈,适用于项目管理和软件开发等领域。
|
Serverless Python
函数计算FC的sd里面inpaint anything安装了用不了是怎么回事?
函数计算FC的sd里面inpaint anything安装了用不了是怎么回事?
800 1
|
存储 供应链 安全
构建未来:智能合约在区块链生态系统中的关键作用
【5月更文挑战第30天】 随着区块链技术的迅猛发展,智能合约已成为推动这一领域创新的核心机制。本文深入探讨了智能合约的技术基础、运作原理及其在各行各业中的应用潜力。我们将分析智能合约如何提高交易效率,减少法律纠纷,并为分布式应用(DApps)提供坚实的基础。文章还将讨论智能合约面临的挑战与未来的发展方向,为读者提供一个全面且深入的视角,以理解这一变革性技术如何塑造数字经济的未来。
|
自然语言处理 搜索推荐 算法
阿里云OpenSearch重磅推出LLM问答式搜索产品,助力企业高效构建对话式搜索服务
OpenSearch推出LLM智能问答版,面向行业搜索场景,提供企业专属问答搜索服务,基于内置的LLM大模型提供问答能力,一站式快速搭建问答搜索系统。
12938 7