热身题

服务器正在运转着,也不知道这个技术可不可用,万一服务器被弄崩了,那损失可不小。
所以, 决定在虚拟机上试验一下,不小心弄坏了也没关系。需要在的电脑上装上虚拟机和linux系统
安装虚拟机(可参考Vmware、Virtual Box等)
安装ubuntu系统(推荐安装16.04版本)
写一个helloworld程序,在ubuntu系统上编译运行
(你可能需要了解linux系统的终端和一些基本命令、文本编辑工具nano、如何编译代码、运行程序)

  • 1.安装虚拟机Vmware:在官网下载页面选择workstation pro,下载并安装。

运行workstation pro节目如下

基本题

了解新技术

众多sketch的技术中,Count-min sketch 常用也并不复杂,但你可能需要稍微了解一点点散列的知识。从它入手不失为一个好选择,把它记录在你的技术博客上:

  • 1.简单描述什么是sketch
  • sketch是基于哈希的数据结构,通过合理设置哈希函数(也称散列函数),在将数据进行哈希运算后(可能包含多次哈希运算,即多重哈希,目的是提高精确度),将具有相同哈希值的键值数据存入相同的特定区域内,以减少空间开销。将各个区域内的数据值作为测量结果,存在一定的误差,但可以使用各种方式减小误差。
  • 2.描述Count-min sketch的算法过程
    • 摘自维基百科:In computing, the count–min sketch (CM sketch) is a probabilistic data structure that serves as a frequency table of events in a stream of data. It uses hash functions to map events to frequencies, but unlike a hash table uses only sub-linear space, at the expense of overcounting some events due to collisions.( 在计算中,count-min sketch(CM sketch)是一种概率数据结构,用作数据流中事件的频率表。它使用散列函数将事件映射到频率,但不像散列表仅使用子线性空间,代价是由于冲突导致一些事件过度计数。)
    • 目的:统计一个实时的数据流中元素出现的频率,并且准备随时回答某个元素出现的频率,不需要的精确的计数。
    • 技巧:因为储存所有元素的话太耗费内存空间,所有不存储所有的不同的元素,只存储它们Sketch的计数。
    • 实现大致过程:
      • 建立一个1~x的数组,作为储存计数的载体。
      • 对于一个新元素,哈希到0~x中的一个数x0,作为该元素的数组索引。
      • 查询元素出现频率时,返回元素对于数组索引中储存的数即可。

实现新技术(30')

大致了解了Count-min sketch,接下来就需要实现它了。本着不需要重复造轮子的思想,你上github一查,果然发现了相关代码。
并不需要深刻理解代码,你只需要会用,你的目标是在虚拟机上跑通Count-min sketch:

  • 1.克隆一种版本(python或者c语言)的代码,大致了解如何使用这个代码,在ubuntu系统上编译。自己任意编写一个小测试,成功运行这个代码。
  • 通过pip安装countminsketch0.2

  • 在GitHub上找到了一个countminsketch项目

  • 因为代码比较久远,需要把xrange()函数更替为range()函数
  • 出现Unicode-objects must be encoded before hashing问题时,发现是update() 方法必须指定要指定编码格式,否则会报错。应在update()内添加.encode("utf8")
  • 在网络上下载《飘》的英文版
  • 编写程序,统计文中的地名“tala”的出现次数

  • 运行成程序三次,结果分别为

  • 2.你也可以自己实现Count-min sketch。

获取用户请求(15')

现在需要获取用户的请求信息,其实请求就是网络传输的数据包,可以使用自己的网络环境来模拟服务器的请求,使用工具来捕获这个数据包:

  • 1.安装并使用抓包工具tcpdump
  • 2.输入tcpdump -n 获取数据包的信息

    • 在这部分中,因为Ubuntu的版本原因,卡了很久。最后改成Ubuntu16.04后才能顺利抓包。>_<
    • 本来是像抓100000条内容的,但因为种种原因,不得已中断了两次,最后只有80000多条
  • 3.使用linux 重定向的方法把该信息用文本文件存起来,文件命名为 pakcet_capture.txt。

  • 编写一个py程序,处理得到的数据

  • 得到的Request.txt

测试新技术

完事具备,只欠东风:

  • 用跑通的Count-min sketch程序读文件,获得最后的处理结果,请求大小超过阈值T认定为黑客,此处T自己定义。对于你所完成题目,把实现思路和实现结果记录在博客中,把代码提交到github的仓库上。
    稍微改造一下第二次作业中的代码,添加了count-min sketch算法

开放题(50')

  • 理论部分(25')

    • 解释为什么 sketch 可以省空间

      • count-min sketch算法使用了hash函数,通过压缩映射,使得散列值的空间远远小于输入值的空间。
    • 用流程图描述Count-min sketch的算法过程

    • 拿它和你改进后方法进行对比,分析优劣
      • 优点:引入了count-min sketch后,很大程度上减小了空间占用和处理速度。
      • 缺点:
        • 可能是笔者不是很懂count-min sketch算法中m,d值的设置,抑或是算法本身的原因,得到的数据不甚准确,每次计算得到的值基本不同。但因为是针对大体量数据进行的计算,一些误差可以看淡甚至忽略不计。但若是对较少数据量的计算,误差则会严重影响精度(例如本文中给出的,对《飘》中地名的统计,难以得到较为准确的数据)
    • 吐槽Count-min sketch
      • 笔者在GitHub上找到的代码过于久远,py中的xrange()函数已经被弃用了,需要手动改成range()。
      • readme文件有些地方说得晦涩难懂,花了一些功夫才搞懂怎么使用。
  • 实验部分(25')
    • 1.here-->整合了两个步骤,减少了代码读写,由packet_capture直接得到结果

      • 改进中的问题:

        • 整合后代码的运算结果与原来的结果有出入,可能的原因是原算法的第一步筛选过程中错误筛除了一些内容。
        • 新程序出现了一些莫名其妙的数组越界错误,但检查后并未发现packet_capture.txt中有存在单行内容因为无空格以至于split()函数无法分割的问题。所以加了一个len(list())>a绕开这个问题
    • 2.实时处理请求还未能实现,
      • 主要障碍有:

        • 是不懂得如何在程序中启动tcpdump进行抓包
        • 因为Ubuntu虚拟机上py配置出了一些问题,不得已将packet_capture.txt文件移动到win10下进行处理
      • 对这部分的一些想法:
        • 基本流程应该是:

          • 数据生成->实时采集->将数据保存在缓存中->实时计算->计算结果存储->被查询
        • 引入一些大数据处理框架。大数据处理系统可分为批式大数据和流式大数据两类。其中,批式大数据又被称为历史大数据,流式大数据又被称为实时大数据。流式大数据系统包括了:Spark Streaming、Storm、Flink等
        • 可否模仿CentOS与wireshark之间利用PIPE接口实现数据从虚拟机上实时拷贝到win系统中进行处理
        • 这篇文章中提到了关于python调用tcpdump的相关内容

2019寒假训练营第三次作业part2 - 实验题的更多相关文章

  1. 2019寒假训练营第三次作业part1-网络空间安全概论第五章

    第五章 网络攻防技术 5.1 网路信息收集技术--网络踩点 黑客入侵系统之前,需要了解目标系统可能存在的: 管理上的安全缺陷和漏洞 网络协议安全缺陷与漏洞 系统安全缺陷与漏洞 黑客实施入侵过程中,需要 ...

  2. 2019 SDN上机第三次作业

    2019 SDN上机第三次作业 实验一 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网络连通性 ...

  3. 2019北航OO第三单元作业总结

    1.梳理JML语言的理论基础.应用工具链情况 JML基础理论: JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言,基 ...

  4. 2019寒假训练营寒假作业(三) MOOC的网络空间安全概论笔记部分

    目录 第五章 网络攻防技术 5.1:网络信息收集技术--网络踩点 信息收集的必要性及内容 网络信息收集技术 网络踩点(Footprinting) 网络踩点常用手段 5.2:网络信息收集技术 --网络扫 ...

  5. 2019寒假训练营寒假作业(三) 对Sketch——CM-Sketch的理解(理论题部分)

    目录 实验题部分 基本题 1.简述sketch: 2.Count-min Sketch: 开放题部分 理论部分 1.解释为什么 sketch 可以省空间 2.用流程图描述Count-min sketc ...

  6. 2019寒假训练营寒假作业(二) MOOC的网络空间安全概论笔记部分

    视频课程--MOOC的网络空间安全概论笔记 第一章 网络空间安全概述 2001年,网络空间概念被首次提出: 网络空间安全框架: 1.设备层安全: 可通过截获电磁辐射获取计算机信息.通过硬件木马(恶意电 ...

  7. Contest1692 - 2019寒假集训第三十一场 UPC 11075 Problem D 小P的国际象棋

    非常简单的单点修改+区间加+区间查询.我用的是最近刚学的区间修改版本树状数组.  直接维护即可,注意修改后的单点值已经不是a[i],或者b[i],要通过区间查询求单点.不然是错的. 区间修改版本树状数 ...

  8. Java第三次作业第五题

    5. [问题描述]Fibonacci序列处理 从文件in.txt中读取第一个数作为Fibonacci数列的开始数n,读取第二个数,作为需要写入的数的个数m. 将从n开始的m个Fibonacci数列写入 ...

  9. Java第三次作业第四题

    4. [问题描述]读取一个文本文件in.txt,然后将这个文件的内容,反序写到另一个文件out.txt中. [输入形式]从文件in.txt中读信息. [输出形式]反序内容写入out.txt文件中. [ ...

随机推荐

  1. Linux 运维工程师学习成长路线上要经历哪四个阶段?

    之前曾看到一篇新闻,Linux之父建议大家找一份基于Linux和开源环境的工作.今天就来聊一聊我的想法,本人8年Linux运维一线经验,呆过很多互联网公司,从一线运维做到运维架构师一职,也见证了中国运 ...

  2. jQuery 动画效果 与 动画队列

    基础效果 .hide([duration ] [,easing ] [,complete ]) 用于隐藏元素,没有参数的时候等同于直接设置 display 属性 $('.target').hide() ...

  3. Elasticsearch 数据查询

    数据准备: PUT /shop { "settings": { "number_of_shards": 3, "number_of_replicas& ...

  4. 如何用SQL语句处理缓慢变化维(渐变维,拉链表)SCD-2?

    假设有一张居民维表,需要记录居民状态的变更历史,根据Kimball建模理论,设计居民维表如下: 另外在ODS中有居民信息的每日快照表(每天都记录一份居民的全量信息):O_USERINFO 如何将ODS ...

  5. python学习——面向对象的三大特性

    一.继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 1.python中类的继承分为:单继承和多继承 class P ...

  6. Qt 本地化(翻译)

    Qt 本地化(翻译) 翻译流程大致是这样的:首先源代码产生 ts 文件,然后送给 Qt Linguist(Qt 语言家)这个 Qt 自带的小工具进行处理产生 qm 翻译文件,最后源代码里加载这个 qm ...

  7. Applied Cloud Deep Semantic Recognition: Advanced Anomaly Detection(应用云深层语义识别:高级异态检测)

    亚马逊链接 引言 (by Mehdi Roopaei & Paul Rad) 异态检测与情境感知 在数据分析领域,异态检测讲的是在一个数据集中,发现到其中不符合预期模式的物体,动作,行为或事件 ...

  8. Java基础之this和super关键字用法

    this 在java中,this是一个引用当前类对象的引用变量,主要有以下几种用法: 引用当前类的实例变量· this关键字可以用来引用当前类的实例变量.如果实例变量和某个方法的参数之间存在歧义(实例 ...

  9. Scala快速入门到精通 视频教程 百度云网盘下载地址

    Scala快速入门到精通  视频教程 百度云网盘下载地址 Scala快速入门到精通 下载地址链接:https://pan.baidu.com/s/1bqGIKyF 密码:ojwd

  10. 《图说VR入门》——googleVR入门

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/52959035 作者:car ...