學習筆記html
思路:
以ubuntu系統自帶的gedit編輯器寫好代碼,而後打開終端用gcc的指令編譯並運行代碼。git
結果:
github
1.簡單描述什麼是sketch:
sketch就是利用哈希值來估算數據流中任意元素頻率的方法。要計算元素的頻率,能夠給全部元素都設置一個計數器,但面對大量的元素,這種方法會消耗大量的存儲空間。而sketch利用hash函數計算相應的哈希值,並根據哈希值的範圍開數組存儲元素出現的次數,大大節約空間。算法
2.描述Count-min sketch的算法過程:
0.比sketch更準確,使用的空間也更多。ubuntu
1.選定d個hash函數,開一個 dxm 的二維整數數組做爲哈希表。數組
2.對於每一個元素,分別使用d個hash函數計算相應的哈希值,而後在對應的位置上增1,二維數組中的各個整數稱爲sketch。tcp
3.要查詢某個元素的頻率時,只須要取出d個sketch, 返回最小的那一個(其實d個sketch都是該元素的近似頻率,返回最小的那個以減少偏差)編輯器
思路:
打開GitHub,搜索Count-min sketch,結合搜索引擎挑選代碼,複製代碼,運行代碼。函數
結果:
思路:
藉助搜索引擎瞭解tcpdump,而後打開終端輸入命令,獲得請求文件。
結果:
思路:
0.不懂題目的意思沒有思路。
1.決定加上過濾條件,從新抓取數據包重定向到請求文件中。
2.編寫程序,讀取請求文件,找出符合條件的請求並按相應格式輸出到新文件中。
結果:
思路:
1.首先大膽猜想題目應該跟上次是同樣的意思,多個用戶向bob發出請求,因而從新處理文件,每行保留一個ip地址和一個數據包的長度。
2.先用程序大體跑一遍,知道應該設置多大的T。
3.在程序中每次讀取新的請求都判斷是否超出閾值,超出則保存到黑名單中。
4.輸出黑名單。
結果:
1.解釋爲何 sketch 能夠省空間:
sketch藉助hash把字符串都轉換成了固定範圍內的整型常量,做爲數組的下標來索引該字符串,並不直接存儲字符串,使得不定長的字符串更易查詢與計數。
並且sketch所用的數組是定長的一維數組,不會隨處理量的增長而增長,所以節省空間。
2.用流程圖描述Count-min sketch的算法過程
3.拿它和你改進後方法進行對比,分析優劣
優:比改進後的方法更快更省空間,而且能夠處理很長的字符串。
劣:用的技術更高級,用到一堆沒學過的,並且代碼並很差找,還須要花時間理解。
4.吐槽Count-min sketch
方法自己挺好,沒有什麼想吐槽的
0.0.實踐中使用【tcpdump -n -t -q -i any udp >> pakcet_capture.txt】過濾格式清楚的udp協議包,便於處理使用。
0.1.udp包好少啊啊啊啊啊,要等很久,偶爾還會有ip6的包...。
0.2.發現count_min_sketch用Devc++默認的cpp文件編譯出錯,c則正常。
1.現階段至少也要讀取文件一次,查不到怎麼把tcpdump的信息直接給程序使用,也找不到tcpdump直接過濾獲得所需格式的指令。只能是把處理pakcet_capture.txt的程序和後面的找黑客程序拼在一塊兒,在左思右想之下儘量實現了手動實時處理(?)
2.就是不停地抓包,而後手動屢次啓動程序(再實現自動啓動程序不就自動實時處理了麼??) ,隨着抓到的包增長,黑客也會一個個浮出水面......如圖所示
我就是圖: