test2
package com.analysis.code; import org.apache.commons.lang3.StringUtils; import java.io.*; import java.net.URL; import java.util.*; /** * Created by Zephery on 2016/9/26. */ public class ThirdTest { public static boolean judgeURL(String line) throws Exception { //判断来源的主域名 String lineformat = java.net.URLDecoder.decode(line, "utf-8"); URL url = new URL(lineformat); String host = url.getHost(); //System.out.println(host); if (host != null) { if (!host.equals("api.app.happyjuzi.com") && !host.equals("m.happyjuzi.com") && !host.equals("a.happyjuzi.com")) { //System.out.println(host); return false; } if (lineformat.contains("&uid=")) { //System.out.println(lineformat); return false; } } return true; } // // public static List<String> getFileList(File file) { // List<String> result = new ArrayList<String>(); // if (!file.isDirectory()) { // System.out.println(file.getAbsolutePath()); // result.add(file.getAbsolutePath()); // } else { // File[] directoryList = file.listFiles(new FileFilter() { // public boolean accept(File file) { // if (file.isFile() && file.getName().indexOf("log") > -1) { // return true; // } else { // return false; // } // } // }); // for (int i = 0; i < directoryList.length; i++) { // result.add(directoryList[i].getPath()); // } // } // return result; // } public static List<String> getFileList(String path, String pathtodate) { //fu wu qi tiao shi List<String> pathlist = new ArrayList<>(); Iterator it = pathlist.iterator(); for (int i = 0; i <= 2; i++) { for (int j = 0; j <= 9; j++) { String hour = i + "" + j; pathlist.add(path + "/logstat-" + pathtodate + "-" + hour + ".log"); if (Integer.parseInt(hour) > 22) { break; } } } return pathlist; } public static void main(String args[]) { Long programstarttime = System.currentTimeMillis(); try { int repeatecount = 0; String path = args[0]; //fuwuqi String pathsplit[] = path.split("/"); String pathtodate = pathsplit[pathsplit.length - 1]; List<String> pathlist = getFileList(path, pathtodate); String line = null; // String path = "src/log/2016-09-26"; // String pathsplit[] = path.split("/"); // String pathtodate = "2016-09-26"; // File file = new File(path); // List<String> pathlist = getFileList(file); // String line = null; int count = 0; Map<String, List<Map<String, String>>> originmap = new HashMap<>(); //声明一个全局的map Map<String, Long> timemap = new HashMap<>(); //用来存储时间的map for (String l : pathlist) { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( new FileInputStream(l))); while ((line = bufferedReader.readLine()) != null) { try { String[] data = line.split("&"); Map<String, String> tojson = new HashMap<>(); //List<Map> list = new ArrayList<>(); String iphost = data[0].split("=")[1].split(",")[0]; String usi = data[1].split("=")[1]; // List<Map> list = originmap.get(iphost); for (String da : data) { String source[] = da.split("="); if (source.length < 2) { tojson.put(source[0], null); } else { tojson.put(source[0], source[1].equals("null") ? null : source[1]); } } tojson.put("ip", iphost); tojson.put("comefrom", ""); if (!judgeURL(tojson.get("u"))) { continue; } String key = ""; if (originmap.get(usi) != null) { key = usi; } else if (originmap.get(iphost) != null) { key = iphost; } if (StringUtils.isNotBlank(key) && originmap.containsKey(key)) { long starttime = Long.parseLong(timemap.get(key).toString().substring(0, 10)); long endtime = Long.parseLong(tojson.get("ipt").substring(0, 10)); //大于30秒的情况 if ((endtime - starttime) < 300) { originmap.get(key).add(tojson); } else { //数据库处理 new JudgeFrom(pathtodate).judgeoneip(originmap.get(key)); repeatecount++; List<Map<String, String>> list = new ArrayList<>(); list.add(tojson); originmap.put(key, list); } } else { //### List<Map<String, String>> list = new ArrayList<>(); list.add(tojson); originmap.put(iphost, list); } timemap.put(iphost, Long.parseLong(tojson.get("ipt"))); } catch (Exception e) { e.printStackTrace(); } //System.out.println(data[0].split("=")[1].split(",")[0]); //只判断100条数据 count++; // if (count > 1999) { // break; // } System.out.println(count); } } System.out.println("end"); JudgeFrom judgeFrom = new JudgeFrom(pathtodate); judgeFrom.judgefromwhere(originmap); System.out.println(repeatecount); //System.out.println("PV:" + (PV + originmap.size())); } catch (Exception e) { e.printStackTrace(); } System.out.println(System.currentTimeMillis() - programstarttime); } }
test
test2的更多相关文章
- python 装饰器--对有无参数的函数进行装饰
# 使用装饰器无参数的函数进行装饰# def func(funcionName): # print('-----1------') # def func_in(): # print('--func_i ...
- 如果是多个 c 代码的源码文件,编译方法如下: $ gcc test1.c test2.c -o main.out $ ./main.out test1.c 与 test2.c 是两个源代码文件。
如果是多个 c 代码的源码文件,编译方法如下: $ gcc test1.c test2.c -o main.out $ ./main.out test1.c 与 test2.c 是两个源代码文件.
- VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
问题一:VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”. 方法解决: The relevant setting is i ...
- python遍历目录os.walk(''d:\\test2",topdown=False)
os.walk(top, topdown=True, onerror=None, followlinks=False)遍历目录,topdown=false表示先返回目录,后返回文件 参数说明: top ...
- load data infile出现“ERROR 13 (HY000): Can't get stat of '/tmp/test2.txt' (Errcode: 2)”问题
用load data infile导数据到mysql数据库出现这个该问题,解决方法如下: 安全起见,连接mysql的语句需要添加–local-infile, mysql -hlocalhost -ur ...
- 2016/3/30 ①投票checkbox ②进度条两个div套起百分比控制内div(width) <div><div></div></div> ③数据库test2 表 diaoyan... 35岁发展方向投票
分两个页面,要点:提交form 相连action method 两个页面可以合成一个页面action传到自身页面 但分开较清晰 第一个页面vote.php <!DOCTYPE html P ...
- 5、数组的复制(test2.java、test3.java)
对于数组的复制,在最开始的时候最容易犯的一个错误,那就是自己认为的申请一个数组,然后将已存在的数组赋值到新申请数组名上,这样是错误的,这样仅仅是将数组的地址复制了过去,并不是,将数组内的元素拷贝过去, ...
- 还可以使用 -c 参数来显示全部内容,并标出不同之处 diff -c test2.txt test1.txt
二.实例 在test目录下存放了两个文本文件,test1.txt test2.txt . 比较这两个文件的异同. diff test1.txt test2.txt "5c5& ...
- 20150706 test2
净心守志:可会至道.譬如磨镜:垢去明存.断欲无求:当得宿命
随机推荐
- ubuntu16.04源码编译安装wine1.8.6安装不上引来的错误
configure: libxcomposite 64-bit development files not found, Xcomposite won't be supported. configur ...
- top:failed tty get 错误
运行命令,ps -ef | grep test | grep -v test | awk '{ print $2 }' | xargs top -H -p 想看test的实时状态,结果报了错,查了一下 ...
- 国内Hadoop应用现状
Hadoop在国内主要以互联网公司为主,下面主要介绍大规模使用Hadoop或研究Hadoop的公司. 1. 百度 百度在2006年就关注了Hadoop并开始调研和使用,截止2012年,总的集群规模超过 ...
- Android系统自带样式(android:theme)详解-(转)
android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式 android:theme="@androi ...
- javascript日历控件
以前要用到日历控件都是直接从网上下载一套源码来使用,心里一直有个梗,就是想自己动手写一个日历控件,最近刚好来了兴趣,时间上也允许,于是自己摸索写了一个,功能还算完善,界面就凑合了.可能最值得说的一点就 ...
- C语言中怎么将文件里的数据创建到(读到)链表中?
定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 struct student *next; //next 指针 指向 struct student 类型的变量 ...
- MarkDown插入图片
MarkDown插入图片的语法 ·编辑器:MacDown 比如博客园的Logo,URL是 http://static.cnblogs.com/images/logo_small.gif 在要插入图片的 ...
- 警惕多iframe下的同名id引起的诡异问题
遇到个诡异bug,虽然bug中套bug,忽略次要bug,其中最诡异最典型的现象是多行window.top.$("#id")取值操作,其中有一行却取不到值.这个着实让我费解.因为用到 ...
- hadoop日常运维与升级总结
日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...
- 报表开发工具中mysql数据库连接编码转化失效解决方案
1. 问题描述 在报表开发工具FineReport中,mysql数据库连接通过数据连接编码转换进行编码的转换,在通过报表录入往数据库中录入中文数据的时候,总是出现乱码,这个该怎么解决呢? 2. 解决方 ...