最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)用工具之使用oshi獲取主機(jī)信息的方法

 更新時(shí)間:2021年02月04日 10:01:08   作者:xwayway  
這篇文章主要介紹了Java實(shí)用工具之使用oshi獲取主機(jī)信息的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

最近在籌劃做一個(gè)監(jiān)控系統(tǒng)。其中就要獲取主機(jī)信息,其中遇到一些問題。在此做個(gè)記錄,以便以后查閱。

在該監(jiān)控系統(tǒng)中,想要做到主機(jī)的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、線程、JVM內(nèi)存、JVM GC 等維度的監(jiān)控,JVM方面的監(jiān)控還好說,直接用JMX做就行了,關(guān)鍵是主機(jī)信息不好做監(jiān)控,JDK沒有直接的方案獲取系統(tǒng)主機(jī)信息。在剛開始想到了以下幾種方式獲取主機(jī)維度的信息。

一、命令行

剛開始想的是用最常用的命令行獲取主機(jī)維度的信息,具體做法是針對(duì)不同的系統(tǒng),寫不同的命令。比如說Linux系統(tǒng),使用TOP命令就能獲取到CPU、內(nèi)存等方面的信息。

top -b -n 1

執(zhí)行該TOP命令就能獲取到CPU、內(nèi)存等維度的信息

Tasks: 515 total,  1 running, 511 sleeping,  3 stopped,  0 zombie 
Cpu(s): 14.5%us, 5.3%sy, 0.0%ni, 77.0%id, 0.8%wa, 0.0%hi, 2.4%si, 0.0%st
Mem: 65779104k total, 62037048k used, 3742056k free,  425804k buffers
Swap:    0k total,    0k used,    0k free, 21948492k cached

這種方式雖然好,但是需要針對(duì)不同系統(tǒng)做兼容。為了將懶字發(fā)揮到極致于是我就開始尋找現(xiàn)有的開源組件。然后找到了一個(gè)sigar的東西,貌似這個(gè)在業(yè)界內(nèi)應(yīng)用還挺廣的。

二、sigar

sigar的api用起來也挺方便的,簡(jiǎn)單且使用人數(shù)多。

/ CPU數(shù)量(單位:個(gè)) 
int cpuLength = sigar.getCpuInfoList().length; 
print(cpuLength); 
  
// CPU的總量(單位:HZ)及CPU的相關(guān)信息 
CpuInfo infos[] = sigar.getCpuInfoList(); 
for (int i = 0; i < infos.length; i++) {// 不管是單塊CPU還是多CPU都適用 
  CpuInfo info = infos[i]; 
  print("mhz=" + info.getMhz());// CPU的總量MHz 
  print("vendor=" + info.getVendor());// 獲得CPU的賣主,如:Intel 
  print("model=" + info.getModel());// 獲得CPU的類別,如:Celeron 
  print("cache size=" + info.getCacheSize());// 緩沖存儲(chǔ)器數(shù)量 
}

但是,sigar需要根據(jù)不同的系統(tǒng)下載不同的庫文件,傾入性較高。

sigar 庫文件
windows平臺(tái):sigar-x86-winnt.dll
linux平臺(tái):libsigar-x86-linux.so或
solaris平臺(tái): libsigar-x86-solaris.so或libsigar-sparc-solaris.so或libsigar-sparc64-solaris.so
64位平臺(tái):分為至強(qiáng)的libsigar-ia64-linux.so和AMD的libsigar-amd64-linux.so,sigar-amd64-winnt.dll

這樣就讓我很為難了,于是繼續(xù)在網(wǎng)上尋找。終于找到了oshi。

三、oshi

看看oshi是怎么獲取系統(tǒng)信息的吧

首先,引入jar包

<dependency>
  <groupId>com.github.oshi</groupId>
  <artifactId>oshi-core</artifactId>
  <version>${oshi.version}</version>
</dependency>

然后,開擼

// 獲取主機(jī)信息
SystemInfo systemInfo = new SystemInfo();
// 獲取操作系統(tǒng)信息
OperatingSystem operatingSystem = systemInfo.getOperatingSystem();
operatingSystem.getNetworkParams().getHostName();
operatingSystem.getFamily();
operatingSystem.getVersion().getVersion();
operatingSystem.getVersion().getBuildNumber();
operatingSystem.getBitness();
operatingSystem.getProcessCount();
operatingSystem.getThreadCount();

就是這么簡(jiǎn)單,不需要不同系統(tǒng)引入不同的庫文件,也不用自己做系統(tǒng)兼容。oshi自己做了兼容,目前大概兼容些這些系統(tǒng): Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX。

四、對(duì)比

以上幾種方式,大概可以做個(gè)這樣的總結(jié):

  • 命令行:靈活度高,兼容性強(qiáng),但是如果要兼容多個(gè)平臺(tái)的話,自己做還是有些麻煩。
  • sigar:社區(qū)活躍度高,參考文檔全面,麻煩在于需要不同平臺(tái)引入不同的庫文件。
  • oshi:拿來主義,使用方便,缺點(diǎn)在于文檔少。不過個(gè)人認(rèn)為看看github上的文檔就夠了,使用過程也沒有什么坑。

綜上,因?yàn)槲覀€(gè)人在開發(fā)的時(shí)候選擇的是oshi。

到此這篇關(guān)于Java實(shí)用工具之使用oshi獲取主機(jī)信息的方法的文章就介紹到這了,更多相關(guān)java 使用oshi獲取主機(jī)信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    這篇文章主要介紹了SpringBoot外部化配置示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法

    Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法

    這篇文章主要介紹了Java編程實(shí)現(xiàn)統(tǒng)計(jì)數(shù)組中各元素出現(xiàn)次數(shù)的方法,涉及java針對(duì)數(shù)組的遍歷、比較、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • 使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換的實(shí)例

    使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換的實(shí)例

    AbstractRoutingDataSource 是 Spring 框架提供的一個(gè)抽象類,用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源路由,這個(gè)類主要用于多數(shù)據(jù)源場(chǎng)景,其中可以根據(jù)不同的條件動(dòng)態(tài)地切換到不同的數(shù)據(jù)源,本文給大家介紹了如何使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換,需要的朋友可以參考下
    2024-03-03
  • springBoot系列常用注解(小結(jié))

    springBoot系列常用注解(小結(jié))

    這篇文章主要介紹了springBoot系列常用注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java 使用json-lib處理JSON詳解及實(shí)例代碼

    Java 使用json-lib處理JSON詳解及實(shí)例代碼

    這篇文章主要介紹了Java 使用json-lib處理JSON詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 教你怎么用java實(shí)現(xiàn)客戶端與服務(wù)器一問一答

    教你怎么用java實(shí)現(xiàn)客戶端與服務(wù)器一問一答

    這篇文章主要介紹了教你怎么用java實(shí)現(xiàn)客戶端與服務(wù)器一問一答,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 舉例講解Java中數(shù)組和字符串類型的使用方法

    舉例講解Java中數(shù)組和字符串類型的使用方法

    這篇文章主要介紹了舉例講解Java中數(shù)組和字符串類型的使用方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用

    Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用

    這篇文章主要介紹了spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java中的TreeSet集合詳解

    Java中的TreeSet集合詳解

    這篇文章主要介紹了Java中的TreeSet集合詳解,TreeSet 是一個(gè) 有序集合,它擴(kuò)展了 AbstractSet 類并實(shí)現(xiàn)了 NavigableSet 接口,作為自平衡二叉搜索樹,二叉樹的每個(gè)節(jié)點(diǎn)包括一個(gè)額外的位,用于識(shí)別紅色或黑色的節(jié)點(diǎn)的顏色,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

沈阳市| 岳西县| 翁牛特旗| 静安区| 淮南市| 阜平县| 区。| 麻栗坡县| 綦江县| 金门县| 大荔县| 万州区| 高淳县| 平度市| 桃江县| 东源县| 肥乡县| 胶南市| 枣庄市| 潞西市| 周至县| 长丰县| 兰溪市| 汤阴县| 蚌埠市| 光泽县| 宿迁市| 如东县| 页游| 芒康县| 泸西县| 壤塘县| 开平市| 武义县| 安西县| 和平区| 湘乡市| 通城县| 吴江市| 璧山县| 探索|