对web日志文件实现按照人员、行为分类
日志格式:
method,time,name
in,2015-05-06 17:37:46,Jenny1
out,2015-05-06 17:37:46,Judith1
in,2015-05-06 17:37:46,Lee1
in,2015-05-06 17:37:59,Crystal1
out,2015-05-06 17:37:59,Dale1
out,2015-05-06 17:37:59,Delia1
in,2015-05-06 17:38:00,Nelly1
out,2015-05-06 17:38:00,Olga1
out,2015-05-06 17:38:00,Penny1
in,2015-05-06 17:38:00,Florence1
out,2015-05-06 17:38:00,Giselle1
out,2015-05-06 17:38:00,Edwina1
out,2015-05-06 17:38:00,Elsa1
in,2015-05-06 17:38:00,Prima1
out,2015-05-06 17:38:00,Queena1
in,2015-05-06 17:38:00,Regina1
in,2015-05-06 17:38:00,Renee1
out,2015-05-06 17:38:00,Honey1
out,2015-05-06 17:38:00,Ingrid1
out,2015-05-06 17:38:00,Esther1
in,2015-05-06 17:38:00,Ethel1
out,2015-05-06 17:38:20,Flora1
in,2015-05-06 17:38:21,Freda1
out,2015-05-06 17:38:00,Gloria1
in,2015-05-06 17:38:00,Sabrina1
in,2015-05-06 17:38:00,Thera1
out,2015-05-06 17:38:00,Tiffany1
out,2015-05-06 17:38:00,Jodie1
in,2015-05-06 17:38:00,Judy1
要求:
计算每分钟内用户的在线人数与离线人数
思路:
1、2015-05-06 17:37:59,这样的时间可以定义为2015-05-06 17:37:00至2015-05-06 17:37:59,只要是这个区间的都将视为是17:37:00的行为
2、将时间、人员、行为 作为key,这个短时间的人员作为value,存储在Map中
处理时间类:
public static String TimeFrom(String str) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result=null;
try {
long now=df.parse(str).getTime();
long from=(now/60000)*60000;
Calendar c = Calendar.getInstance();
c.setTimeInMillis(from);
result=df.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
读取文件,并存储key value
File file = new File("e://aa.txt");
try {
InputStreamReader read = new InputStreamReader(new FileInputStream(
file), "utf-8");
BufferedReader bufferread = new BufferedReader(read);
String linetxt = null;
HashMap<String, ArrayList> hashname = null;
hashname = new HashMap<String, ArrayList>();
ArrayList a=null;
while ((linetxt = bufferread.readLine()) != null) {
String[] array = linetxt.split(",");
String value = TimeUtils.TimeFrom(array[1])+":"+array[2]+":"+array[0];
if (!hashname.containsKey(value)) {
a=new ArrayList();
a.add(array[2]);
hashname.put(value, a);
} else {
a.add(array[2]);
hashname.put(value, a);
}
}
Set set =hashname.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey()+"-->"+((ArrayList) me.getValue()).size());
}
} catch (Exception e) {
e.printStackTrace();
}
对web日志文件实现按照人员、行为分类的更多相关文章
- 海量WEB日志分析
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...
- 可视化实时Web日志分析工具-goaccess
说到web服务器就不得不说Nginx,目前已成为企业建站的首选.但由于种种历史原因,Nginx日志分析工具相较于传统的apache.lighthttp等还是少很多. 今天就和大家分享一个非常强大的实时 ...
- hadoop入门之海量Web日志分析 用Hadoop提取KPI统计指标
转载自:http://blog.fens.me/hadoop-mapreduce-log-kpi/ 今天学习了这一篇博客,写得十分好,照着这篇博客敲了一遍. 发现几个问题, 一是这篇博客中采用的had ...
- logstash+redis收集负载均衡模式下多台服务器的多个web日志
一.logstash的简介 一般我们看日志来解决问题的时候要么 tail+grep 要么 把日志下载下来再搜索,可以应付不多的主机和应用不多的部署场景.但对于多机多应用部署就不合适了.这里的多机多应用 ...
- 服务器日志文件Web远程查看
公司买的一款企业应用软件,所有透过应用操作DB的操作都会生成有日志,日志是以文本文件的形式存放在服务器上,后缀名为*.log.1,*.log.2之类的,软件本身也提供功能查询这些日志,但这个查询的功能 ...
- Django实现web端tailf日志文件
这是Django Channels系列文章的第二篇,以web端实现tailf的案例讲解Channels的具体使用以及跟Celery的结合 通过上一篇<Django使用Channels实现WebS ...
- log4j添加日志一定记住在工程的web.xml文件下加一些内容
log4j添加日志一定记住在工程的web.xml文件下加如下内容:
- Log4j写日志文件使用详解
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发 ...
- IIS 503日志文件在哪
概述 503:“服务不可用”错误是一个非自定义的错误,该错误表示服务器当前无法处理该请求. 可能原因:1.管理员可能关闭应用程序池以执行维护.2.当请求到达时应用程序池队列已满.3.应用程序池标识没 ...
随机推荐
- sql查询字段值的换行及回车符
SQL的换行.回车符,在MySQL.SQL Server和Oracle中均有不同,下面以列表显示. MySQL SQL Server Oracle 换行符 \n或\r\n或CHAR(10) CHA ...
- 下载安装和OpenCV匹配的Android开发环境
ok blog Android与OpenCV——重新下载安装和OpenCV匹配的Android开发环境 !!OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Jav ...
- BZOJ 3172 单词(ac自动机)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3172 题意:给出n个单词.输出每个单词在所有单词中一共出现多少次? 思路:首先将所有单词 ...
- HDU 4744 Starloop System(ZKW费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4744 题意:三维空间n个点,每个点有一个wi值.每对点的距离定义为floor(欧拉距离),每对点之间建 ...
- PopupWindwo和AlertDialog的区别
AlertDialog 是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情:而PopupWindow是阻塞式对话框:PopupWindow弹出时, 程序会等 待,在PopupWind ...
- You can't specify target table 'charge' for update in FROM clause
mysql中不能这么用. (等待mysql升级吧)错误提示就是说,不能先select出同一表中的某些值,再update这个表(在同一语句中) 替 换方 案: create table tmp as s ...
- website architecture
如果在不仔细考虑网站架构的情况下就去做一个网站,这就像在没有规划行程前而去贸然旅行.你可能最终到了你的目的终点,但是你可能也不知道在这过程中,你已经走过了多少的弯路.做网站适用同样的道理.在开工之前, ...
- 在eclipse如何删除无效的maven build
在Eclipse的maven项目中,点击一次“maven build...”明明没有配置,它也就会产生一个maven build,那么如何删除这些无效的配置呢?
- NuGet的安装;
下载完毕安装需要重启一下VS 然后我们去NuGet里面安装我们要的客户端 搜索 CouchbaseNetClient 引用之后,编译项目,查看到已引用的dll文件
- $^,$@,$?,$<,$(@D),$(@F) of makefile
makefile下$(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)代表的不同含义 $(filter-out $(PHONY) $(wildcard $^),$^)常用 ...