java統計當前線上數 (轉)
package com.hnedu.stat;
/**
* 計算線上人數,說明:
*
* 在訪問頁面放入:
* com.hnedu.stat.OnlineCounter.addUser( object)
* 一般用ip來作為object的傳入值,當然,如果網站統計登陸線上人數,也可用名
* 來作為object傳入值。
*
* 顯示線上人數
* com.hnedu.stat.OnlineCounter.getOnlineCount() *
*
* com.hnedu.stat.OnlineCounter.getOnline()
* 返回一個List,裡面以String[]形式存放傳入的object值和最後訪問頁面時間。
* by crazyren -08-05 e: .com">c_crazyren@hotmail.com
*/
import .util.List;
import java.util.ArrayList;
import javax..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 p= 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;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981905/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java獲取當前秒數輸出Java
- 統計當前系統中不同執行狀態的程式數量
- 線上直播系統原始碼,當前版本號頁面呈現原始碼
- 當前系統設計工具嚴重不足
- 【Java】得到當前股票資訊Java
- 用Delphi獲取當前系統時間 (轉)
- Jsp統計線上人數和線上註冊人數JS
- 【Java】得到當前系統時間,精確到毫秒Java
- Java獲取當前星期幾Java
- java獲取當前時間Java
- springboot線上人數統計Spring Boot
- linux 統計當前目錄下檔案或者資料夾的數量Linux
- js倒數計時關閉當前頁面程式碼JS
- js如何計算當前日期指定天數前的日期JS
- 使用者介面設計--系統的當前物件物件
- 檢視當前系統程式
- 用Java獲得當前效能資訊Java
- ASP.NET MVC線上人數統計ASP.NETMVC
- Servlet監聽器統計線上人數Servlet
- app直播原始碼,當前使用者截止當前時間在本月的連續簽到統計APP原始碼
- Java如何獲取當前執行緒Java執行緒
- 線上人數統計功能怎麼實現?
- PbootCMS前臺顯示留言條數統計boot
- 函數語言程式設計的興衰與當前之崛起函數程式設計
- 以樹狀結構顯示系統當前的任務(轉)
- java.lang.OutOfMemoryError: unable to create new native thread問題排查以及當前系統最大程式數量JavaErrorthread
- react獲取當前頁面的url引數React
- 檢視當前pg會話連線數會話
- 用js獲取當前月份的天數JS
- java線上聊天系統Java
- QT獲取系統當前時間QT
- 如何用Java獲取當前時間戳?Java時間戳
- abc221D 統計線上遊戲人數遊戲
- php計算當前時間到下個月的剩餘天數PHP
- Java 例項 - 如何檢視當前 Java 執行的版本?Java
- 檢視當前linux的核心版本(轉)Linux
- 在java中程式設計實現數字簽名系統 (轉)Java程式設計
- php 獲取當前域名和當前協議PHP協議