Java实现PDF加水印功能:技术解析与实践指南
Java实现PDF加水印功能:技术解析与实践指南
在当今数字化办公环境中,PDF文件因其跨平台兼容性和格式稳定性而被广泛应用。然而,为了保护文档的版权、标记文档状态(如“草稿”“机密”等)或增加文档的可追溯性,常常需要为PDF文件添加水印。本文将深入探讨如何使用Java语言实现PDF加水印功能,介绍多种常用的库及其使用方法,帮助开发者快速掌握这一实用技能。
一、PDF加水印的背景与意义
PDF(Portable Document Format,便携式文档格式)是一种广泛使用的文件格式,能够在不同操作系统和设备上保持一致的显示效果。在企业文档管理、电子出版、学术研究等领域,PDF文件经常被用于存储和传输重要信息。为PDF文件添加水印,可以起到以下作用:
- 版权保护:通过在PDF文档中添加版权信息水印,如公司名称、版权声明等,可以明确文档的所有权,防止未经授权的复制和传播。
- 标记文档状态:为PDF文件添加“草稿”“最终版”“机密”等状态水印,可以让读者快速了解文档的版本和使用范围,避免因版本混淆或误用而导致的问题。
- 增强文档安全性:水印可以作为一种安全标识,帮助追踪文档的使用情况,防止文档被非法篡改或滥用。
二、使用Apache PDFBox库实现PDF加水印
Apache PDFBox是一个开源的Java工具,用于创建和操作PDF文件。它提供了丰富的API,能够方便地实现PDF加水印功能。
(一)添加PDFBox依赖
在项目的pom.xml
文件中添加以下依赖:
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version>
</dependency>
(二)实现代码
以下是一个使用PDFBox为PDF文件添加文本水印的示例代码:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;import java.io.File;
import java.io.IOException;public class PdfBoxWatermark {public static void main(String[] args) throws IOException {// 读取原始PDF文件PDDocument document = PDDocument.load(new File("original.pdf"));// 遍历PDF中的所有页面for (int i = 0; i < document.getNumberOfPages(); i++) {PDPage page = document.getPage(i);PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true);// 设置字体和字号contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);// 设置透明度contentStream.setNonStrokingColor(200, 200, 200);// 添加文本水印contentStream.beginText();contentStream.newLineAtOffset(100, 100); // 设置水印位置contentStream.showText("Watermark"); // 设置水印内容contentStream.endText();contentStream.close();}// 保存修改后的PDF文件document.save(new File("output.pdf"));document.close();}
}
三、使用iText库实现PDF加水印
iText是一个流行的Java PDF库,提供了强大的PDF处理功能,包括添加水印。
(一)添加iText依赖
在项目的pom.xml
文件中添加以下依赖:
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>
(二)实现代码
以下是一个使用iText为PDF文件添加文本水印的示例代码:
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;import java.io.FileOutputStream;
import java.io.IOException;public class ItextWatermark {public static void main(String[] args) throws IOException, DocumentException {// 读取原始PDF文件PdfReader reader = new PdfReader("original.pdf");PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));// 获取PDF中的页数int pageCount = reader.getNumberOfPages();// 添加水印for (int i = 1; i <= pageCount; i++) {PdfContentByte contentByte = stamper.getUnderContent(i); // 或者getOverContent()contentByte.beginText();contentByte.setFontAndSize(BaseFont.createFont(), 36f);contentByte.setColorFill(BaseColor.LIGHT_GRAY);contentByte.showTextAligned(Element.ALIGN_CENTER, "Watermark", 300, 400, 45);contentByte.endText();}// 保存修改后的PDF文件并关闭文件流stamper.close();reader.close();}
}
四、使用Ghostscript命令行实现PDF加水印
Ghostscript是一个开源的PDF处理程序,可以通过命令行参数为PDF文件添加水印。
(一)安装Ghostscript
首先需要在本地安装Ghostscript程序。可以通过以下链接下载安装包:
- Windows
- macOS
- Linux
(二)添加水印
在终端中使用以下命令为PDF文件添加水印:
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf -c "newpath /Helvetica-Bold findfont 36 scalefont setfont 0.5 setgray 200 200 moveto (Watermark) show showpage" original.pdf
五、使用Free Spire.PDF for Java实现PDF加水印
Free Spire.PDF for Java是一个免费的Java PDF库,提供了简单易用的API,支持添加文本水印和图片水印。
(一)添加Free Spire.PDF for Java依赖
在项目的pom.xml
文件中添加以下依赖:
<dependency><groupId>e-iceblue</groupId><artifactId>free-spire-pdf-for-java</artifactId><version>1.9.6</version>
</dependency>
(二)实现代码
以下是一个使用Free Spire.PDF for Java为PDF文件添加文本水印的示例代码:
import com.spire.pdf.*;public class FreeSpirePdfWatermark {public static void main(String[] args) {// 读取原始PDF文件PdfDocument pdf = new PdfDocument();pdf.loadFromFile("original.pdf");// 遍历PDF中的所有页面for (int i = 0; i < pdf.getPages().getCount(); i++) {PdfPageBase page = pdf.getPages().get(i);// 添加文本水印PdfWatermark watermark = new PdfWatermark("Watermark");watermark.setFont(new PdfFont(PdfFontFamily.Helvetica, 36));watermark.setOpacity(0.5f);page.getWatermarks().add(watermark);}// 保存修改后的PDF文件pdf.saveToFile("output.pdf");pdf.close();}
}
六、使用Aspose.PDF for Java实现PDF加水印
Aspose.PDF for Java是一个强大的PDF处理库,提供了丰富的PDF处理功能,包括添加水印。
(一)添加Aspose.PDF for Java依赖
在项目的pom.xml
文件中添加以下依赖:
<dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><version>21.4</version>
</dependency>
(二)实现代码
以下是一个使用Aspose.PDF for Java为PDF文件添加文本水印的示例代码:
import com.aspose.pdf.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.ByteArrayOutputStream;
import java.io.IOException;@RestController
@RequestMapping("/api/pdf")
public class PdfController {@PostMapping("/addTextWatermark")public ResponseEntity<byte[]> addTextWatermark(@RequestParam("file") MultipartFile file) throws IOException {// 加载PDF文件Document pdfDocument = new Document(file.getInputStream());TextStamp textStamp = new TextStamp("Watermark");textStamp.setWordWrap(true);textStamp.setVerticalAlignment(VerticalAlignment.Center);textStamp.setHorizontalAlignment(HorizontalAlignment.Center);pdfDocument.getPages().get_Item(1).addStamp(textStamp);// 保存PDF文件ByteArrayOutputStream outputStream = new ByteArrayOutputStream();pdfDocument.save(outputStream);return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"watermarked.pdf\"").contentType(MediaType.APPLICATION_PDF).body(outputStream.toByteArray());}
}
七、总结
本文介绍了多种使用Java实现PDF加水印的方法,包括使用Apache PDFBox、iText、Ghostscript命令行、Free Spire.PDF for Java和Aspose.PDF for Java等工具。每种方法都有其特点和适用场景,开发者可以根据项目需求和个人偏好选择合适的工具。在实际应用中,需要注意保护原始PDF文件,避免直接修改原始文件,以防止数据丢失或误操作。
相关文章:
Java实现PDF加水印功能:技术解析与实践指南
Java实现PDF加水印功能:技术解析与实践指南 在当今数字化办公环境中,PDF文件因其跨平台兼容性和格式稳定性而被广泛应用。然而,为了保护文档的版权、标记文档状态(如“草稿”“机密”等)或增加文档的可追溯性…...
【C#】用 DevExpress 创建带“下拉子表”的参数表格视图
展示如何用 DevExpress 创建带“下拉子表”的参数表格视图。主表为 参数行 ParamRow,子表为 子项 ChildParam。 一、创建模型类 public class ParamRow {public string Pn { get; set; }public string DisplayName { get; set; }public string Value { get; set; }…...
Go语言八股文之Mysql优化
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...
学习记录:DAY29
项目开发日志:技术实践与成长之路 前言 回顾这几天的状态,热情总是比我想象中更快被消耗完。比起茫然徘徊的小丑,我更希望自己是对着风车冲锋的疯子。 今天继续深入项目的实际业务。 状态好点的时候,再看自己EMO时写的东西&…...
LLaMA-Factory:了解webUI参数
Finetuning method参数 full(全量微调) 更新模型全部参数,完全适配新任务 效果最好,但资源消耗最大适用于计算资源充足的场景存在过拟合的风险,需要大量数据支持 freeze(冻结微调) 固定底层参…...
【实战】GPT-SoVITS+内网穿透:3分钟搭建可公网访问的语音克隆系统
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
HTML向四周扩散背景
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>扩散背景效果</title><style>body {…...
React 个人笔记 Hooks编程
作用 配合函数式编程,保证在不产生类的时候完成一个整体的组件 常用组件 useStateuseContextuseReduceruseEffectuseMemouseCallback 前三个值为自变量 后三者为因变量 前三者相当于其他编程函数的变量声明,而后三者相当于对变量进行了(if now ! pr…...
CSS- 4.6 radiu、shadow、animation动画
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
ngx_http_scgi_module 技术指南
一、快速上手示例 http {# 定义 SCGI 参数(标准 CGI 环境变量)include /etc/nginx/scgi_params;server {listen 80;location /app/ {# 将请求转发到本地 9000 端口的 SCGI 服务器scgi_pass localhost:9000;# 只转发非空的 HTTPS 参数scgi…...
NFT市场开发技术全解析:从架构设计到实现
NFT(非同质化代币)市场已成为区块链领域的热门应用场景,涵盖艺术品、游戏资产、虚拟地产等多个领域。本文将从技术栈选择、核心功能实现、开发流程、挑战与优化等方面,系统梳理NFT市场的开发要点,并结合实际案例与代码…...
第六十一篇 Java反射解析:用咖啡调配理解动态编程的艺术
引言:一杯咖啡引发的技术思考 在星巴克的收银台前,我们总能看到店员熟练地根据顾客需求调配不同口味的咖啡:美式、拿铁、卡布奇诺… 这让我联想到编程世界中的对象创建。如果每新增一种咖啡就要修改收银系统,这样的设计显然不够优…...
【android bluetooth 协议分析 01】【HCI 层介绍 7】【ReadLocalName命令介绍】
1. HCI_Read_Local_Name Read Local Name 是 HCI(Host Controller Interface)命令之一,属于 BR/EDR 控制器的 HCI Command 类别,其主要功能是 读取本地设备(Controller)的人类可读名称(Local N…...
window xampp apache使用腾讯云ssl证书配置https
下载腾讯云ssl证书: 编辑Apache根目录下 conf/httpd.conf 文件: #LoadModule ssl_module modules/mod_ssl.so和#Include conf/extra/httpd-ssl.conf,去掉前面的#号注释。 编辑Apache根目录下 conf/httpd-ssl.conf 文件: <Vi…...
企业开发工具git的使用:从入门到高效团队协作
前言:本文介绍了Git的安装、本地仓库的创建与配置,以及工作区、暂存区和版本库的区分。详细讲解了版本回退、撤销修改等操作,并深入探讨了分支管理,包括分支的创建、切换、合并、删除及冲突解决。此外,还介绍了远程操作…...
【git config --global alias | Git分支操作效率提升实践指南】
git config --global alias | Git分支操作效率提升实践指南 背景与痛点分析 在现代软件开发团队中,Git分支管理是日常工作的重要组成部分。特别是在规范的开发流程中,我们经常会遇到类似 feature/user-management、bugfix/login-issue 或 per/cny/dev …...
VR 互动实训与展示,借科技开启沉浸式体验新篇
对于企业而言,产品设计与展示是极为关键的环节,这直接关系到能否成功吸引客户,以及精准获取市场反馈。在当下科技飞速发展的时代,VR 互动实训为这一至关重要的环节注入了全新活力,带来了前所未有的体验。以某智能家居企…...
一文了解VR拍摄制作
虚拟现实(VR)技术通过计算机技术模拟环境,使用户能够身临其境地沉浸在虚拟世界中进行交互体验。 在VR拍摄中,主要利用这一技术来创建360度全景视频或图片,让观众能够全方位地感受拍摄场景。这种拍摄方式不仅改变了我们…...
【内测征集】LarkVR 播控系统上新:VR 应用一站式专业播控与管理工具
Paraverse平行云自主研发的LarkXR实时云渲染平台,作为行业领先的企业级云渲染解决方案,在国际市场占据重要地位。公司自2016年创立以来,始终引领3D/XR云化技术的创新发展,目前已在全球范围内为超过10,000名开发者和1,000家企业客户…...
Windows逆向工程提升之二进制分析工具:HEX查看与对比技术
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 十六进制查看工具 应用于逆向工程的知识点 编辑 二进制对比工具 应用于逆向工程的知识点 十六进制查看工具 十六进制查看器是逆向工程的基础工具,它可以以十六进制格式…...
电脑A和电脑B都无法ping通电脑C网络,电脑C可以ping通电脑A和B,使用新系统测试正常,排除硬件问题。
主要硬件:研华AIMB-705主板、i5-6500 C机在防火墙高级设置里启用以下两项规则后,A/B机可正常访问C机网络。(直接关闭防火墙也可解决此问题) 文件和打印机共享 (回显请求 - ICMPv4-In) 核心网络诊断 - ICMP 回显请求 (ICMPv4-In)…...
【VMware】虚拟机运行 Linux Ubuntu、MAC 安装和配置
文章目录 一、VMware Workstation Pro 下载二、VMware Workstation Pro 安装三、Ubuntu Linux虚拟机镜像下载安装与配置 1、Ubuntu系统镜像下载 2、创建虚拟机(VMware)及硬件配置 3、编辑虚拟机设置 4、安装Ubuntu系统及系统…...
遨游科普:三防平板是什么?有什么作用?
在数字化与智能化浪潮席卷全球的今天,电子设备的可靠性已成为衡量其价值的核心标准之一。三防平板,这一“硬核”的工业设备,正凭借其卓越的环境适应能力,从专业领域走向大众视野,成为极端场景下不可或缺的数字化工具。…...
电脑闪屏可能的原因
1. 显示器 / 屏幕故障 屏幕排线接触不良:笔记本电脑屏幕排线(屏线)松动或磨损,导致信号传输不稳定,常见于频繁开合屏幕的设备。屏幕面板损坏:液晶屏内部灯管老化、背光模块故障或面板本身损坏,…...
VR 互动实训的显著优势
(一)沉浸式学习,提升培训效果 在 VR 互动实训中,员工不再是被动的知识接受者,而是主动的参与者。以销售培训为例,员工戴上 VR 设备,就能置身于逼真的销售场景中,与虚拟客户进行面对…...
2025.05.19【Connectedscatter】连接散点图详解
How to add a legend to base R plot The legend() function allows to add a legend. See how to use it with a list of available customization. Image on the chart background The rasterImage function allows to add an image on the background of the chart. 文章目…...
C++之函数模板类模板
模板 1.泛型编程2. 函数模板函数模板概念函数模板的实例化模板参数的匹配原则 3.类模板类模板的定义格式类模板的实例化 4.模板的优缺点 C 模板是一种强大的泛型编程工具,它允许你编写与类型无关的代码,提高代码复用性。 1.泛型编程 先看一个我们之前经…...
《告别低效签约!智合同如何用AI重构商业“契约时代”》——解析智能合约技术的爆发与行业变革
在数字化浪潮奔涌的当下,合同作为商业活动的核心枢纽,正经历着智能化的深度变革。智合同-合同智能应用这一创新模式,犹如一颗璀璨的新星,在商业领域的天空中绽放出独特光芒,深刻改变着人们对合同管理与应用的认知和实践…...
Axure难点解决分享:垂直菜单展开与收回(4大核心问题与专家级解决方案)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…...
PCB设计教程【入门篇】——电路分析基础-基本元件(电阻电容电感)
前言 本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理 目录 前言 1.PCB原理图的作用…...
909. 蛇梯棋
https://leetcode.cn/problems/snakes-and-ladders/description/?envTypestudy-plan-v2&envIdtop-interview-150思路:题目要求我们使用最小的步数走到终点(注意不能走回头路,传送不算),那我们的想法就很明确了&am…...
Redis学习打卡-Day4-Redis实现消息队列
Redis 基于阻塞队列实现秒杀的优化 新增秒杀优惠券的同时,将优惠券信息保存到 Redis 中。基于 Lua 脚本,判断秒杀库存、一人一单,决定用户是否抢购成功。如果抢购成功,将优惠券id和用户id封装后存入阻塞队列。开启独立线程任务&a…...
探索C++面向对象:从抽象到实体的元规则(上篇)
前引:在计算机科学的浩瀚星空中,面向对象编程(OOP) 无疑是照亮现代软件开发的核心范式。而 C 作为一门兼具高性能与抽象能力的系统级语言,其类与对象的语法设计更是开发者构建复杂系统的“元规则”。你是否曾困惑于 封…...
华为鸿蒙电脑发布,企业运营效率可以提高吗?
今日,科技圈迎来重磅消息,华为于19日在成都正式发布两款鸿蒙电脑,标志着鸿蒙操作系统首次登陆电脑端,这是中国国产操作系统的重大里程碑,更是中国电子信息产业自主可控进程中的关键一步。 鸿蒙操作系统作为首个统一移动…...
遨游科普:三防平板是什么?应用在什么场景?
在数字化转型的浪潮中,智能终端设备正从消费级市场向工业级场景深度渗透。传统平板电脑虽能满足日常需求,却难以应对极端环境下的挑战——暴雨、沙尘、震动、高温或低温等恶劣条件,往往成为数据采集、实时通讯和作业效率的“绊脚石”。在此背…...
图像中紫边出现原因
一、紫边 在实景调试中,我们经常会遇到高亮场景下的物体边缘分布有明显的紫边(purple fringe)现象, 就如下图所示: 对于紫边的成因,通常认为是镜头色差(镜头对不同光谱光线的折射程度不同,导致不…...
中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
前言 在当今制造业竞争日益激烈的背景下,实现生产线的自动化与智能化已成为企业提升竞争力的关键。作为国内技术领先的工业物联网平台、数字孪生、自动控制技术厂商,中服云凭借其深厚的技术积累和创新能力,打造了一套完整的生产线自动化智能…...
【电动汽车充电系统核心技术全解:从can通讯高压架构到800V超充未来】
标题:电动汽车充电系统核心技术全解:从高压架构到800V超充未来 目录 前言:开篇暴击:中国电动车年产670万辆背后,充电技术如何破局一、充电系统架构解剖:四大核心模块如何“打配合”?二、CAN总线…...
uniapp-商城-62-后台 商品列表(分类展示商品的布局)
每一个商品都有类别,比如水果,蔬菜,肉,粮油等等,另外每一个商品都有自己的属性,这些都在前面的章节进行了大量篇幅的介绍。这里我们终于完成了商品类的添加,商品的添加,现在到了该进…...
在嵌入式系统中, 一般链路层断开多久,断开TCP为好
一、典型场景与推荐策略 1. 实时性优先(工业控制、自动化设备) 需求:快速释放资源,避免因等待重传浪费内存或阻塞任务。 策略: 立即断开:在lwip_netif_link_callback中检测到链路断开后直接关闭TCP连接&a…...
解决 MySQL 错误 1356 (HY000)
当你遇到 ERROR 1356 (HY000): View mysql.user references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them 错误时,通常是由于 MariaDB 或 MySQL 版本更新导致的视图引用问题。 示例 UPDATE mysql.user SET H…...
【数据仓库面试题合集④】SQL 性能调优:面试高频场景 + 调优策略解析
随着业务数据规模的持续增长,SQL 查询的执行效率直接影响到数据平台的稳定性与数据产出效率。因此,在数据仓库类岗位的面试中,SQL 性能调优常被作为重点考察内容。 本篇将围绕常见 SQL 调优问题,结合实际经验,整理出高频面试题与答题参考,助你在面试中游刃有余。 🎯 高…...
机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征
机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 主…...
一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
📚 Markitdown 由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式 支持:PDF、PowerPoint、Word、Excel、图像、音频、HTML、文本格式(CSV、JSON、XML)、ZIP 文件的转换。 它旨在提供一个简单且灵活的…...
Python多进程、多线程、协程典型示例解析
一、multiprocessing(多进程) 1. 模块简介 作用:创建多个独立运行的进程(每个进程有独立内存空间)适用场景:数学计算、图像处理等CPU密集型任务核心原理:绕过Python的GIL锁,真正利…...
httpx[http2] 和 httpx 的核心区别及使用场景如下
httpx[http2] 和 httpx 的核心区别在于 HTTP/2 协议支持,具体差异及使用场景如下: 1. 功能区别 命令/安装方式协议支持额外依赖适用场景pip install httpx仅 HTTP/1.1无通用请求,轻量依赖pip install httpx[http2]支持 HTTP/2需安装 h2>3…...
[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下
[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下 2.6 矩阵-向量形式2.7 求解状态值2.7.1 方法1:解析解2.7.2 方法2:数值解2.7.3 示例 2.8 动作值2.8.1 示例2.8.2 基于动作值的贝尔曼方程 本人为强化学习小白,为了在后续科研的过程…...
c/c++数据类型转换.
author: hjjdebug date: 2025年 05月 18日 星期日 20:28:52 CST descrip: c/c数据类型转换. 文章目录 1. 为什么需要类型转换?1.1 发生的时机:1.2 常见的发生转换的类型: 2. c语言的类型转换: (Type) value2.1 c语言的类型变换是如何实现的? 规则是什么? 3. c 的static_cast…...
大语言模型训练数据格式:Alpaca 和 ShareGPT
在大规模语言模型(LLM)的开发中,训练数据的质量和格式起着至关重要的作用。为了更好地理解和构建高质量的数据集,社区发展出了多种标准化的数据格式。其中,Alpaca 和 ShareGPT 是两种广泛使用的训练数据格式࿰…...
C++(23):容器类<vector>
目录 一、核心概念 二、基本语法 1. 头文件 2. 声明与初始化 三、常用操作 四、具体实例 1、size()、front()、back() 2、push_back()、pop_back()、capacity() 3、reserve() 一、核心概念 Vectors 包含着一系列连续存储的元素,其行为…...