Java操作excel之poi

1. 創建Excel

1.1 創建新Excel工作簿

引入poi依賴

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->          
<dependency>                  <groupId>org.apache.poi</groupId>                  <artifactId>poi</artifactId>                  <version>5.2.3</version>          
</dependency>

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.ss.usermodel.Workbook; 
import java.io.FileOutputStream;  
public class Demo01 {     public static void main(String[] args) throws Exception {         // 創建一個工作簿         Workbook wb = new HSSFWorkbook();         // 創建輸出流         FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\創建一個Excel工作簿.xls");         wb.write(fileOutputStream);         // 工作簿寫出流         wb.close();     } 
}

運行代碼

?1.2 創建新sheet頁

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Workbook;   
import java.io.FileOutputStream;   
public class Demo02 {          public static void main(String[] args) throws Exception {                  // 創建一個工作簿                  Workbook wb = new HSSFWorkbook();                  // 創建一個sheet頁                  wb.createSheet("這是第一個sheet的名字");                  wb.createSheet("這是第二個sheet的名字");                  // 創建輸出流                  FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\創建sheet.xls");                  // 工作簿寫出流                  wb.write(fileOutputStream);                  wb.close();          }  
}

運行代碼

1.3 創建單元格

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.ss.usermodel.Row;  
import org.apache.poi.ss.usermodel.Sheet;  
import org.apache.poi.ss.usermodel.Workbook;   
import java.io.FileOutputStream;   
public class Demo03 {          public static void main(String[] args) throws Exception {                  // 創建一個工作簿                  Workbook wb = new HSSFWorkbook();                  // 創建一個sheet頁                  Sheet sheet = wb.createSheet("這是第一個sheet的名字");                  // 創建單元格并設置內容                  // 創建第一行                  Row row = sheet.createRow(0);                  row.createCell(0).setCellValue(1); // 第一列          row.createCell(1).setCellValue(1.2); // 第二列            row.createCell(2).setCellValue("字符串"); // 第三列                // 創建輸出流                  FileOutputStream fileOutputStream = new FileOutputStream("E:\\java\\poi\\poi\\創建sheet.xls");                // 工作簿寫出流                  wb.write(fileOutputStream);               wb.close();        }  
}

運行代碼

2. 創建時間格式單元格

2.1 創建一個時間格式的單元格

Java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.util.Date;/*** @Description: 創建時間格式單元格* @author: lh*/
public class Demo04 {public static void main(String[] args) throws Exception {Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(0);row.createCell(0).setCellValue(new Date());// 設置單元格日期格式CreationHelper creationHelper = workbook.getCreationHelper();CellStyle cellStyle = workbook.createCellStyle();// 單元格樣式cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss"));Cell cell = row.createCell(1);cell.setCellValue(new Date());cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

2.2 遍歷工作簿的行和列并獲取單元格內容

java代碼

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;/*** @Description: 遍歷單元格* @author: lh*/
public class Demo05 {public static void main(String[] args) throws Exception {FileInputStream fileInputStream = new FileInputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");POIFSFileSystem fs = new POIFSFileSystem(fileInputStream);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fs);HSSFSheet sheet = hssfWorkbook.getSheetAt(0);if (sheet == null) {return;}// 遍歷rowfor (int i = 0; i <= sheet.getLastRowNum(); i++) {HSSFRow row = sheet.getRow(i);if (row == null) {continue;}// 遍歷cellfor (int j = 0; j <= row.getLastCellNum(); j++) {if (row.getCell(j) == null) {continue;}System.out.print(" " + getValue(row.getCell(j)));}System.out.println();}}/*** 獲取不同類型單元格類型的值 * @param cell 單元格* @return 單元格內容*/private static String getValue(HSSFCell cell) {switch (cell.getCellType()) {case NUMERIC:return Double.toString(cell.getNumericCellValue());case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();case STRING:return cell.getStringCellValue();// Add cases for other cell types as needed...default:System.out.println("Unsupported cell type");return "";}}
}

運行結果

2.4 文本提取

Java代碼

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;/*** @Description: 文本提取* @author: lh*/
public class Demo06 {public static void main(String[] args) throws Exception {FileInputStream fileInputStream = new FileInputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");POIFSFileSystem fs = new POIFSFileSystem(fileInputStream);HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fs);ExcelExtractor excelExtractor = new ExcelExtractor(hssfWorkbook);excelExtractor.setIncludeSheetNames(false); //不需要sheet頁System.out.println(excelExtractor.getText());fileInputStream.close();fs.close();}
}

運行結果?

3. 單元格處理

3.1 單元格對齊方式

Java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.FileOutputStream;import org.apache.poi.ss.usermodel.*;/*** @Description: 單元格對齊方式* @author: lh*/
public class Demo07 {public static void main(String[] args) throws Exception {Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(0);row.setHeightInPoints(30);// 創建單元格對齊方式createCell(workbook, row, (short) 0, HorizontalAlignment.CENTER,  VerticalAlignment.CENTER, "單元格對齊方式1");createCell(workbook, row, (short) 1, HorizontalAlignment.LEFT, VerticalAlignment.BOTTOM,  "單元格對齊方式2");createCell(workbook, row, (short) 2, HorizontalAlignment.RIGHT, VerticalAlignment.TOP,  "單元格對齊方式3");FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}private static void createCell(Workbook workbook, Row row, short column, HorizontalAlignment align, VerticalAlignment valign, String value) {Cell cell = row.createCell(column);CellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(align);cellStyle.setVerticalAlignment(valign);cell.setCellValue(value);cell.setCellStyle(cellStyle);}
}

運行結果

3.2 單元格邊框處理

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 單元格邊框處理* @author: lh*/
public class Demo08 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(1);row.setHeightInPoints(30);Cell cell = row.createCell(1);cell.setCellValue("單元格邊框處理");// 單元格邊框處理CellStyle cellStyle = workbook.createCellStyle();cellStyle.setBorderTop(BorderStyle.THIN); // 頂部邊框樣式cellStyle.setTopBorderColor(IndexedColors.RED.getIndex()); // 頂部邊框顏色cellStyle.setBorderLeft(BorderStyle.MEDIUM); // 左邊邊框樣式cellStyle.setLeftBorderColor(IndexedColors.BLUE.getIndex()); // 左邊邊框顏色cellStyle.setBorderRight(BorderStyle.MEDIUM); // 右邊邊框樣式cellStyle.setRightBorderColor(IndexedColors.GREEN.getIndex()); // 右邊邊框顏色cellStyle.setBorderBottom(BorderStyle.MEDIUM); // 底部邊框樣式cellStyle.setBottomBorderColor(IndexedColors.BROWN.getIndex()); // 底部邊框顏色cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

3.3 單元格填充色和顏色操作

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;/*** @Description: 設置單元格顏色* @author: lh*/
public class Demo09 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 設置單元格顏色Cell cell = row.createCell(1);cell.setCellValue("單元格邊框處理");CellStyle cellStyle = workbook.createCellStyle();cellStyle.setFillForegroundColor(IndexedColors.GREEN.getIndex()); //背景色cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);cell.setCellStyle(cellStyle);Cell cell1 = row.createCell(2);cell1.setCellValue("單元格邊框處理1");CellStyle cellStyle1 = workbook.createCellStyle();cellStyle1.setFillForegroundColor(IndexedColors.RED.getIndex()); //前景色cellStyle1.setFillPattern(FillPatternType.SOLID_FOREGROUND);cell1.setCellStyle(cellStyle1);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

3.4 單元格合并

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;import java.io.FileOutputStream;/*** @Description: 單元格合并* @author: lh*/
public class Demo10 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 合并單元格Cell cell = row.createCell(1);cell.setCellValue("合并單元格");sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 3));FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

4. 字體處理

4.1 字體處理

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 字體處理* @author: lh*/
public class Demo11 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(1);row.setHeightInPoints(30);// 創建一個字體處理類Font font = workbook.createFont();font.setFontHeightInPoints((short) 24);font.setFontName("宋體");font.setItalic(true);CellStyle cellStyle = workbook.createCellStyle();cellStyle.setFont(font);Cell cell = row.createCell((short) 1);cell.setCellValue("hello world");cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

4.2?單元格中使用換行

java代碼

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;import java.io.FileOutputStream;/*** @Description: 單元格換行* @author: lh*/
public class Demo12 {public static void main(String[] args) throws Exception{Workbook workbook = new HSSFWorkbook();Sheet sheet = workbook.createSheet("第一個sheet頁");Row row = sheet.createRow(1);row.setHeightInPoints(30);Cell cell = row.createCell(2);cell.setCellValue("我要換行 \n 成功了嗎?");CellStyle cellStyle = workbook.createCellStyle();// 設置可以換行cellStyle.setWrapText(true);cell.setCellStyle(cellStyle);FileOutputStream fileOutputStream = new FileOutputStream("/Users/lihui/Documents/Java/poi/工作簿.xls");workbook.write(fileOutputStream);workbook.close();}
}

運行結果

5. 綜合示例

// excel導入	
@Transactional
public Result<?> import(Model model) throws IOException
{// 獲取上傳附件String attId = attachFileAppService.handleAttFiles(Collections.singletonList(model));if (StringUtil.isEmpty(attId)){throw new NormalRuntimeException(ModelCodeConstants.ATTACHMENT_LOST);}Workbook workbook = null;InputStream data = null;try{// 獲取Excel文件流UploadAttachFileInfo uploadAttachFileInfo = attachFileAppService.downloadFile(attId);// 文件格式校驗checkType(uploadAttachFileInfo);data = uploadAttachFileInfo.getData();workbook = ExcelUtils.getExcelWorkbook(data);Sheet sheet = workbook.getSheet(ModelCodeConstants."讀取sheet的名字");if (CommonUtil.isEmpty(sheet)){return Result.fail(ModelCodeConstants.ERROR_TITLE);}// 表頭檢驗checkTitle(sheet);// 空表檢驗if (sheet.getLastRowNum() == 0 && sheet.getPhysicalNumberOfRows() == 1){return Result.fail(ModelCodeConstants.EMPTY_FILE);}// 數據導入- 從第四行開始int startRowIndex = 4;Iterator<Row> iterator = sheet.iterator();for (int i = 0; i < startRowIndex; i++){iterator.next();}List<XXX> list = new ArrayList<>();List<XXX> errList = new ArrayList<>();while (iterator.hasNext()){Row row = iterator.next();String xxx = getValue(row.getCell(0));String yyy = getValue(row.getCell(1));String zzz = getValue(row.getCell(2));String aaa = getValue(row.getCell(3));// 導入數據規則校驗StringJoiner joiner = new StringJoiner(",");checkBody(xxx, yyy, zzz, aaa, joiner);XXX err = new XXX();if (joiner.length() != 0){err.setErrMsg(joiner);// 錯誤信息添加errList.add(err);} else{XXX x = new XXX();// 入庫信息添加list.add(x);// 數據入庫service.add();}}if (CommonUtil.isNotEmpty(errList)){//把原信息和錯誤信息寫回去String uuid = writeErrExcel(errList);return Result.fail("數據導入不成功,點擊下載錯誤信息!").setData(uuid);}} catch (Exception e){e.printStackTrace();return Result.fail(e.getMessage());} finally{assert workbook != null;workbook.close();data.close();}return Result.success();
}/**
* 文件格式校驗 以xls或者xlsx結尾
*/
private static void checkType(UploadAttachFileInfo uploadAttachFileInfo)
{AttachFileInfo fileInfo;fileInfo = uploadAttachFileInfo.getFileInfo();if (!fileInfo.getFileName().endsWith(ModelCodeConstants.EXCEL_SUFFIX_XLS)&& !fileInfo.getFileName().endsWith(ModelCodeConstants.EXCEL_SUFFIX_XLSX)){throw new NormalRuntimeException("文件格式有誤!");}
}/**
* 校驗表頭是否正確
*/
private static void checkTitle(Iterator<Row> rowIterator)
{Row headerRow = rowIterator.next();Cell xxxx = headerRow.getCell(0);Cell yyyy = headerRow.getCell(1);if (!"xxxx".equals(xxxx.getStringCellValue()) || !"yyyy".equals(yyyy.getStringCellValue())){throw new NormalRuntimeException(ModelCodeConstants.ERROR_TITLE);}
}/**
* 填寫錯誤信息excel
*/
private String writeErrExcel(List<XXX> errList) throws Exception
{// 讀取錯誤信息模板String rootPath = SpringContextConfig.getOptRootPath();String filePath = rootPath + FilePathConst.TEMPLATE_FILE_PATH + FileNameConst.WBS_CODE_ERROR_FILE_NAME;File file = ResourceUtils.getFile(filePath);InputStream inputStream = Files.newInputStream(file.toPath());// 處理導入錯誤信息數據Workbook workbook = ExcelUtils.getExcelWorkbook(inputStream);Sheet sheet = workbook.getSheet(ModelCodeConstants.TEMPLATE_ESTIMATE_DETAILS);int startRow = 4; // 從第五行開始寫入數據CellStyle cellStyle = workbook.createCellStyle();cellStyle.setWrapText(true); // 自動換行for (int i = startRow; i < errList.size() + startRow; i++){Row row = sheet.createRow(i);XXX rowData = errList.get(i - startRow); // 獲取當前行數據String xxx = rowData.getLevel();String yyy = rowData.getWbsCode();String zzz = rowData.getWbsDescribe();String aaa = rowData.getWbsAmount();String errMsg = rowData.getErrMsg();row.createCell(0).setCellValue(xxx);row.createCell(1).setCellValue(yyy);row.createCell(2).setCellValue(zzz);row.getCell(2).setCellStyle(cellStyle);row.createCell(3).setCellValue(aaa);row.createCell(4).setCellValue(errMsg);row.getCell(4).setCellStyle(cellStyle);}// Excel文件寫到目標路徑下String uuid = CommonUtil.getUUID();String distPath = AttachServerConfig.AttachServerTempPath + "/" + FilePathConst.ERROR_FILE_PATH + "/" + uuid+ "/" + FileNameConst.WBS_CODE_ERROR_FILE_NAME;ExcelWriter write = new ExcelWriter(sheet);write.setDestFile(new File(distPath));write.flush();write.close();InputStream distStream = new FileInputStream(distPath);uuid = attachFileAppService.uploadFile(distStream, FileNameConst.WBS_CODE_ERROR_FILE_NAME,FileModelTypeEnum.導入失敗信息.getModel(), uuid, "xlsx");return uuid;
}

// 枚舉常量類
public interface ModelCodeConstants
{public final String ATTACHMENT_LOST = "導入附件丟失或未找到,請重新上傳!";public final String ERROR_TITLE = "表頭信息錯誤,請使用標準模板文件導入!";public final String EMPTY_FILE = "上傳文件內容為空,請確認!";}
// excel工具類
public class ExcelUtils
{	/*** 讀取工作區域,傳入流文件* @param input* @return*/public static Workbook getExcelWorkbook(InputStream input){Workbook workbook = null;try{workbook = WorkbookFactory.create(input);} catch (EncryptedDocumentException | InvalidFormatException | IOException e){e.printStackTrace();}return workbook;}/*** 獲取不同類型單元格類型的值 * @param cell 單元格* @return 單元格內容*/private static String getValue(HSSFCell cell) {switch (cell.getCellType()) {case NUMERIC:return Double.toString(cell.getNumericCellValue());case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();case STRING:return cell.getStringCellValue();// Add cases for other cell types as needed...default:System.out.println("Unsupported cell type");return "";}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160132.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160132.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160132.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QTableView 和 QAbstractTableModel

1.自定義類繼承QAbstractTableModel 頭文件如下&#xff1a; #ifndef TESTMOUDLE_H #define TESTMOUDLE_H #include "StructTest.h" #include <QAbstractTableModel> class TestMoudle : public QAbstractTableModel { public: TestMoudle(QStringList&…

如何一次性解壓多個文件

第一步&#xff1a;多選壓縮包 第二步&#xff1a;右鍵解壓即可 一句話&#xff0c;單個怎么解壓&#xff0c;多個就怎么解壓&#xff0c;只不過先選中 參考&#xff1a;如何一次性解壓多個文件

智能安全帽作業記錄儀賦能智慧工地人臉識別勞務實名制

需求背景 建筑工地是一個安全事故多發的場所。目前&#xff0c;工程建設規模不斷擴大&#xff0c;工藝流程紛繁復雜&#xff0c;如何完善現場施工現場管理&#xff0c;控制事故發生頻率&#xff0c;保障文明施工一直是施工企業、政府管理部門關注的焦點。尤其隨著社會的不斷進…

YARN,ZOOKEERPER--學習筆記

1&#xff0c;YARN組件 1.1YARN簡介 YARN表示分布式資源調度&#xff0c;簡單地說&#xff0c;就是&#xff1a;以分布式技術完成資源的合理分配&#xff0c;讓MapReduce能高效完成計算任務。 YARN是Hadoop核心組件之一&#xff0c;用于提供分布式資源調度服務。 而在Hadoop …

邏輯漏洞(業務邏輯)dami CMS

邏輯漏洞&#xff08;業務支付邏輯漏洞&#xff09;dami CMS 0x01 業務邏輯簡介 業務邏輯指的是一個系統或應用程序中的實際業務規則和流程。它描述了如何處理特定的業務需求、數據和操作。業務邏輯通常是根據特定行業或組織的需求而設計的。 在軟件開發中&#xff0c;業務邏…

零編程基礎Python的全面學習指南

文章目錄 前言什么是編程&#xff1f;Python代碼對應的機器碼準備開始Windows變量類型整型字符串型布爾類型字符串連接和整數相加if 語句捕獲用戶輸入導入MacWindows游戲時間&#xff01;小結關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Pyt…

磐舟CI使用說明及案例

整體介紹 磐舟作為一個devops產品&#xff0c;它具備基礎的CI流水線功能。同時磐舟的流水線是完全基于云原生架構設計的&#xff0c;在使用時會有一些注意事項。這里首先我們要了解磐舟整體的流水線打包邏輯。 文檔結構說明 一般來說&#xff0c;磐舟推薦單個業務的標準git庫…

反編譯-ApkTool

ApkTool下載地址&#xff1a; Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 執行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 適用于桌面和 Web 應用程序的高級數據可視化 Nevron Vision for .NET提供最全面的組件&#xff0c;用于構建面向 Web 和桌面的企業級數據可視化應用程序。 該套件中的組件具有連貫的 2D 和 3D 數據可視化效果&#xff0c;對觀眾產生巨大的視覺沖擊力。我…

基于window10的遠程桌面報錯:要求的函數不受支持 的問題解決方法

基于window10的遠程桌面報錯&#xff1a;要求的函數不受支持 的問題解決方法 設置方法&#xff1a; 一、WINR 在框內輸入gpedit.msc 二、依次打開 計算機配置----管理模板-----系統—憑據分配—加密數據庫修正–改為以啟用—易受攻擊 第一步&#xff1a; 第二步&#xff1a;…

并查集總結

并查集簡介 并查集是一種可以動態維護若干個不重疊的結合&#xff0c;并支持合并與查詢的數據結構 并查集是一種樹狀的數據結構&#xff0c;可以用于維護傳遞關系以及聯通性。 并查集有兩種操作&#xff1a; find&#xff1a;查詢一個元素屬于哪個集合merge:合并兩個集合 模…

爆款文章有訣竅,內容創作者如何能持續產出優質內容

內容營銷人有沒有這么一種共鳴&#xff1a;10 萬 那么多&#xff0c;為什么不能多我一個&#xff1f; 通常&#xff0c;我們把瀏覽量 / 閱讀量高、轉評贊數量高的內容看作爆款&#xff0c;而數據如果達到 10 萬 則是超級爆款。因為&#xff0c;閱讀量高意味著內容得到了大量的曝…

【Linux】使用Makefile自動化編譯項目:簡化開發流程、提高效率

文章目錄 示例一&#xff1a;編譯一個進度條程序示例二&#xff1a;編譯一個簡單的程序gcc的幾個選項結論 當你開始一個新的軟件項目時&#xff0c;編寫一個好的Makefile是非常重要的。Makefile是一個文本文件&#xff0c;用于指定如何構建和編譯項目。它定義了目標文件、依賴關…

8年老鳥整理,自動化測試-準備測試數據詳細...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 大部分類型的測試…

基于C#實現Bitmap算法

在所有具有性能優化的數據結構中&#xff0c;我想大家使用最多的就是 hash 表&#xff0c;是的&#xff0c;在具有定位查找上具有 O(1)的常量時間&#xff0c;多么的簡潔優美&#xff0c;但是在特定的場合下&#xff1a; ①&#xff1a;對 10 億個不重復的整數進行排序。 ②&am…

python獲取透明圖

import cv2 import os import numpy as nproot "./test" for file in os.listdir(root):# 讀取圖片image cv2.imread(os.path.join(root, file), cv2.IMREAD_UNCHANGED)new np.zeros((image.shape[0], image.shape[1], image.shape[2]), np.uint8)# 檢查圖片是否為…

AI原生應用為百度帶來新增量

我是盧松松&#xff0c;點點上面的頭像&#xff0c;歡迎關注我哦&#xff01; AI將徹底改變每一個行業!得益于AI和基礎模型的驅動&#xff0c;百度在AI原生應用領域厚積薄發。 11月21日&#xff0c;百度Q3財報發布&#xff0c;數據顯示&#xff1a;三季度營收達344.47億元&…

Redis篇---第九篇

系列文章目錄 文章目錄 系列文章目錄前言一、如果有大量的 key 需要設置同一時間過期,一般需要注意什么?二、什么情況下可能會導致 Redis 阻塞?三、緩存和數據庫誰先更新呢?前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊…