博客连接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数据结构
因为笔者能力不足,其他部分未能完成函数