博客連接html
過程以下圖:
算法
Sketch 是一種基於散列的數據結構,能夠在高速網絡環境中,實時地存儲流量特徵信息,只佔用較小的空間資源,而且具有在理論上可證實的估計精度與內存的平衡特性。經過設置散列函數,將具備相同散列值的鍵值數據存入相同的桶內,以減小空間開銷。桶內的數據值做爲測量結果,是真實值的近似。利用開闢二維地址空間,多重散列等技術減小散列衝突,提升測量結果的準確度。數組
Count-min 是一種典型的 sketch ,用到的是分類的思想:將具備相同哈希值的網絡流歸爲一類,並使用同一個計數器計數。取多個哈希函數的最小哈希值做爲網絡流的估計,實現簡單,空間開銷較少。
這個算法的技巧是:不存儲全部的不一樣的元素,只存儲它們Sketch的計數。它由多個哈希函數(f1……fn)和一張二維表組成。二維表的每一個存儲空間維護了一個計數器,其中每一個哈希函數分別對應表中的每一行。當一個網絡流到來時,須要通過每一個哈希函數 f1……fn 的處理,根據處理獲得的哈希值分別存入每一行對應哈希值的計數器。有幾個哈希函數,就要計算幾回。算完後,取這m個計數器中的最小值,做爲測量的最終值。
基本的思路是:建立一個長度爲 x 的數組,用來計數,初始化每一個元素的計數值爲 0;對於一個新來的元素,哈希到 0 到 x 之間的一個數,好比哈希值爲 i,做爲數組的位置索引;這是,數組對應的位置索引 i 的計數值加 1;那麼,這時要查詢某個元素出現的頻率,只要簡單的返回這個元素哈但願後對應的數組的位置索引的計數值便可。考慮到使用哈希,會有衝突,即不一樣的元素哈希到同一個數組的位置索引,這樣,頻率的統計都會偏大。
網絡
http://www.javashuo.com/article/p-kmpatlvu-cz.html
https://www.sdnlab.com/22685.html
https://blog.csdn.net/pipisorry/article/details/64126199數據結構
因爲筆者能力不足,其他部分未能完成函數