認識布隆過濾器
不安全網頁的黑名單包含 100 億個黑名單網頁,每個網頁的 url 最多占用 64b。 現在想要實現一種網頁過濾系統,可以根據網頁的 url 判斷該網頁是否在黑名單上,請設計該系統。
1.該系統允許有萬分之一以下的判斷失誤率。
2.使用的額外空間不要超過 30gb。
雜湊離散函式性質:
①輸入域無窮大
②輸出域有限
③當輸入同樣的引數,一定有相同的輸出值
④在不同輸入值的情況下,對於結果域中的不同輸出值出現概率相等
結果結果分布越離散,該函式效能越好
一般這種題,應該問是否可以有失誤的情況
預期樣本量,預期失誤率,選擇多少個雜湊函式,輸入域無限制,十分省空間
一致性雜湊演算法的基本原理
工程師常使用伺服器集群來設計和實現資料快取,以下是常見的策略:
1.無論是新增、查詢還是刪除資料,都先將資料的 id 通過雜湊函式轉換成乙個 雜湊值,記為 key。
2.如果目前機器有n臺,則計算key%n的值,這個值就是該資料所屬的機器編號,無論是新增、刪除還是查詢操作,都只在這台機器上進行。
請分析這種快取策略可能帶來的問題,並提出改進的方案。
解決資料遷移的壓力,便於擴容
若真實機器數量不足以體現離散的優勢,則主要思路是新增很大數量的虛擬機器,並維持乙個路由表,以實現一致性雜湊演算法的優勢
布隆過濾器 雜湊切分
1.首先了解下什麼是布隆過濾器,它實際上是乙個很長的二進位制向量和一系列隨機對映函式。如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o lo...
雜湊變形 布隆過濾器
細想我們這裡使用了兩個雜湊函式,那麼自然會有兩個雜湊位址。可想而知,到我們有多個字串的時候,就有可能算出的雜湊位址中有乙個或者兩個與別的字串的雜湊位址相同,如果我們想要刪除乙個資料是,必須同時將這兩個雜湊位址置為0才算是刪除了這個資料,然而當雜湊位址與別的字串的雜湊位址重複的時候,如果將相應位置為0...
演算法 布隆過濾器
面試的時候我們經常會被問到,100億個url中有多少重複的,或者讓你設計乙個100億個url的黑名單。傳統使用hash去儲存,1個url算64bit,100億個我們需要320g的記憶體來處理,就需要各種分布式各種演算法來懟,對於公司來說是一筆不小的開銷而且很慢。這個時候如果說允許有失誤,而且是 另可...