1. 什么是布隆过滤器?(作用、组成、添加元素流程、查询元素的流程、特点【误判、不支持删除】,优缺点,典型方案:短信黑名单(1000 万手机号过滤)实现思路)
1.定义布隆过滤器Bloom Filter是由空间高效的概率性数据结构用于判断一个元素一定不存在 / 可能存在常用来解决海量数据去重缓存穿透判断请求的数据是否有效避免直接绕过缓存请求数据库等2.组成1.位数组BitSet/Bit Array位数组中的元素都只占用1 bit并且每个元素只能是0或者1。内存占用极小。2.若干个相互独立的哈希函数k 个不同 seed种子的哈希函数同一个元素会被计算出 k 个不同下标。3.添加元素流程1.传入待存入元素2.使用布隆过滤器中的哈希函数对元素值进行计算得到哈希值有几个哈希函数得到几个哈希值3.哈希值在位运算中对应的下标值为14.查询元素流程1.传入带查询元素2.使用k个哈希函数计算出k个下标;3.判断1.只要任意一个bit位0→元素一定不存在2.所有k个bit位1→元素可能存在5.核心特点1存在误判现象元素实际不存在但是查询返回可能存在原因其他元素的哈希下表恰好把当前元素需要的所有bit位置1总结不会漏判只会误判。说不存在一定不存在说存在不一定真存在。2不支持删除元素一个 bit 位会被多个元素共用。 如果直接把某个 bit 置 0可能同时影响其他存在的元素无法安全删除单个元素。拓展改进计数布隆过滤器Counting Bloom Filter把 bit 改为计数器支持删除但内存开销上升。6.优点内存占用极低添加、查询操作时间复杂度O(k)k 为哈希函数数量性能极高可以分布式改造Redis BitMap 实现分布式布隆过滤器。7.缺点存在误判原生不支持删除元素数量越多误判概率持续上升。8.业务场景解决 Redis 缓存穿透过滤不存在的请求避免大量无效查询打到数据库海量数据去重比如黑名单、垃圾号码过滤爬虫 URL 去重避免重复抓取链接。9.案例分析短信黑名单1000 万手机号过滤方案选型对比数据库查询每次发短信查 MySQL 黑名单表。 缺点并发量大时 DB 压力极高数据库 IO 瓶颈性能差。HashMap/HashSet 全量加载到内存将 1000w 手机号全部加载进 JVM 内存。 缺点字符串占用内存巨大1000w 手机号内存开销很高重启需要重新加载占用大量堆内存。布隆过滤器最优方案实现步骤1.构造测试数据源调用mockPhoneNumber(1000000)生成 100 万条手机号集合内部设置两条固定手机号周期性插入保证存在重复数据其余号码随机生成。// 1. 模拟100w个手机号码包含重复的手机号码 ListString dataList mockPhoneNumber(1000000); private static ListString mockPhoneNumber(int count) { ListString list new ArrayList(count); String phone1 11111721234; String phone2 11111721235; for (int i 0; i count; i) { if (i % 1000 0) { list.add(phone1); } else if (i % 1500 0) { list.add(phone2); } else { // 随机生成手机号 String phone 1 (30 (int) (Math.random() * 9)) String.format(%08d, (int) (Math.random() * 100000000)); list.add(phone); } } return list; }2.定义容器创建resultList用来存放识别出来的重复手机号实例化MyBloomFilter布隆过滤器用于记录已经遍历过的手机号。// 2. 保存重复的手机号码 ListString resultList new ArrayList();3.遍历数据流进行查重循环遍历每一条手机号使用bloomFilter.contains(phoneNumber)判断号码是否在过滤器中若返回 true认为该号码之前出现过属于重复号码添加到resultList若返回 false代表第一次出现调用add()将手机号存入布隆过滤器。// 3. 创建布隆过滤器对象 MyBloomFilter bloomFilter new MyBloomFilter();4.输出结果遍历resultList打印所有识别到的重复手机号。核心逻辑原理利用布隆过滤器快速判断元素是否曾经存在数据流顺序读取首次出现的数据存入过滤器再次出现时被检测出来标记为重复。for (String phoneNumber : dataList) { if (bloomFilter.contains(phoneNumber)) { // 存在判定重复 resultList.add(phoneNumber); } else { // 第一次出现添加到过滤器 bloomFilter.add(phoneNumber); } }

相关新闻

实木家具色浆着色工艺与施工要点

实木家具色浆着色工艺与施工要点

同样的色浆,工艺不同结果天差地别。本文系统梳理实木家具着色的前处理、擦色、喷色、浸涂、辊涂等主流工艺的适用场景与关键控制点,给出可落地的施工参数与常见缺陷的成因对照,并附量化留样方法。面向涂装车间与定制厂,帮助把"颜色做准、做稳、做快",把老师傅的手感转…

2026/7/29 9:15:12阅读更多 →
NestJS 11 + LangGraph 生产实践:用 TypeScript 搭建 SSE 流式 Agent 后端,以及为什么没选 FastAPI

NestJS 11 + LangGraph 生产实践:用 TypeScript 搭建 SSE 流式 Agent 后端,以及为什么没选 FastAPI

摘要:本文基于一个已落地的生产级 Agent 编排网关(NestJS 11 TypeScript LangChain.js LangGraph SSE Redis Winston),复盘两个核心决策:其一,团队具备 Python 能力为何仍选 Node 系;其二&…

2026/7/29 9:15:12阅读更多 →
高山火绒草家庭栽培指南:从植物学特性到实践养护

高山火绒草家庭栽培指南:从植物学特性到实践养护

1. 从“雪绒花”到“高山火绒草”:一个被误读的植物传奇 提起“雪绒花”,绝大多数人的第一反应,是那首脍炙人口的经典歌曲《Edelweiss》,以及它背后所象征的阿尔卑斯山、纯洁与坚韧。然而,作为一个对植物和园艺稍有研究…

2026/7/29 9:13:12阅读更多 →
终极音乐解锁指南:如何免费解锁QQ音乐、网易云等加密音频文件

终极音乐解锁指南:如何免费解锁QQ音乐、网易云等加密音频文件

终极音乐解锁指南:如何免费解锁QQ音乐、网易云等加密音频文件 【免费下载链接】unlock-music-electron Unlock Music Project - Electron Edition 在Electron构建的桌面应用中解锁各种加密的音乐文件 项目地址: https://gitcode.com/gh_mirrors/un/unlock-music-e…

2026/7/29 10:29:30阅读更多 →
LiveTalking 2.0:插件化数字人交互系统架构解析

LiveTalking 2.0:插件化数字人交互系统架构解析

1. LiveTalking 2.0 项目概述去年我们团队推出第一代数字人交互系统时,核心功能还停留在基础语音合成与简单问答层面。如今经过12个月的架构迭代,LiveTalking 2.0 终于以全新插件化架构面世——这个版本不仅重构了数字人的神经网络渲染管线,更…

2026/7/29 10:29:30阅读更多 →
计算机毕业设计之基于SpringBoot的畜牧站疾病防控与检测系统的设计与实现

计算机毕业设计之基于SpringBoot的畜牧站疾病防控与检测系统的设计与实现

随着新经济的需求和新技术的发展,特别是网络技术的发展,如果可以建立起畜牧站疾病防控与检测系统,可以改变传统线下管理方式,在过去的时代里都使用传统的方式实行,既花费了时间,又浪费了精力。在信息如此发…

2026/7/29 10:29:30阅读更多 →
计算机毕业设计之基于SpringBoot的川工科二手交易平台的设计与实现

计算机毕业设计之基于SpringBoot的川工科二手交易平台的设计与实现

摘 要 本文着重研究了一个基于springboot 的川工科二手交易平台的开发与实践。文中首先探讨了川工科二手交易平台的关键作用及其在可持续发展方面的重要性,进而论述了采用 VUE框架进行平台开发的理由。文章接着详细介绍了 JAVA语言的优势并讨论了为什么选择 sprin…

2026/7/29 10:29:30阅读更多 →
终极免费跨平台模组下载器:WorkshopDL完全解决方案指南

终极免费跨平台模组下载器:WorkshopDL完全解决方案指南

终极免费跨平台模组下载器:WorkshopDL完全解决方案指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 对于GOG、Epic Games Store等非Steam平台玩家而言&#xff0…

2026/7/29 10:29:30阅读更多 →
Frida内存分析进阶:手把手实现hexdump工具与逆向实战

Frida内存分析进阶:手把手实现hexdump工具与逆向实战

1. 项目概述:为什么内存分析是逆向工程的“眼睛” 在逆向工程的世界里,我们常常把目标应用比作一个黑盒。你看到的是它的输入和输出,但中间的处理逻辑、数据流转、状态变化,都隐藏在厚厚的代码和内存屏障之后。Frida,作…

2026/7/29 10:27:30阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →