当前位置: 首页 > news >正文

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;}
}

相关文章:

Util和utils

Util FieldStats 这段代码定义了一个名为FieldStats的Java类&#xff0c;位于com.cqupt.software_1.Util包中。它使用了lombok库的Data和AllArgsConstructor注解&#xff0c;这些注解帮助生成了getter、setter、toString等方法&#xff0c;以及包含所有参数的构造函数。类中有…...

拷贝构造、移动构造、拷贝赋值、移动赋值

最近在学习C的拷贝构造函数时发现一个问题&#xff1a;在函数中返回局部的类对象时&#xff0c;并没有调用拷贝构造函数。针对这个问题&#xff0c;查阅了一些资料&#xff0c;这里记录整理一下。 调用拷贝构造函数的三种情况&#xff1a; ① 用一个类去初始化另一个对象时&a…...

Python3 笔记:math模块

要使用 math 函数必须先导入math模块 语法&#xff1a;import math Python math 模块提供了许多对浮点数的数学运算函数。 math 模块下的函数&#xff0c;返回值均为浮点数&#xff0c;除非另有明确说明。 如果需要计算复数&#xff0c;需使用 cmath 模块中的同名函数。 m…...

python -【四】函数

函数 一、函数的基础 函数&#xff1a;是组织好的&#xff0c;可以重复使用的&#xff0c;用来实现特定功能的代码段 语法 def 函数名(入参): return 出参 # 定义函数 def out_hello():print(hello ~~~)# 调用/使用/执行函数 out_hello()练习题 自定义一个函数&#xff0c…...

力扣 5. 最长回文子串 python AC

动态规划 class Solution:def longestPalindrome(self, s):size len(s)maxl 1start 0dp [[False] * size for _ in range(size)]for i in range(size):dp[i][i] Truefor L in range(2, size 1):for i in range(size):j L i - 1if j > size:breakif s[i] s[j]:if L…...

【微机原理及接口技术】可编程计数器/定时器8253

【微机原理及接口技术】可编程计数器/定时器8253 文章目录 【微机原理及接口技术】可编程计数器/定时器8253前言一、8253的内部结构和引脚二、8253的工作方式三、8253的编程总结 前言 本篇文章就8253芯片展开&#xff0c;详细介绍8253的内部结构和引脚&#xff0c;8253的工作方…...

23种设计模式之一— — — —装饰模式详细介绍与讲解

装饰模式详细讲解 一、定义二、装饰模式结构核心思想模式角色模式的UML类图应用场景模式优点模式缺点 实例演示图示代码演示运行结果 一、定义 装饰模式&#xff08;别名&#xff1a;包装器&#xff09; 装饰模式&#xff08;Decorator Pattern&#xff09;是结构型的设计模式…...

2024年2月28日 星期三

2024年2月28日 星期三 农历正月十九 1. 住建部&#xff1a;各城市要做好今明两年住房发展计划&#xff0c;防止市场大起大落。 2. 政协委员赵长龙建议&#xff1a;增加元旦、端午、中秋高速免费&#xff0c;周六日半价。 3. 人民法院案例库开始对社会开放&#xff0c;与中国…...

Java中的super关键字详解

在Java编程中&#xff0c;super关键字是一个非常重要的概念&#xff0c;尤其是在继承和多态的场景中。理解super关键字的使用方法和其背后的机制&#xff0c;对于掌握面向对象编程&#xff08;OOP&#xff09;的基本概念至关重要。本篇博客将详细讲解super关键字的各种用法及其…...

消消乐游戏开发,三消游戏,消除小游戏

消消乐是一款非常受欢迎的休闲消除类游戏&#xff0c;通常也被称为“三消游戏”。这类游戏的主要目标是通过交换和匹配三个或更多相同的物品来清除它们&#xff0c;从而得分并通过关卡。以下是一些消消乐游戏的基本特点和玩法&#xff1a; 基本玩法 交换和匹配&#xff1a;玩…...

三十三、openlayers官网示例Drawing Features Style——在地图上绘制图形,并修改绘制过程中的颜色

这篇讲的是使用Draw绘制图形时根据绘制形状设置不同颜色。 根据下拉框中的值在styles对象中取对应的颜色对象&#xff0c;new Draw的时候将其设置为style参数。 const styles {Point: {"circle-radius": 5,"circle-fill-color": "red",},LineS…...

Vue——事件修饰符

文章目录 前言阻止默认事件 prevent阻止事件冒泡 stop 前言 在官方文档中对于事件修饰符有一个很好的说明&#xff0c;本篇文章主要记录验证测试的案例。 官方文档 事件修饰符 阻止默认事件 prevent 在js原生的语言中&#xff0c;可以根据标签本身的事件对象进行阻止默认事件…...

Go语言GoFly框架快速新增接口/上手写代码

拿到一个新框架大家可能无从下手&#xff0c;因为你对框架设计思路、结构不了解&#xff0c;从而产生恐惧&#xff0c;所以我们框架是通过简单可视化界面安装&#xff0c;安装后即可看到效果&#xff0c;然后点击先点点看各个功能&#xff0c;看现有的功能是怎么写的&#xff0…...

【Vue】v-else 和 v-else-if

作用&#xff1a;辅助v-if进行判断渲染 语法&#xff1a; v-else v-else-if"表达式"PS&#xff1a;需要紧接着v-if使用 示例代码&#xff1a; <body><div id"app"><p v-if"gender 1">性别&#xff1a;♂ 男</p><…...

一致性hash算法原理图和负载均衡原理-urlhash与least_conn案例

一. 一致性hash算法原理图 4台服务器计算hash值图解 减少一台服务3台服务器计算hash值图解 增加一台服务器5台服务器计算hash值图解 二. 负载均衡原理-urlhash与least_conn 2.1.urlhash案例 # urlhash upstream tomcats {hash $requ...

MySQL建库

删除数据库 新建数据库 右键-新建数据库 字符集选中utf8(支持中文) 修改字符集 右键--数据库的属性 将字符集支持的数量变少可以修改...

系统资源监控器工具glances的使用详解

目录 1、glances工具介绍 2、安装方式 3、glances的工具界面说明 4、常用的参数选项 5、常用快捷键说明 1、glances工具介绍 glances可以分析系统的 CPU使用率、内存使用率、内核统计信息和运行队列信息磁盘I/O速度、传输和读/写比率、磁盘适配器网络I/O速度、传输和读/写…...

JDBC使用QreryRunner简化SQL查询注意事项

QreryRunner是Dbutils的核心类之一&#xff0c;它显著的简化了SQL查询&#xff0c;并与ResultSetHandler协同工作将使编码量大为减少。 注意事项 1. 使用QreryRunner必须保证实体类的变量名&#xff0c;和sql语句中要查找的字段名必须相同&#xff0c;否则查询 不到数据,会出…...

前缀和(下)

目录 热身&#xff1a; 寻找数组的中心下标 题解&#xff1a; 代码&#xff1a; 进阶&#xff1a; 除自身之外数组的乘积 题解&#xff1a; 代码&#xff1a; 和为K的子数组 题解&#xff1a; 代码&#xff1a; 和可被 K 整除的子数组 题解&#xff1a; 同余定理…...

【排序算法】希尔排序

前言&#xff1a;学习希尔排序前最好先掌握插入排序&#xff0c;在进行&#xff1b;不会的可以点击——>【排序算法】插入排序-CSDN博客 一、希尔排序&#xff1a; 希尔排序&#xff0c;也称为缩小增量排序&#xff0c;是一种基于插入排序的快速改进算法。由Donald Shell于1…...

构建企业级AI智能体:LangGraph多智能体框架实战指南

构建企业级AI智能体&#xff1a;LangGraph多智能体框架实战指南 【免费下载链接】langgraph Build resilient language agents as graphs. 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph 在当今AI应用开发中&#xff0c;开发者面临着一个核心挑战&#x…...

【笔试真题】- 招商银行-2026.03.30

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 招商银行-2026.03.30 1. 术语接龙计分 问题描述 招商银行的培训平台里有一个简化版“术语接龙”小游戏。 系统维护了一份单词表,并给定一个当前单词。用户之…...

Z-Image Turbo实际作品分享:城市风光生成效果

Z-Image Turbo实际作品分享&#xff1a;城市风光生成效果 本文所有内容均为技术效果展示&#xff0c;不涉及任何政治敏感内容&#xff0c;所有案例均为技术演示用途。 1. 效果概览&#xff1a;城市风光的AI艺术呈现 Z-Image Turbo作为基于Gradio和Diffusers构建的高性能AI绘图…...

揭秘JVM创世过程之Call Stub进入Java世界的门票

前言 本文旨在记录近期研读Java源码的学习心得与疑难问题。由于个人理解水平有限&#xff0c;文中内容可能存在疏漏&#xff0c;恳请读者不吝指正。 前情回顾 在揭秘JVM创世过程之两种语言首席外交官JavaCalls&#xff0c;一文中将JVM看作Java世界中一个拥有两种语言的领事馆…...

基于S7-200 PLC与组态王技术的温室大棚控制方案:包含梯形图原理图、IO分配及组态画面详解

基于S7-200 PLC和组态王温室大棚控制 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面菜农张叔上周还给我打电话吐槽&#xff1a;“小王啊&#xff0c;上周那场降温加突然转晴&#xff0c;我三点爬起来盖半层棉被…...

DeepSeek风格迁移降AI怎么用?从0到1完整操作教程

第一次操作的话&#xff0c;照着下面的步骤来&#xff0c;15分钟内搞定DeepSeek风格迁移降AI、降AI、降AIGC率。 工具选嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;达标率99.26%&#xff0c;有退款保障&#xff0c;操作也不复杂。 准备工作 需要准备的&…...

嵌入式开发必备:三大代码对比工具深度评测

1. 代码对比工具概述作为一名嵌入式开发工程师&#xff0c;我每天都要处理大量的代码修改和版本对比工作。在多年的开发实践中&#xff0c;我发现选择合适的代码对比工具能极大提升工作效率。虽然Beyond Compare是业内公认的标杆产品&#xff0c;但实际工作中我们还有更多选择&…...

网络安全的概念与规范:从基础到实践

网络安全的概念与规范&#xff1a;从基础到实践 在数字化浪潮席卷全球的今天&#xff0c;网络安全已成为国家安全的重要组成部分。本文将系统梳理网络安全的核心概念、发展历程、主要威胁、前沿趋势以及标准规范&#xff0c;帮助读者建立完整的网络安全知识体系。 一、网络安全…...

Ubuntu下ibus输入法全拼与双拼切换疑难解析+VNC远程输入法同步失效解决方案

1. 全拼与双拼模式切换问题解析 第一次在Ubuntu上使用ibus输入法时&#xff0c;很多人会发现输入"zhong"却出现"zang ong"这样的错误候选词。这其实是因为ibus默认启用了双拼模式&#xff0c;而大多数用户更习惯使用全拼输入。双拼模式要求每个汉字只需输…...

R Markdown网站生成器使用教程:如何快速搭建技术文档网站 [特殊字符]

R Markdown网站生成器使用教程&#xff1a;如何快速搭建技术文档网站 &#x1f4ca; 【免费下载链接】rmarkdown Dynamic Documents for R 项目地址: https://gitcode.com/gh_mirrors/rm/rmarkdown R Markdown是一个强大的动态文档生成工具&#xff0c;能够将代码、输出…...