工具类(系统名称架构)

import java.util.Locale;/*** 系统名称架构工具类* 可直接引用使用* 例如:* String name = OSUtils.OPERATING_SYSTEM_NAME.name()* String arch = OSUtils.OPERATING_SYSTEM_ARCH*/
public class OSUtils {/*** 系统名称*/private final static PlatformEnum OPERATING_SYSTEM_NAME;/*** 系统架构*/private final static String OPERATING_SYSTEM_ARCH;/*** 标准化处理,提出字符串中非a-z0-9的字符* @param value* @return*/private static String normalize(String value) {return value == null ? "" : value.toLowerCase(Locale.US).replaceAll("[^a-z0-9]+", "");}/*** 标准化处理,返回系统架构的标准化字符串* @param value* @return*/private static String normalizeArch(String value) {value = normalize(value);if (value.matches("^(x8664|amd64|ia32e|em64t|x64)$")) {return "x86_64";} else if (value.matches("^(x8632|x86|i[3-6]86|ia32|x32)$")) {return "x86_32";} else if (value.matches("^(ia64w?|itanium64)$")) {return "itanium_64";} else if ("ia64n".equals(value)) {return "itanium_32";} else if (value.matches("^(sparc|sparc32)$")) {return "sparc_32";} else if (value.matches("^(sparcv9|sparc64)$")) {return "sparc_64";} else if (value.matches("^(arm|arm32)$")) {return "arm_32";} else if ("aarch64".equals(value)) {return "aarch_64";} else if (value.matches("^(mips|mips32)$")) {return "mips_32";} else if (value.matches("^(mipsel|mips32el)$")) {return "mipsel_32";} else if ("mips64".equals(value)) {return "mips_64";} else if ("mips64el".equals(value)) {return "mipsel_64";} else if (value.matches("^(ppc|ppc32)$")) {return "ppc_32";} else if (value.matches("^(ppcle|ppc32le)$")) {return "ppcle_32";} else if ("ppc64".equals(value)) {return "ppc_64";} else if ("ppc64le".equals(value)) {return "ppcle_64";} else if ("s390".equals(value)) {return "s390_32";} else {return "s390x".equals(value) ? "s390_64" : value;}}/*** 初始化执行,获取系统名称和系统架构,做final变量赋值,可直接引用*/static {String name = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);String arch = System.getProperty("os.arch").toLowerCase(Locale.ENGLISH);if (name.startsWith("linux")) {OPERATING_SYSTEM_NAME = PlatformEnum.LINUX;} else if (!name.startsWith("mac") && !name.startsWith("darwin")) {if (name.startsWith("windows")) {OPERATING_SYSTEM_NAME = PlatformEnum.WINDOWS;} else {OPERATING_SYSTEM_NAME = PlatformEnum.UNKNOWN;}} else {OPERATING_SYSTEM_NAME = PlatformEnum.MACOSX;}OPERATING_SYSTEM_ARCH = normalizeArch(arch);}/*** 系统名称枚举*/public enum PlatformEnum {WINDOWS,LINUX,MACOSX,UNKNOWN;}public static void main(String[] args) {System.out.println(OSUtils.OPERATING_SYSTEM_NAME.name());System.out.println(OSUtils.OPERATING_SYSTEM_ARCH);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA同城货运搬家系统的运营方案

随着社会经济的发展和人民生活水平的提高,同城货运搬家市场日益繁荣。为了满足消费者对搬家服务的高效、便捷和安全的需求,本文将介绍一种基于JAVA编程语言的同城货运搬家系统,并阐述其运营方案。 一、市场分析 同城货运搬家市场具有广阔的…

1.Python3-介绍

题记 python3介绍 查看python版本 python -V 或 python --version 进入交互式编程模式 在控制台输入: python Hello World 输出Hello World: print("Hello, World!")执行脚本文件 python3 文件名.py 后记 觉得有用可以点赞或收藏&#xf…

springboot苍穹外卖实战:六、redis(Spring Data Redis)

Spring Data Redis 简介 网址:https://spring.io/projects/spring-data-redis Spring Data Redis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下&#xff1…

设置博客域名跳转实现方案(免费版)

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

《低代码指南》——维格云机器人常见报错怎么解决?

在使用维格机器人调用维格表的API过程中,可能会出现机器人执行结果未达到预期的情况,此时可能是机器人运行出现了问题;通过点击这个机器人右上角的“运行历史”可以查看运行记录,通过对运行记录的分析,可以推断出问题所在,然后进行修改。 而对于运行历史的分析,主要是针…

S/4 HANA 中的 Email Template

1 如何创建Email Template? 没有特定的事务用于创建电子邮件模板,我们可以将其创建为 SE80 事务中的存储库对象,如下所示: 1,选择包(或本地对象)并右键单击。 2,选择“创建”->“更多”->“电子邮件模板” 尽管如此,对于已有的Email Template,可以使用程序…

[ThinkPHP]源码阅读:Model的获取器

目录 1、ThinkPHP组件版本 2、业务Model代码 3、阅读框架源码 4、跳过获取器获取原始数据写法 1、ThinkPHP组件版本 topthink/think-orm v2.0.58 topthink/think-helper v3.1.6 2、业务Model代码 原理:Model通过调用toArray方法使用自定义的获取器 3、阅读框架…

【ELFK】之Filebeat

一、Filebeat介绍 1、Filebeat是什么? Filebeat适用于转发和集中数据的轻量级传送工具,Filebeat监视了指定的日志文件或位置,收集日志事件,并将他们转发到Elasticsearch或Logstash进行索引。 **Filebeat的工作方式:*…

uniapp 使用 UDP

一、搭建UDP服务端,nodejs const dgram require("dgram");const message Buffer.from("你好,这是一个UDP广播消息"); const port 3000; // 用你想要的端口替换这里// 创建一个UDP套接字 const socket dgram.createSocket("…

MySQL分布式架构设计与实现

随着互联网的快速发展,数据量呈现爆炸式增长的趋势。传统的单机数据库已经无法满足大规模数据处理的需求,因此分布式数据库成为了一种重要的解决方案。本文将介绍MySQL分布式架构的设计与实现,包括数据分片、负载均衡和故障恢复等方面的内容&…

分布式ID系统设计(2)

接上文 https://editor.csdn.net/md/?articleId=133988963 类snowFlake 方案 应用举例 mongoDB ObjectID 就是一个典型的实现。数据库生成 以MySQL举例 利用给字段设置AUTO-INCREMENT来保证ID自增,每次业务使用SQL拿到MySQL的ID 这种方案的优缺点: 优点 1 简单。利用数据库实…

【设计模式】第22节:行为型模式之“状态模式”

一、简介 状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。该模式允许对象内部状态改变使改变它的行为。 二、适用场景…

Linux RPM包离线安装mysql数据库

MySQL 推荐使用 RPM 包进行 Linux 平台下的安装,因为 RPM 包的安装和卸载都很方便,通过简单的命令就可以实现。本节主要介绍 Linux 下如何使用 RPM 包安装和配置 MySQL。本节的安装环境为 CentOS 6.5,选用 el6 的安装包。读者应根据自己的系统…

系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY

一、演示Spring的传播行为(MANDATORY) 1.1、StockServiceImplMANDATORY /*** Author : 一叶浮萍归大海* Date: 2023/10/30 15:43* Description: 演示MANDAORY的传播行为* 外部不存在事务:抛出异常 No existing transaction found for…

day47

今日内容详细 overflow溢出属性 visible 默认值,内容不会被修剪,会呈现在元素框之外 hidden 内容会被修剪,并且其余内容是不可见的 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余内容 auto 如果内容被修剪&#xff0c…

C#在类中申明成员数组变量的格式

在C#中,在类中申明成员数组变量的格式如下: 访问修饰符 数据类型[] 变量名; 其中: 访问修饰符表示该成员变量的访问权限,可以是public、private、protected、internal等修饰符之一;数据类型表示数组元素的类型&…

用Python实现批量下载文件——代理ip排除万难

目录 前言 一、准备工作 二、批量下载文件 三、添加代理ip 四、处理异常 完整代码 总结 前言 下载文件是我们在日常工作中常常要做的一件事情。当我们需要从互联网上批量下载大量文件时,手动一个一个去下载显然不够高效。为了解决这个问题,我们可…

【Amazon】AWS实战 | 快速发布安全传输的静态页面

文章目录 一、实验架构图二、实验涉及的AWS服务三、实验操作步骤1. 创建S3存储桶,存放网站网页2. 使用ACM建立域名证书3. 设置Cloudfront,连接S3存储桶✴️4. 设置Route53,解析域名服务5. 通过CLI工具上传网页更新内容【可选】 四、实验总结 …

ReentrantLock(可重入锁)

ReentrantLock了解吗?是公平锁吗? ReentrantLock(可重入锁) 实现了Lock接口,是一个可重入且独占式的锁,和synchronized关键字类似,不过ReentrantLock更灵活、强大,增加了轮询、超时、中断、公平锁和非公平锁等高级功能…

【原创】java+swing+mysql无偿献血管理系统设计与实现

摘要: 无偿献血管理系统是为了实现无偿献血规范化、有序化、高效化的管理而设计的。本文主要介绍使用java语言开发一个基于C/S架构的无偿献血管理系统,提高无偿献血管理的工作效率。 功能分析: 系统主要提供给管理员、无偿献血人员&#x…