日志格式:

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日志文件实现按照人员、行为分类的更多相关文章

  1. 海量WEB日志分析

    Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...

  2. 可视化实时Web日志分析工具-goaccess

    说到web服务器就不得不说Nginx,目前已成为企业建站的首选.但由于种种历史原因,Nginx日志分析工具相较于传统的apache.lighthttp等还是少很多. 今天就和大家分享一个非常强大的实时 ...

  3. hadoop入门之海量Web日志分析 用Hadoop提取KPI统计指标

    转载自:http://blog.fens.me/hadoop-mapreduce-log-kpi/ 今天学习了这一篇博客,写得十分好,照着这篇博客敲了一遍. 发现几个问题, 一是这篇博客中采用的had ...

  4. logstash+redis收集负载均衡模式下多台服务器的多个web日志

    一.logstash的简介 一般我们看日志来解决问题的时候要么 tail+grep 要么 把日志下载下来再搜索,可以应付不多的主机和应用不多的部署场景.但对于多机多应用部署就不合适了.这里的多机多应用 ...

  5. 服务器日志文件Web远程查看

    公司买的一款企业应用软件,所有透过应用操作DB的操作都会生成有日志,日志是以文本文件的形式存放在服务器上,后缀名为*.log.1,*.log.2之类的,软件本身也提供功能查询这些日志,但这个查询的功能 ...

  6. Django实现web端tailf日志文件

    这是Django Channels系列文章的第二篇,以web端实现tailf的案例讲解Channels的具体使用以及跟Celery的结合 通过上一篇<Django使用Channels实现WebS ...

  7. log4j添加日志一定记住在工程的web.xml文件下加一些内容

    log4j添加日志一定记住在工程的web.xml文件下加如下内容:

  8. Log4j写日志文件使用详解

    Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发 ...

  9. IIS 503日志文件在哪

    概述  503:“服务不可用”错误是一个非自定义的错误,该错误表示服务器当前无法处理该请求. 可能原因:1.管理员可能关闭应用程序池以执行维护.2.当请求到达时应用程序池队列已满.3.应用程序池标识没 ...

随机推荐

  1. JSP的执行过程及其异常处理机制

    1.JSP的执行过程     虽然JSP感觉上很像一般的HTML网页,但事实上它是以Servlet的形式被运行的.因为JSP文件在第一次运行的时候会先解释成Servlet源文件,然后编译成Servle ...

  2. Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图

    http://my.oschina.net/xshuai/blog/345117?fromerr=hEXYMdR0 http://www.oschina.net/code/snippet_144464 ...

  3. jQuery deferred when用法

    一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们 ...

  4. weblogic11g 节点管理器 nodemanager

    Weblogic 节点管理器  nodemanager 一.Weblogic  规划 : Server名称 端口 ip 备注 xyyadmin 7001 10.10.54.74 管理server ap ...

  5. ARM指令集相关知识

    1.ARMv8引入了执行状态机制,分为AArch32和AArch64 AArch32为T32(Thumb)和A32(ARM). AArch64为A64一种指令集 A64和A32的指令都是32位宽,可以 ...

  6. 深入浅出:Linux设备驱动之字符设备驱

    一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流 ...

  7. leetcode:Reverse Linked List II

    Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...

  8. [ionic开源项目教程] - 手把手教你使用移动跨平台开发框架Ionic开发一个新闻阅读APP

    前言 这是一个系列文章,从环境搭建开始讲解,包括网络数据请求,将持续更新到项目完结.实战开发中遇到的各种问题的解决方案,也都将毫无保留的分享给大家. 关注订阅号:TongeBlog ,查看移动端跨平台 ...

  9. Qt环境搭建(Visual Studio)

    简述 经常有人问我编写Qt程序时使用什么IDE,其实这个真的很难回答(各有所长),只能说看个人爱好了,因为我两个都用,而且两个都很喜欢(比较多情吧O(∩_∩)O~)! 下面将进行Qt Creator与 ...

  10. HDU 2176 (Nim博弈 先手取胜方案) 取(m堆)石子游戏

    切切水题,放松心情:-D #include <cstdio> + ; int a[maxn]; int main() { //freopen("in.txt", &qu ...