从大量的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java json对象和json字符串互转的方法_js中对象转字符串的方法

    java json对象和json字符串互转的方法_js中对象转字符串的方法一、准备工作定义三个json字符串用于以下测试://json字符串-简单对象StringjsonStr=”{\”studentName\”:\”张三\”,\”studentAge\”:18}”;//json字符串-数组类型StringjsonArrStr=”[{\”studentName\”:\”张三\”,\”studentAge\”:18},{\”studentName\”:\”李四\”,\”studentAge\”:17}]”;//json字符串-复杂对象Strin.

    2022年9月1日
    4
  • 关于Google FREE Webhosting !的欺诈邮件 200∞「建议收藏」

    关于Google FREE Webhosting !的欺诈邮件 200∞「建议收藏」早上收到了一封貌似正常的邮件:Hello,DearGmailcustomerAfterourfreeemailservicesweofferyoutosingupforourfreehostingservices.Thisservicecurrentlyisinbetatest.Andwechooseyoutotestthis…

    2022年10月8日
    5
  • PHP之与或非_php字符串运算符

    PHP之与或非_php字符串运算符在程序运算中,数值都是转换成机器码(二进制)再进行加的,而与或非就是建立这这种基础上,以二进制进行运算。与$1$0=0或|1|0=1非~~1=0

    2022年10月11日
    2
  • 软件工厂简介「建议收藏」

    软件工厂简介「建议收藏」摘要:简要介绍Microsoft开发软件工厂这种方法的动机。所谓软件工厂就是指为了支持某种特定应用程序的快速开发而配置的开发环境。软件工厂从逻辑上讲就是软件开发方法和实践的下一个发展阶段。然而,通过引入产业化模式,软件工厂势必会改变软件行业的现状。扩大软件开发的规模从目前的情况来看,软件开发的速度缓慢、代价高昂而又极易出错,常常会生产出存在大量缺陷的产品,在可用性、可靠性、性能、安全

    2025年8月26日
    7
  • 奉劝各位学弟学妹们,该打造你的技术影响力了!

    奉劝各位学弟学妹们,该打造你的技术影响力了!CSDN的学弟学妹们,大家好呀,我是沉默王二。放在一年前,打死我也不相信,这四个平淡无奇的字组合在一起竟然充满了魔力!2019年的时候,我看过一本书,名叫《影响力》,应该有不少学弟学妹也看过。但说实在的,这本书我就看了几页,就看不下去了,不是这书不好,而是我觉得它不适合我,因为我那时候没什么影响力(谦虚点)。没有影响力的时候想着怎么扩大影响力,我就觉得有点扯淡。就像没有财的时候想着理财一样,有点白日做梦。与其白日做梦,不如脚踏实地,换一句浅显易懂的话,就是,与其想着理财,不如想想怎么攒钱。如果连原

    2022年5月22日
    34
  • 详述如何退出 Vim 编辑器

    详述如何退出 Vim 编辑器Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,其在Vi的基础上改进和增加了很多特性。怎么说呢?学习如何用Vim进行文本编辑应该算是程序员的必备技能之一啦!But,很多同学在使用Vim进行文本编辑的时候却不知道如何退出Vim编辑器,这就有些尴尬啦!因此,在本文中,详细列出如何Vim编辑器的方法,希望对大家有些帮助。首先,点击Esc键,Vim进入命令模式。然

    2022年6月7日
    40

发表回复

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

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