[个人总结]-java常用方法

1.获取项目根路径

user.dir是一个系统属性,表示用户当前的工作目录,大多数情况下,用户的当前工作目录就是java项目的根目录(src文件的同级路径)

System.getProperty("user.dir")

结果:D:\code\idea\GetInfo

2.java中执行CMD命令

//创建目录结构/**目录结构:运行目录\包类型\pr_path\pr_label* */String property = System.getProperty("user.dir"); //当前工作目录,src文件的同级路径String dirString = property + "\\" + (prPath.replace("/", "\\")) + "\\" + prLabel;System.out.println("创建的目录结构: " + dirString);String createPrWorkspaceCommond = "mkdir " + dirString;try {Process process = Runtime.getRuntime().exec("cmd.exe /c " + createPrWorkspaceCommond + " >>p4Download.txt");try {int waitFor = process.waitFor(); //用于阻塞进程 下载完版本后才可进行后续操作} catch (InterruptedException e1) {e1.printStackTrace();}} catch (IOException e1) {e1.printStackTrace();}

3.获取线程

        //取消下载按钮downloadProgres.dispose();ThreadGroup threadGroup = Thread.currentThread().getThreadGroup();int i = threadGroup.activeCount();Thread[] threads = new Thread[i];threadGroup.enumerate(threads);System.out.println("线程总个数:" + i);for (int j = 0; j < i; j++) {String name = threads[j].getName();System.out.println("第" + j + "个线程名为:" + name);if ("DownloadThread".equals(name)) {if (threads[j].isAlive()) {threads[j].interrupt();System.out.println("线程-" + threads[j].getName() + " 已中断");}}}

4.匿名内部类多线程动态更新swing窗口

new Thread(new Runnable() {
    @Override
    public void run() {
        downloadProgress.getProgressBar1().setString("");
    }
}).start();

5.java调用cmd执行命令

try {
    // 调用CMD命令
    String command = "ipconfig";
    Process process = Runtime.getRuntime().exec(command);
    // 获取命令输出结果
    InputStream inputStream = process.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "GBK")); // 设置编码为GBK
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    // 等待命令执行完成
    process.waitFor();
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

6.java调用cmd执行ipconfig命令

1.基础命令

cmd /c dir 是执行完dir命令后关闭命令窗口。

cmd /k dir 是执行完dir命令后不关闭命令窗口。

cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。

cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭

2.执行完毕后不关闭cmd页面

private static void cmdExec() {

try {

Runtime.getRuntime().exec("cmd /k start cmd.exe /k ipconfig");

} catch (Exception e) {

log.error(e.getMessage(), e);

}

}

7.MD5加密工具类
方式一:

package cn.tx.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密的工具类
 */
public class MD5Utils {

    /**
     * 使用md5的算法进行加密
     */
    public static String encrypt(String content) {
        byte[] secretBytes = null;
        try {
            secretBytes = MessageDigest.getInstance("md5").digest(content.getBytes());
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("没有md5这个算法!");
        }
        String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
        // 如果生成数字未满32位,需要前面补0
        for (int i = 0; i < 32 - md5code.length(); i++) {
            md5code = "0" + md5code;
        }
        return md5code;
    }

    public static void main(String[] args) {
        System.out.println(encrypt("admin"));
    }

}

方式二:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class MD5Util {
 
    // 加密方法:接收一个字符串明文,返回使用 MD5 加密后的哈希值
    public static String encrypt(String plaintext) throws NoSuchAlgorithmException {
        // 使用 MD5 算法创建 MessageDigest 对象
        MessageDigest md = MessageDigest.getInstance("MD5");
        // 更新 MessageDigest 对象中的字节数据
        md.update(plaintext.getBytes());
        // 对更新后的数据计算哈希值,存储在 byte 数组中
        byte[] digest = md.digest();
        // 将 byte 数组转换为十六进制字符串
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            sb.append(String.format("%02x", b & 0xff));
        }
        // 返回十六进制字符串
        return sb.toString();
    }
 
    // 解密方法:接收一个字符串明文和一个使用 MD5 加密后的哈希值,返回解密结果(true 表示匹配,false 表示不匹配)
    public static boolean decrypt(String plaintext, String encrypted) throws NoSuchAlgorithmException {
        // 调用加密方法计算出明文的哈希值
        String decrypted = encrypt(plaintext);
        // 比较计算得到的哈希值和输入的哈希值是否相同
        return decrypted.equals(encrypted);
    }
}

8.管理权限运行命令

需要管理员权限执行的命令可以通过执行bat脚本

如:拷贝文件到C:\Windows\System32目录下需要管理员权限

获取管理员权限:

1、新建脚本,如copyFile.bat,内容如下

@echo off

chcp 65001
echo 正在复制文件到System32目录...
cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
copy /Y "D:\Code\swingTest\123shsghajw.exe" "%windir%\System32\"
echo 复制完成。
pause

注:

  • %windir%    表示windows系统文件的安装目录,即:C:\windows
  • 将以下代码放在要获取管理员权限执行的代码前
  • chcp 65001   更改编码为UTF-8

%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit

2、java中使用exec执行脚本

Runtime.getRuntime().exec("cmd /c copyFile.bat",null,new File(System.getProperty("user.dir")));

注:user.dir是一个系统属性,表示用户当前的工作目录,大多数情况下,用户的当前工作目录就是java项目的根目录(src文件的同级路径)

9.java中指定字符串编码

new String("我喜欢java".getBytes(), StandardCharsets.UTF_8);

10.bat脚本中指定编码

chcp 936

936 代表的是GBK 编码,是专门针对中文的编码

11.Properties类读写文件

读文件

 File file = new File(System.getProperty("user.dir") + "\\my.properties");InputStream inputStream = null;if (file.exists()) {Properties properties = new Properties();try {inputStream = new FileInputStream(file);properties.load(inputStream);for (String propertyName : properties.stringPropertyNames()) {Object propertyValue = properties.get(propertyName);LOGGER.info("属性名:" + propertyName + " 属性值:" + propertyValue);if ("username".equals(propertyName)) {textFieldUsername.setText((String) propertyValue);}if ("password".equals(propertyName)) {passwordFieldPassword.setText((String) propertyValue);}}} catch (IOException e) {throw new RuntimeException(e);} finally {try {inputStream.close();} catch (IOException e) {throw new RuntimeException(e);}}}

写文件:

if (checkBox1.isSelected()) {String username = textFieldUsername.getText();String password = new String(passwordFieldPassword.getPassword());File file = new File(System.getProperty("user.dir") + "\\my.properties");if (!file.exists()) {try {boolean newFile = file.createNewFile();} catch (IOException ex) {throw new RuntimeException(ex);}}OutputStream outputStream = null;try {outputStream = new FileOutputStream(file);Properties properties = new Properties();properties.setProperty("username", username);properties.setProperty("password", password);properties.store(outputStream, "账号密码");} catch (IOException ex) {throw new RuntimeException(ex);} finally {try {outputStream.close();} catch (IOException ex) {throw new RuntimeException(ex);}}}

12.自定义加密解密

package com.example;/*** @Auther lmy* @date 2024-06-04 2:27* @Description This is description of code*/
public class MDUtil {//加密public static String encrypt(String plaintext) {String hexString = "";char[] charArray = plaintext.toCharArray();for (int i = 0; i < charArray.length; i++) {if(i==0){hexString = hexString + Integer.toHexString(charArray[i]);continue;}hexString = hexString + "-" + Integer.toHexString(charArray[i]);}return hexString;}public static String decrypt(String hexStrings) {String chars = "";for (String s : hexStrings.trim().split("-")) {char ch = (char) Integer.parseInt(s, 16);chars = chars + ch;}return chars;}}

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

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

相关文章

C++实现,简单的命令行交互框架

目录 背景 背景 在实际开发中&#xff0c;经常需要有对端测试程序&#xff0c;配合自己的程序&#xff0c;验证功能、逻辑等。面对繁杂、多变的需求&#xff0c;如果对端程序设计得不够灵活&#xff0c;则无法提升工作效率&#xff0c;如果能够与对端程序交互&#xff0c;通过…

嵌入式系统错误处理与日志记录

在嵌入式系统中&#xff0c;错误处理和日志记录是确保系统稳定性和可维护性的关键组成部分。有效的错误处理策略可以减少系统故障&#xff0c;而详尽的日志记录可以帮助开发者快速定位问题原因。本文将探讨嵌入式系统中的错误处理机制和日志记录策略&#xff0c;并提供相应的代…

Spring Cloud 微服务集成Sentinel实现服务熔断降级

文章目录 一、前言二、技术思路及方案2.1 实现思路2.2 实现方案2.2.1 nacos动态数据源实现类关系图 三、功能实现3.1 快速集成方案3.1.1 引入依赖3.1.2 服务端熔断降级3.1.3 feign调用降级 四、扩展4.1 SPI机制4.2 自定义Slot实现4.3 基于 Sentinel 实现 Feign 全局异常兜底4.3…

ubuntu, esp-idf, arduino

1&#xff0c; 把 esp-idf 文件夹拷贝到 ubuntu&#xff0c; 不是拷贝 zip。 这样做是为了在 ubuntu 里能检测到 git 2&#xff0c; 把 esp-idf 里的 hello-world 拷贝出来 3&#xff0c; 在 hello-world 里建立文件夹 components, 把 arduino 文件夹拷贝进去 esp-idf 和 ar…

Html5如何播放hls格式的视频

目录 一、什么情况下需要播放 二、hls的原理 1、 切片 2、编码 3、分发 4、M3U8文件 5、客户端请求 6、动态码率调整 7、缓存 8、实时性 三、方法一&#xff1a;使用hls.js播放 四、方法二&#xff1a;使用video.js播放 一、什么情况下需要播放 当前端需要嵌入设备视…

[数组] 子数组最大平均数

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,12,-5,-6,50,3], k 4 输出&#xff…

操作系统教材第6版——个人笔记5

3.2 单连续分区存储管理 3.2.1 单连续分区存储管理 单连续分区存储管理 每个进程占用一个物理上完全连续的存储空间(区域) 单用户连续分区存储管理固定分区存储管理可变分区存储管理 单用户连续分区存储管理 主存区域划分为系统区与用户区设置一个栅栏寄存器界分两个区域…

每日题库:Huawe数通HCIA——13

所有资料均来源自网络&#xff0c;但个人亲测有效&#xff0c;特来分享&#xff0c;希望各位能拿到好成绩&#xff01; PS&#xff1a;别忘了一件三连哈&#xff01; 今日题库&#xff1a; 186. 下列协议中属于动态IGP路由协议的是&#xff1f;-单选 A.stA.tiC. B.OSPF c…

使用Django Channels和WebSocket构建聊天应用

一、引言 WebSocket提供了一种在客户端和服务器之间进行实时双向通信的方式。结合Django Channels&#xff0c;我们可以轻松地在Django项目中实现WebSocket功能。本文将通过一个简单的聊天应用示例&#xff0c;展示如何使用Django Channels和WebSocket。 二、环境搭建 项目的…

Nacos的下载使用

下载 本地Java8Maven环境 下载地址 https://github.com/alibaba/nacos/releases使用 解压安装包&#xff0c;直接运行bin目录下的startup.cmd 账号密码都是nacos

maven 本地打包

文章目录 1. 简介Maven和POM的基本概念本地打包的意义和场景 2. Maven POM 文件结构POM 文件的基本结构重要的POM元素介绍 3. Maven 本地打包的关键配置spring-boot-maven-pluginmaven-surefire-plugin的作用和配置如何配置和使用Maven Surefire插件skip 页签 maven-compiler-p…

Win32和c++11多线程

Win32和c11多线程 一、概念1.线程的特点线程内核对象线程控制块线程是独立调度和分派的基本单位共享进程的资源 2.线程的上下文切换引起上下文切换的原因 3.线程的状态 二、Windows多线程API1.CreateThread创建线程2.获取线程ID3.关闭线程句柄4.挂起线程5.恢复线程6.休眠线程的…

算法金 | 读者问了个关于深度学习卷积神经网络(CNN)核心概念的问题

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 读者问了个关于卷积神经网络核心概念的问题&#xff0c;如下&#xff0c; 【问】神经元、权重、激活函数、参数、图片尺寸&#xff0c;卷…

手机相册的排列方式探讨

不论你是不是程序员&#xff0c;你一定留意过一个问题&#xff1a;相册 App 基本都将图片裁剪成了居中的 1:1 正方形。那么手机相册 App&#xff0c;为什么要将图片切割成 1:1 正方形&#xff0c;然后以网格排列&#xff1f;是行业标准吗&#xff1f; 自适应图片宽度的图库&a…

vscode 离线下载指定版本插件和安装方法

1、背景 由于不同的vscode版本需要安装对应的插件版本&#xff0c;一般情况下&#xff0c;vscode版本会落后于vscode插件库提供的可以下载的插件版本&#xff0c;网页一般只会提供最新的插件下载版本&#xff0c;因此我们需要下载指定的版本需要采取一些措施。 2、获取需要安…

c语言速成系列指针上篇

那么这一篇文章带大家学习一下c语言的指针的概念、使用、以及一些注意事项。 指针的概念 指针也就是内存地址&#xff0c;指针变量是用来存放内存地址的变量。就像其他变量或常量一样&#xff0c;您必须在使用指针存储其他变量地址之前&#xff0c;对其进行声明。 大白话讲解…

【数据集划分】oracle数据集划分(总结版)

【数据集划分】假如你有接近百万条oracle数据库数据&#xff08;成真版&#xff09; 写在最前面最终代码原理&#xff1a;生成随机索引并打乱顺序示例作用应用场景 遇到报错&#xff1a;ORA-01795&#xff0c;通过CTE&#xff08;Common Table Expressions&#xff09;和窗口函…

npm:Node.js包管理器的使用指南

一、引言 npm&#xff08;Node Package Manager&#xff09;是Node.js的官方包管理工具&#xff0c;它不仅仅是一个包管理器&#xff0c;更是一个完整的生态系统。npm允许开发者分享和重用代码片段&#xff0c;这些代码片段被称为“包”或“模块”。本文将详细介绍npm的使用场景…

Next.js Tailwind CSS UI组件

摘要&#xff1a; 官网 今天公司使用到一个前端ui框架——Next.js Tailwind CSS UI组件&#xff01;这从头构建一个AI驱动的前端UI组件生成器&#xff0c;生成Next.js Tailwind CSS UI组件&#xff1a; 1、用Next.js、ts和Tailwind CSS构建UI组件生成器Web应用程序。 2、用Copi…

Ansible——command 模块

目录 基本用法 指定主机 指定用户 指定不同的清单文件 通过sudo执行 使用更多的模块参数 1.使用特定的模块参数&#xff0c;例如chdir&#xff1a; 2.使用creates和removes参数&#xff1a; creates参数 removes参数 并发控制 详细输出 例外处理 基本语法 常用参…