提取出某日访问百度次数最多的那个IP

fdcumt 2013-08-03 10:39:18
将ip根据前n位分别映射到2^n个不同文件中。建立一个hash表将根据后面32-n位,映射到不同的文件偏移位置,在经过一次遍历文件就可以找出最多ip。这样就可以两次遍历读取最多的ip,空间复杂度较大,用了好多磁盘空间。大约为2^32*4个字节。内存空间较少,只是建立后32-n位的hash映射表。
这种方法在实际中有没有可行性???
如果可行的话,是不是可以扩展到经过MD5编码的所有字符串??(当然md5编码太长,进行优化上面的算法,适当的节省空间)????
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2013-08-03
  • 打赏
  • 举报
回复
就算所有IP都有人上线, 才16G内存啊, 怕毛啊, 线上服务器64G内存是最低配了.
qq120848369 2013-08-03
  • 打赏
  • 举报
回复
写磁盘干啥啊, 内存里都搞定了啊.
fdcumt 2013-08-03
  • 打赏
  • 举报
回复
我的意思是仅以ip为例,这个方法还可以用到别的上面嘛。 我现在觉得应该是有点缺陷,在写数据时候次数太多,应该维护写几个文件队列,并设置一个队列最大值,等到某一个队列满,再将所有队列一次性写入磁盘,减少磁盘读取次数,节约时间成本。
nice_cxf 2013-08-03
  • 打赏
  • 举报
回复
ip地址直接转成int就好了,搞那么复杂干什么阿
fdcumt 2013-08-03
  • 打赏
  • 举报
回复
md5编码多长??????我只是说思路是否可行,如果过可行是否可以扩展到更广的方面。
fdcumt 2013-08-03
  • 打赏
  • 举报
回复
如果可行的话,是不是可以扩展到经过MD5编码的所有字符串??(当然md5编码太长,进行优化上面的算法,适当的节省空间)????

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧