当前位置: 首页 > news >正文

java 纯代码导出pdf合并单元格

java 纯代码导出pdf合并单元格
接上篇博客 java导出pdf(纯代码实现) 后有一部分猿友叫我提供一下源码,实际上我的源码已经贴在帖子上了,都是同样的步骤,只是加多一点设置就可以了。今天我再次上传一下相对情况比较完整导出PDF的场景,包含列表,合并单元格,设置边框等,具体请先看效果图:
注:次效果图仅供参考,内容均为测试数据不具有任何意义。
在这里插入图片描述
废话不多说,直接上源码:

@SneakyThrows@PostMapping("/download")@ApiOperation(value = "模板下载")public void download(@RequestBody TemplateDownloadDTO downloadDTO, HttpServletRequest request, HttpServletResponse response){//该导出仅针对一条数据故要传id确定数据Assert.notNull(downloadDTO.getId(),"id必传");request.getSession();String fileName = "文件名称";PdfUtil.setResponseContentType(response,fileName);stockOutService.download(downloadDTO,response);}

以下为导出PDF头部设置,具体在另外一个帖子中有

public static void setResponseContentType(HttpServletResponse response, String fileName) throws UnsupportedEncodingException {response.setContentType("application/pdf");response.setCharacterEncoding("utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8") + ".pdf");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");}

以下是逻辑部分

/*** 调运明细模板下载** @param downloadDTO 入参* @param response    返回*/@Overridepublic void download(TemplateDownloadDTO downloadDTO, HttpServletResponse response) {		//你自己的查询数据的逻辑部分,我这里做了删减不展示List<StockOutDtlVO> vos = BeanUtils.copyListPropertiesByClass(list, StockOutDtlVO.class);vo.setDtls(vos);//定义全局字体静态变量Font titlefont;Font headfont = null;Font headfont1 = null;Font keyfont = null;Font textfont = null;Font textfont1 = null;Font content = null;Font space = null;Font space1 = null;Font space2 = null;Font space3 = null;//最大宽度try {BaseFont font = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);titlefont = new Font(font, 16, Font.BOLD);//四号headfont = new Font(font, 14, Font.BOLD);headfont1 = new Font(font, 14, Font.NORMAL);//三号content = new Font(font, 16, Font.NORMAL);//小四textfont = new Font(font, 11, Font.BOLD);textfont1 = new Font(font, 11, Font.NORMAL);space = new Font(font, 2, Font.NORMAL);space1 = new Font(font, 10, Font.NORMAL);space2 = new Font(font, 30, Font.NORMAL);space3 = new Font(font, 20, Font.NORMAL);} catch (Exception e) {e.printStackTrace();}BaseFont bf;Font font = null;try {//创建字体bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);font = new Font(bf, 22, Font.BOLD, BaseColor.BLACK);} catch (Exception e) {e.printStackTrace();}Document document = new Document(new Rectangle(PageSize.A4));//设置PDF工作区上下左右和纸张的边距document.setMargins(60, 60, 72, 72);try {PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());//页码,具体详见另外一篇帖子writer.setPageEvent(new PdfPageUtil());document.open();Paragraph paragraph = new Paragraph("深圳市市级救灾物资调运明细表", font);paragraph.setAlignment(Element.ALIGN_CENTER);document.add(paragraph);document.add(new Paragraph("\n", space1));Paragraph paragraph1 = new Paragraph(CharSequenceUtil.format("编号:{}", vo.getDjbh()), headfont1);paragraph1.setAlignment(Element.ALIGN_RIGHT);document.add(paragraph1);document.add(new Paragraph("\n", space));float[] widths = {25f, 25f, 25f, 25f, 25f, 25f};PdfPTable table = new PdfPTable(widths);table.setSpacingBefore(20f);table.setWidthPercentage(100.0f);table.setHeaderRows(Element.ALIGN_CENTER);table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);PdfPCell cell = null;//第一行cell = new PdfPCell(new Paragraph("调出单位", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(55);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getDcdwmc(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("接收单位", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getJsdwmc(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("储备服务单位", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("XXXX", textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("调出地点", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(55);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getDckdmc(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("接收地点", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getPsdz(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("车牌号", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(null, textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系人", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(55);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系人", textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系人", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getJsdwlxr(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系人\n(司机)", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(null, textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系电话", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(40);table.addCell(cell);cell = new PdfPCell(new Paragraph("1300000000", textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系电话", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(vo.getJsdwlxrdh(), textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("联系人电话", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph(null, textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("车型及运输费用结算", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(55);table.addCell(cell);String concent = CharSequenceUtil.format("车型:{} \n\n 结算方式:{}", getCx(vo), getJsfs(vo));cell = new PdfPCell(new Paragraph(concent, textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);//合并单元格cell.setColspan(5);cell.setRowspan(1);table.addCell(cell);cell = new PdfPCell(new Paragraph("调出时间", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(40);table.addCell(cell);cell = new PdfPCell(new Paragraph("    月      日      时      分", textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(2);cell.setRowspan(1);table.addCell(cell);cell = new PdfPCell(new Paragraph("应送达时间", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("    月      日      时      分", textfont1));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setColspan(2);cell.setRowspan(1);table.addCell(cell);cell = new PdfPCell(new Paragraph("物资名称", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setFixedHeight(40);table.addCell(cell);cell = new PdfPCell(new Paragraph("规格型号", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);//后面2个单元格合并cell.setColspan(2);//合并为1个cell.setRowspan(1);table.addCell(cell);cell = new PdfPCell(new Paragraph("数量", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("单位", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);cell = new PdfPCell(new Paragraph("备注", textfont));cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);table.addCell(cell);//以下为列表数据输出List<StockOutDtlVO> dtl = vo.getDtls();if (dtl.size() > 0) {for (StockOutDtlVO stock : dtl) {PdfPCell cell1 = new PdfPCell(new Paragraph(stock.getWzmc(), textfont1));PdfPCell cell2 = new PdfPCell(new Paragraph(stock.getGgxh(), textfont1));PdfPCell cell3 = new PdfPCell(new Paragraph(stock.getSl().toString(), textfont1));PdfPCell cell4 = new PdfPCell(new Paragraph(stock.getDw(), textfont1));PdfPCell cell5 = new PdfPCell(new Paragraph(stock.getBz(), textfont1));cell1.setHorizontalAlignment(Element.ALIGN_CENTER);cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);cell1.setFixedHeight(40);cell2.setHorizontalAlignment(Element.ALIGN_CENTER);cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);cell2.setColspan(2);cell2.setRowspan(1);
//                    cell2.setFixedHeight(20);cell3.setHorizontalAlignment(Element.ALIGN_CENTER);cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);
//                    cell3.setFixedHeight(20);cell4.setHorizontalAlignment(Element.ALIGN_CENTER);cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);
//                    cell4.setFixedHeight(20);cell5.setHorizontalAlignment(Element.ALIGN_CENTER);cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);
//                    cell5.setFixedHeight(20);table.addCell(cell1);table.addCell(cell2);table.addCell(cell3);table.addCell(cell4);table.addCell(cell5);}}document.add(table);document.add(new Paragraph("\n", space2));float[] widthes = {25f, 25f};table = new PdfPTable(widthes);table.setSpacingBefore(20f);table.setWidthPercentage(100.0f);PdfPCell cell1 = new PdfPCell(new Paragraph("储备管理服务单位:", headfont1));cell1.setVerticalAlignment(Element.ALIGN_LEFT);cell1.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell1.setFixedHeight(35);//加上该配置不显示单元格边框cell1.setBorder(0);PdfPCell cell2 = new PdfPCell(new Paragraph("承运司机:", headfont1));cell2.setVerticalAlignment(Element.ALIGN_LEFT);cell2.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell2.setBorder(0);table.addCell(cell1);table.addCell(cell2);document.add(table);float[] widthe2 = {25f, 25f, 25f};table = new PdfPTable(widthe2);table.setSpacingBefore(20f);table.setWidthPercentage(100.0f);PdfPCell cell3 = new PdfPCell(new Paragraph("调出单位初审:", headfont1));cell3.setVerticalAlignment(Element.ALIGN_LEFT);cell3.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell3.setFixedHeight(35);cell3.setBorder(0);PdfPCell cell4 = new PdfPCell(new Paragraph("复核:", headfont1));cell4.setVerticalAlignment(Element.ALIGN_LEFT);cell4.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell4.setBorder(0);PdfPCell cell5 = new PdfPCell(new Paragraph("领导审批:", headfont1));cell5.setVerticalAlignment(Element.ALIGN_LEFT);cell5.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell5.setBorder(0);table.addCell(cell3);table.addCell(cell4);table.addCell(cell5);document.add(table);float[] widthe3 = {25f, 25f};table = new PdfPTable(widthe3);table.setSpacingBefore(20f);table.setWidthPercentage(100.0f);PdfPCell cell6 = new PdfPCell(new Paragraph("接收单位签收人:", headfont1));cell6.setVerticalAlignment(Element.ALIGN_LEFT);cell6.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell6.setFixedHeight(35);cell6.setBorder(0);PdfPCell cell7 = new PdfPCell(new Paragraph("签收时间:    月    日    时    分", headfont1));cell7.setVerticalAlignment(Element.ALIGN_LEFT);cell7.setHorizontalAlignment(Element.ALIGN_MIDDLE);cell7.setBorder(0);table.addCell(cell6);table.addCell(cell7);document.add(table);document.close();} catch (Exception e) {e.printStackTrace();}}

该用到的步骤我已经标注的很详细了,即是我自己的学习记录希望能帮到各位猿友。如有不足之处还望多多指教!

相关文章:

java 纯代码导出pdf合并单元格

java 纯代码导出pdf合并单元格 接上篇博客 java导出pdf&#xff08;纯代码实现&#xff09; 后有一部分猿友叫我提供一下源码&#xff0c;实际上我的源码已经贴在帖子上了&#xff0c;都是同样的步骤&#xff0c;只是加多一点设置就可以了。今天我再次上传一下相对情况比较完整…...

Linux自己的应用商店yum

&#x1f4ab;Linux系统如何安装软件 在Linux系统中我们可以通过多种方式安装软件&#xff0c;常见方式有以下三种&#xff1a;   1.源代码安装   2.rpm包安装   3.使用yum软件包管理器安装   早期人们通过下载软件源代码&#xff0c;然后再经过交叉编译等一系列工作下…...

集成电路模拟设计——【基于Serdes 应用的 串化/解串器 时钟与数据恢复电路CDR】

串化/解串器 & 时钟与数据恢复电路CDR&#xff08;可提供实现过程、仿真波形与具体参数细节 本文内容摘要背景串化/解串器全速树形串化器半速树形串化器全速移位寄存器串化器多级树形解串器 PLL型CDR整体架构实现结果 Bang-Bang型CDR整体架构 PS/PI型CDR电路PS电路设计PI电…...

OpenWrt 编译入门(小白版)

编译环境 示例编译所用系统为 Ubuntu 22.04&#xff0c;信息如下 编译时由于网络问题&#xff0c;部分软件包可能出现下载问题&#xff0c;还请自备网络工具或尝试重新运行命令 编译步骤 下图为官网指示 编译环境设置&#xff08;Build system setup&#xff09; 这里根据我…...

嵌入式视频播放器(mplayer)

1.文件准备&#xff1a; MPlayer-1.0rc2.tar.bz2 libmad-0.15.1b.tar.gz 直接Git到本地 git clone https://gitee.com/zxz_FINE/mplayer_tarball.git 2.文件夹准备&#xff1a; src存放解压后的源码文件&#xff0c;target_Mplayer存放编译安装的目标文件 mkdir src targe…...

对房价数据集进行处理和数据分析

大家好&#xff0c;我是带我去滑雪&#xff0c;每天教你一个小技巧&#xff01; 房价数据集通常包含各种各样的特征&#xff0c;如房屋面积、地理位置、建造年份等。通过对数据进行处理和分析&#xff0c;可以更好地理解这些特征之间的关系&#xff0c;以及它们对房价的影响程度…...

BERT的学习

BERT 1.前言 self-supervised learning是一种无监督学习的特殊形式&#xff0c;算法从数据本身生成标签或者目标&#xff0c;然后利用这些生成的目标来进行学习。&#xff08;也就是说数据集的标签是模型自动生成的&#xff0c;不是由人为提供的。&#xff09;例如&#xff0…...

数据结构OJ实验9-图存储结构和遍历

A. 图综合练习--构建邻接表 题目描述 已知一有向图&#xff0c;构建该图对应的邻接表。 邻接表包含数组和单链表两种数据结构&#xff0c;其中每个数组元素也是单链表的头结点&#xff0c;数组元素包含两个属性&#xff0c;属性一是顶点编号info&#xff0c;属性二是指针域n…...

20231226在Firefly的AIO-3399J开发板上在Android11下调通后摄像头ov13850

20231226在Firefly的AIO-3399J开发板上在Android11下调通后摄像头ov13850 2023/12/26 8:22 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab And…...

0101包冲突导致安装docker失败-docker-云原生

文章目录 1 前言2 报错3 解决结语 1 前言 最近在学习k8s&#xff0c;前置条件就是要安装指定版本的docker&#xff0c;命令如下 yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.62 报错 file /usr/libexec/docker/cli-plugins/docker-buildx fr…...

【力扣100】17.电话号码的字母组合

添加链接描述 class Solution:def letterCombinations(self, digits: str) -> List[str]:# 思路是使用回溯算法if not digits:return []phone {2:[a,b,c],3:[d,e,f],4:[g,h,i],5:[j,k,l],6:[m,n,o],7:[p,q,r,s],8:[t,u,v],9:[w,x,y,z]}def backtrack(con,dig):# 收获if le…...

2023。

一月 从头开始 二月 准备复试&初试成绩 三月 最开心 过了两个生日&#xff08;这机率&#xff0c;幸运儿&#xff09; 考研也成功上岸&#xff01;nnuGISer! 四月 和室友去了趟武汉 五月 拍毕业照 六月 人生高光时刻 省创&#xff01;上台领奖&#xff01;考研…...

出现 Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 在驱动Springboot项目的时候,出现如下问题: org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql...

Linux--批量自动装机

实验环境 随着某公司业务不断发展&#xff0c;服务器主机的数量也迅速增长&#xff0c;对于功能变更或新采购的服务器&#xff0c; 需要重新安装CentOS7操作系统&#xff0c;为了提高服务器装机效率&#xff0c;要求基于PXE网络实现全自动无人值 守批量安装。 需求描述 > 服…...

病理HE学习贴(自备)

目录 正常结构 癌症HE 在线学习 以胃癌的学习为例 正常结构 1&#xff1a;胃粘膜正常结构和细胞分化 ●表面覆盖小凹上皮细胞(主要标志物&#xff1a;MUC5AC)以保护黏膜。 ●胃底腺固有腺体由黏液颈细胞(MUC6)、主细胞(Pepsinogen l)和壁细胞(Proton pump α-subunit)组…...

关于协同过滤算法在物联网的应用-基于用户行为数据和物联网设备数据,以此提供个性化的智能家居控制推荐服务

关于协同过滤算法在物联网领域的应用的一个案例是基于用户行为数据和物联网设备数据&#xff0c;为用户提供个性化的智能家居控制推荐服务。 具体实现如下&#xff1a; 数据收集&#xff1a;收集用户对智能家居设备的使用行为数据&#xff0c;包括设备的打开、关闭、调节等操…...

计算机网络(6):应用层

每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。即使是对等通信方式&#x…...

ESP32:整合存储配网信息和MQTT笔记

文章目录 1.给LED和KEY的所用IO增加配置项1.1 增加配置文件1.2 修改相应的c源码 2. 把mqtt\tcp的工程整合到一起2.1 在何处调用 mqtt_app_start() 3. 测试MQTT4. 完整的工程源码 有一段时间没有玩ESP32&#xff0c;很多知识点都忘记了。今天测试一下MQTT&#xff0c;做个笔记。…...

nginx源码分析-4

这一章内容讲述nginx的模块化。 ngx_module_t&#xff1a;一个结构体&#xff0c;用于描述nginx中的各个模块&#xff0c;其中包括核心模块、HTTP模块、事件模块等。这个结构体包含了一些模块的关键信息和回调函数&#xff0c;以便nginx在运行时能够正确地加载和管理这些模块。…...

【Unity美术】Unity工程师对3D模型需要达到的了解【二】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

LightOnOCR-2-1B惊艳效果展示:高清扫描件→结构化文本真实生成作品集

LightOnOCR-2-1B惊艳效果展示&#xff1a;高清扫描件→结构化文本真实生成作品集 当高清扫描件遇上智能OCR&#xff0c;文字识别从此变得如此简单精准 1. 开篇&#xff1a;重新定义文字识别的智能体验 你是否曾经为了从扫描文件中提取文字而头疼&#xff1f;传统的OCR工具要么…...

2025.03.15【技术指南】| Stacks数据预处理与process_radtags命令详解

1. Stacks数据预处理的核心价值 第一次接触RAD-seq数据分析时&#xff0c;我面对原始测序数据完全无从下手——直到发现了Stacks的process_radtags命令。这个看似简单的命令行工具&#xff0c;实际上是连接原始数据和后续分析的桥梁。它就像实验室里的离心机&#xff0c;能把混…...

【杭州线下召开】2026年计算智能与机器学习国际学术会议(CIML 2026)

会议官网&#xff1a;https://www.yanfajia.com/action/p/72VM5NK7 会议日期&#xff1a;2026年3月27–29日 会议地点 &#x1f4cd; 会议地点 杭州思耐酒店&#xff08;西湖西溪灵隐店&#xff09; 西湖区近灵隐寺/西溪湿地 会议简介 由浙江水利水电学院主办的2026年计算…...

AFSim六自由度制导处理器实战解析:从配置到多阶段飞行控制

1. AFSim六自由度制导处理器入门指南 第一次接触AFSim的六自由度制导处理器时&#xff0c;我完全被它复杂的参数列表吓到了。但经过几个实战项目的摸索&#xff0c;发现只要掌握核心逻辑&#xff0c;这个工具能实现各种精妙的制导策略。WSF_P6DOF_GUIDANCE_COMPUTER本质上是个&…...

别再混淆CRU和FRU了!一文读懂华为SmartKit工具在维保服务中的关键角色

华为SmartKit工具&#xff1a;CRU与FRU维保边界的智能守护者 在IT设备全生命周期管理中&#xff0c;硬盘故障报警灯亮起的瞬间&#xff0c;大多数管理员的第一反应是"能否自己更换"。这个看似简单的决策背后&#xff0c;隐藏着**CRU&#xff08;Customer Replaceable…...

nlp_structbert_sentence-similarity_chinese-large 内存与显存优化详解:处理C盘空间不足与模型加载的权衡

nlp_structbert_sentence-similarity_chinese-large 内存与显存优化详解&#xff1a;处理C盘空间不足与模型加载的权衡 你是不是也遇到过这种情况&#xff1f;兴致勃勃地准备跑一个中文语义相似度模型&#xff0c;比如 nlp_structbert_sentence-similarity_chinese-large&…...

AMD Ryzen处理器终极调试指南:如何用SMUDebugTool优化性能

AMD Ryzen处理器终极调试指南&#xff1a;如何用SMUDebugTool优化性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

AI模型安全入门:手把手带你用BadNets理解后门攻击的威胁与防御起点

AI模型安全实战&#xff1a;从BadNets看后门攻击的防御之道 在深度学习模型日益普及的今天&#xff0c;模型安全已成为不容忽视的关键议题。想象一下&#xff0c;当你精心训练的模型在生产环境中表现优异&#xff0c;却突然在某些特定输入下产生完全错误的预测——这很可能就是…...

vcpkg 安装zlib 时VS语言包缺失导致的构建失败问题解析

1. 问题现象与初步排查 最近在Windows平台上用vcpkg安装zlib时&#xff0c;遇到了一个让人头疼的构建失败问题。错误日志里赫然显示着"BUILD_FAILED"的红色警告&#xff0c;仔细查看详细日志会发现更具体的报错信息&#xff1a;"unistd.h(5) : fatal error RC10…...

TMC4671开环控制实战:从参数配置到电机运转

1. TMC4671开环控制基础入门 第一次接触TMC4671这款伺服控制器时&#xff0c;我被它强大的集成度震惊了。这款芯片把BLDC/PMSM电机控制需要的所有功能都打包进了硬件&#xff0c;连ADC和位置传感器接口都内置了。对于刚入门的开发者来说&#xff0c;开环控制是最友好的起点&…...