导航:首页 > 源码编译 > 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监控系统源码相关的资料

热点内容
万象服务器断电后启动不了怎么办 浏览:356
我的世界苹果版的2b2t服务器地址咋查 浏览:95
xlsx转换pdf 浏览:98
3dmax挤出命令英语 浏览:903
靶心率的定义和算法 浏览:514
3d模术师app哪里下载 浏览:474
php中文api文档 浏览:458
安卓设计怎么加入输入框 浏览:185
主根服务器什么时候开始 浏览:738
奇门遁甲完整版pdf 浏览:901
app软件怎么用的 浏览:802
电子书pdf购买 浏览:193
浪潮服务器如何做系统 浏览:111
冒险岛img格式加密 浏览:596
我的世界手游如何复制命令 浏览:659
天刀自动弹琴脚本源码 浏览:970
打开其它app微信怎么收不到 浏览:447
安卓游戏耳机怎么戴 浏览:18
不越狱怎么去除app广告 浏览:178
ipadminipdf阅读 浏览:507