Java 大文字字串濾重的簡單方案

2021-09-07 10:48:52 字數 1312 閱讀 2669

本文章也同步至本人的csdn部落格中:

首先腦海中想到的第乙個就是用大資料去處理, 只是耳邊經常聽過hadoop,spark之類的詞, 但是自己也並未真正接觸過。於是便一通google, 然後找到兩個解決方案。

bloom filter 是一種空間效率很高的隨機資料結構,bloom filter 可以看做是對 bit-map 的擴充套件, 它的原理是:

當乙個元素被加入集合時,通過 k 個 hash 函式將這個元素對映成乙個位陣列(bit array)中的 k 個點,把它們置為 1。檢索時,我們只要看看這些點是不是都是 1 就(大約)知道集合中有沒有它了:

如果這些點有任何乙個 0,則被檢索元素一定不在;

如果都是 1,則被檢索元素很可能在。

(誤判補救方法是:再建立乙個小的白名單,儲存那些可能被誤判的資訊。)

另外,一般情況下不能從布隆過濾器中刪除元素. 我們很容易想到把位陣列變成整數陣列,每插入乙個元素相應的計數器加 1, 這樣刪除元素時將計數器減掉就可以了。然而要保證安全地刪除元素並非如此簡單。首先我們必須保證刪除的元素的確在布隆過濾器裡面. 這一點單憑這個過濾器是無法保證的。另外計數器迴繞也會造成問題。

public static void main(string args) throws exception 

為錯誤率, 9000000 為預估元素的個數, 我第一次測試用了大概9000000行字串的文字

}, 9000000, 0.0000001d);

bufferedreader br = new bufferedreader(new inputstreamreader(new fileinputstream(new file("c:\\users\\wangmeng\\desktop\\test.txt")), "utf-8"));

string line;

int i = 0;

stringbuilder sb = new stringbuilder();

while ((line = br.readline()) != null)

if (i % 1000 == 0)

}}

使用或者說接觸spark是因為公司有人做過一次這個方面的分享, 所以有些耳熟, 於是便從網上找了些入門按理, 自己嘗試著用了一下。

org.apache.spark

spark-core_2.11

2.1.0

public static void main(string args) throws exception

cut 提取文字字串

業務同學發過來乙個需求,需要統計日誌記錄中匹配關鍵字 eco x 的數量有多少 19 01 18 16 28 56.943 forkjoinpool.commonpool worker 4 info com.ecall.fasteroms.distribution.task.autosplitout...

截串訪問 分割文字字串的方法

問題 在專案中,當儲存資料超過資料庫欄位列長度限制時,如何解決?一種常見的解決辦法是 截串訪問。顧名思義,就是對大文字資料按指定長度進行擷取,返回結果集依擷取順序儲存在新錶中。並通過在新錶中建立乙個type欄位來標識新錶中擷取的內容對應舊表中的欄位名,而舊表中相應的字段不再直接存放大文字資料,而是存...

MFC 好用 文字 字串處理函式

1.afxextractsubstring 引數說明 rstring 得到的字串 lpszfullstring 待分割的字串 isubstring 要得到第幾個字串 chsep 個子串之間的分隔符 例如,有乙個字串strfullstring abcd hgdy weiuiwu sdlsk 則有 cs...