Util和utils

Util

FieldStats

这段代码定义了一个名为`FieldStats`的Java类,位于`com.cqupt.software_1.Util`包中。它使用了`lombok`库的`@Data`和`@AllArgsConstructor`注解,这些注解帮助生成了`getter`、`setter`、`toString`等方法,以及包含所有参数的构造函数。类中有三个字段:
- `missingRate`:表示缺失率。
- `mean`:表示平均值。
- `variance`:表示方差。构造函数接受这三个字段作为参数,并将它们赋值给对应的字段。这个类主要用于存储字段的统计信息,例如在数据分析中计算每个字段的缺失率、平均值和方差等统计数据。
package com.cqupt.software_1.Util;import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class FieldStats {private double missingRate;private double mean;private double variance;
}

ImportXlsxToMysql

这段代码是一个Java程序,它用于将Excel文件(.xlsx格式)中的数据导入到MySQL数据库中。让我详细介绍一下:1. `ImportXlsxToMysql` 类包含了 `main` 方法,是程序的入口点。它主要负责读取Excel文件中的数据,并将数据插入到MySQL数据库中。2. 在 `main` 方法中,首先定义了一些变量,如 `xlsxFilePath` 存储了Excel文件的路径,`dbUrl` 存储了数据库的URL,`username` 和 `password` 分别是数据库的用户名和密码,`tableName` 是要插入数据的表名。3. 在 `try-with-resources` 语句中,打开文件输入流 `fileInputStream`,并使用 `WorkbookFactory.create(fileInputStream)` 创建一个 Workbook 对象,用于处理 Excel 文件。然后,通过 `DriverManager.getConnection` 方法建立数据库连接。4. 通过 `workbook.getSheetAt(0)` 获取Excel文件的第一个工作表,并通过 `sheet.getRow(0)` 获取表头行,从中获取列数。5. 构建 SQL 插入语句。通过遍历表头行的每一列,获取列名,并构建插入语句的列部分。然后通过遍历列数,构建插入语句的值部分,同时使用占位符 '?'。6. 执行插入操作。通过准备好的 SQL 插入语句创建 `PreparedStatement` 对象,然后遍历 Excel 文件的每一行,设置参数值,并执行插入操作。7. `getCellValueAsString` 方法用于将单元格的值以字符串的形式返回。它接受一个 `Cell` 对象作为参数,首先检查单元格的类型,然后将其值转换为相应类型的字符串,并返回。8. 最后,在 `catch` 块中捕获可能出现的异常,例如 `IOException` 和 `SQLException`,并打印异常信息。这个程序的功能是将 Excel 文件中的数据导入到 MySQL 数据库中的指定表中,它支持包含不同数据类型的单元格值,并能处理空单元格。
package com.cqupt.software_1.Util;import org.apache.poi.ss.usermodel.*;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class ImportXlsxToMysql {public static void main(String[] args) {String xlsxFilePath = "C:\\Users\\hp\\Desktop\\example.xlsx";String dbUrl = "jdbc:mysql://10.16.48.219:3306/result_save";String username = "root";String password = "111111";String tableName = "";try (FileInputStream fileInputStream = new FileInputStream(xlsxFilePath);Workbook workbook = WorkbookFactory.create(fileInputStream);Connection connection = DriverManager.getConnection(dbUrl, username, password)) {Sheet sheet = workbook.getSheetAt(0);// 获取表头行Row headerRow = sheet.getRow(0);int columnCount = headerRow.getLastCellNum();// 构建 SQL 插入语句StringBuilder sqlBuilder = new StringBuilder();sqlBuilder.append("INSERT INTO ").append(tableName).append(" (");for (int i = 0; i < columnCount; i++) {String columnName = getCellValueAsString(headerRow.getCell(i));sqlBuilder.append(columnName);if (i < columnCount - 1) {sqlBuilder.append(", ");}}sqlBuilder.append(") VALUES (");for (int i = 0; i < columnCount; i++) {sqlBuilder.append("?");if (i < columnCount - 1) {sqlBuilder.append(", ");}}sqlBuilder.append(")");String insertSql = sqlBuilder.toString();// 准备插入语句try (PreparedStatement statement = connection.prepareStatement(insertSql)) {// 遍历行for (int rowIndex = 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {Row row = sheet.getRow(rowIndex);// 设置参数值for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {Cell cell = row.getCell(columnIndex);String cellValue = getCellValueAsString(cell);statement.setString(columnIndex + 1, cellValue);}// 执行插入操作statement.executeUpdate();}}System.out.println("Data imported successfully!");} catch (IOException | SQLException e) {e.printStackTrace();}}private static String getCellValueAsString(Cell cell) {if (cell == null) {return "";}CellType cellType = cell.getCellType();String cellValue;if (cellType == CellType.STRING) {cellValue = cell.getStringCellValue();} else if (cellType == CellType.NUMERIC) {cellValue = String.valueOf(cell.getNumericCellValue());} else if (cellType == CellType.BOOLEAN) {cellValue = String.valueOf(cell.getBooleanCellValue());} else if (cellType == CellType.FORMULA) {cellValue = cell.getCellFormula();} else {cellValue = "";}return cellValue;}
}

SecurityUtil

这段代码定义了一个名为`SecurityUtil`的Java类,它包含了一个静态方法`hashDataSHA256`,用于对输入的字符串数据使用SHA-256算法进行哈希加密。`hashDataSHA256`方法接受一个`String`类型的参数`data`,这是需要被加密的原始数据。方法内部首先尝试获取SHA-256算法的实例,如果获取失败(例如,因为Java环境不支持该算法),则通过`NoSuchAlgorithmException`异常处理。如果算法实例成功获取,方法将原始数据转换为字节数组,并使用`MessageDigest`的`digest`方法对其进行加密。`digest`方法返回一个字节数组,该数组包含了SHA-256算法加密后的结果。接下来,方法将加密后的字节数组转换为十六进制的字符串表示形式。它使用`StringBuilder`类来构建这个十六进制字符串,并通过`String.format`方法将每个字节转换为两个字符的十六进制形式。最后,方法返回生成的十六进制字符串,该字符串代表了原始数据的SHA-256哈希值。如果发生异常,方法将打印堆栈跟踪信息并返回`null`。`SecurityUtil`类可以被其他Java程序调用,以便对数据进行SHA-256加密。这通常用于密码加密、数据完整性校验等安全相关的应用场景。
package com.cqupt.software_1.Util;import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public class SecurityUtil {/****  SHA-256  加密对密码* @param data* @return*/public static String hashDataSHA256(String data) {try {MessageDigest md = MessageDigest.getInstance("SHA-256");byte[] hashInBytes = md.digest(data.getBytes(StandardCharsets.UTF_8));// Convert the byte array to a hexadecimal stringStringBuilder sb = new StringBuilder();for (byte b : hashInBytes) {sb.append(String.format("%02x", b));}return sb.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}
}

utils

HTTPUtils

这段代码定义了一个名为 `HTTPUtils` 的 Java 类,它包含了一个静态方法 `postRequest`,用于向指定的 HTTP 服务器发送 POST 请求,并返回服务器响应的 JSON 数据。
`postRequest` 方法接受两个参数,第一个参数是要发送的数据对象 `paramData`,第二个参数是请求路径 `path`。
方法首先构建了一个 URI 对象,表示请求的完整路径,这个路径由 `rootPath` 和传入的 `path` 拼接而成。
然后,创建了一个 `HttpPost` 对象,用于执行 POST 请求,同时创建了一个 `HttpClient` 对象来执行 HTTP 请求。
接下来,使用 `ObjectMapper` 对象将传入的 `paramData` 对象转换为 JSON 格式的字符串 `jsonData`。在转换过程中,允许非数值字符的存在,这一特性通过 `objectMapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true)` 实现。
接着,将 JSON 数据设置到请求的实体中,同时设置请求体的编码为 UTF-8。
设置请求头部为 `application/json; charset=UTF-8`,指明请求体的类型和编码格式。
执行 HTTP 请求,得到服务器的响应对象 `response`,然后将响应实体中的数据转换为字符串 `responseData`。
最后,使用 `ObjectMapper` 将响应数据字符串转换为 JSON 对象 `JsonNode`,并返回该对象。
这个 `HTTPUtils` 类提供了一个方便的工具方法,可以用于在 Java 程序中向指定的 HTTP 服务器发送 POST 请求,并获取服务器返回的 JSON 数据。
package com.cqupt.software_1.utils;import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;public class HTTPUtils {public static final String rootPath = "http://localhost:5000/";public static JsonNode postRequest(Object paramData, String path) throws URISyntaxException, IOException {URI uri = new URI(rootPath+path);// 创建http POSTHttpPost httpPost = new HttpPost(uri);HttpClient httpClient = HttpClients.createDefault();ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true);String jsonData = objectMapper.writeValueAsString(paramData);//        httpPost.setHeader(HttpHeaders.CONTENT_TYPE,"application/json");
//        httpPost.setEntity(new StringEntity(jsonData)); // 设置请求体// 设置请求体编码为 UTF-8StringEntity entity = new StringEntity(jsonData, StandardCharsets.UTF_8);httpPost.setEntity(entity);httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8"); // 设置请求头部// 执行请求HttpResponse response = httpClient.execute(httpPost);String responseData = EntityUtils.toString(response.getEntity());JsonNode jsonNode = objectMapper.readValue(responseData, JsonNode.class);return jsonNode;}
}

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

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

相关文章

区块链会议投稿资讯CCF A--USENIX Security 2025 截止9.4、1.22 附录用率

会议名称&#xff1a;34th USENIX Security Symposium CCF等级&#xff1a;CCF A类学术会议 类别&#xff1a;网络与信息安全 录用率&#xff1a;2023年接收率29%&#xff0c;2024录用的区块链相关文章请查看 Symposium Topics System security Operating systems security …

vue实现可拖拽移动悬浮球

封装悬浮球组件&#xff0c;文件名s-icons.vue <template><div ref"icons" class"icons-container" :style"{ left: left px, top: top px }"><slot></slot></div> </template> <script> export …

国产化服务器开启NTP功能并向NTP时钟服务器同步

1.备份/etc/chrony.conf文件&#xff1b; cp -rp /etc/chrony.conf /etc/chrony.conf.bak.20240522 2.修改chrony.conf文件&#xff0c;增加NTP时钟信息。&#xff08;客户端填写时钟同步服务器的IP地址或者域名&#xff0c;我这里写的IP地址。下面Allow NTP Client是只允许…

Mysql 的 binlog 有几种格式?

MySQL 的二进制日志&#xff08;binlog&#xff09;有三种格式&#xff0c;每种格式都有其特定的用途和优缺点。以下是详细描述&#xff1a; 1. STATEMENT 描述: 记录的是 SQL 语句。特点: 每条更改数据的 SQL 语句都会记录在 binlog 中。相对较小&#xff0c;因为只记录了 S…

数字图像处理冈塞雷斯第四版课后习题答案【英文原版】

第二章 第三章 . 第四章 傅里叶变换是一个线性过程&#xff0c;而计算梯度的平方根和平方根则是非线性运算。傅里叶变换可以用来计算微分的差值(如问题4.50)&#xff0c;但必须在空间域中直接计算平方和平方根值。 (a)实际上&#xff0c;由于高通操作&#xff0c;环有一个暗中心…

在已创建的git工程中添加.gitignore

有些代码创建git时&#xff0c;为了方便将所有文件都加入了git管理&#xff0c;但实际有些库的Makefile文件和编译目录的文件不需要加入管理&#xff0c;否则每次提交或编译后&#xff0c;git diff将看到非常多的冗余信息。而我们修改的核心代码都淹没在这些大量无用的信息里面…

Golang:gammazero/deque是一个快速环形缓冲区deque(双端队列)实现

gammazero/deque是一个快速环形缓冲区deque&#xff08;双端队列&#xff09;实现。 文档 https://github.com/gammazero/deque 安装 go get github.com/gammazero/deque代码示例 先入先出队列 package mainimport ("fmt""github.com/gammazero/deque&quo…

留守儿童|基于SprinBoot+vue的留守儿童爱心网站(源码+数据库+文档)

留守儿童爱心网站 目录 基于SprinBootvue的留守儿童爱心网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&…

STM_HAL_TIM_IC_(输入捕获,捕获PWM波)

介绍 TM32微控制器提供了输入捕获&#xff08;Input Capture&#xff09;功能&#xff0c;这是一种用于精确测量外部信号脉冲宽度和周期的强大技术。输入捕获通常与定时器&#xff08;如TIM&#xff09;的高级控制定时器&#xff08;TIM1和TIM8&#xff09;或通用定时器&#…

MySQL之Schema与数据类型优化和创建高性能的索引(一)

Schema与数据类型优化 只修改.frm文件 从前面的例子中可以看到修改表的.frm文件是很快的&#xff0c;但MySQL有时候会在没有必要的时候也重建.如果愿意冒一些风险&#xff0c;可以让MySQL做一些其他类型的修改而不用重建表。下面这些操作是有可能不需要重建表的: 1.移除(不是…

JavaEE-文件IO2

文章目录 前言一、字节流1.1 读文件1.2 写文件 二、字符流2.1 读文件2.2 写文件 三、文件IO三道例题 前言 在这里对Java标准库中对文件内容的操作进行总结&#xff0c;总体上分为两部分&#xff0c;字节流和字符流&#xff0c;就是以字节为单位读取文件和以字符为单位读取文件…

[AI Google] 介绍 VideoFX,以及 ImageFX 和 MusicFX 的新功能

VideoFX 是来自 labs.google 的最新实验&#xff0c;您可以查看音乐效果和图像效果的新更新&#xff0c;现在在 110 多个国家可用。 生成式媒体正在改变人们构思创意并增强我们的创造力能力的方式。我们致力于与创作者和艺术家合作构建人工智能&#xff0c;以更好地理解这些生成…

cmake使用交叉编译工具链并验证

目录 一、内容 二、配置 1. 准备cmake文件 2. 使用交叉编译 三、验证 1. 构建阶段验证 2. 编译阶段验证 一、内容 目的&#xff1a;在X86环境下编译ARM平台软件 编写交叉编译配置文件&#xff1a;xx.cmake 执行cmake命令时指定&#xff1a;cmake \ -DCMAKE_TOOLCHAIN_F…

Linux Crontab:看完这篇,还有啥不懂的吗

在Linux系统管理中&#xff0c;自动化是一个至关重要的概念&#xff0c;它可以帮助我们节省时间、减少错误并提高效率。crontab> 是实现这一目标的强大工具&#xff0c;它允许我们安排任务在特定的时间自动执行。本文将详细介绍 crontab 的基础概念、语法、命令、高级技巧以…

K8S认证|CKA题库+答案| 12. 查看Pod日志

目录 12、查看Pod日志 CKA v1.29.0模拟系统免费下载试用&#xff1a; 题目&#xff1a; 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、提取错误日志 3&#xff09;、验证提取结果 12、查看Pod日志 CKA v1.29.0模拟系统免费下载试用&#xff1a; 百度…

简单的UDP网络程序:多人群聊系统

本章重点 能够实现一个简单的udp客户端/服务器; 1.创建套接字 我们把服务器封装成一个类&#xff0c;当我们定义出一个服务器对象后需要马上初始化服务器&#xff0c;而初始化服务器需要做的第一件事就是创建套接字。 ⭐参数说明&#xff1a; domain&#xff1a;创建套接字的域…

Nginx代理配置(专业版)

写在前面提醒&#xff1a;使用代理&#xff0c;如果可以&#xff0c;请尽量支持双协议&#xff0c;http、https均要支持哈。 注意&#xff1a;监控系统只是运行代码&#xff0c;是否支持https&#xff0c;需要运维同学在你们的服务器上配置https证书&#xff0c;配置好证书&…

在 CentOS 上安装 PostgreSQL 的全面指南

PostgreSQL 是一种功能强大的开源关系型数据库管理系统&#xff0c;广泛应用于各种领域。它提供了诸如事务处理、并发控制和数据完整性等高级功能&#xff0c;因此深受开发者和企业的欢迎。本指南将逐步引导您在 CentOS 上安装 PostgreSQL&#xff0c;以便您充分利用其众多优势…

决定了,将ChatGPTer开源!主打一个大模型人人可用。

一个快速上手且极易部署的类ChatGPT开源应用&#xff0c;可接入 OPENAI API 或 通义千问API 开源地址&#xff1a; https://github.com/isnl/EsChat 大声(偷偷)告诉你&#xff1a;通义千问有免费API额度可白嫖&#xff01;&#xff01;&#xff01; 版本特性 OPENAI 和 通义千…

点云AABB、OBB包围盒计算显示

目录 一、简介 1)AABB包围盒 2)OBB包围盒 二、计算代码 三、加载计算结果