java 获取当前服务器CPU,JVM,内存等信息

2023-11-04

借助于 Hyperic-Sigar,是一个收集系统各项底层信息的工具集。没啥技术含量。

 参考:https://support.hyperic.com/display/SIGAR/Home

 下载地址:http://sourceforge.net/projects/sigar/files/sigar/1.6/hyperic-sigar-1.6.4.zip/download

解压后将hyperic-sigar-1.6.4\sigar-bin\lib 下所需的文件拷贝到项目lib下,里面包含两个jar包 和一些其他文件,不同的操作系统使用不同的文件,直接拷贝全部省事。

 Maven 依赖信息

Xml代码 

<dependency>  

    <groupId>org.fusesource</groupId>  

    <artifactId>sigar</artifactId>  

    <version>1.6.4</version>  

</dependency>  

不多说,直接上代码(Spring MVC的 Controller), 返回json数据,前台页面可灵活调用显示

Java代码 

import java.io.IOException;  

import java.io.PrintWriter;  

import javax.servlet.http.HttpServletResponse;  

import org.apache.commons.logging.Log;  

import org.apache.commons.logging.LogFactory;  


/** 

 * @author 

 * 

 */  

public class BaseController {  

      
    protected Log logger = LogFactory.getLog(getClass());  

  
    protected void response2Client (HttpServletResponse response, String content) {  

          
        response.setContentType("text/html;charset=UTF-8");  

        PrintWriter out = null;  
        

        logger.info("response content -->" + content);  
         

        try {  

            out = response.getWriter();  

            out.print(content);  

            out.close();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  
          
    }    

}  

 

Java代码 

 

import java.net.InetAddress;  

import java.net.UnknownHostException;  

import java.util.Map;  

import java.util.Properties;    

import javax.servlet.http.HttpServletResponse;   

import net.sf.json.JSONArray;  

import net.sf.json.JSONObject;  

import org.hyperic.sigar.CpuInfo;  

import org.hyperic.sigar.CpuPerc;  

import org.hyperic.sigar.FileSystem;  

import org.hyperic.sigar.FileSystemUsage;  

import org.hyperic.sigar.Mem;  

import org.hyperic.sigar.NetFlags;  

import org.hyperic.sigar.NetInterfaceConfig;  

import org.hyperic.sigar.NetInterfaceStat;  

import org.hyperic.sigar.OperatingSystem;  

import org.hyperic.sigar.Sigar;  

import org.hyperic.sigar.SigarException;  

import org.hyperic.sigar.Swap;  

import org.springframework.stereotype.Controller;  

import org.springframework.web.bind.annotation.RequestMapping;  
  
import com.anly.common.web.controller.BaseController;  

  

/** 

 * @author anly 

 *  

 */  

@Controller  

@RequestMapping(value = "/server")  

public class ServerInfoController extends BaseController {  
     

    /** 

     * 服务器信息 

     */  

    @RequestMapping(value = "")  

    public void serverInfo(HttpServletResponse response) {  

        Properties props = System.getProperties();            

        Map<String, String> map = System.getenv();            

        JSONObject jsonObject = new JSONObject();            

        jsonObject.put("server.user.name", map.get("USERNAME")); //用户名  

        jsonObject.put("server.computer.name", map.get("COMPUTERNAME")); //计算机名  

        jsonObject.put("server.computer.domain", map.get("USERDOMAIN")); //计算机域名            

        InetAddress addr = null;  

        try {  

            addr = InetAddress.getLocalHost();  

            jsonObject.put("server.ip", addr.getHostAddress()); //本机ip  

            jsonObject.put("server.host.name", addr.getHostName()); //本机主机名  
              
            jsonObject.put("server.user.home", props.getProperty("user.home")); //用户的主目录  

            jsonObject.put("server.user.dir", props.getProperty("user.dir")); //用户的当前工作目录  

        } catch (Exception e) {  

            logger.error(e.getMessage());  

        }            

        super.response2Client(response, jsonObject.toString());            

    }  

      

    /** 

     * 系统信息 

     */  

    @RequestMapping(value = "/system")  

    public void systemInfo(HttpServletResponse response) {  
          
        OperatingSystem OS = OperatingSystem.getInstance();  
          
        JSONObject jsonObject = new JSONObject();            

        jsonObject.put("os.name", OS.getVendorName()); //操作系统名称  

        jsonObject.put("os.arch", OS.getArch()); //内核构架  

        jsonObject.put("os.description", OS.getDescription()); //操作系统的描述  

        jsonObject.put("os.version", OS.getVersion()); //操作系统的版本号            

        super.response2Client(response, jsonObject.toString());            

    }  

      

    /** 

     * CPU信息 

     * @throws SigarException 

     */  

    @RequestMapping(value = "/cpu")  

    public void cpuInfo(HttpServletResponse response) throws SigarException {  
         
        Sigar sigar = new Sigar();           

        CpuInfo infos[] = sigar.getCpuInfoList();  

        CpuPerc cpuList[] = sigar.getCpuPercList();            

        JSONObject jsonObject = new JSONObject();  
          
        JSONArray jsonArray = new JSONArray();  
          

        for (int i = 0, len = infos.length; i < len; i++) {// 不管是单块CPU还是多CPU都适用  
              
            CpuInfo info = infos[i];  
              
            JSONObject jso = new JSONObject();               

            jso.put("mhz", info.getMhz()); //CPU的总量MHz  

            jso.put("company", info.getVendor()); //CPU的厂商  

            jso.put("model", info.getModel()); //CPU型号类别  

            jso.put("cache.size", info.getCacheSize()); // 缓冲缓存数量  

            CpuPerc cpu = cpuList[i];  

            jso.put("freq.user", CpuPerc.format(cpu.getUser())); //CPU的用户使用率  

            jso.put("freq.sys", CpuPerc.format(cpu.getSys())); //CPU的系统使用率  

            jso.put("freq.wait", CpuPerc.format(cpu.getWait())); //CPU的当前等待率  

            jso.put("freq.nice", CpuPerc.format(cpu.getNice())); //CPU的当前错误率  

            jso.put("freq.idle", CpuPerc.format(cpu.getIdle())); //CPU的当前空闲率  

            jso.put("freq.combined", CpuPerc.format(cpu.getCombined())); //CPU总的使用率  

            jsonArray.add(jso);  

        }            

        jsonObject.put("cpu", jsonArray);            

        super.response2Client(response, jsonObject.toString());            

    }  

      

    /** 

     * JVM信息 

     * @throws UnknownHostException 

     */  

    @RequestMapping(value = "/jvm")  

    public void jvmInfo(HttpServletResponse response) throws UnknownHostException {  
          
        Runtime r = Runtime.getRuntime();  

        Properties props = System.getProperties();           

        JSONObject jsonObject = new JSONObject();           

        jsonObject.put("jvm.memory.total", r.totalMemory()); //JVM可以使用的总内存  

        jsonObject.put("jvm.memory.free", r.freeMemory()); //JVM可以使用的剩余内存  

        jsonObject.put("jvm.processor.avaliable", r.availableProcessors()); //JVM可以使用的处理器个数  

        jsonObject.put("jvm.java.version", props.getProperty("java.version")); //Java的运行环境版本  

        jsonObject.put("jvm.java.vendor", props.getProperty("java.vendor")); //Java的运行环境供应商  

        jsonObject.put("jvm.java.home", props.getProperty("java.home")); //Java的安装路径  

        jsonObject.put("jvm.java.specification.version", props.getProperty("java.specification.version")); //Java运行时环境规范版本  

        jsonObject.put("jvm.java.class.path", props.getProperty("java.class.path")); //Java的类路径  

        jsonObject.put("jvm.java.library.path", props.getProperty("java.library.path")); //Java加载库时搜索的路径列表  

        jsonObject.put("jvm.java.io.tmpdir", props.getProperty("java.io.tmpdir")); //默认的临时文件路径  

        jsonObject.put("jvm.java.ext.dirs", props.getProperty("java.ext.dirs")); //扩展目录的路径  
          
        super.response2Client(response, jsonObject.toString());           

    }  

      

    /** 

     * 内存信息 

     * @throws SigarException 

     */  

    @RequestMapping(value = "/memory")  

    public void memoryInfo(HttpServletResponse response) throws SigarException {         

        Sigar sigar = new Sigar();  

        Mem mem = sigar.getMem();           

        JSONObject jsonObject = new JSONObject();  
          
        jsonObject.put("memory.total", mem.getTotal() / (1024 * 1024L));// 内存总量  

        jsonObject.put("memory.used", mem.getUsed() / (1024 * 1024L));// 当前内存使用量  

        jsonObject.put("memory.free", mem.getFree() / (1024 * 1024L));// 当前内存剩余量          

        Swap swap = sigar.getSwap();            

        jsonObject.put("memory.swap.total", swap.getTotal() / (1024 * 1024L));// 交换区总量  

        jsonObject.put("memory.swap.used", swap.getUsed() / (1024 * 1024L));// 当前交换区使用量  

        jsonObject.put("memory.swap.free", swap.getFree() / (1024 * 1024L));// 当前交换区剩余量  
          
        super.response2Client(response, jsonObject.toString());  
          
    }  

      

    /** 

     * 磁盘文件信息 

     * @throws SigarException 

     */  

    @RequestMapping(value = "/file")  

    public void fileSystemInfo(HttpServletResponse response) throws SigarException {  
          
        Sigar sigar = new Sigar();          

        FileSystem fslist[] = sigar.getFileSystemList();            

        JSONObject jsonObject = new JSONObject();            

        JSONArray jsonArray = new JSONArray();            

        for (int i = 0, len = fslist.length; i < len; i++) {                

            FileSystem fs = fslist[i];  
              
            JSONObject jso = new JSONObject();                

            jso.put("dev.name", fs.getDevName()); //分区盘符名称  

            jso.put("dir.name", fs.getDirName()); //分区盘符名称  

            jso.put("flags", fs.getFlags()); //分区盘符类型  

            jso.put("sys.type.name", fs.getSysTypeName()); //文件系统类型  

            jso.put("type.name", fs.getTypeName()); //分区盘符类型名  

            jso.put("type", fs.getType()); //分区盘符文件系统类型  

            FileSystemUsage usage = null;  
              

            try {  

                usage = sigar.getFileSystemUsage(fs.getDirName());  

            } catch (Exception e) {  

                logger.error(e.getMessage());  

            }  
              

            if(usage == null) {  

                continue;  

            }  

              
            switch (fs.getType()) {  

            case 0: // TYPE_UNKNOWN :未知  

                break;  

            case 1: // TYPE_NONE  

                break;  

            case 2: // TYPE_LOCAL_DISK : 本地硬盘  
                  

                jso.put("usage.totle", usage.getTotal() / 1024); // 分区总大小  

                jso.put("usage.free", usage.getFree() / 1024); // 分区剩余大小  

                jso.put("usage.avail", usage.getAvail() / 1024); // 分区可用大小  

                jso.put("usage.used", usage.getUsed() / 1024); // 分区已经使用量  

                jso.put("usage.use.percent", usage.getUsePercent() * 100D); // 分区资源的利用率  

                break;  

            case 3:// TYPE_NETWORK :网络  

                break;  

            case 4:// TYPE_RAM_DISK :闪存  

                break;  

            case 5:// TYPE_CDROM :光驱  

                break;  

            case 6:// TYPE_SWAP :页面交换  

                break;  

            }  

            jso.put("disk.reads", usage.getDiskReads()); // 读出  

            jso.put("disk.writes", usage.getDiskWrites()); // 写入  
              
            jsonArray.add(jso);  

        }            

        jsonObject.put("file.system", jsonArray);  
          
        super.response2Client(response, jsonObject.toString());            

    }  

      

    /** 

     * 网络信息 

     * @throws SigarException 

     */  

    @RequestMapping(value = "/net")  

    public void netInfo(HttpServletResponse response) throws SigarException {  
          
        Sigar sigar = new Sigar();  

        String ifNames[] = sigar.getNetInterfaceList();  
          
        JSONObject jsonObject = new JSONObject();  
          
        JSONArray jsonArray = new JSONArray();           

        for (int i = 0, len = ifNames.length; i < len; i++) {                

            String name = ifNames[i];                

            JSONObject jso = new JSONObject();  
             
            NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);              
            jso.put("name", name); // 网络设备名  

            jso.put("address", ifconfig.getAddress()); // IP地址  

            jso.put("mask", ifconfig.getNetmask()); // 子网掩码  
              

            if ((ifconfig.getFlags() & 1L) <= 0L) {  

                logger.info("!IFF_UP...skipping getNetInterfaceStat");  

                continue;  

            }  
            
            NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);  

            jso.put("rx.packets", ifstat.getRxPackets());// 接收的总包裹数  

            jso.put("tx.packets", ifstat.getTxPackets());// 发送的总包裹数  

            jso.put("rx.bytes", ifstat.getRxBytes());// 接收到的总字节数  

            jso.put("tx.bytes", ifstat.getTxBytes());// 发送的总字节数  

            jso.put("rx.errors", ifstat.getRxErrors());// 接收到的错误包数  

            jso.put("tx.errors", ifstat.getTxErrors());// 发送数据包时的错误数  

            jso.put("rx.dropped", ifstat.getRxDropped());// 接收时丢弃的包数  

            jso.put("tx.dropped", ifstat.getTxDropped());// 发送时丢弃的包数  
              
            jsonArray.add(jso);  
              
        }            

        jsonObject.put("net", jsonArray);  
          
        super.response2Client(response, jsonObject.toString());  
          
    }  

  

    /** 

     * 以太网信息 

     * @throws SigarException 

     */  

    @RequestMapping(value = "/ethernet")  

    public void ethernetInfo(HttpServletResponse response) throws SigarException {  

        Sigar sigar = new Sigar();  

        String[] ifaces = sigar.getNetInterfaceList();  
          
        JSONObject jsonObject = new JSONObject();  
     
        JSONArray jsonArray = new JSONArray();           

        for (int i = 0, len = ifaces.length; i < len; i++) {               

            NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);  

            if (NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress()) || (cfg.getFlags() & NetFlags.IFF_LOOPBACK) != 0 || NetFlags.NULL_HWADDR.equals(cfg.getHwaddr())) {  

                continue;  

            }               

            JSONObject jso = new JSONObject();                

            jso.put("address", cfg.getAddress());// IP地址  

            jso.put("broad.cast", cfg.getBroadcast());// 网关广播地址  

            jso.put("hwaddr", cfg.getHwaddr());// 网卡MAC地址  

            jso.put("net.mask", cfg.getNetmask());// 子网掩码  

            jso.put("description", cfg.getDescription());// 网卡描述信息  

            jso.put("type", cfg.getType());// 网卡类型               

            jsonArray.add(jso);  
             
        }  

        jsonObject.put("ethernet", jsonArray);            

        super.response2Client(response, jsonObject.toString());            

    }        

}  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 获取当前服务器CPU,JVM,内存等信息 的相关文章

  • Android系统 —— 源码编译错误整理(持续更新)

    记录一些日常遇到的编译问题及解决方法 查找的时候可以直接搜索问题描述的关键部分 目录 1 更改源码目录名引发的错误 2 添加VNDK库 Vendor Native Development Kit 报错 3 头文件被重复包含 4 无法链接库文
  • 【FlashDB】第三步 FlashDB 移植 STM32L475 使用QSPI驱动外部 flash W25Q64之 FlashDB 移植

    准备事项 完成了以下两步操作后进行 FlashDB 第一步 FlashDB 移植到 STM32L475 使用QSPI驱动外部 flash W25Q64之FAL移植 FlashDB 第二步 FlashDB 移植 STM32L475 使用QSP
  • Anaconda使用教程(常用命令)

    Anaconda3安装教程 配置环境变量 图文教程 https blog csdn net love906897406 article details 125010258https blog csdn net love906897406 a
  • ECharts数据可视化

    目录 第一章 什么是ECharts 第二章 搭建环境 2 1 Echarts的下载 2 2 Visual Studio Code下载 第三章 一个简单的可视化展示 第四章 Echarts组件 4 1 标题 4 2 提示框 4 3 工具栏 4
  • 机器学习实战5(回归篇)

    目录 1 回归 2 回归代码 3 预测鲍鱼的年龄 1 回归 前面的文章介绍了很多分类算法 分类的目标变量是标称型数据 而本文将会对连续型的数据做出预测 主要讲解简单的线性回归和局部加权线性回归 并通过预测鲍鱼年龄的实例进行实战演练 说到回归
  • Keil 硬件仿真时 外设寄存器中显示的定时器计数值不准确

    最近在做定时器同步测试 发现无论如何都无法正常让定时器的计数器同步起来 很郁闷 换了多个型号的单片机都不行 于是怀疑 软件仿真有问题 于是通过曲线测试 使用连个自变量 同时读取2个定时器的CNT 观察这两个变量测试的结果才 正常
  • 解决eclipse编译老是上一个程序代码问题

    使用eclipse遇到了问题 程序无论怎么运行都是之前修改前的程序结果 如下面所示 package test public class test public static void main String args TODO Auto g
  • JavaWeb核心技术——Request请求

    目录 1 Request和Response的概述 2 Request对象 2 1 Request继承体系 2 2 Request获取请求数据 2 2 1 获取请求行数据 2 2 2 获取请求头数据 2 2 3 获取请求体数据 2 2 4 获
  • educoderpython答案顺序结构程序设计_程序设计基础

    程序设计基础 一 程序设计方法与风格 1 设计方法 指设计 编制 调试程序的方法和过程 主要有结构化程序设计方法 软件工程方法和面向对象方法 2 设计风格 良好的程序设计风格 主要应注重和考虑下述一些因素 符号名的命名应具有一定的实际含义
  • navicat连接mysql1064_navicat for mysql出现1064错误怎么办

    navicat for mysql出现1064错误怎么办 存储过程 参数 代码 分隔符 长度 navicat for mysql出现1064错误怎么办 易采站长站 站长之家为您整理了navicat for mysql出现1064错误怎么办的
  • 【pandas】空数据处理

    目录 1 判断空值 isna 2 空值删除 dropna 3 空值替换 dropna 数据清洗是对一些没有用的数据进行处理的过程 很多数据集存在数据缺失 数据格式错误 错误数据或重复数据的情况 如果要使数据分析更加准确 就需要对这些没有用的
  • 机器学习策略二——优化深度学习系统

    进行误差分析 Carrying out error analysis 如果你希望让学习算法能够胜任人类能做的任务 但你的学习算法还没有达到人类的表现 那么人工检查一下你的算法犯的错误也许可以让你了解接下来应该做什么 这个过程称为错误分析 假
  • C++如何做字符串分割(5种方法)

    1 用strtok函数进行字符串分割 原型 char strtok char str const char delim 功能 分解字符串为一组字符串 参数说明 str为要分解的字符串 delim为分隔符字符串 返回值 从str开头开始的一个
  • 卷积神经网络(CNN)详解与代码实现

    1 应用场景 卷积神经网络的应用不可谓不广泛 主要有两大类 数据预测和图片处理 数据预测自然不需要多说 图片处理主要包含有图像分类 检测 识别 以及分割方面的应用 图像分类 场景分类 目标分类 图像检测 显著性检测 物体检测 语义检测等等
  • 关于二阶锥优化(SOCP)的学习

    原来 数学不好的时候 真的很难深入下去做研究 最近的两个月时间里 我就边学习SOCP相关的理论知识 一边拿它当工具来分析多视角几何中的问题 包括Triangulation Homography Estimation等 接触到SOCP的起因在
  • Linux脚本启动jar包

    注意 以下脚本笔者是在Windows上编辑的 因此默认格式是dos 如果在Linux上使用 请使用vi命令编该文件 改为Unix格式 笔者使用的SpringBoot jsp 因此使用的是war包 如果你使用的是jar包 在文中用到war的地
  • 【notepad++】中删除中文字符

    一 龥
  • html中图片自动循环滚动代码,实现长图片自动循环滚动效果

    实现思路 滚动效果用实现 有个方法 可以滚动到指定位置 有滚动效果 不是直接到指定位置 不了解的看这里种定位滚动方式演示 每一个Item是一张长图 这样首尾相接滚动起来 滚到无限远 就是无限循环的效果 然后再改变滚动的速度 就可以了 sav
  • SVM实现MNIST手写数字识别的实验

    本文是对手写数字识别 二 SVM 实现Mnist image 手写数字图像识别 Sanger1990的博客 CSDN博客 mnist svm 文章中程序的小修改 使代码正常完成预定工作 原代码不能正常完成运行 from PIL import
  • 如何移植和使用QJson?

    一 QJson库的下载 下载链接 http qjson sourceforge net build 二 使用Qt4 8 Mingw编译QJson 1 解压QJson master压缩包 新建一个QJson目录 将QJson master中的

随机推荐

  • 北大AI公开课2019

    2019年2月20日 北京大学 人工智能前沿与产业趋势 正式开课 本学期的课程邀请到了商汤科技副总裁沈徽 驭势科技CEO吴甘沙 微软亚洲研究院副院长周明 360人工智能研究院院长颜水成 YC中国创始人及CEO 百度集团副董事长陆奇等14位来
  • RGMII接口延时问题分析

    问题1 为什么RGMII时钟线和数据线要做延时处理 由于RGMII的数据传输是根据时钟信号采样获得的 RGMII时钟在1000Mb s速率下在上升沿和下降沿均进行采样 在100Mb s速率及10Mb s速率下 仅在上升沿采样数据位 这就会出
  • IEC60601-1-2并列标准:电磁兼容第四版(2014 ed4.0/2020ed 4.1 )对比第三版2007更新内容VS新YY9706.102-2021ed3和旧YY0505-2012ed2.1

    目录 旧版YY 0505 2012 IEC60601 1 2 2004 ed2 1 与新版YY 9706 102 2021 IEC60601 1 2 2007 ed3 IEC 60601 1 2版本迭代 IEC 60601 1 2 2007
  • X-Frame-Options(点击劫持)

    漏洞描述 点击劫持 ClickJacking 是一种视觉上的欺骗手段 攻击者使用一个透明的iframe 覆盖在一个网页上 然后诱使用户在网页上进行操作 此时用户将在不知情的情况下点击透明的iframe页面 通过调整iframe页面的位置 可
  • 计算机层次结构的四个纬度,2014年计算机一级考试MS Office第四章考点解析(12)

    4 5 图标 4 5 1图表的基本概念 1 图表类型 Excel提供了标准图表类型 每一种图表类型又分为多个子类型 可以根据需要选择不同的 图表类型表现数据 常用的图表类型有 柱形图 条形图 饼图 面积图 XY散点图 圆 环图 股价图 曲面
  • 让VBS脚本也有GUI图形界面

    set ie wscript createobject internetexplorer application event 创建ie对象 ie menubar 0 取消菜单栏 ie addressbar 0 取消地址栏 ie toolba
  • js实现前端HTML操作用户文件的读写(已封装)

    readFile 第一个方法是 readFile 用于读取文件内容并以 Promise 对象的形式返回 它接受一个 File 对象和一个可选的编码格式参数 使用 FileReader 对象读取文件内容 当读取完成时调用 resolve 方法
  • RuntimeError: expected dtype Double but got dtype Float 问题解决

    利用Pytorch框架自己构建网络结构 在程序运行到 loss backward 的时候报错 RuntimeError expected dtype Double but got dtype Float validate dtype at
  • 万字长文讲述我是怎样保送清华的

    点击 小卡片 回复 1024 获取大厂面试指南 背景 大家好 我是石头哥 本篇是系列文章第 4 篇 前三篇如下 家穷应该读大学吗 寒门学子的奋斗史 一 第一篇回忆了自己读小学的场景 寒门学子的奋斗史 二 第二篇讲了自己就读的贫困山区中学的
  • Python RSA加密解密

    Python RSA加密解密 RSA是一种非对称加密算法 非对称加密需要公钥 publickey 和私钥 privatekey 消息传递前需要先生成公钥和私钥 发送方将待发送消息用公钥加密 发送给接收方 接收方收到消息后 用私钥解密 在这个
  • 学生信息管理系统

    学生信息管理系统 基于动态链表的增 删 改 查和文件的存储 实现对学生信息 姓名 性别 年龄 学号 电话 语文 数学 英语 的管理 存储学生信息的文件 define FILEPATH information txt 学生基本信息结构体 学生
  • 将用户“C:\Users\XXX”文件夹映射到其他盘符

    注意事项 在要改变用户 以xxx为例 时 系统XXX关闭 用微PE或安装好U盘的系统 进入U盘启动操作 确保映射稳定 主机的盘符与U盘启动下的盘符一致 其他的可以不一样 要将用户XXX移动到的盘符必须一致 不建议将整个用户文件夹 C Use
  • 网络通讯中的checksum算法

    网络通讯中的checksum算法 一 实验目的和任务 本实验要求复习Debian系统抓包工具的使用 本实验要求理解checksum算法原理和实现方法 二 实验设备介绍 1 软件需求 win7操作系统 VMware workstation u
  • latex第一段的首行缩进问题

    setlength parindent 2em 首行全部缩进2字符 但是在第一行使用没有效果 indent也是首行缩进 第一段第一行的缩进只能用 hspace 0 5em 来控制空格的多少 解决中文排版问题 hspace 0 5em 随着科
  • 复制微信公众号图片不能用,防盗链问题

    问题起因很简单 直接复制的公众号文章到网站 不单独处理图片 复制出来的文章图片因为微信防盗链设置不能显示出来 如下图 防盗链原理就是后端先拦截请求获取其中的referrer 将其和自身的白名单 本地域名等对比 符合条件的将通过 不符合的将会
  • Java:最小栈()

    一 知识准备 1 栈 核心 先进后出 从栈顶入 栈顶出 栈的几种基本操作 void push int data 入栈 int pop 弹出栈顶元素 即 删除并返回最后一个入栈的元素 int peek 返回栈顶元素但不删除 boolean e
  • 2021-03-30 python离线安装openpyxl模块

    1 前言 最近Python项目需要用openpyxl对excel进行处理 引用到了openpyxl模块 但是客户的环境没有网 无法用pip安装openpyxl 因此需要离线安装 记录下遇到的问题及解决的办法 2 过程 能联网的话用pip 一
  • WEB安全-RCE代码及命令执行漏洞

    WEB安全 RCE代码及命令执行漏洞 摘要 RCE概述 远程代码执行 eval 案例 远程命令执行 system shell exec 与 exec 案例 靶场案例 墨者靶场黑盒功能点命令执行 应用功能 墨者靶场白盒代码及命令执行 代码分析
  • make编译内核驱动模块

    make编译内核驱动模块 方法一 obj m hello world o KDIR home july7 prj Firefly RK3308 kernel 内核源码路径 PWD shell pwd 获取当前目录的变量 all make C
  • java 获取当前服务器CPU,JVM,内存等信息

    借助于 Hyperic Sigar 是一个收集系统各项底层信息的工具集 没啥技术含量 参考 https support hyperic com display SIGAR Home 下载地址 http sourceforge net pro