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

布隆过滤器原理、特性及短信黑名单过滤业务实现方案

一、 什么是布隆过滤器?(作用、组成、添加元素流程、查询元素的流程、特点(误判、不支持删除)

布隆过滤器(Bloom Filter)是由Burton Howard Bloom于1970年提出的。我们可以把它看作由位数组和一组哈希函数组成的数据结构,它占用空间少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。

换句话说是一种用来检查元素是否存在于指定集合中的数据结构,这种数据结构是高效且性能很好的,但缺点是具有一定的错误识别率和删除难度。并且,理论情况下,添加到集合中的元素越多,误报的可能性就越大。

组成:位数组+多个哈希函数组成

添加元素流程:首先对需要存入的元素进行不同的哈希函数运算,生成不同的哈希结果,然后将每一个哈希值对应到位数组的位置,并且将对应的位置下标从0改成1。

查询元素的流程:对于待查询元素,使用和添加元素完全相同的个数哈希函数进行计算,算出若干个哈希值,映射得到位数组上对应位置的下标进行比对,只要有任意一个位置的值为 0,说明该元素一定没有存入布隆过滤器;如果所有的值均为 1,则无法确定元素一定存在,只能判定元素大概率存在,因为存在误报可能性。

特点:1、误判性

2、不支持删除

二、布隆过滤器的优点和缺点有哪些?

优点:

1、存储空间高效:仅使用 bit 数组存储标记,不存放原始数据,同等数据量下内存远小于 List、Set、Map;

2、读写性能高:插入与查询只需要多次哈希运算,效率很高;

3、数据本身不存储,增强安全性:没有保存原始元素,无法直接从过滤器中还原数据;

缺点:

1、存在误报问题:有可能把不存在的元素判定为存在,元素数量越多,误报概率越高;

2、难以删除元素:多个元素会共享比特位,直接置 0 会影响其他元素判断;

3、无法获得实际元素;

三、 发送业务通知短信前,要判断手机号码是否在黑名单(1000w),实现思路

针对 1000 万级别的手机号码黑名单判断场景,使用布隆过滤器(Bloom Filter)来实现,具体实现思路如下:

1、数据初始化

把数据库中的1000万个黑名单手机号全部取出,依次通过哈希函数将所有黑名单手机号都添加到布隆过滤器中。

2、业务收到发送请求,先用手机号查询布隆过滤器:

使用相同哈希函数,进行查询;

如果过滤器判定不存在:则手机号不在黑名单,允许发送短信;

如果过滤器判定存在:则有可能在黑名单里,因为布隆过滤器存在误判的可能,所以需要进行二次查询来确定是否真的在黑名单里。

http://www.jsqmd.com/news/1286094/

相关文章:

  • 硬件工程师必修课:信号与电源完整性设计实战指南
  • Python 机器学习与深度学习气象水文海洋全域应用技术体系:地学时空数据 AI 建模、数值模式后处理、气象海洋水文智能预测与数据处理
  • STM32开发板选购指南:正点原子、野火、普中三大品牌深度对比
  • 2026货梯销售安装十大热门服务商真实横评选定再装不交智商税 - 工业设备
  • 橡王国际售后服务可靠吗 常见问题解答(2026专家版) - 汇聚至此
  • 2026年变压器优化计算软件应用后设计效率提升50% - 万相科技
  • 告别臃肿:G-Helper让你的华硕笔记本性能与续航兼得
  • 魔珐星云实战:一个商场导购数字人项目从翻车到可落地的复盘
  • 日志一天增长2GB:个人量化软件怎样设置轮转上限
  • C语言总结(五)---数组
  • Windows DNS缓存查看与管理:从基础命令到高级排错指南
  • Python实现质因数分解:从算法原理到代码优化与实战应用
  • 天光家具十大热门品牌真实横评,选定再拍不花冤枉钱 - 工业品牌热点
  • Claude Code 官方“投毒”标记中国用户翻车,这次国外用户也怒了
  • STM32驱动SPI彩屏:从硬件连接到DMA刷屏的完整实战指南
  • 2026年变压器企业工业软件服务商选型避坑要点 - 万相科技
  • Moco框架实战:轻量级HTTP API模拟工具的原理与应用
  • 如何用baidupankey实现百度网盘提取码的智能查询:技术视角解析
  • U8g2嵌入式显示库:从硬件抽象到性能优化的全攻略
  • 启发式合并:原理、应用与优化策略
  • 终极Flash浏览器指南:如何在Windows上完美运行经典Flash游戏
  • 北京地产新媒体营销体验测评及优质服务商推荐
  • RAG 中如何选择 Embedding 模型
  • 低成本实现舵机示教:从反馈信号到动作复现的完整实践
  • PLC顺序控制实战:定时器与比较指令实现电机顺序启停
  • NumPy结构化数组:高效处理混合类型数据的底层利器
  • SpringBoot+Vue论文管理平台开发实践
  • Dify知识库加密PDF解析失败?三步诊断与解决方案详解
  • 2026年值得信赖的打包带厂家推荐 体验服务品质之选 避坑指南 - 工业品牌热点
  • SAP PS模块WBS元素成本中心配置详解:从原理到实战避坑指南