分两种情况:1是日志文件不太大,2是日志文件很大
除了自己写算法外,用一用jre中的一些类会更容易一些。
1、文件不是很大的时候把内容都读入内存用ip地址是怎么生成的做key放到HashMap中,每次放的时候先判断HashMapΦ是否有该ip的key不存在则value为1,存在则value+1再放进去文件读完后再依次输出HashMap的key和value到一个大顶堆中去,可以加上优化比如value为1的不存入大顶堆,這样一次循环完后再依次输出大顶堆中的前10个值就可以了也可以满足动态的,比如取前20位前5位ip次数最多的。
2、如果文件很大的时候把內容分析后存入数据库日志表这样用sql语句很容易找到访问排名前10位的ip。
大家有什么更好的想法也说说看啊……
将日志数据处理->写入一个臨时表(或者多个表)->select
可以选择使用多个hash来进行优化将大文件分成小文件再作后续处理
说实在的,这问题我都不想向下看了!
分析日志那日志的格式呢?示例数据呢难道摸黑分析么?
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。