zoukankan      html  css  js  c++  java
  • 如何找出某一天访问百度网站最多的 IP

    题目描述:

    现有海量日志数据保存在一个超级大的文件中,该文件无法直接读入内存,要求从中提取某天访问百度次数最多的那个 IP。

    分析与解答:

    由于这道题只关心某一天访问百度最多的 IP,因此可以先对文件进行一次遍历,把这一天访问百度网站的 IP 的相关信息记录到一个单独的文件中。接下来可以用上一节介绍的方法来求解。由于求解思路是一样的,这里就不再详细介绍了。唯一需要确定的是,把一个大文件分为几个小文件比较合适。以 IPv4 为例,由于一个 IP 地址占用 32bit,因此最多会有 232种取值情况。如果使用 hash(IP)%1024 值,那么就把海量 IP 日志分别存储到 1024 个小文件中。这样,每个小文件最多包含 4M 个 IP 地址。如果使用 2048 个小文件,那么每个文件会最多包含 2M 个 IP 地址。因此,对于这类题目而言,首先需要确定可用内存的大小,然后确定数据的大小。由这两个参数就可以确定 hash 函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小文件都能被一次性加载到内存中。

  • 相关阅读:
    斐波那契数列 的两种实现方式(Java)
    单链表反转
    单链表合并
    两个有序list合并
    list去重 转载
    RemoveAll 要重写equals方法
    Java for LeetCode 138 Copy List with Random Pointer
    Java for LeetCode 137 Single Number II
    Java for LeetCode 136 Single Number
    Java for LeetCode 135 Candy
  • 原文地址:https://www.cnblogs.com/hardy-wang/p/13072955.html
Copyright © 2011-2022 走看看