当前位置: 首页 > 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…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...