日志格式:

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. SparkContext和RDD

    SparkContext.scala实现了一个SparkContext的class和object,SparkContext类似Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等. ...

  2. Alpha、 Beta、build、release测试

    alpha(内测) alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试.alpha测试的目的是评价软件产品的FLURPS(即功能.局域化.可使用性. ...

  3. android ProgressBar 样式讲解

    转载自:eoe社区,可惜没找到源地址... 多式样ProgressBar 普通圆形ProgressBar 该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中. 一 ...

  4. Android之网络请求库

    自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...

  5. 编译android出错

    注意:frameworks/base/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java 使用了未经检查或不安全的操作.注意:要了 ...

  6. ARC的内存管理

        在objective-c中,内存的引用计数一直是一个让人比较头疼的问题.尤其是当引用计数涉及到arc.blocks等等的时候.似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数 ...

  7. Linux同步机制(一) - 线程锁

    1 互斥锁 在线程实际运行过程中,我们经常需要多个线程保持同步. 这时可以用互斥锁来完成任务.互斥锁的使用过程中,主要有 pthread_mutex_init pthread_mutex_destor ...

  8. ogre--hlsl--矩阵

    重要注释——矩阵的顺序:有一件事需要牢记,HLSL允许你使用2种不同方式处理矩阵和向量相乘——mul(v,m)或者mul(m,v).二者之间唯一的区别就是矩阵被有效地变换.在OGRE中传递矩阵你应该使 ...

  9. Projective Texture的原理与实现

    http://blog.csdn.net/xukunn1226/article/details/775644 Projective Texture是比较常见的一种技术,实现起来代码也就区区的不过百行, ...

  10. 【转载】Redis多实例及分区

    主要看的这篇文章 http://mt.sohu.com/20160523/n451048025.shtml edis Partitioning即Redis分区,简单的说就是将数据分布到不同的redis ...