学习笔记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.就是不停地抓包,而后手动屡次启动程序(再实现自动启动程序不就自动实时处理了么??) ,随着抓到的包增长,黑客也会一个个浮出水面......如图所示
我就是图: