分两种情况:1是日志文件不太大,2是日志文件很大。
大家说说看。

解决方案 »

  1.   

    考的就是算法和基础知识咯。对了,不限java
      

  2.   

    除了自己写算法外,用一用jre中的一些类,会更容易一些。
      

  3.   

    我的想法:
    1、文件不是很大的时候把内容都读入内存,用ip地址做key放到HashMap中,每次放的时候先判断HashMap中是否有该ip的key,不存在则value为1,存在则value+1再放进去,文件读完后再依次输出HashMap的key和value到一个大顶堆中去,可以加上优化,比如value为1的不存入大顶堆,这样一次循环完后再依次输出大顶堆中的前10个值就可以了,也可以满足动态的,比如取前20位,前5位ip次数最多的。2、如果文件很大的时候把内容分析后存入数据库日志表,这样用sql语句很容易找到访问排名前10位的ip。大家有什么更好的想法也说说看啊……
      

  4.   

    将日志数据处理->写入一个临时表(或者多个表)->select
      

  5.   

    可以选择使用多个hash来进行优化,将大文件分成小文件再作后续处理