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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 線上直播系統原始碼,當前版本號頁面呈現原始碼
- 檢視當前pg會話連線數會話
- 浮點數線上轉hex計算工具
- 當前系統設計工具嚴重不足
- hex轉浮點數線上轉換工具
- linux 統計當前目錄下檔案或者資料夾的數量Linux
- Java獲取當前星期幾Java
- 二進位制轉float浮點數線上計算工具
- abc221D 統計線上遊戲人數遊戲
- 線上json轉url引數格式工具JSON
- app直播原始碼,當前使用者截止當前時間在本月的連續簽到統計APP原始碼
- java.lang.OutOfMemoryError: unable to create new native thread問題排查以及當前系統最大程式數量JavaErrorthread
- springboot線上人數統計Spring Boot
- 位元組陣列轉浮點數線上轉換器陣列
- Java如何獲取當前執行緒Java執行緒
- 函數語言程式設計的興衰與當前之崛起函數程式設計
- java 網路考試 線上教育系統 模組設計方案Java
- PbootCMS前臺顯示留言條數統計boot
- float浮點數線上轉位元組陣列轉換工具陣列
- 線上電影系統設計
- 如何用Java獲取當前時間戳?Java時間戳
- Java 例項 - 如何檢視當前 Java 執行的版本?Java
- 圖片線上轉base64,base64線上轉圖片-線上助手
- java PC 和 手機 線上考試系統 模組設計方案Java
- react獲取當前頁面的url引數React
- 用js獲取當前月份的天數JS
- Linux當前當前程式Linux
- 從線性/多路線到開放世界,設計焦點應當如何轉移?
- float線上轉二進位制計算器
- 通過調查數以百萬計的JVM虛擬機器發現當前Java使用情況 - Ben EvansJVM虛擬機Java
- Java程式設計:通過獲取當前時間,判斷今天星期幾Java程式設計
- php 獲取當前域名和當前協議PHP協議
- LeetCode - 1365 - 有多少小於當前數字的數字LeetCode
- Qt學習(5)獲取當前系統時間-實時顯示當前時間QT
- js外掛--獲取指定時間距離當前時間狀態:上週,當前周,前天,昨天,今天,明天,後天,當前周,下週。JS
- 線上直播系統原始碼,預設倒數計時,自定義輸入時間倒數計時原始碼
- 線上直播系統原始碼,前後端大檔案上傳程式碼分析原始碼後端
- pdf轉word如何線上轉換?
- vue重新整理當前頁面或者當前元件Vue元件