เมื่อเร็ว ๆ นี้ฉันกำลังทำงานในโครงการเพื่อรับข้อมูลระบบเช่น CPU Share เทคโนโลยีใหม่จำนวนมาก
ใน Java คุณสามารถรับข้อมูลเช่นหน่วยความจำทางกายภาพทั้งหมดหน่วยความจำทางกายภาพที่เหลืออยู่ใช้หน่วยความจำทางกายภาพ ฯลฯ ตัวอย่างต่อไปนี้สามารถรับข้อมูลนี้และรับอัตราการใช้หน่วยความจำภายใต้ Windows
ขั้นแรกให้เขียนคลาส MonitorInfobean เพื่อโหลดข้อมูลการตรวจสอบบางอย่างรวมถึงหน่วยความจำทางกายภาพหน่วยความจำที่เหลืออยู่ใช้หน่วยความจำทางกายภาพการใช้หน่วยความจำและฟิลด์อื่น ๆ
แพ็คเกจ com.amgkaka.performance; Monitorinfobean { /*** / /** หน่วยความจำสามารถใช้งานได้ / maxmemory ส่วนตัวยาว; หน่วยความจำ / ** การใช้งาน CPU SetFreephysicalMemorySize (FreephysicalMemorySize ยาว) {. FreephysicalMemorysize = FreephysicalMemorysize; } สาธารณะ โมฆะ setosname (string osname) {this. osname = osname; โมฆะสาธารณะ settotalmemorysize (totalmemorysize ยาว) {totalmemorysize นี้ = TotalMemorySize; } โมฆะสาธารณะ setusedMemory (ใช้งานยาวนาน) {นี้. ใช้งาน MEMORY = USEDMEMORY;
จากนั้นเขียนอินเทอร์เฟซเพื่อรับข้อมูลการตรวจสอบปัจจุบัน
แพ็คเกจ com.amgkaka.performance; Imonitorservice ส่วนต่อประสานสาธารณะ { /** * / /** * รับวัตถุการตรวจสอบปัจจุบัน : 08 */ Public Monitorinfobean getMonitorinfobean () โยนข้อยกเว้น;
MonitorServiceImpl คลาสการใช้งานของคลาสนี้มีดังนี้:
แพ็คเกจ com.amgkaka.performance; คลาสการใช้งานตรรกะทางธุรกิจ อัตราการเข้าพักของ CPU ในระหว่างการตรวจสอบไม่ถูกต้อง * @return ส่งคืนวัตถุการตรวจสอบที่สร้างขึ้น * @throws Exception * @author AMG * วันที่สร้าง: 2008-4-25-10:45:08 AM */ Public Monitorinfobean GetMonitorinfobean () โยน Exc ตอน {int kb = 1024; หน่วยความจำสามารถใช้ Long TotalMemory = runtime.getRuntime (). TotalMemory () / kb; getRuntime () .MaxMemory () / kb; .getTotalphysicalMemorySize () / kb; รับจำนวนเธรดของเธรด parentThread threads; cpuratio สองครั้ง = 0; FreeMemory); ขนาด); ); ::::::::::::::::::::::: กระทาน :::::::::::::::::::::::::::::::::::::: กระทาน. *// ** * รับการใช้งาน CPU .getenv ("Windir") + "//system32//wbem//wmic.exe กระบวนการรับคำบรรยาย, Commandlin E," + "Kernelmodetime, ReadoperationCount, ThreadCount, USERMODETIME, WRITEOPERTERCOUNT"; = readcpu (runtime.getruntime (). exec (proccmd)); ! = null) {idletime ยาว = c1 [0] - c0 [0]; (); @author AMG * วันที่สร้าง: 2008-4-25-06:10:14 PM */ ยาวส่วนตัว [] readCPU (กระบวนการขั้นสุดท้าย PROC) {ยาว [] retn = ใหม่ยาว [2]; .close (); <faultLength) {return null;} int capidx = line.indexof ("คำอธิบาย"); ("usermodetime"); input.readline ())! = null) {if (line.length () <wocidx) {ดำเนินการต่อ; Bytes.substring (Line, Capidx, CMDIDX - 1) .Trim (); > = 0) {ดำเนินการต่อ;} // log.info ("line =" +line); .valueof (bytes.substring (บรรทัด, kmtidx, rocidx - 1) .trim ()). longvalue (); LongValue (); , wocidx - 1) .trim ()). longvalue ()} retn [0] = idletime; {ลอง {proc.getInputStream (). close (); โยนข้อยกเว้น * @author AMG * วันที่สร้าง: 2008-4-30-04:47:29 PM */ โมฆะสาธารณะคงที่หลัก (String [] args) โยนข้อยกเว้น {IM ONITORSERVICE SERVICE = MONITORSERVICICEIMPL (); .getMonitorinfobean (); ("หน่วยความจำที่เหลืออยู่ =" + MonitorInfo.getFreeMemory ()); (); ); System.out.println ("หน่วยความจำทางกายภาพที่ใช้ =" + monitorinfo.getusedMemory () + "kb"); ;
คลาสการใช้งานนี้ต้องใช้คลาสเครื่องมือที่เขียนด้วยตัวคุณเอง
แพ็คเกจ com.amgkaka.performance; /** * / /** * เนื่องจาก String.substring มีปัญหาเกี่ยวกับการประมวลผลอักขระจีน (พิจารณาตัวละครจีนเป็นไบต์) มีอันตรายที่ซ่อนอยู่เมื่อ * มีอักขระจีน String * @param start_idx เริ่มพิกัด (รวมถึงพิกัดนี้) * @param end_idx พิกัด cutoff (รวมถึงพิกัดนี้) * @return */ public String substring (สตริง src, int start_idx, int en d_idx) {byte [] b = src .getBytes ();
เรียกใช้คลาส MonitorBeanImpl และผู้อ่านจะเห็นหน่วยความจำปัจจุบันการใช้งาน CPU และข้อมูลอื่น ๆ
PS: วิธีการรับชื่อโฮสต์ทั้งหมดใน LAN
นำเข้า java.net.inetaddress; นำเข้า java.net.unknownhostexception; คลาสสาธารณะ A {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {ลอง {// รับที่อยู่ IP i ผ่านชื่อโฮสต์ NetAddress ที่อยู่ = InetAddress.getByName ("192.168 .9.148 "); System.out.println (" 192.168.9.148 "+": "+address.getHostaddress ()); // รับชื่อโฮสต์ผ่าน IP String ips =" 192.168.9. " สำหรับ (int i = 148; i <255; i ++) {ip = ips+i; CATC H (UnknownHostException Uhe) {System.err.println ("ไม่สามารถค้นหาได้:"+"192.168.9.148"