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.pswp.cn/web/15808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15808.shtml
英文地址,請注明出處:http://en.pswp.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包圍盒 二、計算代碼 三、加載計算結果