当前位置: 首页 > news >正文

布隆过滤器

   这篇博客我们来说一下布隆过滤器

之前我们在讲redis缓存穿透的时候说可以使用布隆过滤器来解决这个问题

那么我们先来简单复习一下什么时缓存穿透

(一)复习缓存穿透

  我们都知道redis可以作为mysql的缓存帮忙抵挡大部分的请求,但是当redis中查找不到数据时就会去数据库中查找。

如果数据库中查找到了就会写到redis中,但是也会存在一些找不到的情况,如果找不到的话,后端又重复的大量发送这个请求,就会一次次的访问数据库,就有可能会导致缓存穿透(服务器挂了),所以针对缓存穿透,我们有几种处理办法

1.我们即使在数据库中查不到,也把他写到redis中,只不过值为null

2.提前校验,如果不存在就不查询了

3.使用布隆过滤器,把不存在的数据大部分都过滤掉

(二)布隆过滤器

我们注意刚刚的词,把不存在的数据“大部分”都过滤掉,那为什么是大部分呢?因为布隆过滤器存在误判性,所以在他的使用场景也在一些要求不太严格的场景下(允许一定的误判率)

 1.什么是布隆过滤器

布隆过滤器是一种数据结构,是由一个位数组和多个哈希函数构成的

使用位数组可以很好的节省空间

2.工作原理

   首先我们的每个位初始值都是0,每当我们存入一个元素时,我们会通过哈希函数并且模上他的大小计算出我们要把那个地方赋值为1

  当然一个哈希函数虽然可以,但是他的结果是很不准确的,所以我们有多个哈希函数,我们的元素要对这些哈希函数都进行运算取模

3.哈希冲突

  但是我们在学哈希表的时候,我们知道会发生哈希冲突,而这里我们的位数组很明显也无法使用开散列来解决,这就会导致会有一定的错误概率,即报告元素可能在集合中,但实际上并未被插入过。但布隆过滤器不会出现漏报(False Negative),即如果布隆过滤器说元素不在集合中,则这个结论是绝对正确的。

上述就说明了会有可能发生哈希冲突

   这时我们来查一个没有的元素,我们可以正确判断这个元素是没有的,因为他有一位是0,但是也可能全都为1

就像这样,如果全都为1,布隆过滤器就会认为我们是可以查到的,就会放行

所以布隆过滤器有一句话: 对于结果来说,不存在一定不存在,存在不一定存在

4.解决办法

1)我们可以扩大位数组的长度,让哈希冲突的概率变小

2)增加哈希函数个数

5.布隆过滤器的优缺点

优点:节省空间,我们适用位数组来存储数据,相较于其他数据结构,空间小了很多

查询速度快,只需要进行几次哈希运算,并且看看对应位置的值即可

缺点:随着元素的增多,发生哈希冲突概率变大,同时误判率也会变大

不可删除,我们无法把位数组中的1改变为0,因为我们不知道这个1是通过哪一个元素置为1的

相关文章:

布隆过滤器

这篇博客我们来说一下布隆过滤器 之前我们在讲redis缓存穿透的时候说可以使用布隆过滤器来解决这个问题 那么我们先来简单复习一下什么时缓存穿透 (一)复习缓存穿透 我们都知道redis可以作为mysql的缓存帮忙抵挡大部分的请求,但是当redis中…...

构建一个rust生产应用读书笔记四(实战6)

本节我们开始使用tracing来记录日志,实际上在生产环境中,更推荐使用tracing作为日志记录的首先,它提供了更丰富的上下文信息和结构化日志记录功能。tracing 不仅可以记录日志信息,还可以跟踪函数调用、异步任务等,适用…...

如何使用git新建本地仓库并关联远程仓库的步骤(详细易懂)

一、新建本地仓库并关联远程仓库的步骤 新建本地仓库 打开终端(在 Windows 上是命令提示符或 PowerShell,在 Linux 和Mac上是终端应用),进入你想要创建仓库的目录。例如,如果你想在桌面上创建一个名为 “my - project”…...

5.最长回文字串

给你一个字符串 s,找到 s 中最长的 回文 子串 。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s "cbbd"…...

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…...

【C++】13___STL

一、基本概念 STL(Standard Template Library,标准模板库)STL从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator)容器和算法之间通过迭代器进行无缝连接STL几乎所有的代码都采用了类模板或者函数模板 二、STL六大组件 分别是:容器、算法…...

在 Ubuntu 中启用 root 用户的远程登录权限

1. 概述:为什么需要启用 root 用户远程登录? 在 Ubuntu 中,出于安全原因,默认情况下 root 用户被禁止远程登录。然而,在某些情况下(如需要进行高权限操作的远程管理任务),启用 root…...

android 混淆

前沿 很久没用过混淆功能了,因为之前的包都使用第三方加固了,而且项目开发好几年了,突然要混淆也很麻烦。换了家公司后,感觉还是得混淆代码才行,不然直接暴露源码也太不行了。 启动混淆功能 isMinifyEnabled true …...

6、AI测试辅助-测试报告编写(生成Bug分析柱状图)

AI测试辅助-测试报告编写(生成Bug分析柱状图) 一、测试报告1. 创建测试报告2. 报告补充优化2.1 Bug图表分析 3. 风险评估 总结 一、测试报告 测试报告内容应该包含: 1、测试结论 2、测试执行情况 3、测试bug结果分析 4、风险评估 5、改进措施…...

让人工智能帮我写一个矩阵按键扫描程序

1.前言 嘉立创做了一块编程小车的蓝牙按键遥控器,按键是4*4矩阵的,通过蓝牙发送按键编码值给蓝牙小车(外围设备)。 原理图如下: 板子回来后,因为懒得写按键矩阵扫描程序,想想还是交给人工智能…...

基于MindSpore NLP的PEFT微调

创建notebook 登录控制台 创建notebook 如果出现提示按如下操作 回到列表页面创建notebook参数如下: 配置mindnlp环境 打开GitHub - mindspore-lab/mindnlp: Easy-to-use and high-performance NLP and LLM framework based on MindSpore, compatible with model…...

2024年12月CCF-GESP编程能力等级认证C++编程八级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5位数字或英文字母,要求…...

基于微信小程序的小区疫情防控ssm+论文源码调试讲解

第2章 程序开发技术 2.1 Mysql数据库 为了更容易理解Mysql数据库,接下来就对其具备的主要特征进行描述。 (1)首选Mysql数据库也是为了节省开发资金,因为网络上对Mysql的源码都已进行了公开展示,开发者根据程序开发需…...

moment()获取时间

moment 是一个 JavaScript 日期处理类库。 使用: //安装 moment npm install moment -- save引用 //在main.js中全局引入 import moment from "moment"设定moment区域为中国 //import 方式 import moment/locale/zh-cn moment.locale(zh-cn); 挂载全…...

CAD学习 day3

细节问题 快捷键X 分解单独进行操作如果需要制定字体样式选择 gdcbig.shx快捷键AA 算面积 平面布置图 客户沟通 - 会面笔记 - 客户需求(几个人居住、生活方式、功能需求(电竞房、家政柜)、书房、佛龛、儿童房、风格方向)根据客户需求 - 平面方案布置 (建议做三个以上方案) -…...

windows免登录linux

windows 生成秘钥文件 ssh-keygen -t rsa 将公钥传送到服务器 scp C:\Users\xx/.ssh/id_rsa.pub xxxx:/home/ruoyi/id_rsa.pub linux 使用ssh-copy-id -i ~/.ssh/id_rsa.pub userhost 如果禁用root登录,先开启 vim /etc/ssh/sshd_config PermitRootLogin yes …...

边缘计算的方式

做边缘计算这个行业要想赚得到收益,那一定要找到适合自己参与的一种方式。目前参与边缘计算的话,它主要有两个渠道。 第一个就是用盒子来跑,这个盒子的话包括光猫、路由器、摄像头等等,盒子是一条网线带动一个盒子,它…...

Android GO 版本锁屏声音无效问题

问题描述 Android go版本 在设置中打开锁屏音开关,息屏灭屏还是无声音 排查 vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\keyguard\KeyguardViewMediator.java private void setupLocked() {...String soundPath Settings.G…...

Android之RecyclerView显示数据列表和网格

一、RecyclerView的优势 RecyclerView 的最大优势在于,它对大型列表来说非常高效: 默认情况下,RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如,如果您的列表包含一千个元素,但只有 10 个元素可见&#xff0…...

汽车发动机电控系统-【传感器】篇

燃油:喷油控制(不多不少) 进气 主传感器MAP:进气压力传感器(微型车)、空气流量传感器MAF 辅助传感器:节气门传感器、水温传感器(提供暖机工况)、进气温度传感器 反馈…...

牛客周赛 Round 72 题解

本次牛客最后一个线段树之前我也没碰到过&#xff0c;等后续复习到线段树再把那个题当例题发出来 小红的01串&#xff08;一&#xff09; 思路&#xff1a;正常模拟&#xff0c;从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…...

Python AI后台服务器

把数据训练放在后台&#xff0c;首先碰到的一个问题是如何高效地从数据库把数据请求下来。 分别试了几个库 modin 号称和pandas能够无缝衔接&#xff0c;试了下&#xff0c;确实pd.read_sql蛮快的&#xff0c;但是下来后数据格式就变了&#xff0c;不太好进行后续处理了conne…...

音视频入门基础:MPEG2-TS专题(19)——FFmpeg源码中,解析TS流中的PES流的实现

一、引言 FFmpeg源码在解析完PMT表后&#xff0c;会得到该节目包含的视频和音频信息&#xff0c;从而找到音视频流。TS流的音视频流包含在PES流中。FFmpeg源码通过调用函数指针tss->u.pes_filter.pes_cb指向的回调函数解析PES流的PES packet&#xff1a; /* handle one TS…...

Qt Q_ENUM enum 转 QString 枚举字符串互转; C++模板应用

Part1: Summary 项目中我们常用到命名&#xff0c;使用 enum 转成 string &#xff0c;方便简洁&#xff1b;Qt给我们提供了一个很方便的功能 Q_ENUM&#xff0c;可以实现枚举字符串互转&#xff1b; Q_ENUM宏将枚举注册到元对象系统中&#xff1b; QMetaEnum::fromType获取枚…...

Mac配置 Node镜像源的时候报错解决办法

在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…...

windows C#-为枚举创建新方法

可使用扩展方法添加特定于某个特定枚举类型的功能。 示例 在下面的示例中&#xff0c;Grades 枚举表示学生可能在班里收到的字母等级分。 该示例将一个名为 Passing 的扩展方法添加到 Grades 类型中&#xff0c;以便该类型的每个实例现在都“知道”它是否表示合格的等级分。 …...

ISCTF复现-misc

File_Format 下载附件后用010打开查看文件头会发现是个exe文件 格式&#xff1a;文件描述&#xff08;后缀名&#xff09;&#xff0c;文件头(hex)&#xff1a;文件头标识&#xff08;十六进制&#xff09;PNG (png)&#xff0c;文件头(hex)&#xff1a;89504E47 PNGImageFile…...

知道一个服务器IP地址如果attack服务器地址

CSDN提醒&#xff1a;亲爱的用户&#xff1a;你好&#xff01; 你的账号于2024-12-17 19:04:04在美国美国登录&#xff0c;登录IP为&#xff1a;47.238.159.124。若非本人登录&#xff0c;请及时修改密码。 莫名其妙显示美国登录了我的CSDN博客 卧槽 服务器的IP地址是一个用于…...

【泛微系统】查询角色所在流程操作组

查询角色所在流程操作组 -----sqlserver-------SELECT CASE WHEN a.workflowname LIKE ~`~`% THEN SUBSTRING(a.workflowname, CHARINDEX(`~`7, a.workflowname...

ceph的RGW对象存储网关部署和使用

RGW对象存储网关部署和使用 Rados GateWay简称rgw&#xff0c;底层采用亚马逊的S3作为对象存储实现。 参考链接&#xff1a; https://docs.ceph.com/en/reef/radosgw/ https://docs.ceph.com/en/reef/radosgw/bucketpolicy/ https://docs.aws.amazon.com/zh_cn/AmazonS3/lat…...

智慧公交指挥中枢,数据可视化 BI 驾驶舱

随着智慧城市的蓬勃发展&#xff0c;公共交通作为城市运营的核心枢纽&#xff0c;正朝着智能化和数据驱动的方向演进。通过整合 CAN 总线技术(Controller Area Network&#xff0c;控制器局域网总线)、车载智能终端、大数据分析及处理等尖端技术&#xff0c;构建的公交“大脑”…...

fastjson 字符串转对象 boolean类型字段转换失败

fastjson 字符串转对象 boolean类型字段转换失败 问题出现场景问题出现的原因问题解决方式1方式2 问题出现场景 有一个json字符串&#xff0c;需要将这个字符串转换为对象&#xff0c;字符串中有个字段是布尔类型&#xff0c;对应的value是true&#xff0c;使用阿里的fastjson…...

浏览器事件循环机制

JavaScript 是单线程运行的语言&#xff0c;同一时间只能执行一个任务。单线程意味着&#xff1a; 如果某个任务执行时间过长&#xff0c;后续任务会被阻塞。 同步任务和异步任务的调度需要一种机制来管理。 为了解决这个问题&#xff0c;事件循环应运而生&#xff0c;它可以…...

Redis缓存穿透与缓存击穿

Redis缓存穿透与缓存击穿 缓存穿透 在默认情况下&#xff0c;用户请求数据时&#xff0c;会先在缓存(Redis)中查找&#xff0c;若没找到即缓存未命中&#xff0c;再在数据库中进行查找&#xff0c;数量少可能问题不大&#xff0c;可是一旦大量的请求数据&#xff08;例如秒杀…...

WEB自动化测试(selenium工具)框架、面试题

一、什么是web自动化测试 让程序员代替人为去验证web项目功能的过程 二、什么web项目适合自动化测试 1)需求变动不频繁 测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁&#xff0c;测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本&…...

Spring Boot 3.X:Unable to connect to Redis错误记录

一.背景 最近在搭建一个新项目&#xff0c;本着有新用新的原则&#xff0c;项目选择到了jdk17SpringBoot3.4。但是在测试Redis连接的时候却遇到了以下问题&#xff1a; redis连不上了。于是我先去检查了配置文件的连接信息&#xff0c;发现没问题&#xff1b;再去检查配置类&am…...

ISP算法之黑电平BLC校正

黑电平形成原因 Sensor本身问题 CMOS Sensor本身的电路会存在暗电流(dark current)&#xff0c;在没有光照条件下&#xff0c;感光器件等也会存在流动的电流&#xff0c;在光敏二极管器的伏安特性曲线中反向截止区电流并不为零&#xff08;如下图&#xff09;。导致在Sensor遮…...

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…...

【Python】利用函数模拟创建【栈】的数据结构操作

知识解读&#xff1a;来自&#xff1a;https://fishc.com.cn[#FwSB,M 9xKOA!^6fP)_EC(nsd什么是栈呢&#xff1f;Powered by https://fishc.com.cn3>A?5JXL#_}YBGD"FWdubKeyhQP栈是一种具有 FILO 特性的数据结构&#xff0c;即先放入的数据反而后取出。e&"%b…...

10 JVM内置锁

我们先想明白一个问题&#xff0c;什么是锁&#xff1f; 我们去给自己家锁门的时候&#xff0c;只有对应的一把钥匙能开锁。当用钥匙去开锁的时候&#xff0c;锁孔的内置型号会验证钥匙能不能对的上。能对上就能把锁打开&#xff0c;然后进到家里使用家里的资源。否则就在外面等…...

前端项目部署方法

ngnix服务器部署 下载nignx&#xff0c;我下的是windows版本的 下载链接&#xff1a;[https://nginx.org/en/download.html](https://nginx.org/en/download.html) 解压文件 如果原本的80端口号被占用了&#xff0c;可以改为其他的端口号 可以点击nginx.exe文件启动nginx,它可能…...

【1.排序】

排序 笔记记录 1.排序的基本概念1.1 排序的定义 2. 插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔排序 3. 交换排序3.1 冒泡排序3.2 快速排序 4. 选择排序4.1 简单选择排序4.2 堆排序 5. 归并排序、基数排序和计数排序5.1 归并排序4.2 基数排序4.3 计数排序 6. 各种内部排…...

visual studio添加滚动条预览

如何在vs中添加如图的滚动条呢&#xff1f; 打开VS 工具栏 选项 - 文本编辑器 - C/C - 滚动条 行为-使用缩略图 -- 确定...

[SAP ABAP] ALV状态栏GUI STATUS的快速创建

使用事务码SE38进入到指定程序&#xff0c;点击"显示对象列表"按钮 鼠标右键&#xff0c;选择"GUI状态" 弹出【创建状态】窗口&#xff0c;填写状态以及短文本描述以后&#xff0c;点击按钮 点击"调整模板"&#xff0c;复制已有程序的状态栏 填…...

鸿蒙元服务项目实战:备忘录UI页面开发

前言 之前写过一篇关于元服务项目的上架流程&#xff0c;为了更好的了解及开发元服务&#xff0c;准备从0到1简单开发一个小项目&#xff0c;也希望能够帮助到刚刚介入到鸿蒙开发的同学&#xff0c;具体项目呢&#xff0c;也是十分的简单&#xff0c;就是一个小巧的备忘录项目&…...

【Java基础面试题022】什么是Java内部类?有什么作用?

回答重点 Java内部类是指&#xff1a;在一个类的内部定义的类&#xff0c;Java支持多种类型的内部类&#xff0c;包括成员内部类、局部内部类、匿名内部类和静态内部类。实际上内部类是一个编译层面的概念&#xff0c;像一个语法糖一样&#xff0c;经过编译器之后其实内部类会…...

量子芯片在新医疗领域的应用研究展望

一、引言 &#xff08;一&#xff09;研究背景 随着科技的不断发展&#xff0c;量子芯片在新医疗领域有望在多个技术方面实现创新突破&#xff0c;进而持续拓展其应用范围与深度。 在提高纠错能力方面&#xff0c;当前量子比特的易错性是制约量子芯片广泛应用的关键因素之一…...

不可重入锁与死锁

不可重入锁确实可能导致死锁&#xff0c;特别是在同一线程尝试多次获取同一把锁时。如果锁是不可重入的&#xff0c;那么线程在第二次尝试获取锁时会永远阻塞&#xff0c;从而导致死锁。 不可重入锁与死锁的关系 不可重入锁不允许同一个线程多次获取同一把锁。在以下情况下&am…...

Linux(Ubuntu)命令大全——已分类整理,学习、查看更加方便直观!(2024年最新编制)

Hello! 认真好学的小伙伴们&#xff0c;大家好呀&#xff08;Respect~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习 Ubuntu命令大全 吧&#xff01;祝你有所收获&#xff01; 文章目录 前言&#x…...

画一颗随机数

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>codePen - Random Tree</title> </head> <body><canvas></canvas><script>const canvas doc…...