快速URL排重的方法 二

2021-08-22 09:41:18 字數 658 閱讀 9526

接上篇,起初我為了輸入輸出方便,是用perl去實現的,後來發現perl中求模速度太慢,就改用c了

常量定義:space指你要分配多大的記憶體空間,我這裡是為5000萬資料的每一條分配4位元組

const

intspace

=50000000*4

;const

intmaxnum

=space*8

;#define

line_max2048

intbits=;

char*db

=null;

主程式:這裡迴圈讀入標準輸入的每一行,進行排重。

intmain(

intargc,

char

*argv)

}return0;

} 判定函式:我沒有做bloom filter演算法中描述的10次hash,而是做了乙個md5,乙個sha1,然後折合成9次hash。

bool

is_exist(

const

char

*str,

intlen)

else

}return

(k==0);

} 主要演算法就在這裡了,實際應用的話可以採用迴圈監視磁碟檔案的方法來讀入排重資料,那些**就與作業系統相關,沒必要在這寫了

快速URL排重的方法 一

我這裡介紹乙個極適合大量url快速排重的方法 這個演算法被稱為bloom filter,基本上,它也只適合這樣的場合。這裡的大量是指有5000萬至1億的url,更大的資料量可能也不合適了。所以,把目標鎖定在單機排重,一開始,試驗了perl中的hash,非常簡單的 usedb file my db t...

快速URL排重的方法 一

我這裡介紹乙個極適合大量url快速排重的方法,這個演算法被稱為bloom filter,基本上,它也只適合這樣的場合。這裡的大量是指有5000萬至1億的url,更大的資料量可能也不合適了。所以,把目標鎖定在單機排重,一開始,試驗了perl中的hash,非常簡單的 db file my db tie ...

linux排重的方法

想必各位用linux的人都會碰到排重的問題,像檢視乙個日誌檔案,碰到很多重覆記錄,看起來很痛苦。還有像grep一下關鍵字,想找出現關鍵字的檔案,但是出現了一堆重複的檔名,也是一件鬱悶的事情。下面給大家介紹兩種linux排重的方法,一種是使用uniq命令,一種使用gawk。uniq排重 uniq的作用...