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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/79433.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GO】 33.go-zero 示例

1. 获取go-zero库 go get -u github.com/zeromicro/go-zero 2. 安装goctl brew install goctlgoctl -v #goctl version 1.5.4 darwin/amd64 3. 创建.api文件&#xff0c; greet.api goctl api -o greet.api syntax "v1"info (title: // TODO: add titledesc: //…

OSPF综合实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】R4为ISP&#xff0c;其上只能配置IP地址: R4与其他所有直连设备间使用公有 【2】R3---R5/6/7为MGRE环境&#xff0c;R3为中心站点 【3】整个OSPF环境IP地址为172.16.0.0/16 【4】所有设备…

Python——调用webdriver.Chrome() 报错

今天运行脚本&#xff0c;报错内容如下&#xff1a; collecting ... login_case.py:None (login_case.py) login_case.py:11: in <module> dr webdriver.Chrome() D:\Program Files (x86)\Python\Python39\Lib\site-packages\selenium\webdriver\chrome\webdriver.p…

外网通过ipv6访问家里设备

想从公司访问家里的设备&#xff0c;比较轻松方便的&#xff0c;用向日葵也可以远程。但是家里电脑比较old的了&#xff0c;向日葵开起来&#xff0c;占用内存挺大的&#xff0c;想尝试windows自带的“mstsc”&#xff0c;所以硬着头皮搞ipv6. &#xff08;重点提示&#xff1…

MySQL-NoSQL整体笔记---持续输出中

MySQL部分 一、搭建 MySQL 数据库服务器 1、下载并上传glibc版本的Mysql 2、新建用户以安全方式运行进程 [roottemplate ~]# groupadd -r -g 306 mysql [roottemplate ~]# useradd -g 306 -r -u 306 mysql3、安装并初始化mysql [roottemplate ~]# tar xf mysql-5.7.36-linu…

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站&#xff0c;在系列文章3的基础上继续开发&#xff0c; 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…

在.net 6.0中 调用远程服务器web服务,Webservices(xxx.asmx) ,RESTful 风格,2种解决方案。

1.使用 Connected Services&#xff1a; 右键单击您的项目&#xff0c;选择 "Add"&#xff08;添加&#xff09;-> "Connected Services"&#xff08;已连接的服务&#xff09;。 在 "Connected Services" 对话框中&#xff0c;选择 "W…

Gitlab CI/CD笔记-第一天-GitOps和以前的和jenkins的集成的区别

一、GitOps-CI/CD的流程图与Jenkins的流程图 从上图可以看到&#xff1a; GitOps与基于Jennkins技术栈的CI/CD流程&#xff0c;无法从Jenkins集成其他第三方开源的项目来实现换成了Gitlab来进行集成。 好处在于&#xff1a;CI 一个工具Gitlab就行了&#xff0c;但CD部分依旧是…

SpringBoot + Docker 实现一次构建到处运行~

一、容器化部署的好处 图片 Docker 作为一种新兴的虚拟化方式&#xff0c;它可以更高效的利用系统资源&#xff0c;不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟&#xff0c;而 Docker 容器应用&#xff0c;由于直接运行…

关于Java的IO流开发

IO概述 回想之前写过的程序&#xff0c;数据都是在内存中&#xff0c;一旦程序运行结束&#xff0c;这些数据都没有了&#xff0c;等下次再想使用这些数据&#xff0c;可是已经没有了。那怎么办呢&#xff1f;能不能把运算完的数据都保存下来&#xff0c;下次程序启动的时候&a…

嵌入式该往哪个方向发展?

1. 你所在的城市嵌入式Linux岗位多吗&#xff1f;我觉得这是影响你做决定的另一个大问题。我们学嵌入式Linux这门技术&#xff0c;绝大部分人是为了从事相关的工作&#xff0c;而不是陶冶情操。但是根据火哥统计来看&#xff0c;嵌入式Linux的普遍薪资虽然高于单片机&#xff0…

【论文阅读】UNICORN:基于运行时来源的高级持续威胁检测器(NDSS-2020)

UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats NDSS-2020 哈佛大学 Han X, Pasquier T, Bates A, et al. Unicorn: Runtime provenance-based detector for advanced persistent threats[J]. arXiv preprint arXiv:2001.01525, 2020. 源码&…

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(giteegithub)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成

新式健身房,如何实现都市人的健身自由?

在中国超40万亿的庞大消费市场中&#xff0c;从来不缺少叙事宏大的故事。 只不过&#xff0c;像突破万家门店这样的故事&#xff0c;往往出现在餐饮、医药、零售等行业的头部玩家身上&#xff0c;比如瑞幸、蜜雪冰城、华莱士、益丰药房、美宜佳等品牌。 健身房这个文化体育领…

ORB-SLAM2配置与安装

本篇博客最早发布于实验室公共博客&#xff0c;但已无人维护&#xff0c;现迁移至个人博客 有这些依赖项&#xff1a; https://github.com/raulmur/ORB_SLAM2 主要参考下面的博文 ORB-SLAM2 初体验 —— 配置安装 - MingruiYu - 博客园 (cnblogs.com) 注意在安装依赖项Pangoli…

详解Quest 2积分与奖励规则

7月28日&#xff0c;在万众期待中&#xff0c;Mysten Labs在Quest门户网站上宣布了Quest 2的到来。经过严密的筹划&#xff0c;本着真实、公平以及用户至上的原则&#xff0c;现在向大家介绍Quest 2的积分规则以及奖励规则。 温馨提示&#xff1a;第一轮Bullshark Quest是一次精…

Docker 网络模型使用详解 (1)Dockers网络基础

目录 环境准备 Dockers 网络基础 1.端口映射 查看随机映射端口范围 -p可以指定映射到本地端口 映射指定地址和指定端口 映射指定地址 宿主机端口随机分配 指定传输协议 端口暴露 容器互联 自定义网络 现在把container7加入到demo_net中 在启动一个容器加入到demo_net…

从0到1开发go-tcp框架【4实战片— — 开发MMO之玩家聊天篇】

从0到1开发go-tcp框架【实战片— — 开发MMO】 MMO&#xff08;MassiveMultiplayerOnlineGame&#xff09;&#xff1a;大型多人在线游戏&#xff08;多人在线网游&#xff09; 1 AOI兴趣点的算法 游戏中的坐标模型&#xff1a; 场景相关数值计算 ● 场景大小&#xff1a; 250…

AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)

大家好&#xff0c;我是风雨无阻。 通过前面几篇AI 绘画Stable Diffusion 研究系列的介绍&#xff0c;我们完成了Stable Diffusion整合包的安装、模型ControlNet1.1 安装、模型种类介绍与安装&#xff0c;相信看过教程的朋友们&#xff0c;手上已经有可以操作实践的Stable Diff…