一、stl容器
序列式容器vector/list/deque/stack/queue/heap
關聯式容器(key-value)mongodb
rb-tree:set、map(map同時擁有key和value,set的key就是value)、multiset、multimap(允許重複鍵值)
hashtable:hashset、hashmap、hashmultiset、hashmultimap(不具備自動排序功能)(允許重複鍵值)
2、set和map的區別
set和map一樣所有的元素都會根據鍵值自動排序(各種操作都是轉調rb-tree的操作行)
set元素的鍵值就是實值(實值就是鍵值)
map元素都是pair,同時擁有實值(value)和鍵值(key)(pair第乙個為key,第二個為value)
multiset和multimap執行鍵值重複,插入操作基於rb-tree的inset_equal()
二、處理海量資料
分而治之/hash對映+hashmap統計+堆、快速、歸併排序
1)分而治之/hash對映:大而化小,各個擊破、縮小規模、逐個解決
2)hashmap統計+堆:ip,value進行頻率統計
3)堆、快速、歸併排序:堆排序,得到次數多的ip
併發(concurrent) 和並行(parallel programming)
並行:多個cpu例項或者多台機器同時執行一段邏輯,是真正的同時
併發:通過cpu排程演算法,讓使用者看上去同時執行,實際上從cpu操作層面不是真正的同時,併發往往在場景中有公共的資源
那麼針對這個公用的資源往往產生瓶頸,我們會用tps或者qps來反應這個系統的處理能力
海量資料處理
1 有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有 重複。請用5分鐘時間,找出重複出現最多的前10條。方法1 可以用雜湊表的方法對1千萬條分成若干組進行邊掃瞄邊建雜湊表。第一次掃瞄,取首位元組,尾位元組,中間隨便兩位元組作為hash code,插入到hash table中。並記錄其位址和...
海量資料處理
給定a b兩個檔案,各存放50億個url,每個url各占用64位元組,記憶體限制是4g,如何找出a b檔案共同的url?答案 可以估計每個檔案的大小為5g 64 300g,遠大於4g。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。遍歷檔案a,對每個url求取hash url 1000...
海量資料處理
分而治之 hash對映 hash統計 堆 快速 歸併排序 300萬個查詢字串中統計最熱門的10個查詢。針對此類典型的top k問題,採取的對策往往是 hashmap 堆。hash統計 先對這批海量資料預處理。具體方法是 維護乙個key為query字串,value為該query出現次數的hashtab...