给1亿个IP,放在一个文本文件 文本文件1.5G 统计每个IP出现的次数,要求:在4G内存以下的机器 5分钟运行出结果
总的思路是bitmap
考虑到ip地址的稀疏性,可以使用页表
个人认为首先考虑内存映射机制,4G 内存的机器,你可用的内存肯定是大于 1.5G的。
使用内存映射文件来提高你程序的性能
然后,再考虑查找/分析的算法。
采用内存映射吧,我的导师也问了这个问题~
其实用Java的NIO包中的通道、缓冲区、选择器,采用多线程,速度也会快很多~之前还想着搭建Hadoop平台,采用并行处理。