Java使用spire.doc操作word文档(合并、插入文字图片和表格、替换书签)

一、引入依赖

<dependency>
	<groupId>e-iceblue</groupId>
	<artifactId>spire.office</artifactId>
	<version>7.5.4</version>
</dependency>

二、word操作

1、合并word文档

import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;

/**
 * 合并Word文档
 *
 * @Description
 * @Author ROC_WL
 * @Date 2024/3/8
 **/
public class MergerDocxTest {
    public static void main(String[] args) {
        //创建document对象
        Document document = new Document("D:\\temp\\document-blank.docx");//读取一个空的Word文档
        //加载一个需要写入的Word文档
        Document doc1 = new Document("D:\\temp\\document1.docx");
        for (int i = 0; i < doc1.getSections().getCount(); i++) {
            Section s = doc1.getSections().get(i);
            for (int j = 0; j < s.getBody().getChildObjects().getCount(); j++) {
                //获取文档中的段落和表格
                DocumentObject obj = s.getBody().getChildObjects().get(j);
                //将文档中的段落和表格插入到新的文档中
                document.getLastSection().getBody().getChildObjects().add(obj.deepClone());
            }
        }
        //循环写入
        for (int x = 0; x < 2; x++) {
            Document doc2 = new Document("D:\\temp\\document2.docx");
            for (int i = 0; i < doc2.getSections().getCount(); i++) {
                Section s = doc2.getSections().get(i);
                for (int j = 0; j < s.getBody().getChildObjects().getCount(); j++) {
                    DocumentObject obj = s.getBody().getChildObjects().get(j);
                    document.getLastSection().getBody().getChildObjects().add(obj.deepClone());
                }
            }
        }
        //保存文档
        document.saveToFile("D:\\temp\\mergerDocx.docx", FileFormat.Docx_2013);
    }
}

 

2、插入文字、图片、表格、富文本

import com.example.utils.DocxUtil;
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.DocPicture;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

/**
 * TODO
 *
 * @Description
 * @Author WL
 * @Date 2024/2/28
 **/
public class DocxAddParagraphTest {

    public static void main(String[] args) {
        //创建document对象
        Document document = new Document("D:\\temp\\document-blank.docx");
        //获取最后一个section
        Section newSec = document.getLastSection();
        //添加文本
        Paragraph textParagtaph = newSec.addParagraph();
        //设置文本格式
        ParagraphStyle styleContent = new ParagraphStyle(document);
        styleContent.setName("codeStyle");
        styleContent.getCharacterFormat().setFontName("宋体");
        styleContent.getCharacterFormat().setFontSize(10f);
        styleContent.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        document.getStyles().add(styleContent);
        textParagtaph.applyStyle("codeStyle");
        textParagtaph.appendText("第01号");

        Paragraph text1Paragtaph = newSec.addParagraph();
        //设置文本格式
        ParagraphStyle styleTitle = new ParagraphStyle(document);
        //设置样式名称
        styleTitle.setName("titleStyle");
        //设置字体
        styleTitle.getCharacterFormat().setFontName("宋体");
        //设置字体大小
        styleTitle.getCharacterFormat().setFontSize(20f);
        //设置文本颜色
        styleTitle.getCharacterFormat().setTextColor(Color.CYAN);
        //设置文本居中
        styleTitle.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Center);
        //添加样式到文档
        document.getStyles().add(styleTitle);
        //应用样式
        text1Paragtaph.applyStyle("titleStyle");
        //添加文本
        text1Paragtaph.appendText("关于******公告");

        //添加文本
        Paragraph textPeoParagtaph = newSec.addParagraph();
        //设置文本格式
        ParagraphStyle stylePeoContent = new ParagraphStyle(document);
        stylePeoContent.setName("peoStyle");
        stylePeoContent.getCharacterFormat().setFontName("宋体");
        stylePeoContent.getCharacterFormat().setFontSize(12f);
        stylePeoContent.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        document.getStyles().add(stylePeoContent);
        textPeoParagtaph.applyStyle("peoStyle");
        textPeoParagtaph.appendText("姓名:姜XX\t\t\t手机号码:13866669999");

        //添加文本
        Paragraph textAddParagtaph = newSec.addParagraph();
        //设置文本格式
        ParagraphStyle styleAddContent = new ParagraphStyle(document);
        styleAddContent.setName("addStyle");
        styleAddContent.getCharacterFormat().setFontName("宋体");
        styleAddContent.getCharacterFormat().setFontSize(12f);
        styleAddContent.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Left);
        document.getStyles().add(styleAddContent);
        textAddParagtaph.applyStyle("addStyle");
        textAddParagtaph.getFormat().setFirstLineIndent(30f);
        textAddParagtaph.appendText("联系地址:湖北武汉");

        //添加表格
        List<String> headerList = new ArrayList<>();
        headerList.add("姓名");
        headerList.add("电话");
        headerList.add("地址");
        List<List<Object>> dataList = new ArrayList<>();
        List<Object> data1 = new ArrayList<>();
        data1.add("姜XX");
        data1.add("18899996666");
        data1.add("浙江");
        dataList.add(data1);
        List<Object> data2 = new ArrayList<>();
        data2.add("tj");
        data2.add("15549490011");
        data2.add("杭州");
        dataList.add(data2);
        List<Object> data3 = new ArrayList<>();
        data3.add("赵XX");
        data3.add("135****713");
        data3.add("武汉");
        dataList.add(data3);
        String tableTitle = "表格标题";
        DocxUtil.createTable(newSec, headerList, dataList, tableTitle);

        //添加图片
        // 创建 DocPicture 类的对象
        DocPicture picture = new DocPicture(document);
        // 从磁盘加载图片
         String images = "D:\\temp\\123.jpg";
        picture.loadImage(images);
        // 设置图片大小
        picture.setWidth(180); //示例:80
        picture.setHeight(180);//示例:50
        picture.setHorizontalPosition(110); //示例:110.0F 水平位置
        picture.setVerticalPosition(220); //示例:110.0F 垂直位置
        Paragraph picParagraph = newSec.addParagraph();
        picParagraph.getChildObjects().add(picture);

        //添加图片
        // 创建 DocPicture 类的对象
        DocPicture picture1 = new DocPicture(document);
        // 从磁盘加载图片
         String images1 = "D:\\temp\\321.jpg";
        picture1.loadImage(images1);
        // 设置图片大小
        picture1.setWidth(500); //示例:80
        picture1.setHeight(180);//示例:50
        picture1.setHorizontalPosition(110); //示例:110.0F 水平位置
        picture1.setVerticalPosition(220); //示例:110.0F 垂直位置
        Paragraph picParagraph1 = newSec.addParagraph();
        picParagraph1.getChildObjects().add(picture1);


        //添加富文本
        Paragraph tempSectionContentParagraph = newSec.addParagraph();
        String htmlContent = "<p>Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。</p>
<p>Spire.Doc for Java 能执行多种 Word 文档处理任务,包括生成、读取、转换和打印 Word 文档,插入图片,添加页眉和页脚,创建表格,添加表单域和邮件合并域,添加书签,添加文本和图片水印,设置背景颜色和背景图片,添加脚注和尾注,添加超链接,加密和解密 Word 文档,添加批注,添加形状等。</p>
<p><img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAABWVJREFUeAHtnF9oW1Ucx3/nJumWZNXRqUh7W+PYFFa6NKAgKLVMHKgg+jARYYgMfaqwl3V7W/cidj46fVBERBHZi3tQx8ANGSKIQpqWPYyOLV1vowirxTaJS5N79vvdQdaO3Oacc+9NbsLJ0/3z/f3O9/fJ+XPvzW0B9EcT0AQ0AU1AE9AENAFNQBNoMwHW5vY3NZ8biJucwwQw9jJw/rhzkrEbuP0TY3AmvVS2NgW0eCc0sGbM+ASCOg0c4g0ZMCgDZ8cyhdInDc+34GAoYM30xz/kAMdF6kXD06OF8gkRrd8aw++EsvmyZmJKFBTlJi3FyLbjh76tPStrJifBtqeVCjGM4xmreFopVjGobbCcOcqGjxV9O2HMgPdHrfIZLzlkYtsCK2cmjnCbf45DylP7GMyZwd5NW6UvZIpW1Xoyq9LorJl8y7btrxGUL/MlFmAbhnF4v1X8VsWPTExLYeHQe53bcBYNRmVMCmirOCTfwCH5vYBWWdIyWLNm4iWb83N4LdWj7HaLQLxorRiMvbbfKp3fQubpVEtg5QZ2HOBQ+xFBbffktkkwAvufQeSV9NLapSZSpdOBw8oO9T7LqtULOEcllRxKBmFBxQhED44UVn+TDG0qDxTW3GDiqWoNLuKi9UBTJ74K2H/RCLwwslj608+0gcHCVW8E56hfOOd9fhoWzcUYW8Y5bBxXyTnRmGa6QGDl+nufxDnqMgf+SDMDQZ5nwP7BOWwsXVi96kc7vlzrbDQyO/Tgbs5qF9sNijyRB/JCnjZ6VN32tWfN9fcN1qCMPQpSqoaCiMMi8xGIj40Ulhe95PcN1pVU8tHKun0Zv869XgwFFstgvidmjA3ni3+rtuHLMLz6RO9D6xX+c2hBER38EskjeVWF5blnZVM7d7L1yiVc9TKqJloZh6tklsd6DmTyKyuy7XrqWVeGH96BoM53CiiCQ17JM3lvGaxF04xXVtZ+wMafkW203XryTN6pBhkvSj1rfs+ebbfs5XM4Dzwv01iotOidaqBaRH1Jw+Lj49G1cuEsXsMcFG0krDqqwakFaxLxKAWLHzoUyc3//g0O/FdFkneEBmuhmqi2Zn6FV0Mc52zGTH6JoN5ulrQjzzP21ahVfAdXS7ymbvwR7lm5gcQHXQuK2GAncGpszMk5KtSzZoZ6n4NqlW5jhPRbtBfqU1gch2h0bPTm6q+NjIr1rFp1ottBERynRqy1ESg6JgYL2ItuCbrvuHutgrBEoXYFOlcmric2l80vbN7v5j33WoVgxWLGUZzar3UzIqc2rNGp1aVQ4dWN7qOW4dZ7+CPp0whuoJ6PQwonxlR9vwM2sOg81pCvW+WwhD/S/tEHuz4btKxy/fh9G8Kw7our7+b6Eydt4FP1Ax2wYQCbShdKp2StCg1D2aTdqtewJL5ZobttiXxKUvrZHW8OvuMMFrZKgHdtj+Gl45tBvwbg5iEUsDhj0xmrNOVmcuNxfEVyAe/jTm481qrtUAxDg7ProgXLaEVziupCAQvNyqzKMlpRDkK6sMASMksiWw6scF4RYcfBEikqKI2GJUFWw9KwJAhISHXP0rAkCEhIdc/SsCQISEh1z9KwJAhISD33LHxisCbRXiikqp49w8I/YrNCQUDGhKJnz7B6YvjSbYd9VD17hrVvofQXPumkP4vriA95Jc8qZj3DokZj27YfwydSrj8hqRgLJAY9Ol4Vk/sCa/j6vzeBG2151CtVN3p0vEoF3RP7AovSZQrFj/A9k0nsYev30odky/FkTN71qO7JN1hkgcxEo5E0/nuUTxHaNZwfbqtb8xbptE2vHKAX8uQVlDc3OloT0AQ0AU1AE+gWAncAtcuNfiX0sWkAAAAASUVORK5CYII=" alt="" width="75" height="75" /></p>";
        htmlContent=htmlContent+"<p>&nbsp;</p>";
        tempSectionContentParagraph.appendHTML(htmlContent);


        //添加文本
        Paragraph text3Paragtaph = newSec.addParagraph();
        ParagraphStyle styleContent3 = new ParagraphStyle(document);
        styleContent3.setName("codeStyle3");
        styleContent3.getCharacterFormat().setFontName("宋体");
        styleContent3.getCharacterFormat().setFontSize(15f);
        document.getStyles().add(styleContent3);
        text3Paragtaph.applyStyle("codeStyle3");
        text3Paragtaph.appendText("第02号");

        Paragraph text4Paragtaph = newSec.addParagraph();
        //设置文本格式
        ParagraphStyle styleTitle4 = new ParagraphStyle(document);
        styleTitle4.setName("titleStyle4");
        styleTitle4.getCharacterFormat().setFontName("宋体");
        styleTitle4.getCharacterFormat().setFontSize(25f);
        styleTitle4.getCharacterFormat().setTextColor(Color.ORANGE);
        styleTitle4.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Center);
        document.getStyles().add(styleTitle4);
        text4Paragtaph.applyStyle("titleStyle4");
        text4Paragtaph.appendText("关于***************************Text");

        DocxUtil.insertHeaderAndFooter(newSec);

        document.saveToFile("D:\\temp\\documentNew.docx", FileFormat.Docx_2013);
    }

}

使用到的工具

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.TextRange;
import java.awt.*;
import java.security.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * TODO
 *
 * @Description
 * @Author WL
 * @Date 2024/2/28
 **/
public class DocxUtil {

    // 动态创建表格
    public static void createTable(Section section, List<String> header, List<List<Object>> data, String title) {
        //添加表格
        Table table = section.addTable(true);
        //设置表格的行数和列数
        table.resetCells(data.size()+ 2, header.size());
        //设置第一行作为表格的表头并添加数据
        TableRow row = table.getRows().get(1);
        row.isHeader(true);
        row.setHeight(40);
        row.setHeightType(TableRowHeightType.Exactly);
        TableRow row3 = table.getRows().get(0);
        row3.isHeader(true);
        row3.setHeight(60);
        row3.setHeightType(TableRowHeightType.Exactly);
        row3.getCells().get(0).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
        table.applyHorizontalMerge(0, 0, header.size() - 1);
        Paragraph p1 = row3.getCells().get(0).addParagraph();
        p1.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
        TextRange range3 = p1.appendText(title);
        range3.getCharacterFormat().setFontName("仿宋_GB2312");
        range3.getCharacterFormat().setFontSize(12f);
        range3.getCharacterFormat().setTextColor(Color.black);
        range3.getCharacterFormat().setBold(true);

        for (int i = 0; i < header.size(); i++) {
            row.getCells().get(i).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
            Paragraph p = row.getCells().get(i).addParagraph();
            p.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
            TextRange range1 = p.appendText(header.get(i));
            range1.getCharacterFormat().setTextColor(Color.black);
            range1.getCharacterFormat().setFontName("仿宋_GB2312");
            range1.getCharacterFormat().setFontSize(12f);
            range1.getCharacterFormat().setBold(true);
        }

        //添加数据到剩余行
        try{
            for (int r = 0; r < data.size(); r++) {
                TableRow dataRow = table.getRows().get(r + 2);
                dataRow.setHeight(25);
                dataRow.setHeightType(TableRowHeightType.Exactly);
                dataRow.getRowFormat().setBackColor(Color.white);
                for (int c = 0; c < data.get(r).size(); c++) {
                    dataRow.getCells().get(c).getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                    String s = "";
                    if (data.get(r).get(c) instanceof Timestamp) {
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
                        s = df.format((Timestamp) (data.get(r).get(c)));
                    } else if (data.get(r).get(c) instanceof Date) {
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
                        s = df.format((Date) (data.get(r).get(c)));
                    } else if (data.get(r).get(c) == null) {
                        s = "";
                    } else {
                        s = data.get(r).get(c).toString();
                    }

                    TextRange range2 = dataRow.getCells().get(c).addParagraph().appendText(s);


                    range2.getCharacterFormat().setFontName("仿宋_GB2312");
                    range2.getCharacterFormat().setFontSize(10f);
                }
            }
        }catch (Exception e){
            e.getMessage();
//            log.info("插入数据有异常");
        }
        section.addParagraph();
    }

    //生成页眉和页脚
    public static void insertHeaderAndFooter(Section section) {

        //分别获取section的页眉页脚
        HeaderFooter header = section.getHeadersFooters().getHeader();
        HeaderFooter footer = section.getHeadersFooters().getFooter();

        //添加段落到页眉
        Paragraph headerParagraph = header.addParagraph();

        //添加文字到页眉的段落
        TextRange text = headerParagraph.appendText("页眉测试");
        text.getCharacterFormat().setFontName("仿宋_GB2312");
        text.getCharacterFormat().setFontSize(10);
        text.getCharacterFormat().setItalic(true);
        headerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);

        //设置页眉段落的底部边线样式
        headerParagraph.getFormat().getBorders().getBottom().setBorderType(BorderStyle.Single);
        headerParagraph.getFormat().getBorders().getBottom().setLineWidth(1f);

        //添加段落到页脚
        Paragraph footerParagraph = footer.addParagraph();

        //添加Field_Page和Field_Num_Pages域到页脚段落,用于显示当前页码和总页数
        footerParagraph.appendField("page number", FieldType.Field_Page);
        footerParagraph.appendText("/");
        footerParagraph.appendField("number of pages", FieldType.Field_Num_Pages);
        footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);

        //设置页脚段落的顶部边线样式
        footerParagraph.getFormat().getBorders().getTop().setBorderType(BorderStyle.Single);
        footerParagraph.getFormat().getBorders().getTop().setLineWidth(1f);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java多线程实现同步的方式介绍

在 Java 多线程编程中&#xff0c;同步是确保多个线程在访问共享资源时的正确性和一致性的重要机制。Java 提供了多种方式来实现线程同步&#xff0c;每种方式都有其特点和适用场景。以下是一些常见的同步方式及其特点和应用场景&#xff0c;以及简单的例子来说明它们的用法。 …

从零开始的LeetCode刷题日记:142.环形链表II

一.相关链接 视频链接&#xff1a;代码随想录&#xff1a;142.环形链表II 题目链接&#xff1a;142.环形链表II 二.心得体会 这道题是一道链表题&#xff0c;但他没有对头结点的操作&#xff0c;所以不用虚拟头结点。这道题要分两步进行&#xff0c;第一步是判断链表有没有环…

win11修改主机mac地址

很多时候&#xff0c;为了限制恶意的蹭流浪&#xff0c;除了分配固定的ip地址外&#xff0c;还限制mac地址。只有mac与ip一致&#xff0c;才能上网冲浪 网络适配器中修改 搜索“控制面板”打开 控制面板 > 网络和Internet > 网络和共享中心 >查看网络状态和任务>…

Redis什么这么快和Redis单线程模型和多线程

概述 1、完全基于内存&#xff0c;绝大部分请求是纯粹的内存操作&#xff0c;非常快速。数据存在内存中&#xff0c;类似于HashMap&#xff0c;HashMap的优势就是查找和操作的时间复杂度都是O(1)&#xff1b; 2、数据结构简单&#xff0c;对数据操作也简单&#xff0c;Redis中…

测试常用的Linux命令

前言 直接操作硬件 将把操作硬件的代码封装成系统调用&#xff0c;供程序员使用 虚拟机软件 可以模拟的具有完整硬件系统的功能 可以在虚拟机上安装不同的操作系统 Linux内核只有一个&#xff0c;发行版有很多种 内核来运行程序和管理像磁盘和打印机等硬件设备的核心程序 终端…

AD20中关于“Net(s) Not Found in Differential Pair”的解决方法

问题描述&#xff1a; Net(s) Not Found in Differential Pair&#xff1a;在差分对中找不到网络 我们需要在原理图设计中需要添加差分对&#xff0c;已经遵循了_N _P 结尾&#xff0c;也添加了差分对标识符&#xff0c;但是转换到PCB时显示差分对报错 解决方法&#xf…

GSA、GSEA、ssGSEA、GSVA用到的统计学知识点

文章目录 概率密度函数&#xff08;probability density function&#xff0c;PDF&#xff09;分布函数&#xff08;Cumulative Distribution Function&#xff0c;CDF&#xff09;核密度估计&#xff08;KDE&#xff09;经验累计分布函数&#xff08;Empirical Cumulative Dis…

VUE_nuxt启动只能通过localhost访问,ip访问不到:问题解决

修改项目根目录下的 package.json "config": {"nuxt": {"host": "0.0.0.0","port": "3000"} } 这样项目启动后就可以通过ip进行访问了

目标检测论文模型笔记——YOLO系列

1. YOLOv1的核心思想&#xff1a; YOLOv1&#xff1a;使用整张图作为输入&#xff0c;直接在输出层回归bounding box和类别&#xff1b;&#xff08;one-stage&#xff09;Faster RCNN&#xff1a;使用用整张图作为输入&#xff0c;但整体采用了RCNN&#xff1a; proposalclas…

Facebook的社交未来:元宇宙时代的数字共融

引言&#xff1a; 随着科技的不断进步和社会的快速发展&#xff0c;人们对于社交网络的需求和期待也在不断演变。在这个数字化时代&#xff0c;元宇宙的概念逐渐引发了人们对社交体验的重新思考。作为全球最大的社交网络之一&#xff0c;Facebook正在积极探索元宇宙时代的社交…

低空经济20人|卓翼智能任雪峰:以技术驱动市场,引领无人机细分领域创新

作为国内系留无人机领域的领头羊企业&#xff0c;卓翼智能致力于提供智能无人系统解决方案。本期“低空经济20人”请到卓翼智能CEO任雪峰分享他对系留无人机研发应用的经验以及未来无人机行业生态发展的观点。 如今&#xff0c;无人机的应用场景逐渐广泛&#xff0c;在社会发展…

go go.mod file not found in current directory or any parent directory

场景&#xff1a; 安装好 liteide 之后创建了第一个 “hello world” 的golang 项目&#xff0c;却报了如下错误。 原因分析&#xff1a; go 的环境配置问题。与 golang 的包管理有关。 解决方案&#xff1a; 如果你是 Windows 系统&#xff0c;快捷键 “WinR”&#xff0c…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现双快门采集两张曝光时间非常短的图像(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现双快门采集两张曝光时间非常短的图像&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机定序器功能的技术背景Baumer工业相机通过NEOAPI SDK使用定序器功能预期的相机动作技术限制定序器的工作原理 Baumer工业相机通过…

获取C语言语句对应的汇编码和机器指令

借助IDE的调试功能 以CodeBlocks为例&#xff0c;先设置断点&#xff0c;然后点击红色三角形调试。 然后选择Debug➡ Debugging Windows➡Disassembly 就可以看到了 使用命令行 在工程文件中&#xff0c;一般可以找到一个.o文件。如果没有&#xff0c;可以先在program.c的目录下…

【JavaEE初阶】 关于JVM垃圾回收

文章目录 &#x1f343;前言&#x1f38b;死亡对象的判断算法&#x1f6a9;引用计数算法&#x1f6a9;可达性分析算法 &#x1f333;垃圾回收算法&#x1f6a9;标记-清除算法&#x1f6a9;复制算法&#x1f6a9;标记-整理算法&#x1f6a9;分代算法&#x1f388;哪些对象会进入…

在哪里可以下载大自然短视频素材?大自然短视频素材网分享

如果你想要制作短视频但又担心找不到那些让人心旷神怡的大自然素材&#xff0c;别急&#xff0c;我这就给你安利几个可以下载到高清、无水印的大自然短视频素材的网站。这样&#xff0c;你不仅能让作品视觉效果大大提升&#xff0c;还能让观众感受到大自然的魅力&#xff0c;一…

C语言之指针习题一

1. 解析&#xff1a;全选 2. 解析&#xff1a;A.当内存空间释放后&#xff0c;指针将指向其他的区域&#xff0c;成为野指针 3. 解析&#xff1a;B&#xff0c;assert只会在调试模式&#xff08;debug&#xff09;下使用&#xff0c;release不会使用 4. 解析&#xff1a; A…

【CSP试题回顾】202109-1-数组推导

CSP-202109-1-数组推导 解题代码 #include<iostream> #include<vector> #include<algorithm> using namespace std;long long maxSum, minSum;int main() { int n;cin >> n;vector<int>B(n);for (auto& it : B){cin >> it;maxSum …

day38 动态规划part1

509. 斐波那契数 简单 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;…

PR:添加MTV动态歌词

MTV的歌词效果如下&#xff1a; 1.用文字工具编辑歌词&#xff0c;选择合适的字体 2.点中素材&#xff0c;按住Alt键向上拖拽复制一份 3.文字填充色选择蓝色&#xff0c;描边选择白色加粗 4.添加不透明度蒙版&#xff0c;拖拽至歌词前面 5.打开蒙版路径前的秒表 6.在歌词结尾处…