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

java獲取機(jī)器碼簡(jiǎn)單實(shí)現(xiàn)demo

 更新時(shí)間:2023年11月21日 10:45:44   作者:初窺門徑  
這篇文章主要為大家介紹了java獲取機(jī)器碼的簡(jiǎn)單實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

java獲取機(jī)器碼

import cn.hutool.crypto.digest.DigestUtil;
import com.alibaba.fastjson.JSON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Scanner;
/**
 * @author shanjunpeng
 * @date 2023/9/27
 */
public class MachineCodeUtils {
    public static final String WINDOWS = "Windows";
    public static final String LINUX = "Linux";
    /**
     * 獲取機(jī)器碼
     */
    public static String getMachineCode() {
        return getMachineCode(getOS());
    }
    /**
     * 獲取操作系統(tǒng)
     * @return
     */
    public static String getOS() {
        String os = System.getProperty("os.name").toLowerCase();
        if (os.contains("win")) {
            return WINDOWS;
        } else if (os.contains("nix") || os.contains("nux") || os.contains("aix")) {
            return LINUX;
        } else if (os.contains("mac")) {
            return "Mac OS";
        } else if (os.contains("sunos")) {
            return "Solaris";
        } else {
            return "Unknown";
        }
    }
    public static String getMachineCode(String type) {
        if (Objects.isNull(type)) {
            return "";
        }
        Map<String, Object> codeMap = new HashMap<>(2);
        String result = "";
        if (LINUX.equals(type)) {
            String boisVersion = getBoisVersion();
            codeMap.put("boisVersion", boisVersion);
            System.out.println("boisVersion:" + boisVersion);
            String uuid = getUUID();
            codeMap.put("uuid", uuid);
            System.out.println("uuid:" + uuid);
        } else if (WINDOWS.equals(type)) {
            String processorId = getCPUSerialNumber();
            codeMap.put("ProcessorId", processorId);
            System.out.println("ProcessorId:" + processorId);
            String serialNumber = getHardDiskSerialNumber();
            codeMap.put("SerialNumber", serialNumber);
            System.out.println("SerialNumber:" + serialNumber);
        }else{
            return "";
        }
        String codeMapStr = JSON.toJSONString(codeMap);
        String serials = DigestUtil.md5Hex(codeMapStr);
        result = getSplitString(serials, "-", 4);
        return result.toUpperCase();
    }
    public static String getSplitString(String str, String joiner, int number) {
        StringBuilder sb = new StringBuilder();
        int len = str.length();
        for (int i = 0; i < len; i += number) {
            if (i + number <= len) {
                sb.append(str, i, i + number);
            } else {
                sb.append(str.substring(i));
            }
            if (i + number < len) {
                sb.append(joiner);
            }
        }
        return sb.toString();
    }
    /**
     * 獲取CPU序列號(hào)
     *
     * @return
     * @throws IOException
     */
    public static String getCPUSerialNumber() {
        String next;
        try {
            Process process = Runtime.getRuntime().exec(new String[]{"wmic", "cpu", "get", "ProcessorId"});
            process.getOutputStream().close();
            Scanner sc = new Scanner(process.getInputStream());
            String serial = sc.next();
            next = sc.next();
        } catch (IOException e) {
            throw new RuntimeException("獲取CPU序列號(hào)失敗");
        }
        return next;
    }
    /**
     * 獲取 硬盤序列號(hào)(Windows)
     *
     * @return
     * @throws IOException
     * @throws InterruptedException
     */
    public static String getHardDiskSerialNumber() {
        try {
            Process process = Runtime.getRuntime().exec(new String[]{"wmic", "path", "win32_physicalmedia", "get", "serialnumber"});
            process.getOutputStream().close();
            Scanner sc = new Scanner(process.getInputStream());
            String serial = sc.next();
            return sc.next();
        } catch (IOException e) {
            throw new RuntimeException("獲取硬盤序列號(hào)失敗");
        }
    }
    /**
     * 獲取系統(tǒng)序列號(hào)(linux)
     *
     * @return
     */
    public static String getUUID() {
        String result = "";
        try {
            Process process = Runtime.getRuntime().exec("sudo dmidecode -s system-uuid");
            InputStream in;
            BufferedReader br;
            in = process.getInputStream();
            br = new BufferedReader(new InputStreamReader(in));
            while (in.read() != -1) {
                result = br.readLine();
            }
            br.close();
            in.close();
            process.destroy();
            System.out.println("獲取序列號(hào):" + result);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return result;
    }
    /**
     * bois版本號(hào)(linux)
     *
     * @return
     */
    public static String getBoisVersion() {
        String result = "";
        Process p;
        try {
            // 管道
            p = Runtime.getRuntime().exec("sudo dmidecode -s bios-version");
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                result += line;
                break;
            }
            br.close();
        } catch (IOException e) {
            System.out.println("獲取主板信息錯(cuò)誤");
        }
        return result;
    }
}

以上就是java獲取機(jī)器碼實(shí)現(xiàn)demo的詳細(xì)內(nèi)容,更多關(guān)于java獲取機(jī)器碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解

    老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解

    這篇文章主要介紹了Java?網(wǎng)絡(luò)編程?——?Socket?相關(guān)知識(shí),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Java中的WeakHashMap簡(jiǎn)析

    Java中的WeakHashMap簡(jiǎn)析

    這篇文章主要介紹了Java中的WeakHashMap簡(jiǎn)析,Map 的子類常見(jiàn)的有 HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap 等,WeakHashMap,直譯就是,虛弱的 HashMap,從名字可得知其和 HashMap 有關(guān),需要的朋友可以參考下
    2023-09-09
  • 一文詳解如何在idea中快速搭建一個(gè)Spring?Boot項(xiàng)目

    一文詳解如何在idea中快速搭建一個(gè)Spring?Boot項(xiàng)目

    IntelliJ IDEA作為Java開(kāi)發(fā)者的?首選IDE?,深度集成Spring Boot支持,可一鍵生成項(xiàng)目骨架、智能配置依賴,這篇文章主要介紹了如何在idea中快速搭建一個(gè)Spring?Boot項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • SpringBoot IOC容器初始化的全流程

    SpringBoot IOC容器初始化的全流程

    Spring Boot IOC初始化流程核心在AbstractApplicationContext.refresh方法中,依次完成BeanFactory準(zhǔn)備、后置處理器執(zhí)行、Bean加載、Tomcat啟動(dòng)及緩存清理,最終實(shí)現(xiàn)容器啟動(dòng)與Bean實(shí)例化
    2025-09-09
  • 解決Process.getInputStream()阻塞的問(wèn)題

    解決Process.getInputStream()阻塞的問(wèn)題

    這篇文章主要介紹了解決Process.getInputStream()阻塞的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java統(tǒng)計(jì)字符串中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)

    Java統(tǒng)計(jì)字符串中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)

    在日常編程中,我們經(jīng)常需要處理字符串?dāng)?shù)據(jù),本文將介紹如何使用Java語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的程序,可以接收用戶輸入的一行字符,并分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù),希望對(duì)大家有所幫助
    2026-01-01
  • Spring Boot統(tǒng)一返回體的踩坑記錄

    Spring Boot統(tǒng)一返回體的踩坑記錄

    這篇文章主要給大家介紹了關(guān)于Spring Boot統(tǒng)一返回體踩坑的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解

    SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解

    這篇文章主要介紹了SpringBoot中dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)的應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • mybatis 使用jdbc.properties文件設(shè)置不起作用的解決方法

    mybatis 使用jdbc.properties文件設(shè)置不起作用的解決方法

    這篇文章主要介紹了mybatis 使用jdbc.properties文件設(shè)置不起作用的解決方法,需要的朋友可以參考下
    2018-03-03
  • Maven項(xiàng)目中出現(xiàn)“非法字符:?65279”錯(cuò)誤的解決辦法

    Maven項(xiàng)目中出現(xiàn)“非法字符:?65279”錯(cuò)誤的解決辦法

    在使用Maven進(jìn)行項(xiàng)目構(gòu)建時(shí),有時(shí)會(huì)遇到一些意想不到的問(wèn)題,其中一個(gè)常見(jiàn)的問(wèn)題是遇到非法字符???65279??,這個(gè)字符通常被稱為零寬度無(wú)斷行空格(Zero-width?no-break?space),本文將詳細(xì)介紹如何識(shí)別和解決這個(gè)問(wèn)題,需要的朋友可以參考下
    2025-12-12

最新評(píng)論

乌拉特中旗| 高清| 天长市| 广宗县| 新巴尔虎左旗| 聂拉木县| 安西县| 钟祥市| 顺平县| 沐川县| 鄂伦春自治旗| 周宁县| 玉田县| 罗江县| 安吉县| 登封市| 女性| 舞阳县| 永登县| 钦州市| 宣化县| 嘉定区| 娄底市| 固原市| 出国| 梁山县| 务川| 台安县| 通榆县| 磐安县| 济阳县| 泰和县| 阳春市| 宜宾市| 南部县| 巩留县| 商都县| 宽城| 合江县| 丁青县| 大名县|