使用 POI 在 Word 中重新开始编号、自定义标题格式
效果图

引入依赖
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.4</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency>
示例代码
import cn.hutool.core.date.DateTime;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.time.LocalDateTime;@Component
public class CreateTestWordUtil {private static CreateTestWordUtil createJGWordUtil;int numLevel = 0; //编号String filePath;String filename;@PostConstructpublic void init() {createJGWordUtil = this;}/*** @param styles 样式* @param strStyleId 标题id* @param headingLevel 标题级别* @param pointSize 字体大小(/2)* @param hexColor 字体颜色* @param typefaceName 字体名称(默认微软雅黑)*/public void createHeadingStyle(XWPFStyles styles, String strStyleId,int headingLevel, int pointSize, String hexColor, String typefaceName) {//创建样式CTStyle ctStyle = CTStyle.Factory.newInstance();//设置idctStyle.setStyleId(strStyleId);CTString styleName = CTString.Factory.newInstance();styleName.setVal(strStyleId);ctStyle.setName(styleName);CTDecimalNumber indentNumber = CTDecimalNumber.Factory.newInstance();indentNumber.setVal(BigInteger.valueOf(headingLevel));// 数字越低在格式栏中越突出ctStyle.setUiPriority(indentNumber);CTOnOff onoffnull = CTOnOff.Factory.newInstance();ctStyle.setUnhideWhenUsed(onoffnull);// 样式将显示在“格式”栏中ctStyle.setQFormat(onoffnull);// 样式定义给定级别的标题if (headingLevel != 0) {CTPPr ppr = CTPPr.Factory.newInstance();ppr.setOutlineLvl(indentNumber);ctStyle.setPPr(ppr);}XWPFStyle style = new XWPFStyle(ctStyle);CTHpsMeasure size = CTHpsMeasure.Factory.newInstance();size.setVal(new BigInteger(String.valueOf(pointSize)));CTHpsMeasure size2 = CTHpsMeasure.Factory.newInstance();size2.setVal(new BigInteger(String.valueOf(pointSize)));CTFonts fonts = CTFonts.Factory.newInstance();if (typefaceName == null || typefaceName.equals("")) typefaceName = "微软雅黑";fonts.setAscii(typefaceName); //字体CTRPr rpr = CTRPr.Factory.newInstance();rpr.setRFonts(fonts);rpr.setSz(size);rpr.setSzCs(size2); //字体大小CTColor color = CTColor.Factory.newInstance();color.setVal(hexToBytes(hexColor));rpr.setColor(color); //字体颜色style.getCTStyle().setRPr(rpr);// is a null op if already definedstyle.setType(STStyleType.PARAGRAPH);styles.addStyle(style);}public void writeWordAQJG() {// 文档生成方法XWPFDocument doc = new XWPFDocument();XWPFStyles xwpfStyles = doc.createStyles();CTFonts fonts = CTFonts.Factory.newInstance();fonts.setAscii("微软雅黑");fonts.setEastAsia("微软雅黑");fonts.setHAnsi("微软雅黑");xwpfStyles.setDefaultFonts(fonts);createHeadingStyle(xwpfStyles, "标题 1", 1, 32, "000000", "微软雅黑");createHeadingStyle(xwpfStyles, "标题 2", 2, 28, "000000", "微软雅黑");createHeadingStyle(xwpfStyles, "正文", 0, 24, "000000", "微软雅黑");XWPFParagraph xwpfParagraphtop = doc.createParagraph(); // 创建段落xwpfParagraphtop.setFontAlignment(2);xwpfParagraphtop.setStyle("标题 1");XWPFRun xwpfRuntop = xwpfParagraphtop.createRun(); // 创建段落文本xwpfRuntop.setText(String.format("标题")); // 设置文本
// xwpfRuntop.setFontFamily("微软雅黑");xwpfRuntop.setBold(true);xwpfRuntop.setFontSize(24);
// xwpfRuntop.addBreak();// 换行xwpfRuntop.addTab();XWPFParagraph xwpfParagraphtop1 = doc.createParagraph(); // 创建段落xwpfParagraphtop1.setFontAlignment(3);xwpfParagraphtop1.setStyle("正文");XWPFRun xwpfRuntop1 = xwpfParagraphtop1.createRun(); // 创建段落文本xwpfRuntop1.setText("- abcd"); // 设置文本
// xwpfRuntop1.setFontSize(12);
// xwpfRuntop1.addBreak();// 换行xwpfRuntop1.addTab();FileOutputStream out = null; // 创建输出流try {//需要的配置项writeItemBGGS(doc);writeItemNGDWQK(doc);writeItemNGZCQK(doc);writeItemDDZLQK(doc);if (System.getProperty("os.name").toLowerCase().contains("linux")) {filePath = "/usr/local/createfile/weekly/";} else {filePath = "D:\\hian\\createfile\\weekly\\";}filename = LocalDateTime.now().getYear() + "年" + LocalDateTime.now().getMonth().getValue() + "月-" + DateTime.now().getTime();File file = new File(filePath + filename + ".docx");if (!file.exists()) {file.getParentFile().mkdirs();file.createNewFile();}out = new FileOutputStream(file);doc.write(out);} catch (Exception e) {e.printStackTrace();} finally {if (out != null) {try {doc.close();out.close();} catch (IOException e) {e.printStackTrace();}}}}public void writeItemBGGS(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(10));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal("%1.");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建段落xwpfParagraphtext.setAlignment(ParagraphAlignment.LEFT);xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 1");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);XWPFParagraph xwpfParagraphtext1 = doc.createParagraph(); // 创建段落XWPFRun xwpfRuntext1 = xwpfParagraphtext1.createRun(); // 创建段落文本xwpfRuntext1.setStyle("正文");xwpfRuntext1.setText("abcd");xwpfRuntext1.addBreak();// 换行numLevel++;}public void writeItemNGDWQK(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(10));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal("%1.");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建段落xwpfParagraphtext.setAlignment(ParagraphAlignment.LEFT);xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 1");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);XWPFParagraph xwpfParagraphtext1 = doc.createParagraph(); // 创建段落XWPFRun xwpfRuntext1 = xwpfParagraphtext1.createRun(); // 创建段落文本xwpfRuntext1.setStyle("正文");xwpfRuntext1.setText("abcd");xwpfRuntext1.addBreak();// 换行numLevel++;}public void writeItemNGZCQK(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(10));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal("%1.");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建段落xwpfParagraphtext.setAlignment(ParagraphAlignment.LEFT);xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 1");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);numLevel++;writeItemZCRRQK(doc);writeItemGFXZC(doc);writeItemXTHGQK(doc);}public void writeItemDDZLQK(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(10));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal("%1.");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建段落xwpfParagraphtext.setAlignment(ParagraphAlignment.LEFT);xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 1");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);numLevel++;writeItemZLLXTJ(doc);writeItemZLXYTJ(doc);}public void writeItemZCRRQK(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(13));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal(numLevel + ".%1");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建标题段落xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 2");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);XWPFParagraph xwpfParagraphtext1 = doc.createParagraph(); // 创建段落XWPFRun xwpfRuntext1 = xwpfParagraphtext1.createRun(); // 创建段落文本xwpfRuntext1.setStyle("正文");xwpfRuntext1.setText(String.format("abcd:"));
// xwpfRuntext1.addTab();
// xwpfRuntext1.addBreak();// 换行}public void writeItemGFXZC(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(13));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal(numLevel + ".%1");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建标题段落xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 2");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);}public void writeItemXTHGQK(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(13));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal(numLevel + ".%1");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建标题段落xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 2");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);}public void writeItemZLLXTJ(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(14));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal(numLevel + ".%1");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建标题段落xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 2");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);}public void writeItemZLXYTJ(XWPFDocument doc) {//编号等级CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();cTAbstractNum.setAbstractNumId(BigInteger.valueOf(14));CTLvl cTLvl = cTAbstractNum.addNewLvl();cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);cTLvl.addNewLvlText().setVal(numLevel + ".%1");cTLvl.addNewStart().setVal(BigInteger.valueOf(1));XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);XWPFNumbering numbering = doc.createNumbering();BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);BigInteger numID = numbering.addNum(abstractNumID);XWPFParagraph xwpfParagraphtext = doc.createParagraph(); // 创建标题段落xwpfParagraphtext.setNumID(numID);xwpfParagraphtext.setStyle("标题 2");XWPFRun xwpfRuntext = xwpfParagraphtext.createRun(); // 创建段落文本xwpfRuntext.setText("标题");xwpfRuntext.setBold(true);XWPFParagraph xwpfParagraphtext1 = doc.createParagraph(); // 创建段落XWPFRun xwpfRuntext1 = xwpfParagraphtext1.createRun(); // 创建段落文本xwpfRuntext1.setStyle("正文");xwpfRuntext1.setText(String.format("abc"));}public static byte[] hexToBytes(String hexString) {HexBinaryAdapter adapter = new HexBinaryAdapter();byte[] bytes = adapter.unmarshal(hexString);return bytes;}}
相关文章:

使用 POI 在 Word 中重新开始编号、自定义标题格式
效果图 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- https…...
【java】default/private/public/protected比较
访问修饰符 访问修饰符本类同包子类其他privateYdefaultYYprotectedYYYpublicYYYY 总结: private、default、proteced、public访问范围依次增大、限制能力依次减弱;被private修饰的成员只能在本类中调用;default是默认类型,成员…...

面试热题(最长上升子序列)
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 输入࿱…...
Vue 简版文件预览笔记
简版文件预览笔记 调用方法 <script lang"ts" setup>import {exportFileData,preViewFile,} from /xxx/tools.ts;import {fileDownload,} from /api/xxx/xx;// 预览方法const handleViewBtn () > {const filePath 获取预览地址;const urlFormat 获取预…...

数据结构--栈和队列
文章目录 栈的概念和结构栈的实现栈的数据结构栈的初始化和销毁出栈和入栈获取栈顶、大小,判空 队列的概念和结构队列的实现队列的数据结构队列的初始化和销毁队列的插入 队列的删除获取队头和队尾的数据获取队列长度和判空 栈和队列的一些题目1.有效的括号2.用队列…...

泰国的区块链和NFT市场调研
泰国的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/zh-hans/%E6%B3%B0%E5%9B%BD参考: https://hktdc.infogram.com/thsc–1h7k2303zo75v2x zz制度: 君主立宪制(议会制) 国王: 玛哈哇集拉…...

精彩回顾 | D-Day深圳 上海站:高频策略研发再提速
上周末,DolphinDB 分别在上海及深圳成功举办了两场 D-Day 分享会,来自国内头部券商、公募基金以及多家私募机构的数十位核心策略研发、数据分析专家们分享了 DolphinDB 在量化交易各个环节的使用经验,并基于与同类技术栈的优劣势对比…...

新法!《个人信息保护合规审计管理办法(征求意见稿)》解读
8月3日,依据《中华人民共和国个人信息保护法》等法律法规,国家互联网信息办公室起草了《个人信息保护合规审计管理办法(征求意见稿)》(下文简称“办法”),并向社会公开征求意见。 据悉ÿ…...
南大通用数据库-Gbase-8a-学习-37-delete误删数据恢复方法
一、前提 在delete误删数据之后,没有再对此表进行其他ddl、dml和load等操作,可以使用手动切换AB版本的方式来进行数据恢复。 二、环境 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数…...

【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

UEditorPlus v3.3.0 图片上传压缩重构,UI优化,升级基础组件
UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…...
百度翻译API整合SpringBoot
案例背景,按照官方给的Demo,实在是太啰嗦了, 大致步骤 封装数据>签名>发送请求, 仔细一看劈里啪啦一大堆,最后还要手动关流关连接,难道整合到SpringBoot项目里面我还得为内存管理考虑 所以就有了如下需求 使用 RestTemplate的对象进行发送请求数据,RestTemplate由s…...
Spring @Primary、@Order、JSR @Priority作用与区别
前言 Primary、Order、Priority三个注解很常见,关于它们的异同,这里做个总结。 Primary、Order、Priority Primary Spring Primary控制注入优先级。 Order Spring Order控制注入到List中的排序,值越小优先级越高,不能是负数&am…...
【Mac】mac 系统下格式化U盘或移动硬盘为ext4格式
1. 打开终端,安装 homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2. 安装之后再次运行此命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"…...
ubuntu20.4 sgx环境配置
一、driver安装 1.在该下载地址将3个.bin文件下载下来,下载地址:https://download.01.org/intel-sgx/latest/linux-latest/distro/ubuntu20.04-server/ 2.到下载文件夹下输入下面命令,以赋予.bin文件的执行权限 sudo chmod 777 sgx_linux_x64…...
01.图片下拉触底分页加载每张图片
需求点分析 图片列表滚动触底的逻辑 将图片id组成的一维数组根据指定个数一组拆分为二维数组定义一个索引初始值为-1,图片列表滚动触底,索引值自增,然后将拆分好的图片id二位数组对应的数据读出来放到图片id的数组图片根据列表新增的id取读取…...

“精准学习嵌入式开发:明确目标,提升技能“
嵌入式领域涵盖广泛,不可能一次性掌握所有知识。因此,明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展,过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…...
C语言--联合体-共用体
有时候同一个内存空间存放类型不同,不同类型的变量共享一块空间 像结构体,但是有区别 1、 结构体元素有各自单独空间, 共用体元素共享空间,空间大小由最大类型确定 同一块空间,有时候存放char类型、有时候存放int型&am…...

echarts实现中国地图下钻进入下一级行政区(地图钻取)
获取geo数据: 可以使用node爬虫获取数据 最好多爬几遍,因为有时候会获取错误 实现逻辑 拥有geo数据后 请求geo数据注册地图 registerMap配置echarts增加事件监听(点击事件) 如果点击了,回到第一步。功能就是循环以…...

从0到1学会手写操作系统,我只用了2个小时
黑马嵌入式教程再出力作 重磅发布第三弹 《自己动手写嵌入式操作系统》 问:嵌入式开发不是只学单片机就行?为什么要学操作系统? 答:年轻人,别把路走窄了。且听我说↓↓↓ 嵌入式产品分为两大类:一类简单…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...