第一部分
1 安装VMware
2 下载Ubuntu镜像
3 在VMware里安装Ubuntu(下面是一篇帮助文章的地址)
https://zhuanlan.zhihu.com/p/38797088
4 在ubuntu系统上编译运行helloworld程序
4.1 打开控制台:使用快捷键 Ctrl + Alt + T;
4.2 安装vim:输入 sudo apt-get install vim;
4.3 安装gcc:输入 sudo apt-get install g++。
4.4 编写hello.c源代码
4.5 编译hello.c在终端执行 g++ hello.c -o hello 编译。
4.6 运行程序hello!
第二部分
1 sketch
sketch 是一种基于散列(Hash:一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。)的数据结构,可以在高速网络环境中,实时地存储流量特征信息,只占用较小的空间资源,并且具备在理论上可证明的估计精度与内存的平衡特性。
通过设置散列函数,将具有相同散列值的键值数据存入相同的桶内,以减少空间开销。桶内的数据值作为测量结果,是真实值的近似。利用开辟二维地址空间,多重散列等技术减少散列冲突,提高测量结果的准确度。
(我的理解:类似于将数据归类,当你要找某一个元素时,只需再这类中找,而不需遍历全部数据,以减小空间内存)
2 Count-Min Sketch
Count-Min Sketch 算法流程:
选定d个hash函数,开一个 dxm 的二维整数数组作为哈希表
对于每个元素,分别使用d个hash函数计算相应的哈希值,并对m取余,然后在对应的位置上增1,二维数组中的每个整数称为sketch
要查询某个元素的频率时,只需要取出d个sketch, 返回最小的那一个(其实d个sketch都是该元素的近似频率,返回任意一个都可以,该算法选择最小的那个
Count-Min Sketch算法的优点是省内存,缺点是对于出现次数比较少的元素,准确性很差,因为二维数组相比于原始数据来说还是太小,hash冲突比较严重,导致结果偏差比较大。
第三部分
1 GitHub上寻找countminsketch的应用代码
https://github.com/barrust/count-min-sketch
2 但是将代码克隆到Ubuntu后一直显示
include "count_min_sketch.h"不存在
3 最开始是尝试在Ubuntu的vim里安装这个库,网上的搜索结果全是关于这个算法的解释。之后尝试将网上已经编写好的#include "count_min_sketch.h"库文件导入库源中,结果还是不行。有点脑壳疼。