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

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

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.net/112603.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月4日 下午7:00
下一篇 2021年11月4日 下午7:00


相关推荐

  • sql 中的sysdate使用

    sql 中的sysdate使用加法 selectsysdat add months sysdate 12 fromdual 加 1 年 selectsysdat add months sysdate 1 fromdual 加 1 月 selectsysdat to char sysdate 7 yyyy mm ddHH24 MI SS fromdual 加 1 星期 selectsysda

    2026年3月18日
    3
  • Java web的简单介绍

    Java web的简单介绍

    2021年10月3日
    48
  • linux是什么

    linux是什么

    2021年9月11日
    55
  • wsus可以打mysql中间件补丁_配置WSUS3.0服务器给客户机分发补丁

    wsus可以打mysql中间件补丁_配置WSUS3.0服务器给客户机分发补丁配置 WSUS3 0 服务器给客户机分发补丁上篇博文中介绍了 WSUS3 0 服务器的部署 本文中介绍配置 WSUS 服务器后给客户机分发补丁 还是使用上篇博文中的拓扑结构 BEIJING 做 DC 和 DNS 服务器 GUANGZHOU 做 WSUS 服务器 NANJING 做客户机 IP 地址如图中一样 1 WSUS 服务器分组 2 给组分配计算机 3 审批更新补丁 4 客户机测试下面开始今天的实验 一 在 WSUS 服务器上分组打开 GU

    2025年9月20日
    7
  • ansys 不同单元连接问题

    ansys 不同单元连接问题br 总结一下不同单元之间的连接问题 br nbsp br nbsp nbsp nbsp 论坛里常有人问不同单元之间的连接问题 我自己也一直被这个问题所困绕 最近从 ANSYS 工程分析进阶实例上知道了 ANSYS 中不同单元之间的连接原则 感觉收收获不小 现把它上传与大家共享 br 一般来说

    2026年3月18日
    2
  • Pycharm社区版创建Flask项目详解「建议收藏」

    Pycharm社区版创建Flask项目详解「建议收藏」一、在原有工程上修改1、创建工程选择newproject创建工程输入项目名,选择配置好的虚拟环境项目创建好之后是一个空的项目,里面没有任何文件,下面我们来新建工程目录2、配置工程目录在工程根目录新建app.py文件在app.py中的代码如下:fromflaskimportFlask,render_templateapp=Flask(__name__)app.config[‘SECRET_KEY’]=’1456719640@qq.com’@app.rou

    2022年8月29日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号