From 2b8ab9cc4d538e2f02e6882b0bfa7934ae7bdbb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90li?= <15040126243@163.com> Date: Fri, 12 Mar 2021 18:02:23 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BD=BF=E7=94=A8hutool=E9=87=8D?= =?UTF-8?q?=E5=86=99=E7=B3=BB=E7=BB=9F=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/com/ruoyi/common/utils/Arith.java | 114 ----------- .../com/ruoyi/common/utils/sign/Md5Utils.java | 66 ------ .../ruoyi/framework/web/domain/Server.java | 193 ++++++------------ .../framework/web/domain/server/Cpu.java | 53 ++--- .../framework/web/domain/server/Jvm.java | 60 +++--- .../framework/web/domain/server/Mem.java | 10 +- 7 files changed, 109 insertions(+), 389 deletions(-) delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java delete mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java diff --git a/pom.xml b/pom.xml index 328bad01..f0e37d79 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ - + com.github.oshi diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java deleted file mode 100644 index 48a650e8..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.ruoyi.common.utils; - -import java.math.BigDecimal; -import java.math.RoundingMode; - -/** - * 精确的浮点数运算 - * - * @author ruoyi - */ -public class Arith -{ - - /** 默认除法运算精度 */ - private static final int DEF_DIV_SCALE = 10; - - /** 这个类不能实例化 */ - private Arith() - { - } - - /** - * 提供精确的加法运算。 - * @param v1 被加数 - * @param v2 加数 - * @return 两个参数的和 - */ - public static double add(double v1, double v2) - { - BigDecimal b1 = new BigDecimal(Double.toString(v1)); - BigDecimal b2 = new BigDecimal(Double.toString(v2)); - return b1.add(b2).doubleValue(); - } - - /** - * 提供精确的减法运算。 - * @param v1 被减数 - * @param v2 减数 - * @return 两个参数的差 - */ - public static double sub(double v1, double v2) - { - BigDecimal b1 = new BigDecimal(Double.toString(v1)); - BigDecimal b2 = new BigDecimal(Double.toString(v2)); - return b1.subtract(b2).doubleValue(); - } - - /** - * 提供精确的乘法运算。 - * @param v1 被乘数 - * @param v2 乘数 - * @return 两个参数的积 - */ - public static double mul(double v1, double v2) - { - BigDecimal b1 = new BigDecimal(Double.toString(v1)); - BigDecimal b2 = new BigDecimal(Double.toString(v2)); - return b1.multiply(b2).doubleValue(); - } - - /** - * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 - * 小数点以后10位,以后的数字四舍五入。 - * @param v1 被除数 - * @param v2 除数 - * @return 两个参数的商 - */ - public static double div(double v1, double v2) - { - return div(v1, v2, DEF_DIV_SCALE); - } - - /** - * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 - * 定精度,以后的数字四舍五入。 - * @param v1 被除数 - * @param v2 除数 - * @param scale 表示表示需要精确到小数点以后几位。 - * @return 两个参数的商 - */ - public static double div(double v1, double v2, int scale) - { - if (scale < 0) - { - throw new IllegalArgumentException( - "The scale must be a positive integer or zero"); - } - BigDecimal b1 = new BigDecimal(Double.toString(v1)); - BigDecimal b2 = new BigDecimal(Double.toString(v2)); - if (b1.compareTo(BigDecimal.ZERO) == 0) - { - return BigDecimal.ZERO.doubleValue(); - } - return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); - } - - /** - * 提供精确的小数位四舍五入处理。 - * @param v 需要四舍五入的数字 - * @param scale 小数点后保留几位 - * @return 四舍五入后的结果 - */ - public static double round(double v, int scale) - { - if (scale < 0) - { - throw new IllegalArgumentException( - "The scale must be a positive integer or zero"); - } - BigDecimal b = new BigDecimal(Double.toString(v)); - BigDecimal one = new BigDecimal("1"); - return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); - } -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java deleted file mode 100644 index de77ee82..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.ruoyi.common.utils.sign; - -import java.security.MessageDigest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Md5加密方法 - * - * @author ruoyi - */ -public class Md5Utils -{ - private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); - - private static byte[] md5(String s) - { - MessageDigest algorithm; - try - { - algorithm = MessageDigest.getInstance("MD5"); - algorithm.reset(); - algorithm.update(s.getBytes("UTF-8")); - byte[] messageDigest = algorithm.digest(); - return messageDigest; - } - catch (Exception e) - { - log.error("MD5 Error...", e); - } - return null; - } - - private static final String toHex(byte hash[]) - { - if (hash == null) - { - return null; - } - StringBuffer buf = new StringBuffer(hash.length * 2); - int i; - - for (i = 0; i < hash.length; i++) - { - if ((hash[i] & 0xff) < 0x10) - { - buf.append("0"); - } - buf.append(Long.toString(hash[i] & 0xff, 16)); - } - return buf.toString(); - } - - public static String hash(String s) - { - try - { - return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8"); - } - catch (Exception e) - { - log.error("not supported charset...{}", e); - return s; - } - } -} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java index 63b03da7..5195efad 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java @@ -1,35 +1,35 @@ package com.ruoyi.framework.web.domain; -import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; import java.util.Properties; -import com.ruoyi.common.utils.Arith; -import com.ruoyi.common.utils.ip.IpUtils; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.system.*; +import cn.hutool.system.oshi.CpuInfo; +import cn.hutool.system.oshi.OshiUtil; import com.ruoyi.framework.web.domain.server.Cpu; import com.ruoyi.framework.web.domain.server.Jvm; import com.ruoyi.framework.web.domain.server.Mem; import com.ruoyi.framework.web.domain.server.Sys; import com.ruoyi.framework.web.domain.server.SysFile; -import oshi.SystemInfo; -import oshi.hardware.CentralProcessor; -import oshi.hardware.CentralProcessor.TickType; +import lombok.Data; import oshi.hardware.GlobalMemory; -import oshi.hardware.HardwareAbstractionLayer; import oshi.software.os.FileSystem; import oshi.software.os.OSFileStore; import oshi.software.os.OperatingSystem; -import oshi.util.Util; /** * 服务器相关信息 - * + * * @author ruoyi */ -public class Server -{ +@Data +public class Server { private static final int OSHI_WAIT_SECOND = 1000; - + /** * CPU相关信息 */ @@ -55,103 +55,33 @@ public class Server */ private List sysFiles = new LinkedList(); - public Cpu getCpu() - { - return cpu; - } - - public void setCpu(Cpu cpu) - { - this.cpu = cpu; - } - - public Mem getMem() - { - return mem; - } - - public void setMem(Mem mem) - { - this.mem = mem; - } - - public Jvm getJvm() - { - return jvm; - } - - public void setJvm(Jvm jvm) - { - this.jvm = jvm; - } - - public Sys getSys() - { - return sys; - } - - public void setSys(Sys sys) - { - this.sys = sys; - } - - public List getSysFiles() - { - return sysFiles; - } - - public void setSysFiles(List sysFiles) - { - this.sysFiles = sysFiles; - } - - public void copyTo() throws Exception - { - SystemInfo si = new SystemInfo(); - HardwareAbstractionLayer hal = si.getHardware(); - - setCpuInfo(hal.getProcessor()); - - setMemInfo(hal.getMemory()); + public void copyTo() { + setCpuInfo(); + setMemInfo(); setSysInfo(); - setJvmInfo(); - - setSysFiles(si.getOperatingSystem()); + setSysFiles(); } /** * 设置CPU信息 */ - private void setCpuInfo(CentralProcessor processor) - { - // CPU信息 - long[] prevTicks = processor.getSystemCpuLoadTicks(); - Util.sleep(OSHI_WAIT_SECOND); - long[] ticks = processor.getSystemCpuLoadTicks(); - long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; - long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; - long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; - long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; - long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; - long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; - long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; - long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; - long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; - cpu.setCpuNum(processor.getLogicalProcessorCount()); - cpu.setTotal(totalCpu); - cpu.setSys(cSys); - cpu.setUsed(user); - cpu.setWait(iowait); - cpu.setFree(idle); + private void setCpuInfo() { + CpuInfo cpuInfo = OshiUtil.getCpuInfo(OSHI_WAIT_SECOND); + cpu.setCpuNum(cpuInfo.getCpuNum()); + cpu.setTotal(cpuInfo.getToTal()); + cpu.setSys(cpuInfo.getSys()); + cpu.setUsed(cpuInfo.getUsed()); + cpu.setWait(cpuInfo.getWait()); + cpu.setFree(cpuInfo.getFree()); } /** * 设置内存信息 */ - private void setMemInfo(GlobalMemory memory) - { + private void setMemInfo() { + GlobalMemory memory = OshiUtil.getMemory(); mem.setTotal(memory.getTotal()); mem.setUsed(memory.getTotal() - memory.getAvailable()); mem.setFree(memory.getAvailable()); @@ -160,38 +90,39 @@ public class Server /** * 设置服务器信息 */ - private void setSysInfo() - { - Properties props = System.getProperties(); - sys.setComputerName(IpUtils.getHostName()); - sys.setComputerIp(IpUtils.getHostIp()); - sys.setOsName(props.getProperty("os.name")); - sys.setOsArch(props.getProperty("os.arch")); - sys.setUserDir(props.getProperty("user.dir")); + private void setSysInfo() { + HostInfo hostInfo = SystemUtil.getHostInfo(); + OsInfo osInfo = SystemUtil.getOsInfo(); + UserInfo userInfo = SystemUtil.getUserInfo(); + sys.setComputerName(hostInfo.getName()); + sys.setComputerIp(hostInfo.getAddress()); + sys.setOsName(osInfo.getName()); + sys.setOsArch(osInfo.getArch()); + sys.setUserDir(userInfo.getCurrentDir()); } /** * 设置Java虚拟机 */ - private void setJvmInfo() throws UnknownHostException - { - Properties props = System.getProperties(); - jvm.setTotal(Runtime.getRuntime().totalMemory()); - jvm.setMax(Runtime.getRuntime().maxMemory()); - jvm.setFree(Runtime.getRuntime().freeMemory()); - jvm.setVersion(props.getProperty("java.version")); - jvm.setHome(props.getProperty("java.home")); + private void setJvmInfo() { + JavaInfo javaInfo = SystemUtil.getJavaInfo(); + RuntimeInfo runtimeInfo = SystemUtil.getRuntimeInfo(); + JavaRuntimeInfo javaRuntimeInfo = SystemUtil.getJavaRuntimeInfo(); + jvm.setTotal(runtimeInfo.getTotalMemory()); + jvm.setMax(runtimeInfo.getMaxMemory()); + jvm.setFree(runtimeInfo.getFreeMemory()); + jvm.setVersion(javaInfo.getVersion()); + jvm.setHome(javaRuntimeInfo.getHomeDir()); } /** * 设置磁盘信息 */ - private void setSysFiles(OperatingSystem os) - { + private void setSysFiles() { + OperatingSystem os = OshiUtil.getOs(); FileSystem fileSystem = os.getFileSystem(); List fsArray = fileSystem.getFileStores(); - for (OSFileStore fs : fsArray) - { + for (OSFileStore fs : fsArray) { long free = fs.getUsableSpace(); long total = fs.getTotalSpace(); long used = total - free; @@ -202,39 +133,31 @@ public class Server sysFile.setTotal(convertFileSize(total)); sysFile.setFree(convertFileSize(free)); sysFile.setUsed(convertFileSize(used)); - sysFile.setUsage(Arith.mul(Arith.div(used, total, 4), 100)); + sysFile.setUsage(NumberUtil.mul(NumberUtil.div(used, total, 4), 100)); sysFiles.add(sysFile); } } /** * 字节转换 - * + * * @param size 字节大小 * @return 转换后值 */ - public String convertFileSize(long size) - { + public String convertFileSize(long size) { long kb = 1024; long mb = kb * 1024; long gb = mb * 1024; - if (size >= gb) - { - return String.format("%.1f GB", (float) size / gb); - } - else if (size >= mb) - { + if (size >= gb) { + return StrUtil.format("%.1f GB", (float) size / gb); + } else if (size >= mb) { float f = (float) size / mb; - return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); - } - else if (size >= kb) - { + return StrUtil.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } else if (size >= kb) { float f = (float) size / kb; - return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); - } - else - { - return String.format("%d B", size); + return StrUtil.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } else { + return StrUtil.format("%d B", size); } } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java index a13a66cf..4295f6ee 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java @@ -1,14 +1,13 @@ package com.ruoyi.framework.web.domain.server; -import com.ruoyi.common.utils.Arith; +import cn.hutool.core.util.NumberUtil; /** * CPU相关信息 - * + * * @author ruoyi */ -public class Cpu -{ +public class Cpu { /** * 核心数 */ @@ -39,63 +38,51 @@ public class Cpu */ private double free; - public int getCpuNum() - { + public int getCpuNum() { return cpuNum; } - public void setCpuNum(int cpuNum) - { + public void setCpuNum(int cpuNum) { this.cpuNum = cpuNum; } - public double getTotal() - { - return Arith.round(Arith.mul(total, 100), 2); + public double getTotal() { + return NumberUtil.round(NumberUtil.mul(total, 100), 2).doubleValue(); } - public void setTotal(double total) - { + public void setTotal(double total) { this.total = total; } - public double getSys() - { - return Arith.round(Arith.mul(sys / total, 100), 2); + public double getSys() { + return NumberUtil.round(NumberUtil.mul(sys / total, 100), 2).doubleValue(); } - public void setSys(double sys) - { + public void setSys(double sys) { this.sys = sys; } - public double getUsed() - { - return Arith.round(Arith.mul(used / total, 100), 2); + public double getUsed() { + return NumberUtil.round(NumberUtil.mul(used / total, 100), 2).doubleValue(); } - public void setUsed(double used) - { + public void setUsed(double used) { this.used = used; } - public double getWait() - { - return Arith.round(Arith.mul(wait / total, 100), 2); + public double getWait() { + return NumberUtil.round(NumberUtil.mul(wait / total, 100), 2).doubleValue(); } - public void setWait(double wait) - { + public void setWait(double wait) { this.wait = wait; } - public double getFree() - { - return Arith.round(Arith.mul(free / total, 100), 2); + public double getFree() { + return NumberUtil.round(NumberUtil.mul(free / total, 100), 2).doubleValue(); } - public void setFree(double free) - { + public void setFree(double free) { this.free = free; } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java index 485d201d..4b70cbb8 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java @@ -1,16 +1,19 @@ package com.ruoyi.framework.web.domain.server; import java.lang.management.ManagementFactory; -import com.ruoyi.common.utils.Arith; +import java.util.Date; + +import cn.hutool.core.date.BetweenFormatter; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.ruoyi.common.utils.DateUtils; /** * JVM相关信息 - * + * * @author ruoyi */ -public class Jvm -{ +public class Jvm { /** * 当前JVM占用的内存总数(M) */ @@ -36,71 +39,58 @@ public class Jvm */ private String home; - public double getTotal() - { - return Arith.div(total, (1024 * 1024), 2); + public double getTotal() { + return NumberUtil.div(total, (1024 * 1024), 2); } - public void setTotal(double total) - { + public void setTotal(double total) { this.total = total; } - public double getMax() - { - return Arith.div(max, (1024 * 1024), 2); + public double getMax() { + return NumberUtil.div(max, (1024 * 1024), 2); } - public void setMax(double max) - { + public void setMax(double max) { this.max = max; } - public double getFree() - { - return Arith.div(free, (1024 * 1024), 2); + public double getFree() { + return NumberUtil.div(free, (1024 * 1024), 2); } - public void setFree(double free) - { + public void setFree(double free) { this.free = free; } - public double getUsed() - { - return Arith.div(total - free, (1024 * 1024), 2); + public double getUsed() { + return NumberUtil.div(total - free, (1024 * 1024), 2); } - public double getUsage() - { - return Arith.mul(Arith.div(total - free, total, 4), 100); + public double getUsage() { + return NumberUtil.mul(NumberUtil.div(total - free, total, 4), 100); } /** * 获取JDK名称 */ - public String getName() - { + public String getName() { return ManagementFactory.getRuntimeMXBean().getVmName(); } - public String getVersion() - { + public String getVersion() { return version; } - public void setVersion(String version) - { + public void setVersion(String version) { this.version = version; } - public String getHome() - { + public String getHome() { return home; } - public void setHome(String home) - { + public void setHome(String home) { this.home = home; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java index 13eec521..757ff571 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java @@ -1,6 +1,6 @@ package com.ruoyi.framework.web.domain.server; -import com.ruoyi.common.utils.Arith; +import cn.hutool.core.util.NumberUtil; /** * 內存相关信息 @@ -26,7 +26,7 @@ public class Mem public double getTotal() { - return Arith.div(total, (1024 * 1024 * 1024), 2); + return NumberUtil.div(total, (1024 * 1024 * 1024), 2); } public void setTotal(long total) @@ -36,7 +36,7 @@ public class Mem public double getUsed() { - return Arith.div(used, (1024 * 1024 * 1024), 2); + return NumberUtil.div(used, (1024 * 1024 * 1024), 2); } public void setUsed(long used) @@ -46,7 +46,7 @@ public class Mem public double getFree() { - return Arith.div(free, (1024 * 1024 * 1024), 2); + return NumberUtil.div(free, (1024 * 1024 * 1024), 2); } public void setFree(long free) @@ -56,6 +56,6 @@ public class Mem public double getUsage() { - return Arith.mul(Arith.div(used, total, 4), 100); + return NumberUtil.mul(NumberUtil.div(used, total, 4), 100); } }