EasyExcel(环境搭建以及常用写入操作)
文章目录
- EasyExcel环境搭建
- 1.创建模块 easyexcel-demo
- 2.引入依赖
- 3.启动类创建
- EasyExcel写
- 1.最简单的写入
- 1.模板
- 2.方法
- 3.结果 Write01.xlsx
- 2.指定字段不写入Excel
- 1.模板
- 2.方法
- 3.结果 Write02.xlsx
- 3.指定字段写入excel
- 1.模板
- 2.方法
- 3.结果 Write03.xlsx
- 4.按照index顺序写入excel
- 1.模板
- 2.方法
- 3.结果 Write04.xlsx
- 5.复杂头数据写入,合并单元格
- 1.模板
- 2.方法
- 3.结果 Write05.xlsx
- 6.写入数据到不同的sheet中
- 1.模板
- 2.方法
- 3.结果 Write06.xlsx
- 7.日期数字格式化
- 1.模板
- 2.方法
- 3.结果 Write07.xlsx
- 8.写入图片到Excel
- 1.模板
- 2.方法
- 3.结果 Write08.xlsx
- 9.通过注解形式设置写入Excel样式
- 1.模板
- 2.方法
- 3.结果 Write09.xlsx
- 10.应用自定义转换器
- 1.模板
- 2.自定义转换器
- 3.方法
- 4.结果 Write10.xlsx
EasyExcel环境搭建
1.创建模块 easyexcel-demo

2.引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version></parent><groupId>com.sunxiansheng</groupId><artifactId>easyexcel-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>
3.启动类创建
package com.sunxiansheng;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description: 启动类** @Author sun* @Create 2024/10/29 11:19* @Version 1.0*/
@SpringBootApplication
public class ExcelApplication {public static void main(String[] args) {SpringApplication.run(ExcelApplication.class, args);}
}
EasyExcel写
1.最简单的写入
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write01 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 最简单的写入*/@Testpublic void testWrite01() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write01.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write01.class).build();// 3.构造数据List<Write01> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write01 user = Write01.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();}
3.结果 Write01.xlsx

2.指定字段不写入Excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write02 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法

/*** 指定字段不写入excel*/@Testpublic void testWrite02() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write02.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write02.class).excludeColumnFieldNames(Arrays.asList("salary", "hireDate")) // 排除字段.build();// 3.构造数据List<Write02> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write02 user = Write02.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();}
3.结果 Write02.xlsx

3.指定字段写入excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write03 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 指定字段写入excel*/
@Test
public void testWrite03() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write03.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write03.class).includeColumnFieldNames(Arrays.asList("salary", "hireDate")) // 包含字段.build();// 3.构造数据List<Write03> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write03 user = Write03.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write03.xlsx

4.按照index顺序写入excel
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write04 {@ExcelProperty(value = "用户编号", index = 0)private Integer userId;@ExcelProperty(value = "姓名", index = 1)private String userName;@ExcelProperty(value = "性别", index = 3)private String gender;@ExcelProperty(value = "工资", index = 4)private Double salary;@ExcelProperty(value = "入职时间", index = 2)private Date hireDate;}
2.方法
/*** 按照index顺序写入excel*/
@Test
public void testWrite04() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write04.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write04.class).build();// 3.构造数据List<Write04> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write04 user = Write04.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write04.xlsx

5.复杂头数据写入,合并单元格
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builderpublic static class Write05 {@ExcelProperty(value = {"group1", "用户编号"})private Integer userId;@ExcelProperty(value = {"group1", "姓名"})private String userName;@ExcelProperty(value = {"group2", "性别"})private String gender;@ExcelProperty(value = {"group2", "工资"})private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 复杂头数据写入,合并单元格*/
@Test
public void testWrite05() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write05.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write05.class).build();// 3.构造数据List<Write05> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write05 user = Write05.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write05.xlsx

6.写入数据到不同的sheet中
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write06 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;
}
2.方法
/*** 写入数据到不同的sheet中*/
@Test
public void testWrite06() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write06.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.循环创建十个sheet,并分别写入数据for (int j = 0; j < 10; j++) {// 创建sheetWriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息" + j).head(Write06.class).build();// 3.构造数据List<Write06> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write06 user = Write06.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);}// 5.关闭流excelWriter.finish();
}
3.结果 Write06.xlsx

7.日期数字格式化
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write07 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")@ContentStyle(dataFormat = 2) // 保留两位小数private Double salary;@ExcelProperty(value = "入职时间")@DateTimeFormat(value = "yyyy年MM月dd日 HH时mm分ss秒") // 日期格式化private Date hireDate;
}
2.方法
/*** 日期数字格式化*/
@Test
public void testWrite07() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write07.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write07.class).build();// 3.构造数据List<Write07> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write07 user = Write07.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.213214234).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write07.xlsx

8.写入图片到Excel
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@ContentRowHeight(value = 100) // 内容行高
@ColumnWidth(value = 20) // 列宽
static class Write08 {// 使用抽象文件表示一个图片@ExcelProperty(value = "File类型")private File file;// 使用输入流保存一个图片@ExcelProperty(value = "InputStream类型")private InputStream inputStream;// 当使用String类型保存一个图片的时候需要使用StringImageConverter转换器@ExcelProperty(value = "String类型", converter = StringImageConverter.class)private String str;// 使用二进制数据保存为一个图片@ExcelProperty(value = "二进制数据(字节)")private byte[] byteArr;// 使用网络链接保存为一个图片@ExcelProperty(value = "网络图片")private URL url;
}
2.方法
/*** 写入图片到Excel*/@Testpublic void testWrite08() throws Exception {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write08.xlsx";// 本地图片String imagePath = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/th.jpeg";// 网络图片URL url = new URL("https://cn.bing.com/th?id=OHR.TanzaniaBeeEater_ZH-CN3246625733_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp");// 构建writerExcelWriter excelWriter = EasyExcel.write(fileName).build();// 构建sheetWriteSheet writeSheet = EasyExcel.writerSheet().head(Write08.class).sheetName("图片信息").build();// 构建data// 将图片读取到byte数组中byte[] bytes = new byte[(int) new File(imagePath).length()];InputStream inputStream = new FileInputStream(imagePath);inputStream.read(bytes, 0, bytes.length);List<Write08> imageDataList = new ArrayList<>();// 创建数据模板Write08 imageData = Write08.builder().file(new File(imagePath)) // File类型.inputStream(new FileInputStream(imagePath)) // InputStream类型.str(imagePath) // String类型.byteArr(bytes) // 二进制数据.url(url) // 网络图片.build();// 添加要写入的图片模型imageDataList.add(imageData);// 写入数据excelWriter.write(imageDataList, writeSheet);// 关闭流excelWriter.finish();}
3.结果 Write08.xlsx

9.通过注解形式设置写入Excel样式
1.模板
@NoArgsConstructor@AllArgsConstructor@Data@Builder@HeadRowHeight(value = 30) // 头部行高@ContentRowHeight(value = 25) // 内容行高@ColumnWidth(value = 20) // 列宽// 头字体设置成20, 字体默认宋体@HeadFontStyle(fontName = "宋体", fontHeightInPoints = 20)// 内容字体设置成20, 字体默认宋体@ContentFontStyle(fontName = "宋体", fontHeightInPoints = 20)public static class Write09 {@ExcelProperty(value = "用户编号")private Integer userId;// 字符串的头字体设置成20@HeadFontStyle(fontHeightInPoints = 30)// 字符串的内容字体设置成20,默认宋体@ContentFontStyle(fontName = "宋体", fontHeightInPoints = 20)@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;}
2.方法
/*** 通过注解形式设置写入Excel样式*/
@Test
public void testWrite09() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write09.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write09.class).build();// 3.构造数据List<Write09> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write09 user = Write09.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? "女" : "男").salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
3.结果 Write09.xlsx

10.应用自定义转换器
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class Write10 {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别", converter = GenderConverter.class) // 使用自定义转换器private Integer gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;
}
2.自定义转换器
/*** 自定义转换器,比如数据库中0代表男,1代表女,导出到Excel中需要转换为男和女,注意,需要是public类型的*/
public static class GenderConverter implements Converter<Integer> {private static final String MALE = "男";private static final String FEMALE = "女";/*** Java类型是Integer** @return*/@Overridepublic Class<?> supportJavaTypeKey() {return Integer.class;}/*** Excel类型是String** @return*/@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}/*** 写入Excel时,将Integer类型的数据转换为String类型** @param value* @param contentProperty* @param globalConfiguration* @return* @throws Exception*/@Overridepublic WriteCellData<?> convertToExcelData(Integer value,ExcelContentProperty contentProperty,GlobalConfiguration globalConfiguration) throws Exception {// 根据整数值返回对应的性别字符串String gender;switch (value) {case 0:gender = MALE;break;case 1:gender = FEMALE;break;default:gender = "未知";}// 返回转换后的 Excel 单元格数据return new WriteCellData<>(gender);}/*** 读取Excel时,将String类型的数据转换为Integer类型** @param cellData* @param contentProperty* @param globalConfiguration* @return* @throws Exception*/@Overridepublic Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {// 获取Excel的值String cellDataStringValue = cellData.getStringValue();// 转换为Java的值switch (cellDataStringValue) {case MALE:return 0; // 男,返回0case FEMALE:return 1; // 女,返回1default:return -1; // 其他,返回-1}}
}
3.方法
/*** 应用自定义转换器*/
@Test
public void testWrite10() {String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Write10.xlsx";// 1.构建write,指定写入的文件路径ExcelWriter excelWriter = EasyExcel.write(fileName).build();// 2.构建sheet,指定sheetName和模板WriteSheet writeSheet = EasyExcel.writerSheet().sheetName("用户信息").head(Write10.class).build();// 3.构造数据List<Write10> list = new ArrayList<>();for (int i = 1; i <= 10; i++) {Write10 user = Write10.builder().userId(i).userName("admin" + i).gender(i % 2 == 0 ? 1 : 0) // 这里插入的是数字,使用自定义转换器转换为男和女.salary(i * 1000.00).hireDate(new Date()).build();list.add(user);}// 4.write向sheet中写入数据excelWriter.write(list, writeSheet);// 5.关闭流excelWriter.finish();
}
4.结果 Write10.xlsx

相关文章:
EasyExcel(环境搭建以及常用写入操作)
文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...
探索Milvus数据库:新手入门指南(tencent云)
开启向量数据库的奇妙之旅 在数据科学和机器学习领域,Milvus是一个专为向量数据设计的开源数据库。它以其高性能和易于使用的特点,成为了处理大规模向量搜索任务的理想选择。如果你是Milvus的新手,这篇文章将带你一步步了解如何开始你的Milv…...
MySQL:一文弄懂时区time_zone
你还在被以下问题困扰吗: MySQL 的安装规范中应该设置什么时区? JAVA 应用读取到的时间和北京时间差了 14 个小时,为什么?怎么解决? 已经运行一段时间的业务,修改 MySQL 的时区会影响已经存储的时间类型数据…...
基于python的天气可视化系统
目 录 1绪论 1.1研究背景 1.2研究意义 1.3当前研究现状 1.4研究内容 第2章 相关基础理论 2.1 爬虫技术基础 2.2 Python 在爬虫中的应用 2.3 爬虫系统的设计要点 第3章 天气网数据可视化系统设计 3.1 系统概述及主要内容 3.1.1 系统架构 3.1.2 工具选择…...
STM32 高级 WIFi案例1:测试AT指令
需求描述 测试AT指令是否能够正常控制ESP32的wifi,比如重启、读取设备信息等。 思路: stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置: 第一步:对ESP32芯片烧录可以读取stm32命令的固件(fac…...
SpringCloud微服务架构
文章目录 认识微服务:SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心(nacos一部分功能) 服务注册到nacosnacos…...
WebSocket封装
提示:记录工作中遇到的需求及解决办法 文章目录 前言二、背景三、WebSocket3.1 什么是 WebSocket ?为什么使用他?四、封装 WebSocket4.1 Javascript 版本4.2 Typescript 版本4.3 如何使用?五、我的痛点如何处理前言 本文将介绍 WebSocket 的封装,比如:心跳机制,重连和一…...
基于Flask后端框架的均值填充
Flask可以在Jupyter上运行,首先需要安装这两个库: !pip install Flask-CORS !pip install Flask 引入依赖: from flask import Flask, request, jsonify, send_file import os import pandas as pd import io from flask import Flask fr…...
SQL-Server链接服务器访问Oracle数据
SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …...
Python中continue语句的使用
1 问题 本文将对在循环中continue语句的用途和如何正确使用continue进行分析与总结。 2 方法 (1)定义: 在编程中,“continue”是一个关键字,用于循环结构中。它的作用是跳过当前循环的剩余部分,立即进入下一…...
JavaScript的diff库详解(示例:vue项目实现两段字符串比对标黄功能)
diff库介绍 diff 库是基于 Myers 差分算法 实现的 JavaScript 文本差异库。 Myers 差分算法 是由 Eugene Myers 在 1986 年发表的一篇经典算法论文 “An O(ND) Difference Algorithm and its Variations” 中描述的一种高效算法,用于计算两个序列(通常是…...
自动驾驶3D目标检测综述(六)
停更了好久终于回来了(其实是因为博主去备考期末了hh) 这一篇接着(五)的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 (一)…...
the request was rejected because no multipart boundary was found
文章目录 1. 需求描述2. 报错信息3. 探索过程 1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票,经过后端解析PDF之后,将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.u…...
HarmonyOS-面试整理
目录 为什么选择HarmonyOS/ 优点/特点鸿蒙系统的权限有哪些说一说鸿蒙系统的安全机制说一说鸿蒙系统的微内核与安卓的内核区别鸿蒙操作系统的微内核架构有哪些优势分布式能力在鸿蒙系统中如何实现请解释一下鸿蒙系统中的分布式软总线技术如何在鸿蒙操作系统中进行多设备协同开发…...
[C#] 「Unity」「游戏开发」如何在Canvas下的Button控件下实例化Image元素
在开发过程中,经常需要在UI上动态添加元素。特别是在Unity中,Canvas控件通常用来作为UI元素的容器,而Button控件则常用于交互。而在某些情况下,我们可能需要在一个Button下实例化一个Image元素,并确保它的位置与Button的位置保持一致。然而,简单地使用Button的坐标值往往…...
Nginx1.20.2-Linux-安装
文章目录 1.下载压缩包1.官网下载2.找到1.20.23.百度网盘 2.Linux安装1.搭建gcc环境2.上传到 /usr/local/nginx1.20.23.解压1.解压到当前目录2.删除压缩包 4.配置Nginx的编译路径1.进入nginx-1.20.22.执行内部的脚本,指定编译路径为/usr/local/nginx 5.编译并安装6.…...
Elasticsearch名词解释
文章目录 1.什么是Elasticsearch?2.什么是elastic stack(ELK)?3.什么是Lucene?4.什么是文档(document)?5.什么是词条(term)?6.什么是正向索引?7.什么是倒排索引?8.ES中的索引(index)9.映射(Mapping)10.DSL11.elastcisearch与my…...
Node项目——从0开始构建且共享至Gitee
从0开始构建一个Node.js项目涉及多个步骤,包括设置开发环境、初始化项目、安装依赖、编写代码以及配置版本控制等。以下是一个详细的步骤指南: 1. 安装Node.js和npm 首先,确保你已经安装了Node.js和npm(Node Package Manager&am…...
layui多图上传,tp8后端接收处理
环境:layui2.9.21\thinkphp8.1 前端代码: layui.use([upload, layer], function() {const upload layui.upload;const layer layui.layer;const $ layui.$;// 上传图片const uploadInstImage upload.render({elem: #uploadImage,url: /admin/demo/…...
QEMU网络配置简介
本文简单介绍下qemu虚拟机网络的几种配置方式。 通过QEMU的支持,常见的可以实现以下4种网络形式: 基于网桥(bridge)的虚拟网络。基于NAT(Network Addresss Translation)的虚拟网络。QEMU内置的用户模式网…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
