本文共 731 字,大约阅读时间需要 2 分钟。
问题描述:海量日志数据,提取出某日访问百度次数最多的那个IP。
分析:IP地址是32位的二进制数,所以共有N=2^32=4G个不同的IP地址, 创建一个unsigned count[N];的数组,即可统计出每个IP的访问次数#include#include #include using namespace std; #define N 32 //临时文件数 #define ID(x) (x>>27) //x对应的文件编号 #define VALUE(x) (x&0x07ffffff) //x在文件中保存的值 #define MAKE_IP(x,y) ((x<<27)|y) //由文件编号和值得到IP地址. #define MEM_SIZE 128*1024*1024 //需分配内存的大小为 MEM_SIZE*sizeof(unsigned) char* data_path="D:/test/ip.dat"; //ip数据 //产生n个随机IP地址 void make_data(const int& n) { ofstream out(data_path,ios::out|ios::binary); srand((unsigned)(time(NULL))); if (out) { for (int i=0; i
转载地址:http://tbvvi.baihongyu.com/