给定的access.log是电信运营商的用户上网数据,
第一个字段是时间, 第二个字段是ip地址,第三个字段是访问的网站,
其他字段可以忽略不计。
ip.txt是ip地址和归属地的规则数据,里面的数据是根据ip地址的十进制从低到高排序。
要求:
通过计算access.log中的用户行为数据,统计出各个省份访问量(一次请求记作一次独立的访问量),并按照各个省份的访问量的从高到低进行排序
分析 :
- 根据需求,要确定access.log中用户ip地址所在的省份,
- 要确定就要查找,ip.txt中数据保存在list中,第一IpBean存储数据,list方便使用索引查找
- ip.txt中的ip是[16779264,16781311],这是长整型的一个范围,要对access.log里面的ip(192.168.12.14)进行长整型转化,用二分查找找到ip对应的IpBean
- 将找到的省份存在map中,value是访问的次数
main方法:
// key -->省份 value -->ip访问的次数
Map<String, Integer> pMap = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("d:/data/access.log"));
String line;
while ((line = br.readLine()) != null) {
try {
// 20090121000132095572000|125.213.100.123|show.51.com|/.....
Strin