• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

Javafx实现远程系统监控

时间:2015年04月02日 15:23:00    来源:魔法猪系统重装大师官网    人气:10851

Sun凭借JavaFX介入富互联网应用领域,向Adobe的Flex和 Microsoft的Silverlight宣战。它的目标在于为创建横跨桌面、互 联网和移动设备的富互联网应用提供一个基础平台,这也可以看出Sun的Java系列产品的一个重大转变,它不再仅仅专注于底层技术,而是开始创建完整的解 决方案。

目前的技术预览版包括两个主要组件:
关注于设计人员/开发人员工作流的Nile项目和JavaFX Script——一个编写Java GUI应用的新型说明性语言(declarative language)。

实现功能:

1、监控远程机器(用到ganymed-ssh2-build210.jar包)。

2、实时显示cpu使用情况(包括系统进程使用cpu、用户进程使用cpu以及空闲进程使用cpu)。

3、实时系统内存使用情况(包括系统已使用内存以及空闲内存)。

先看效果图:

接口设计: 1、UpdateListener接口,用于实时更新数据


public interface UpdateListener {
public void updateCPU(String user, String sys, String idle);
public void updateMemory(String used, String free);
}

  参考实现: 定义FX图表变量: LineChart cpuLineChart; LineChart memLineChart; 定义监控数据存储变量: ObservableList cpuLineChartSeries = FXCollections .observableArrayList(); ObservableList memLineChartSeries = FXCollections .observableArrayList(); 核心代码:


@Override
public void updateCPU(String user, String sys, String idle) {
cpuLineChartSeries.get(0).getData()
        .add(new LineChart.Data(cpuIndex, Float
                .parseFloat(user)));
cpuLineChartSeries.get(1).getData()
        .add(new LineChart.Data(cpuIndex, Float
                .parseFloat(sys)));
cpuLineChartSeries.get(2).getData()
        .add(new LineChart.Data(cpuIndex, Float
                .parseFloat(idle)));
NumberAxis xAxis = (NumberAxis) cpuLineChart.getXAxis();
if (cpuIndex < xAxis.getUpperBound()) {
    cpuIndex += 1;
} else {
        xAxis.setLowerBound(xAxis.getLowerBound() + 1);
        xAxis.setUpperBound(xAxis.getUpperBound() + 1);
        cpuLineChartSeries.get(0).getData().remove(0);
        cpuLineChartSeries.get(1).getData().remove(0);
        cpuLineChartSeries.get(2).getData().remove(0);
}
}
@Override
public void updateMemory(String used, String free) {
memLineChartSeries.get(0).getData()
        .add(new LineChart.Data(memIndex, Float
                .parseFloat(used) / 1024.0));
memLineChartSeries.get(1).getData()
        .add(new LineChart.Data(memIndex, Float
                .parseFloat(free) / 1024.0));
NumberAxis xAxis = (NumberAxis) memLineChart.getXAxis();
if (memIndex < xAxis.getUpperBound()) {
    memIndex += 1;
} else {
    xAxis.setLowerBound(xAxis.getLowerBound() + 1);
    xAxis.setUpperBound(xAxis.getUpperBound() + 1);
    memLineChartSeries.get(0).getData().remove(0);
    memLineChartSeries.get(1).getData().remove(0);
}
}
  2、数据解析接口


public interface DataParser {
    public String[] getCPUData(String line);
    public String[] getMemoryData(String line);
    public boolean isCPULine(String line);
    public boolean isMemoryLine(String line);
}
  Linux下数据解析参考实现:


public String[] getCPUData(String line) {
String cpuStr = line.substring(line.indexOf("Cpu(s): ") + 8);
int indexOfUser = cpuStr.indexOf("%us,");
String user = cpuStr.substring(0, indexOfUser).trim();
int indexOfSys = cpuStr.indexOf("%sy,");
String sys = cpuStr.substring(indexOfUser + 5, indexOfSys).trim();
int indexOfIdle = cpuStr.indexOf("%id,");
int indexOfNi = cpuStr.indexOf("%ni,");
String idle = cpuStr.substring(indexOfNi + 5, indexOfIdle).trim();
return new String[] { user, sys, idle };
}
public String[] getMemoryData(String line) {
String memStr = line.substring(line.indexOf("total, ") + 7);
int indexOfUsed = memStr.indexOf("k used,");
String used = memStr.substring(0, indexOfUsed).trim();
double usedN = Double.parseDouble(used);
used = "" + (usedN / 1024.0);
int indexOfFree = memStr.indexOf("k free,");
String free = "0.5";
if (indexOfFree >= 0) {
    free = memStr.substring(indexOfUsed + 7, indexOfFree).trim();
    double freeN = Double.parseDouble(free);
    free = "" + (freeN / 1024.0);
}
return new String[] { used, free };
}
源码地址:

点此获取源码

Javafx,实现,远程,系统,监控,Sun,凭借,Java
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部