布隆過濾器原理、特性及短信黑名單過濾業(yè)務(wù)實(shí)現(xiàn)方案
一、 什么是布隆過濾器作用、組成、添加元素流程、查詢元素的流程、特點(diǎn)誤判、不支持刪除布隆過濾器Bloom Filter是由Burton Howard Bloom于1970年提出的。我們可以把它看作由位數(shù)組和一組哈希函數(shù)組成的數(shù)據(jù)結(jié)構(gòu),它占用空間少并且效率更高但是缺點(diǎn)是其返回的結(jié)果是概率性的而不是非常準(zhǔn)確的。理論情況下添加到集合中的元素越多誤報(bào)的可能性就越大。并且存放在布隆過濾器的數(shù)據(jù)不容易刪除。換句話說是一種用來檢查元素是否存在于指定集合中的數(shù)據(jù)結(jié)構(gòu)這種數(shù)據(jù)結(jié)構(gòu)是高效且性能很好的但缺點(diǎn)是具有一定的錯(cuò)誤識別率和刪除難度。并且理論情況下添加到集合中的元素越多誤報(bào)的可能性就越大。組成位數(shù)組多個(gè)哈希函數(shù)組成添加元素流程首先對需要存入的元素進(jìn)行不同的哈希函數(shù)運(yùn)算生成不同的哈希結(jié)果然后將每一個(gè)哈希值對應(yīng)到位數(shù)組的位置并且將對應(yīng)的位置下標(biāo)從0改成1。查詢元素的流程對于待查詢元素使用和添加元素完全相同的個(gè)數(shù)哈希函數(shù)進(jìn)行計(jì)算算出若干個(gè)哈希值映射得到位數(shù)組上對應(yīng)位置的下標(biāo)進(jìn)行比對只要有任意一個(gè)位置的值為 0說明該元素一定沒有存入布隆過濾器如果所有的值均為 1則無法確定元素一定存在只能判定元素大概率存在因?yàn)榇嬖谡`報(bào)可能性。特點(diǎn)1、誤判性2、不支持刪除二、布隆過濾器的優(yōu)點(diǎn)和缺點(diǎn)有哪些優(yōu)點(diǎn)1、存儲空間高效僅使用 bit 數(shù)組存儲標(biāo)記不存放原始數(shù)據(jù)同等數(shù)據(jù)量下內(nèi)存遠(yuǎn)小于 List、Set、Map2、讀寫性能高插入與查詢只需要多次哈希運(yùn)算效率很高3、數(shù)據(jù)本身不存儲增強(qiáng)安全性沒有保存原始元素?zé)o法直接從過濾器中還原數(shù)據(jù)缺點(diǎn)1、存在誤報(bào)問題有可能把不存在的元素判定為存在元素?cái)?shù)量越多誤報(bào)概率越高2、難以刪除元素多個(gè)元素會共享比特位直接置 0 會影響其他元素判斷3、無法獲得實(shí)際元素三、 發(fā)送業(yè)務(wù)通知短信前要判斷手機(jī)號碼是否在黑名單1000w實(shí)現(xiàn)思路針對 1000 萬級別的手機(jī)號碼黑名單判斷場景使用布隆過濾器Bloom Filter來實(shí)現(xiàn)具體實(shí)現(xiàn)思路如下1、數(shù)據(jù)初始化把數(shù)據(jù)庫中的1000萬個(gè)黑名單手機(jī)號全部取出依次通過哈希函數(shù)將所有黑名單手機(jī)號都添加到布隆過濾器中。2、業(yè)務(wù)收到發(fā)送請求先用手機(jī)號查詢布隆過濾器使用相同哈希函數(shù)進(jìn)行查詢?nèi)绻^濾器判定不存在則手機(jī)號不在黑名單允許發(fā)送短信如果過濾器判定存在則有可能在黑名單里因?yàn)椴悸∵^濾器存在誤判的可能所以需要進(jìn)行二次查詢來確定是否真的在黑名單里。

相關(guān)新聞

HDCP版權(quán)保護(hù)_橋接芯片科普05

HDCP版權(quán)保護(hù)_橋接芯片科普05

HDCP 版權(quán)保護(hù):橋接芯片里最容易被忽視的"隱形門禁" 龍迅橋接芯片科普系列 第 05 篇 系列文章:01 選型指南 | 02 DSC 顯示流壓縮 | 03 車載顯示橋接方案 | 04 Type-C 擴(kuò)展塢 | 05 HDCP 版權(quán)保護(hù) | 06 D-PHY vs C-PHY(待寫&#xf…

2026/7/29 8:26:10 閱讀更多
3D打印與Arduino結(jié)合:從零打造會跳舞的仿生機(jī)器人

3D打印與Arduino結(jié)合:從零打造會跳舞的仿生機(jī)器人

1. 項(xiàng)目概述:當(dāng)3D打印遇上Arduino,一個(gè)會跳舞的機(jī)器人誕生了 如果你和我一樣,既沉迷于3D打印機(jī)“無中生有”的魔力,又對Arduino開源硬件控制現(xiàn)實(shí)世界的能力著迷,那么“精舞堂BOB”這個(gè)項(xiàng)目絕對能讓你兩眼放光。這不僅僅…

2026/7/29 8:26:10 閱讀更多
基于金稅四期的財(cái)稅風(fēng)控規(guī)則引擎與業(yè)財(cái)一體化架構(gòu)實(shí)戰(zhàn)

基于金稅四期的財(cái)稅風(fēng)控規(guī)則引擎與業(yè)財(cái)一體化架構(gòu)實(shí)戰(zhàn)

隨著金稅四期全面上線,傳統(tǒng)財(cái)稅系統(tǒng)在面對海量高頻風(fēng)險(xiǎn)預(yù)警指標(biāo)時(shí),常因數(shù)據(jù)孤島和規(guī)則硬編碼導(dǎo)致合規(guī)響應(yīng)滯后。企業(yè)在進(jìn)行IPO財(cái)務(wù)規(guī)范或高企申報(bào)時(shí),業(yè)財(cái)數(shù)據(jù)不一致往往成為致命瓶頸。本文將結(jié)合高頓咨詢在B端財(cái)稅數(shù)字化領(lǐng)域的工程實(shí)踐&#…

2026/7/29 9:26:11 閱讀更多
Flexx桌面應(yīng)用安全加固實(shí)戰(zhàn):從代碼到部署的全面防護(hù)指南

Flexx桌面應(yīng)用安全加固實(shí)戰(zhàn):從代碼到部署的全面防護(hù)指南

1. 項(xiàng)目概述:為什么Flexx應(yīng)用需要特別的安全關(guān)注? 最近在社區(qū)里看到不少朋友開始用Flexx來開發(fā)桌面應(yīng)用,尤其是那些想把Web應(yīng)用打包成獨(dú)立桌面程序的項(xiàng)目。Flexx這個(gè)框架確實(shí)挺有意思,它讓你能用純Python寫前端界面,然…

2026/7/29 9:26:11 閱讀更多
Go與C語言面向?qū)ο缶幊虒Ρ龋航Y(jié)構(gòu)體、方法接收者與函數(shù)指針模擬類

Go與C語言面向?qū)ο缶幊虒Ρ龋航Y(jié)構(gòu)體、方法接收者與函數(shù)指針模擬類

1. 項(xiàng)目概述:當(dāng)Go遇上C,兩種“類”思維的碰撞在編程語言的演進(jìn)長河中,面向?qū)ο缶幊?amp;#xff08;OOP)無疑是一座重要的里程碑。當(dāng)我們談?wù)摗邦悺睍r(shí),腦海中首先浮現(xiàn)的可能是Java、C這類以類為第一公民的語言。但今天&…

2026/7/29 9:26:11 閱讀更多
Arduino模擬信號與PWM控制:從電位器到LED亮度調(diào)節(jié)的完整實(shí)現(xiàn)

Arduino模擬信號與PWM控制:從電位器到LED亮度調(diào)節(jié)的完整實(shí)現(xiàn)

1. 從旋鈕到光暈:一個(gè)燈光調(diào)節(jié)器的誕生 最近在整理工作室的舊物,翻出來一塊吃灰已久的Arduino Edison開發(fā)板??粗?amp;#xff0c;我忽然想起很多朋友,包括當(dāng)年的我自己,在入門嵌入式開發(fā)時(shí),常常會卡在一個(gè)看似簡單卻至…

2026/7/29 9:26:11 閱讀更多
國內(nèi)專業(yè)網(wǎng)站建設(shè)公司盤點(diǎn),2026 精選十家高口碑網(wǎng)站設(shè)計(jì)公司全方位梳理

國內(nèi)專業(yè)網(wǎng)站建設(shè)公司盤點(diǎn),2026 精選十家高口碑網(wǎng)站設(shè)計(jì)公司全方位梳理

一、2026 網(wǎng)站建設(shè)行業(yè)現(xiàn)狀深度解析生成式 AI、GEO 搜索優(yōu)化、llms 協(xié)議規(guī)范、多系統(tǒng)數(shù)據(jù)互通等新技術(shù)落地,市場對網(wǎng)站建設(shè)服務(wù)商的能力要求發(fā)生根本性分層。中大型企業(yè)、上市公司、出海品牌更青睞兼具行業(yè)深耕、定制開發(fā)、AI 營銷配套、長期運(yùn)維迭代能力的綜合服務(wù)…

2026/7/29 9:26:11 閱讀更多
面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個(gè)月,我在重構(gòu) AlgoMooc 網(wǎng)站過程中,發(fā)現(xiàn)一個(gè)問題:在 Claude Code 里把一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,結(jié)果可能比 1 個(gè) agent 從頭干到尾還慢? 大多數(shù)人的第一反應(yīng)是反過來的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動(dòng)畫渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號與動(dòng)畫渲染精講

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂應(yīng)用,模擬了真實(shí)擲骰子的過程。應(yīng)用投擲兩個(gè)骰子(六面標(biāo)準(zhǔn)骰),使用 Unicode 骰面符號直觀展示每個(gè)骰子的點(diǎn)數(shù),并伴有快速滾動(dòng)的動(dòng)畫效果?!?/p>

2026/7/29 0:15:24 閱讀更多