前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从大量的IP访问记录中找到访问次数最多的IP

从大量的IP访问记录中找到访问次数最多的IP

作者头像
全栈程序员站长
发布2022-07-08 10:10:48
9380
发布2022-07-08 10:10:48
举报
文章被收录于专栏:全栈程序员必看

1.内存不受限

一个IP有32bit(4Byte),1GB=10亿,那么在4GB内存的情况下,可以存10亿个IP。用HashMap,边存入IP边维护一个最大次数,这样遍历一遍就可以求出,时间复杂度为O(n)。

2.内存受限

假设我们有1TB的数据,但内存只有4GB,不能将数据全部读入内存做运算。

  • 从输入流中读取1TB的数据,将IP地址按模1000运算,相同的模值IP写到同一个文件中。这样就会产生1000个小文件,每个文件大约1GB,且保证了相同的IP一定在同一个文件中。
  • 对这1000个文件中的每个文件使用HashMap找到该文件中的最多IP,然后1000个局部极值比较,再求出最值,有点像小组赛晋级然后总决赛。

【Reference】

  1. 从1亿个ip中找出访问次数最多的IP http://blog.csdn.net/linmiansheng/article/details/19290879

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112603.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.内存不受限
  • 2.内存受限
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档