java list个数统计_java统计当前在线数_java

package com.hnedu.stat;

/**

* 计算在线人数,说明:

*

* 在访问页面放入:

* com.hnedu.stat.OnlineCounter.addUser(Object object)

* 一般用ip来作为object的传入值,当然,如果网站统计登陆在线人数,也可用用户名

* 来作为object传入值。

*

* 调用显示在线人数

http://www.gaodaima.com/64884.htmljava统计当前在线数_java

* com.hnedu.stat.OnlineCounter.getOnlineCount() *

*

* com.hnedu.stat.OnlineCounter.getOnline()

* 返回一个List,里面以String[]形式存放传入的object值和最后访问页面时间。

* by crazyren 2003-08-05 email: c_crazyren@hotmail.com

*/

import java.util.List;

import java.util.ArrayList;

import javax.servlet.http.HttpSession;

public class OnlineCounter {

private static List list = new ArrayList();

private OnlineCounter() {

}

public static void addUser(Object object) {

//得到用户当前访问时间

String nowtime = com.hnedu.util.StringUtils.getTime("mm:ss");

//Str数组用来存放用户得ip和访问时间

String[] str = new String[2];

str[0] = object.toString();

str[1] = nowtime;

//temp数组用来临时存放从list里面取出的用户ip和访问时间

String[] temp = new String[2];

//循环list

for (int i = 0; i < list.size(); i++) {

temp = (String[])list.get(i);

//如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间

if(temp[0].equals(str[0])) {

list.set(i,str);

return;

}

//如果用户超过5分钟没有访问,则认为不在线

if(subTime(nowtime,temp[1]) > 300) {

list.remove(i);

}

}

//添加一个新的在线用户

list.add(str);

//释放资源

str = null;temp = null;

}

public static int getOnlineCount() {

//返回当前在线人数

return list.size();

}

public static List getOnline() {

return list;

}

/** 计算两个时间差,返回相差秒数 */

private static int subTime(String src,String des) {

int n = 0;

java.util.Calendar ca = java.util.Calendar.getInstance();

long time1 =

com.hnedu.util.StringUtils.compareStringTime(src,des,"mm:ss");

ca.setTimeInMillis(time1);

n = (ca.get(java.util.Calendar.MINUTE)) * 60;

n = n + ca.get(java.util.Calendar.SECOND);

return n;

}

}

引用的StringUtils里面的两个方法:

/**

* 获得当前时间

* @param parrten 输出的时间格式

* @return 返回时间

*/

public static String getTime(String parrten)

{

String timestr;

if(parrten==null||parrten.equals(""))

{

parrten="yyyyMMddHHmmss";

}

java.text.SimpleDateFormat sdf=new SimpleDateFormat(parrten);

java.util.Date cday=new Date();

timestr=sdf.format(cday);

return timestr;

}

/**

* 比较两个字符串时间的大小

* @param t1 时间1

* @param t2 时间2

* @param parrten 时间格式 :yyyy-MM-dd

* @return 返回long =0相等,>0 t1>t2,<0 t1

*/

public static long compareStringTime(String t1,String t2,String parrten)

{

SimpleDateFormat formatter = new SimpleDateFormat (parrten);

ParsePosition pos = new ParsePosition(0);

ParsePosition pos1 = new ParsePosition(0);

Date dt1=formatter.parse(t1,pos);

Date dt2=formatter.parse(t2,pos1);

long l=dt1.getTime()-dt2.getTime();

return l;

}

欢迎大家阅读《java统计当前在线数_java》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值