package com.xxx.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TreeMap;
import sun.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class test
{
static HashMap <String, String> hm = new HashMap<String, String>();
static
{
hm.put("java.version", "Java 运行时环境版本");
hm.put("java.vendor","Java 运行时环境供应商");
hm.put("java.vendor.url","Java 供应商的 URL");
hm.put("java.home","Java 安装目录");
hm.put("java.vm.specification.version","Java 虚拟机规范版本");
hm.put("java.vm.specification.vendor","Java 虚拟机规范供应商");
hm.put("java.vm.specification.name","Java 虚拟机规范名称");
hm.put("java.vm.version","Java 虚拟机实现版本");
hm.put("java.vm.vendor","Java 虚拟机实现供应商");
hm.put("java.vm.name","Java 虚拟机实现名称");
hm.put("java.specification.version","Java 运行时环境规范版本");
hm.put("java.specification.vendor","Java 运行时环境规范供应商");
hm.put("java.specification.name","Java 运行时环境规范名称");
hm.put("java.class.version","Java 类格式版本号");
hm.put("java.class.path","Java 类路径");
hm.put("java.library.path","加载库时搜索的路径列表");
hm.put("java.io.tmpdir","默认的临时文件路径");
hm.put("java.compiler","要使用的 JIT 编译器的名称");
hm.put("java.ext.dirs","一个或多个扩展目录的路径");
hm.put("os.name","操作系统的名称");
hm.put("os.arch","操作系统的架构");
hm.put("os.version","操作系统的版本");
hm.put("file.separator","文件分隔符(在 UNIX 系统中是“/”)");
hm.put("path.separator","路径分隔符(在 UNIX 系统中是“:”)");
hm.put("line.separator","行分隔符(在 UNIX 系统中是“/n”)");
hm.put("user.name","用户的账户名称");
hm.put("user.home","用户的主目录");
hm.put("user.dir","用户的当前工作目录");
}
public static String getSystemEnv(String str)
{
return System.getProperty(str);
}
public static void main(String[] args)
{
System.out.println(SystemInfo());
//SystemInfo4Html();
OSBean();
}
public static void OSBean()
{
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// 总的物理内存
long totalMemorySize = osmxb.getTotalPhysicalMemorySize();
// 剩余的物理内存
long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
// 已使用的物理内存
long usedMemory = totalMemorySize - freePhysicalMemorySize;
ThreadGroup parentThread;
for (parentThread = Thread.currentThread().getThreadGroup();
parentThread.getParent() != null;
parentThread = parentThread.getParent());
int totalThread = parentThread.activeCount();
double cpuRatio = 0;
String osName = System.getProperty("os.name");
if (osName.toLowerCase().startsWith("windows"))
{
cpuRatio = getCpuRatioForWindows();
}
else
{
cpuRatio = getCpuRateForLinux();
}
System.out.println("totalMemorySize=" + toMb(totalMemorySize) + "MB");
System.out.println("freePhysicalMemorySize=" + toMb(freePhysicalMemorySize) + "MB");
System.out.println("usedMemory=" + toMb(usedMemory) + "MB");
System.out.println("totalThread=" + totalThread);
System.out.println("cpuRatio=" + cpuRatio);
}
public static String SystemInfo4Html()
{
StringBuffer sb = new StringBuffer();
sb.append("[\"").append("<span style='color:red;'>运行环境:</span>\",\"\"],\n");
sb.append("[\"").append("虚拟机可用处理器的数目\",\"").append(Runtime.getRuntime().availableProcessors()).append("\"],\n");
sb.append("[\"").append("虚拟机空闲内存量\",\"").append(toMb(Runtime.getRuntime().freeMemory()) + "Mb").append("\"],\n");
sb.append("[\"").append("虚拟机试图使用的最大内存\",\"").append(toMb(Runtime.getRuntime().maxMemory()) + "Mb").append("\"],\n");
sb.append("[\"").append("虚拟机中的内存总量\",\"").append(toMb(Runtime.getRuntime().totalMemory()) + "Mb").append("\"],\n");
sb.append("[\"").append("<span style='color:red;'>系统属性:</span>\",\"\"],\n");
sb.append(systemProperties(true));
sb.append("[\"").append("<span style='color:red;'>环境变量:</span>\",\"\"],\n");
for (Map.Entry entry: System.getenv().entrySet())
{
sb.append("[\"").append(entry.getKey()).append("\",\"").append(entry.getValue().toString().replaceAll("\\\\", "\\\\\\\\")).append("\"],\n");
}
String str = sb.substring(0, sb.lastIndexOf(","));
//System.out.println(str);
return str;
}
public static String SystemInfo()
{
StringBuffer sb = new StringBuffer();
sb.append("系统属性:\n");
sb.append(systemProperties());
sb.append("===============================================\n");
sb.append("虚拟机可用处理器的数目 = " + Runtime.getRuntime().availableProcessors()).append("\n");
sb.append("虚拟机空闲内存量 = " + toMb(Runtime.getRuntime().freeMemory()) + "Mb").append("\n");
sb.append("虚拟机试图使用的最大内存量 = " + toMb(Runtime.getRuntime().maxMemory()) + "Mb").append("\n");
sb.append("虚拟机中的内存总量 = " + toMb(Runtime.getRuntime().totalMemory()) + "Mb").append("\n");
sb.append("================================================\n");
sb.append("环境变量:\n");
for (Map.Entry entry: System.getenv().entrySet())
{
sb.append(entry.getKey() + " = " + entry.getValue()).append("\n");
}
sb.append("================================================\n");
sb.append("可用字符集:\n");
sb.append(getCharsets());
return sb.toString();
}
public static String getSystemInfo()
{
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// 总的物理内存
long totalMemorySize = osmxb.getTotalPhysicalMemorySize();
// 剩余的物理内存
long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
// 已使用的物理内存
long usedMemory = totalMemorySize - freePhysicalMemorySize;
ThreadGroup parentThread;
for (parentThread = Thread.currentThread().getThreadGroup();
parentThread.getParent() != null;
parentThread = parentThread.getParent());
int totalThread = parentThread.activeCount();
return "virtual_cpu_num:" + Runtime.getRuntime().availableProcessors() + "," +
"virtual_mem_free:\"" + toMb(Runtime.getRuntime().freeMemory()) + "Mb\"," +
"virtual_mem_max:\"" + toMb(Runtime.getRuntime().maxMemory()) + "Mb\"," +
"virtual_mem_total:\"" + toMb(Runtime.getRuntime().totalMemory()) + "Mb\"," +
"totalMemorySize:\"" + toMb(totalMemorySize) + "MB\"," +
"freePhysicalMemorySize:\"" + toMb(freePhysicalMemorySize) + "MB\"," +
"usedMemory:\"" + toMb(usedMemory) + "MB\"," +
"totalThread:" + totalThread;
}
private static double toMb(long mem)
{
return (double)(mem/1024/1024);
}
public static <K, V> String getCharsets()
{
StringBuffer sb = new StringBuffer();
SortedMap <String, Charset> sm = java.nio.charset.Charset.availableCharsets();
Iterator <String> itr = sm.keySet().iterator();
while (itr.hasNext())
{
String key = itr.next();
Set <String> value = sm.get(key).aliases();
sb.append(key).append(" = ").append(value.toString()).append("\n");
}
return sb.toString();
}
public static <K, V> String systemProperties()
{
return systemProperties(false);
}
@SuppressWarnings("unchecked")
public static <K, V> String systemProperties(boolean bArray)
{
StringBuffer sb = new StringBuffer();
Properties p = System.getProperties();
TreeMap<K, V> map = new TreeMap<K, V>();
map.putAll((Map<? extends K, ? extends V>) p);
Iterator itr = map.keySet().iterator();
while (itr.hasNext())
{
String key = (String) itr.next();
String value = (String) map.get(key);
if (bArray)
{
if (key.equals("line.separator")) continue;
sb.append("[\"").append(key).append("\",\"").append(value.replaceAll("\\\\", "\\\\\\\\")).append("\"],\n");
}
else
{
sb.append(key).append(" = ").append(value).append("\n");
}
}
return sb.toString();
}
public static String systemProperties_()
{
StringBuffer sb = new StringBuffer();
Properties ps = System.getProperties();
Enumeration <?> pn = ps.propertyNames();
while(pn.hasMoreElements())
{
String pName = (String)pn.nextElement();
String pValue = ps.getProperty(pName);
sb.append(pName + " = " + pValue).append("\n");
}
return sb.toString();
}
private static double getCpuRateForLinux(){
InputStream is = null;
InputStreamReader isr = null;
BufferedReader brStat = null;
StringTokenizer tokenStat = null;
try{
System.out.println("Get usage rate of CUP , linux version: " + linuxVersion);
Process process = Runtime.getRuntime().exec("top -b -n 1");
is = process.getInputStream();
isr = new InputStreamReader(is);
brStat = new BufferedReader(isr);
if(linuxVersion.equals("2.4")){
brStat.readLine();
brStat.readLine();
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
String user = tokenStat.nextToken();
tokenStat.nextToken();
String system = tokenStat.nextToken();
tokenStat.nextToken();
String nice = tokenStat.nextToken();
System.out.println(user+" , "+system+" , "+nice);
user = user.substring(0,user.indexOf("%"));
system = system.substring(0,system.indexOf("%"));
nice = nice.substring(0,nice.indexOf("%"));
float userUsage = new Float(user).floatValue();
float systemUsage = new Float(system).floatValue();
float niceUsage = new Float(nice).floatValue();
return (userUsage+systemUsage+niceUsage)/100;
}else{
brStat.readLine();
brStat.readLine();
tokenStat = new StringTokenizer(brStat.readLine());
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
tokenStat.nextToken();
String cpuUsage = tokenStat.nextToken();
System.out.println("CPU idle : "+cpuUsage);
Float usage = new Float(cpuUsage.substring(0,cpuUsage.indexOf("%")));
return (1-usage.floatValue()/100);
}
} catch(IOException ioe){
System.out.println(ioe.getMessage());
freeResource(is, isr, brStat);
return 1;
} finally{
freeResource(is, isr, brStat);
}
}
private static void freeResource(InputStream is, InputStreamReader isr, BufferedReader br){
try{
if(is!=null)
is.close();
if(isr!=null)
isr.close();
if(br!=null)
br.close();
}catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
private static double getCpuRatioForWindows() {
try {
String procCmd = System.getenv("windir")
+ "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,"
+ "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return Double.valueOf(
PERCENT * (busytime) / (busytime + idletime))
.doubleValue();
} else {
return 0.0;
}
} catch (Exception ex) {
ex.printStackTrace();
return 0.0;
}
}
private static long[] readCpu(final Process proc) {
long[] retn = new long[2];
try {
proc.getOutputStream().close();
InputStreamReader ir = new InputStreamReader(proc.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line = input.readLine();
if (line == null || line.length() < FAULTLENGTH) {
return null;
}
int capidx = line.indexOf("Caption");
int cmdidx = line.indexOf("CommandLine");
int rocidx = line.indexOf("ReadOperationCount");
int umtidx = line.indexOf("UserModeTime");
int kmtidx = line.indexOf("KernelModeTime");
int wocidx = line.indexOf("WriteOperationCount");
long idletime = 0;
long kneltime = 0;
long usertime = 0;
while ((line = input.readLine()) != null) {
if (line.length() < wocidx) {
continue;
}
// 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount,
// ThreadCount,UserModeTime,WriteOperation
String caption = Bytes.substring(line, capidx, cmdidx - 1)
.trim();
String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim();
if (cmd.indexOf("wmic.exe") >= 0) {
continue;
}
// log.info("line="+line);
if (caption.equals("System Idle Process")
|| caption.equals("System")) {
idletime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
idletime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
continue;
}
kneltime += Long.valueOf(
Bytes.substring(line, kmtidx, rocidx - 1).trim())
.longValue();
usertime += Long.valueOf(
Bytes.substring(line, umtidx, wocidx - 1).trim())
.longValue();
}
retn[0] = idletime;
retn[1] = kneltime + usertime;
return retn;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
proc.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
private static final int CPUTIME = 30;
private static final int PERCENT = 100;
private static final int FAULTLENGTH = 10;
private static final File versionFile = new File("/proc/version");
private static String linuxVersion = null;
public static class Bytes {
public static String substring(String src, int start_idx, int end_idx)
{
byte[] b = src.getBytes();
String tgt = "";
for(int i=start_idx; i<=end_idx; i++){
tgt +=(char)b[i];
}
return tgt;
}
}
}
分享到:
相关推荐
2. 由于支持多语言,页面上的中文文本会通过标签系统显示,例如`<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>`来表示“姓名”。对应的数据库查询是:`select labelname from htmllabelinfo where ...
在Ecology系统中,JSP页面支持多语言,通常使用标签的形式来显示中文,例如:<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>,其中的数字413表示姓名,同时可以通过“select labelname from ...
在ECOLOGY中,由于支持多语言,中文显示通常通过标签实现,如`<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>`,413为标签索引,对应不同语言环境的显示名称。 2. **阅读JSP页面**:理解页面中的标签和...
echo "Could not find msfvenom path in system env, please run msfvenom with path." fi if [[ ! -d ${VENOM_CACHE_FILE:h} ]]; then mkdir -p ${VENOM_CACHE_FILE:h} fi if [[ ! -f $VENOM_CACHE_FILE ]]...
echo "Could not find msfvenom path in system env, please run msfvenom with path." fi if [[ ! -d ${VENOM_CACHE_FILE:h} ]]; then mkdir -p ${VENOM_CACHE_FILE:h} fi if [[ ! -f $VENOM_CACHE_FILE ]]...
在ECOLOGY系统中,由于支持多语言,页面上的中文通常不直接显示,而是通过标签如`<%=SystemEnv.getHtmlLabelName(413,user.getLanguage())%>`来实现,其中的数字413对应特定的中文标签,通过查询数据库获取对应的...
- 1985年推出Systemenv.2。 - 1986年发布Systemv.3。 - 1989年推出Systemv.4。 - 1980年发布Version 4。 - 1982年发布Version 4.2。 - 1986年发布Version 4.3。 - IBM在1986年开始研发AIX,并于同年推出了第...
- **1985年**:Systemenv.2发布。 - **1986年**:System v.3发布。 - **1989年**:System v.4发布。 - **1980年**:Version 4发布。 - **1982年**:Version 4.2发布。 - **1986年**:Version 4.3发布。 - **1986年**...
# frameworks/native/data/etc/android.software.managed_users.xml:system/etc/permissions/android.software.managed_users.xml PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/configs/camera.cfg...
# frameworks/native/data/etc/android.software.managed_users.xml:system/etc/permissions/android.software.managed_users.xml PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/configs/camera.cfg...
r40_tinav2.1_最终验证通过_使用CB-S来验证OV5640有横条纹fpscamera+SPI2.0成功_20171114_1443没有外层目录.7z 开发板:CB-S 1、(可选修改/调试技巧:) 除了ov5640.c之外,其它的驱动都不编译,节省编译时间!...
RethinkDB适配器 RethinkDB适配器是适配器 。 使用此库,Casbin可以从RethinkDB加载策略或将策略保存到其中。 安装 ...简单的例子 ... Getenv ( "RETHINKDB_URL" ) //Get the Rethinkdb url from system env if
所用的k8s容器相关配置 - name: dts-rsrc-sync image: dts-rsrc-sync:20191226110645 ... systemEnv: pod_ip: PODIP pod_name: PODNAME ports: - name: "ffn-18507" containerPort: 18507
在Android系统中,env文件通常位于/system/etc目录下,包含了一系列启动时设置的环境变量。这些变量可以影响系统的启动过程、设备的硬件驱动配置、网络设置等。例如,你可以通过修改env文件来改变设备的默认语言,...
3. **持久化环境变量**:要使环境变量在设备重启后依然有效,通常需要修改系统的启动脚本,如 `/system/etc/init/*.rc` 文件,或者在应用的 `AndroidManifest.xml` 中使用 `android:environmentVariables` 属性...
### Cadence 16.3安装后出现“can not find allegro env file”问题解析及解决方法 在进行Cadence 16.3的安装与配置过程中,可能会遇到一个常见的错误提示:“can not find allegro env file”。这个问题通常出现在...
本文将深入探讨如何配置SVM(System Virtual Machine)环境,以便在Visual Studio 2005中进行OS构建。SVM是一种虚拟化技术,它允许一个处理器执行多个操作系统实例,每个实例都在自己的虚拟机中运行,提高了硬件资源...
Java-dotenv是一个专门为Java和Kotlin开发者设计的模块,它实现了与Ruby的Dotenv项目相似的功能,即从`.env`文件中读取并加载环境变量。这个库的主要目的是帮助开发者在不暴露敏感信息(如数据库凭证、API密钥等)到...
app.use(slimEnv.mw({in:['YOUR_SYSTEM_ENV_NAME_1', 'YOUR_SYSTEM_ENV_NAME_2']})) - 或者 -对于Koa app.use(slimEnv.mw.koa({in:['YOUR_SYSTEM_ENV_NAME_1', 'YOUR_SYSTEM_ENV_NAME_2']})) -快递 app.use(slimEnv...