布隆過濾器
布隆過濾器(bloom filter)是乙個由二進位制向量(位陣列)和一系列隨機對映函式(雜湊函式)兩部分組成的資料結構。相比於我們平時常用的的 list、map 、set 等資料結構,它占用空間更少並且效率更高,但是缺點是其返回的結果是概率性的,而不是非常準確的。理論情況下新增到集合中的元素越多,誤報的可能性就越大。並且,存放在布隆過濾器的資料不容易刪除。
原理當乙個元素加入布隆過濾器中的時候,會進行如下操作:
使用布隆過濾器中的雜湊函式對元素值進行計算,得到雜湊值(有幾個雜湊函式得到幾個雜湊值)
根據得到的雜湊值,在位陣列中把對應下標的值置為 1
當我們需要判斷乙個元素是否存在於布隆過濾器的時候,會進行如下操作:
對給定元素再次進行相同的雜湊計算
得到值之後判斷位陣列中的每個元素是否都為 1,如果值都為 1,那麼說明這個值在布隆過濾器中,如果存在乙個值不為 1,說明該元素不在布隆過濾器中
布隆過濾器說某個元素存在,小概率會誤判。布隆過濾器說某個元素不在,那麼這個元素一定不在
使用場景
在超大資料量的情況下,判斷某個資料是否存在其中
防止快取穿透
url 去重
布隆過濾器
布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...
布隆過濾器
布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...
布隆過濾器
如果想判斷乙個元素是不是在乙個集合裡,一般想到的是將集合中所有元素儲存起來,然後通過比較確定。鍊錶 樹 雜湊表 又叫雜湊表,hash table 等等資料結構都是這種思路。但是隨著集合中元素的增加,我們需要的儲存空間越來越大。同時檢索速度也越來越慢。bloom filter 是一種空間效率很高的隨機...