page contents

如何找出访问百度最多的IP?

轩辕小不懂 发布于 2021-10-08 11:12
阅读 493
收藏 0
分类:Golang
  • ip
  • 现有海量日志数据保存在一个超级大的文件中,该文件无法直接读入内存,要求从中提取某天访问百度次数最多的那个IP。

    2103
    Nen
    Nen
    - 程序员

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

    请先 登录 后评论