2019寒假训练营第三次作业
学习视频课程
实验题
热身题
思路:
以ubuntu系统自带的gedit编辑器写好代码,然后打开终端用gcc的指令编译并运行代码。
结果:
基本题
了解新技术
1.简单描述什么是sketch:
sketch就是利用哈希值来估算数据流中任意元素频率的方法。要计算元素的频率,可以给所有元素都设置一个计数器,但面对大量的元素,这种方法会消耗大量的存储空间。而sketch利用hash函数计算相应的哈希值,并根据哈希值的范围开数组存储元素出现的次数,大大节约空间。
2.描述Count-min sketch的算法过程:
0.比sketch更准确,使用的空间也更多。
1.选定d个hash函数,开一个 dxm 的二维整数数组作为哈希表。
2.对于每个元素,分别使用d个hash函数计算相应的哈希值,然后在对应的位置上增1,二维数组中的各个整数称为sketch。
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.就是不停地抓包,然后手动多次启动程序(再实现自动启动程序不就自动实时处理了么??) ,随着抓到的包增加,黑客也会一个个浮出水面......如图所示
我就是图:
本文作者:心有所向,日复一日,必有精进
本文链接:https://www.cnblogs.com/Stareven233/p/10370285.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步