URL去重 布隆過濾器的簡單實現

2021-08-31 06:02:30 字數 997 閱讀 3183

/**

* 如何不採集重複的網頁?去重可以使用布隆過濾器,每個執行緒使用乙個bitarray,

* 裡面儲存本批源頁面上次抓取的頁面的雜湊值情況,抓取下來的源頁面分析鏈結後,

* 去這個bitarray裡判斷以前有沒有抓過這個頁面,沒有的話就抓下來,抓過的話就不管了。

* 假設乙個源頁面有30個鏈結,一批10w個源頁面,300w個鏈結的bitarray應該也不會佔太大記憶體。

* 所以有個五六個執行緒同時處理也是沒問題的。

* **/

public class ******bloomfilter ;

private bitset bits = new bitset(default_size);

private ******hash func = new ******hash[seeds.length];

public ******bloomfilter()

}public static void main(string args)

// 覆蓋方法,把url新增進來

public void add(crawlurl value)

// 覆蓋方法,把url新增進來

public void add(string value)

// 覆蓋方法,是否包含url

public boolean contains(crawlurl value)

// 覆蓋方法,是否包含url

public boolean contains(string value)

boolean ret = true;

for (******hash f : func)

return ret;

}public static class ******hash

public int hash(string value)

return (cap - 1) & result;}}

}

bitmap去重與布隆過濾器

通過乙個位元位來存乙個位址,占用記憶體很小 bloomfilter 會開闢乙個m位的bitarray 位陣列 開始所有資料全部置 0 當乙個元素過來時,能過多個雜湊函式 h1,h2,h3.計算不同的在雜湊值,並通過雜湊值找到對應的bitarray下標處,將裡面的值 0 置為 1 python中使用布...

python實現布隆過濾器對資料去重

一 直觀的資料去重方式 通常我們採用如下演算法對一組長度為n的資料d進行去重時。s1.在資料中取出第x個資料 1 xs2.在資料中取出第y個資料 xs3.比較d x 和d y 若相同丟棄d y 重複s2,s3直到y n s4.重複s1,s2,s3直到x n 1 此演算法時間複雜度近似t n o 1 ...

布隆過濾器

布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...