導航:首頁 > 源碼編譯 > java監控系統源碼

java監控系統源碼

發布時間:2023-01-20 21:21:28

① 求教基於java的實時監控系統的開源工具

javaMelody 能夠監測Java或Java EE應用程序伺服器,並以圖表的方式顯示:Java內存和Java CPU使用情況,用戶Session數量,JDBC連接數,和http請求、sql請求、jsp頁面與業務介面方法(EJB3、Spring、 Guice)的執行數量,平均執行時間,錯誤百分比等。圖表可以按天,周,月,年或自定義時間段查看。


② java寫一個監控器,每月1號一點掃描一次,注意每月只掃描一次,考慮效率問題和資源問題!!!求大俠啊!!

不想寫代碼了,給你一個我寫過的參考吧,我的這個是每天晚上0點時執行程序,一天只執行一次,效率認為還不錯。
package prepare;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Auto_Prepare extends Thread {

// SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期
// SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");// 格式化時間
SimpleDateFormat sdfTime_ALL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化時間

public Auto_Prepare() {

}

public void run() {
// TODO Auto-generated method stub

int way = 1;// 選擇的方法
System.out.println("選擇的方法是:方法" + way);

if (way == 1) {// 用Thread.Sleep()方法實現
while (true) {
int ON_RestTime = 20;// 如果進行了准備工作,線程的睡眠時間,單位:小時
int OFF_RestTime = 59;// 如果不進行准備工作,線程的睡眠時間,單位:分鍾
// /////////////////////////////////////////////////////////////格式化時間
Calendar Now = Calendar.getInstance();
String strTime = "現在時刻北京時間:"
+ sdfTime_ALL.format(Now.getTime()) + "----";
if (Now.get(Calendar.HOUR_OF_DAY) == 0) {
// 即當時間是0點時,開始執行下列語句
System.out.println("abcdefghijklmnopqrstuvwxyz");
System.out.println("Auto_Prepare.java====" + strTime
+ "開始准備所有數據...");

Date SHDate = Now.getTime();// 執行准備工作前的時間
PrepareData(Now);// 執行准備工作

Now = Calendar.getInstance();// 現在的時間
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 准備數據消耗的時間
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out.println("Auto_Prepare.java====現在時刻北京時間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----准備工作運行時間為:" + hr + "小時" + mr + "分" + sr
+ "秒。");

Now = Calendar.getInstance();// 現在的時間
long SleepTime = ON_RestTime * 60 * 60 * 1000
+ (24 - ON_RestTime) * (60 - OFF_RestTime) * 60
* 1000 - RunTime;
// 加(24-ON_RestTime)*(60-OFF_RestTime)分鍾的目的
// 是消除一天中有四次睡眠OFF_RestTime分鍾造成的誤差。
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====現在時刻北京時間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----所有數據准備完畢,線程睡眠:" + hs + "小時" + ms + "分" + ss
+ "秒。");
try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {// 不是0點,睡眠OFF_RestTime分鍾
Date SHDate = Now.getTime();
Now = Calendar.getInstance();
long RunTime = Now.getTime().getTime() - SHDate.getTime();// 程序運行消耗的時間
int hr = (int) RunTime / 1000 / 60 / 60;
int mr = (int) RunTime / 1000 / 60 - hr * 60;
int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;
System.out
.println("Auto_Prepare.java====現在時刻北京時間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----程序運行時間為:" + hr + "小時" + mr + "分"
+ sr + "秒。");

Now = Calendar.getInstance();// 現在的時間
long SleepTime = OFF_RestTime * 60 * 1000 - RunTime;
int hs = (int) SleepTime / 1000 / 60 / 60;
int ms = (int) SleepTime / 1000 / 60 - hs * 60;
int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;
System.out.println("Auto_Prepare.java====現在時刻北京時間:"
+ sdfTime_ALL.format(Now.getTime())
+ "----時間不是0點,不做准備工作,線程睡眠:" + hs + "小時" + ms + "分"
+ ss + "秒。");

try {
Auto_Prepare.sleep(SleepTime);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}// while(true)
} else if (way == 2) {

}
}

private void PrepareData(Calendar now) {
//准備工作,即你需要讓程序處理的事情
}

}

③ 我想做一個基於java的區域網實時監控系統請大家給點建議或源碼吧!

這些功能僅僅依靠java無法完成,這不是java的擅長方向,如果你真的非得要用java,可以用java原始介面接駁c/c++組件進行非託管編程

④ java里是怎麼通過condition介面是獲取監視器方法的

ReentrantLock和condition是配合著使用的,就像wait和notify一樣,提供一種多線程間通信機制。

ReentrantLock 的lock方法有兩種實現:公平鎖與非公平鎖
看newCondition的源碼實現:

final ConditionObject newCondition() {
return new ConditionObject();}

其實就是只實例化一個個conditionObject對象綁定到lock罷了。也就是拿到了監視器,再深入到conditionObject這個裡面實現看看await方法:

public final void await() throws InterruptedException {
if (Thread.interrupted())
throw new InterruptedException(); Node node = addConditionWaiter(); int savedState = fullyRelease(node); int interruptMode = 0; while (!isOnSyncQueue(node)) {
LockSupport.park(this); if ((interruptMode = checkInterruptWhileWaiting(node)) != 0)
break; }
if (acquireQueued(node, savedState) && interruptMode != THROW_IE)
interruptMode = REINTERRUPT; if (node.nextWaiter != null) // clean up if cancelled unlinkCancelledWaiters(); if (interruptMode != 0)
reportInterruptAfterWait(interruptMode);}

大概就是將當前線程加入等待隊列,其中做一些邏輯判斷,再來看看喚醒的方法:singal和singalAll:

public final void signalAll() {
if (!isHeldExclusively())
throw new IllegalMonitorStateException();
Node first = firstWaiter;
if (first != null)
doSignalAll(first);
}

其實就是將等待隊列裡面的線程依次喚醒罷了,doSingalAll:

private void doSignalAll(Node first) {
lastWaiter = firstWaiter = null;
do {
Node next = first.nextWaiter;
first.nextWaiter = null;
transferForSignal(first);
first = next;
} while (first != null);
}

transferForSignal將線程轉移到syncQueue重新排隊,這里主要用到CAS(lock free)演算法改變狀態:

final boolean transferForSignal(Node node) {
/*
* If cannot change waitStatus, the node has been cancelled.
*/
if (!compareAndSetWaitStatus(node, Node.CONDITION, 0))
return false;

/*
* Splice onto queue and try to set waitStatus of predecessor to
* indicate that thread is (probably) waiting. If cancelled or
* attempt to set waitStatus fails, wake up to resync (in which
* case the waitStatus can be transiently and harmlessly wrong).
*/
Node p = enq(node);
int ws = p.waitStatus;
if (ws > 0 || !compareAndSetWaitStatus(p, ws, Node.SIGNAL))
LockSupport.unpark(node.thread);
return true;
}

篇幅有限,沒有詳細描述...反正多看看源碼吧,結合著實例分析

⑤ 在windows下 怎麼用java 實現對linux系統下的一個文件夾進行監控

我沒法給你源碼,但可以給你思路:
【最簡單粗暴的】
1. 寫一個死循環
2. sleep 個 100 毫秒
3. 第一次啟動建立一個HashMap<File, Date>,掃描所有文件並讀取創建日期記錄下來(包括子文件夾)
4. 記錄全部文件的數量 fileCount, lastFileCount
5. 檢查是否數量有變,如果木有就沒有新增文件
6. 如果有變化,。。。。你懂的,再掃找出不在HashMap裡面的就是新增的了

【特殊參考】
參考tomcat、jboss這類伺服器軟體如何掃面檢測部署文件夾下面文件變動的

【高階】
參考防毒軟體設計原理,截獲系統IO,有對你指定文件夾的Access操作時,按需記錄

⑥ 怎樣採用java實現對系統進程的監控

http://blog.csdn.net/linzhanggeorge/article/details/4419801


SWT Win32 Extension 是Eclipse類庫SWT的Win32本地原生擴展.

本項目提供了一個軟體開發工具庫,能夠讓您使用Java語言開發原生的Windows應用程序而不需要編寫額外的JNI代碼。使用SWT Win32 Extension,您將不需要創建原生的動態鏈接庫來調用操作系統動態鏈接庫的系統API或者方法。您僅僅需要做的就是編寫Java代碼, SWT Win32 Extension來負責剩下的部分。SWT Win32 Extension提供了一系列的功能使您的應用程序看上去和Win32本機程序別無二致。


窗口裝飾功能:提供窗口置頂,透明,閃動等功能。
自定義窗口:創建不規則的窗口。
訪問Windows注冊表。
系統文件夾:獲取系統特殊文件加的路徑和圖標。
系統快捷方式:管理系統快捷方式。
系統相關信息:收集系統CPU,內存,環境變數等相關信息。
系統會話:提供關機,休眠,重啟,注銷等功能。
系統IO及網路功能:提供磁碟和網路相關信息。
活動桌面功能:管理Windows活動桌面。
系統鉤子:注冊和卸載系統鉤子,能夠攔截和處理系統事件。
窗口系統菜單:管理窗口菜單。用戶可以自定義系統菜單和處理菜單事件。
Ole 控制項:提供對一些常用控制項的封裝,比如flash。 值得一提的是,您能夠訪問SWT提供的所有功能,因為SWT Win32 Extension是從SWT派生出來的。

⑦ java流量監控程序

我曾經做過類似的系統,也是採用Java實現的,在編程中用到第三方軟體包---Jpcap,因為Jpcap為實現流量監控和數據包(TCP包,UDP包,IP包,ICMP包等)提供一系列的介面和類,具體詳情請E-mail:[email protected],本人可以提供源碼,但源碼需要修改一下,也可以在網上搜索Jpcap的DEMO,裡面也有相關的代碼。

⑧ 如何用java代碼來監控系統內存·cpu·線程佔用情況,並生成日誌

可以學習軟體包 java.lang.management
提供管理介面,用於監視和管理 Java 虛擬機以及 Java 虛擬機在其上運行的操作系統。

ClassLoadingMXBean
用於 Java 虛擬機的類載入系統的管理介面。

CompilationMXBean
用於 Java 虛擬機的編譯系統的管理介面。

GarbageCollectorMXBean
用於 Java 虛擬機的垃圾回收的管理介面。

MemoryManagerMXBean
內存管理器的管理介面。

MemoryMXBean
Java 虛擬機內存系統的管理介面。

MemoryPoolMXBean
內存池的管理介面。

OperatingSystemMXBean
用於操作系統的管理介面,Java 虛擬機在此操作系統上運行。

RuntimeMXBean
Java 虛擬機的運行時系統的管理介面。

ThreadMXBean
Java 虛擬機線程系統的管理介面。
更多請訪問(bug315)

⑨ 怎麼用java代碼寫一個遠程屏幕監控系統。

CSDN上有與QQ的遠程差不多,
千萬不要在自己機器上試。一試的話,就象兩個鏡子對照一樣,你可以看到無限多個鏡象。
你可以自己去下載,如果需要我發給你,留下郵件。採納即發。

閱讀全文

與java監控系統源碼相關的資料

熱點內容
浪潮伺服器如何做系統 瀏覽:111
冒險島img格式加密 瀏覽:574
我的世界手游如何復制命令 瀏覽:659
天刀自動彈琴腳本源碼 瀏覽:968
打開其它app微信怎麼收不到 瀏覽:447
安卓游戲耳機怎麼戴 瀏覽:18
不越獄怎麼去除app廣告 瀏覽:178
ipadminipdf閱讀 瀏覽:506
文件夾無限制壓縮會不會降低內存 瀏覽:412
榮耀怎樣創建文件夾 瀏覽:631
如何用本機登陸遠程伺服器地址 瀏覽:682
黃小鴨解壓文具盒 瀏覽:672
女程序員的轉行方法 瀏覽:884
東風啟辰車聯網安裝文件夾 瀏覽:526
華為怎麼設置app時間鎖 瀏覽:662
後宮app視頻怎麼下載 瀏覽:527
如何把圖片轉換從PDF格式 瀏覽:261
重寫和重載的區別java 瀏覽:236
expressvpnandroid 瀏覽:86
儲存卡被加密怎麼解除 瀏覽:171