之前一直在维护公司内部使用的服务监控系统,不过因为有新的开发任务,所以需要暂时把手里这套系统交接给新来的同事开发维护了。在交接讲解的过程中,发现对于服务器硬件参数监控的方式,使用了开源的 OSHI。不禁一拍大腿,这是个好东西啊!所以在这里分享给大家。
项目简介
OSHI 是一个基于 JNA(本地)的免费的操作系统和硬件信息库,专为 Java 设计。它可以跨平台的获取系统信息以及硬件信息,如操作系统版本、进程、内存和 CPU 使用情况、磁盘和分区、设备、传感器等。它不需要安装任何额外的本地库,因此接入起来很方便。
项目使用
Maven 依赖
我们通过配置 Maven 依赖来引入 OSHI,如下所示:
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>6.4.0</version>
</dependency>
这里注意的是,不同版本的 JDK 环境,需要引用不同版本的包:
-
JDK8: oshi-core-6.4.0
-
JPMS: oshi-core-java11-6.4.0
-
JDK6: oshi-core-3.14.0
简单的例子
在这里大叔写一个简单的例子,包括了一些常用硬件参数的获取,注释已经写的很详细了:
public static void main(String[] args) {
// 系统信息类
SystemInfo systemInfo = new SystemInfo();
// 获取硬件信息
HardwareAbstractionLayer hardware = systemInfo.getHardware();
// CPU信息
CentralProcessor centralProcessor = hardware.getProcessor();
// 获取CPU名称
String name = centralProcessor.getProcessorIdentifier().getName();
// 获取CPU核心数
int physicalProcessorCount = centralProcessor.getPhysicalProcessorCount();
// 获取当前CPU每个核心的频率
long[] currentFreq = centralProcessor.getCurrentFreq();
System.out.println("CPU名称:" + name);
System.out.println("CPU核心数:" + physicalProcessorCount);
// 内存信息
GlobalMemory memory = hardware.getMemory();
// 内存总大小
long totalOfG = memory.getTotal() / 1024 / 1024 / 1024;
// 可用大小
long availableOfG = memory.getAvailable() / 1024 / 1024 / 1024;
System.out.println("内存总大小:" + totalOfG + "G");
System.out.println("内存可用大小:" + availableOfG + "G");
// 磁盘信息
List<HWDiskStore> diskStores = hardware.getDiskStores();
// 获取磁盘总大小
long total = diskStores.stream().mapToLong(HWDiskStore::getSize).sum();
System.out.println("磁盘总大小:" + total / 1024 / 1024 / 1024 + "G");
// 系统运行时间
long uptimeInSeconds = systemInfo.getOperatingSystem().getSystemUptime();
System.out.println("系统运行时间:" + uptimeInSeconds / 3600 + "小时");
}
在本地运行之后输出如下:
一个漂亮的仪表盘
看过上面的例子,你会发现 OSHI 其实很好用吧。但是只有一个例子的展示大家应该不太满足,所以大叔我特意找了一个已经开发好的监控工具——Ward。Ward 是一款简单、极简主义的服务器监控工具。它用漂亮的仪表盘的形式来展示系统的硬件信息。如图所示:
其实 Ward 是一个很简单的 springboot 项目,借助于该项目,简单阅读下源码就能更好的理解 OSHI 的使用啦。
总结
今天给大家介绍了 OSHI 的使用方式,以及另一个使用 OSHI 的 Web 服务。感兴趣的朋友们可以亲自体验一下哈,项目地址都放到下面了:
-- OSHI
https://github.com/oshi/oshi
-- Ward
https://github.com/Rudolf-Barbu/Ward
写在最后(私活源码)
最近有一些读者问我有没有完整的基于Springboot+Vue的在线考试系统项目源码,今天给大家整理了一下,并且录制了搭建的教程,无偿分享给大家。
一、系统运行图
1、登陆页面
2、后台管理
3、全套环境资源
源码文件部分截图,带视频教程
源码免费领取方式
扫码关注本号,后台回复 考试
扫码关注本号,后台回复 考试
持续关注本号,分享更多项目源码
分享一些关于学习Java编程方面的经验
在实际工作中,开发Java项目是一项重要且常见的任务。为了帮助您更好地进行Java项目开发,本文将分享一些实践经验和技巧,以帮助您顺利完成项目。
1. 需求分析与设计
在开始项目之前,首先需要进行需求分析和设计。明确项目的目标和功能,并根据需求设计出合理的系统架构和数据库结构。这个阶段的工作对于后续的开发和测试非常关键,务必认真对待。
2. 选择合适的开发工具和框架
Java有许多优秀的开发工具和框架可供选择,如Eclipse、IntelliJ IDEA、Spring等。根据项目的特点和需求,选择适合的工具和框架可以提高开发效率和代码质量。
3. 模块化开发
将项目拆分成多个模块,每个模块负责一个特定的功能。通过模块化开发,可以提高代码的可维护性和复用性。同时,合理划分模块也便于团队协作和并行开发。
4. 使用版本控制工具
使用版本控制工具(如Git)管理项目代码是一个良好的习惯。通过版本控制,可以方便地进行代码的追踪、回滚和合并,同时也便于多人协作开发。
5. 编写高质量的代码
编写高质量的代码是每个开发者的追求。遵循编码规范,使用有意义的变量和方法命名,注重代码的可读性和可维护性。同时,及时进行代码的重构和优化,以提高代码的性能和可靠性。
6. 单元测试和集成测试
在开发过程中,及时编写单元测试和集成测试是保证代码质量的有效手段。通过测试,可以验证代码的正确性和稳定性,减少后期的调试和修复工作。
7. 持续集成与部署
借助持续集成工具(如Jenkins),实现自动化的构建、测试和部署流程。持续集成可以提高开发效率,减少人为错误,并确保项目的稳定性和可靠性。
8. 文档和知识管理
在项目开发过程中,及时编写文档记录项目的设计思路、开发过程和技术方案。同时,建立知识库或内部论坛,方便团队成员之间的交流和学习。
以上是关于Java项目开发的一些实践经验和技巧。希望这些内容对您有所帮助,祝您在实际工作中取得成功!