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

介绍下pdf打印工具类 JasperPrint

JasperPrint 工具类深度解析

JasperPrint 是 JasperReports 框架中实现 PDF 打印的核心载体类,其本质是 填充数据后的可打印报表对象,承担着从模板编译、数据填充到格式输出的全流程控制。以下从 7 个维度展开深度解析:


一、核心定位与生命周期
  1. 中间态实体角色
    JasperPrint 处于报表生成流程的中间阶段(生命周期模型):
   JRXML(设计模板) → Jasper(编译模板) → JasperPrint(填充数据) → PDF/Excel(导出)

其内存结构中包含:

  • 编译后的模板元数据
  • 动态注入的参数集合(Map<String, Object>
  • 数据源绑定结果(JRDataSource
  1. 跨格式输出枢纽
    支持通过 JasperExportManager 或 JRPdfExporter 导出为 PDF,也可适配 Excel/HTML 等其他格式,实现 一份填充数据多端复用 的特性。

二、核心功能实现
(一)数据填充
  1. 参数注入方式
   Map<String,Object> params = new HashMap<>();params.put("title", "2025年度报表");JasperPrint print = JasperFillManager.fillReport(jasperFile, params, dataSource);

运行

  • 支持基础类型、POJO、图片资源(需转 InputStream
  • 参数作用域覆盖整个报表生命周期
  1. 数据源绑定

    数据源类型适用场景代码示例来源证据
    JRBeanCollectionDataSourceList 集合数据绑定new JRBeanCollectionDataSource(list)
    JREmptyDataSource无数据空报表生成new JREmptyDataSource()
    ResultSet直接数据库查询结果new JRResultSetDataSource(rs)
(二)打印控制
  1. 页面布局配置
   PDFPrintable pdfPrintable = new PDFPrintable(print, Scaling.ACTUAL_SIZE);PageFormat pageFormat = new PageFormat();pageFormat.setOrientation(PageFormat.LANDSCAPE); // 横向打印

运行

  • 支持缩放比例(Scaling.SHRINK_TO_FIT等)、纸张大小(pageFormat.setPaper()
  1. 批量打印管理
    通过 List<JasperPrint> 实现多文档串联打印,支持:
    • 页码连续编排
    • 书签目录生成(IS_CREATING_BATCH_MODE_BOOKMARKS参数)

三、PDF 导出实现
(一)基础导出模式
  1. 快速导出法
   JasperExportManager.exportReportToPdfStream(print, outputStream); 

运行

  • 优点:代码简洁,自动处理字体嵌入
  • 缺点:无法定制加密等高级功能
  1. 精细化控制法
   JRPdfExporter exporter = new JRPdfExporter();exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, os);exporter.exportReport(); 

运行

  • 支持 PDF 加密(USER_PASSWORD/OWNER_PASSWORD
  • 可配置权限(打印/复制/修改等)
(二)中文处理方案
  1. 字体配置关键点
   net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactorynet.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml
  • 必须包含中文字体文件(如 stsong.ttf
  • PDF 编码需设置为 UniGB-UCS2-H
  1. 常见问题解决
    • 乱码:检查字体是否嵌入(PDF Embedded=true
    • 空白页:调整 detail 区域高度避免溢出

四、企业级应用实践
(一)SpringBoot 整合
  1. 工具类封装
   public class JasperPdfUtil {public static byte[] export(Map<String,Object> params) throws JRException {JasperReport report = JasperCompileManager.compileReport("template.jrxml");JasperPrint print = JasperFillManager.fillReport(report, params, new JREmptyDataSource());return JasperExportManager.exportReportToPdf(print);}}

运行

  • 支持模板热加载
  • 结合 ResponseEntity 实现 RESTful 输出
  1. 动态模板方案
   Resource resource = new ClassPathResource("templates/"+templateName+".jasper");JasperPrint print = JasperFillManager.fillReport(resource.getInputStream(), params, dataSource);

运行

  • 模板路径可配置化
  • 支持云端存储模板(如 OSS)
(二)性能优化
  1. 内存控制策略

    • 启用虚拟化模式(IS_IGNORE_PAGINATION 分页优化)
    • 使用 JRFileVirtualizer 处理大报表
  2. 异步导出方案

   CompletableFuture.supplyAsync(() -> {return JasperExportManager.exportReportToPdf(print);}).thenAccept(pdfBytes -> {// 写入消息队列或OSS});

运行

  • 避免 HTTP 请求超时

五、特殊场景处理
  1. Base64 编码输出
   byte[] pdfBytes = JasperExportManager.exportReportToPdf(print);String base64Str = new BASE64Encoder().encode(pdfBytes);

运行

  • 前端渲染需添加 data:application/pdf;base64, 前缀
  • 需替换 + 为 %2B 防止传输错误
  1. 加密文档生成
   exporter.setParameter(PdfExporterConfiguration.IS_ENCRYPTED, true);exporter.setParameter(PdfExporterConfiguration.USER_PASSWORD, "user123");exporter.setParameter(PdfExporterConfiguration.OWNER_PASSWORD, "admin456"); 

运行

  • 支持 128 位密钥加密

六、调试与监控
  1. 日志追踪配置
   <logger name="net.sf.jasperreports" level="DEBUG"/>
  • 可捕获模板编译错误、数据绑定异常
  1. 可视化预览器
   JasperViewer.viewReport(print, false); // 弹出预览窗口

运行

  • 本地调试时快速验证布局

七、技术演进趋势
  1. 云原生支持

    • 与 K8s 结合实现弹性扩缩容
    • 模板存储从本地文件转向 MinIO/OSS
  2. 智能化增强

    • 集成 AI 引擎自动优化报表布局
    • 动态参数推荐(基于历史数据分析)

JasperPrint 工作流程图

JasperPrint 工作流程图


(流程图示意:模板编译 → 数据填充 → 打印控制 → 格式导出)


总结

JasperPrint 作为 JasperReports 生态中的 数据承载中枢,其核心价值在于解耦了模板设计与数据呈现。通过精准的参数控制、灵活的数据源适配以及深度的格式定制能力,使其成为企业级报表系统的首选方案。在云原生与 AI 技术驱动下,未来将向 动态化、服务化、智能化 方向持续演进。

分享

追问


相关组织

组织名称概述

JasperSoft

软件/技术一家提供报表工具JasperReport的公司,用于实现PDF打印。

TIBCO

软件/技术提供Jaspersoft Studio软件,用于绘制报表模板。

相关人物

人物名称概述

junqiang.lu

开发者/程序员开发了JasperPdfUtil工具类的作者。

JasperPrint 支持哪些数据源?

JasperPrint 支持的数据源类型全解析

作为 JasperReports 框架的核心数据载体,JasperPrint 支持的数据源类型与其底层接口 JRDataSource 的实现密切相关。根据资料中的技术文档和代码实践,其数据源支持体系可划分为以下六类:


一、JDBC 数据库连接(关系型数据源)

实现方式
通过 java.sql.Connection 对象直接传递 SQL 查询结果,适用于传统关系型数据库(如 MySQL、Oracle)。

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "pass");
JasperPrint print = JasperFillManager.fillReport(jasperReport, params, conn); // 自动执行模板中的 SQL

运行

核心特征

  • 内置支持 JDBC 驱动(需在报表模板中预定义 SQL 查询)
  • 支持动态参数化 SQL(通过 $P{param} 注入)

二、集合类数据源(JavaBean/List/Map)

实现方式

  1. JavaBean 集合:通过 JRBeanCollectionDataSource 转换 List&lt;POJO&gt;
List<Customer> customers = customerDao.getAll();
JRDataSource ds = new JRBeanCollectionDataSource(customers);
JasperPrint print = JasperFillManager.fillReport(jasperReport, params, ds); // 自动映射字段名

运行

  1. Map 集合:直接传递 Map<String, Object>,适用于无结构化数据的场景
Map<String, Object> data = new HashMap<>();
data.put("sales", 50000);
JasperPrint print = JasperFillManager.fillReport(jasperReport, data, new JREmptyDataSource());

运行

核心特征

  • 字段名需与模板中的 $F{field} 严格匹配
  • 支持嵌套对象(如 $F{user.address.city}

三、空数据源(无数据填充)

实现方式
使用 JREmptyDataSource 生成无数据报表,常用于静态参数展示。

JasperPrint print = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());

运行

应用场景

  • 生成仅含标题、页脚的空白模板
  • 参数化动态内容(如图片路径、标题文本)

四、JSON 数据源(非结构化数据)

实现方式
通过 JsonQueryExecuterFactory 解析 JSON 输入流,支持复杂嵌套结构。

InputStream jsonStream = new ByteArrayInputStream(jsonStr.getBytes());
params.put(JsonQueryExecuterFactory.JSON_INPUT_STREAM, jsonStream);
JasperPrint print = JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource());

运行

关键配置

  • 需在模板中定义 JSON 路径表达式(如 $.users[0].name
  • 支持本地化参数(JSON_LOCALE)和日期格式化

五、文件类数据源(Excel/CSV/XML)

实现方式
通过自定义 JRDataSource 实现类解析文件,如:

  1. Excel 数据源:使用 JRXlsxDataSource
JRXlsxDataSource ds = new JRXlsxDataSource(new File("data.xlsx"));
ds.setSheetSelection(0); // 选择工作表
JasperPrint print = JasperFillManager.fillReport(jasperReport, params, ds);

运行

  1. CSV 数据源:使用 JRCsvDataSource
JRCsvDataSource ds = new JRCsvDataSource(new File("data.csv"));
ds.setColumnNames(new String[]{"id", "name"}); // 定义列名

运行

核心特征

  • 需引入 jasperreports-components 依赖
  • 支持分页读取大文件

六、自定义数据源(扩展接口)

实现方式
继承 JRDataSource 接口,处理特殊数据格式(如 NoSQL、API 接口)。

public class CustomDataSource implements JRDataSource {private Iterator<Data> iterator;public boolean next() { return iterator.hasNext(); }public Object getFieldValue(JRField field) {return iterator.next().get(field.getName());}
}
// 使用
JasperPrint print = JasperFillManager.fillReport(jasperReport, params, new CustomDataSource(data));

运行

典型应用

  • MongoDB 文档集合
  • REST API 分页响应

数据源选择决策矩阵

数据类型适用场景性能表现开发复杂度引用来源
JDBC结构化数据库报表★★★★☆★★☆☆☆
JavaBean集合POJO 业务对象导出★★★★☆★☆☆☆☆
JSON微服务接口数据聚合★★★☆☆★★★☆☆
文件类离线数据批量处理★★☆☆☆★★★★☆
自定义非标系统集成★☆☆☆☆★★★★★

高级数据源特性

  1. 混合数据源
    支持主报表与子报表使用不同数据源(如主表用 JDBC,子表用 JSON):
   <subreport><dataSourceExpression><![CDATA[new JsonDataSource($P{API_DATA})]]></dataSourceExpression></subreport>
  1. 动态数据切换
    通过 JRFillParameter 在运行时切换数据源:
   params.put(JRParameter.REPORT_DATA_SOURCE, ds1); // 初始数据源if (condition) params.replace(JRParameter.REPORT_DATA_SOURCE, ds2);

运行

  1. 虚拟化大数据集
    使用 JRFileVirtualizer 分页加载海量数据,避免内存溢出:
   JRVirtualizer virtualizer = new JRFileVirtualizer(100); // 每页100条params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

运行


常见问题解决方案

  1. 空指针异常

    • 确保数据源不为 null,即使使用空数据源也需显式创建 JREmptyDataSource
    • 检查模板字段名与数据源属性大小写是否一致
  2. 性能优化

    • 启用分页模式:params.put(JRParameter.IS_IGNORE_PAGINATION, false)
    • 对 JDBC 数据源添加 SQL 分页查询
  3. 编码问题

    • JSON/CSV 数据源需统一使用 UTF-8 编码
    • 中文字体需在 jasperreports.properties 中注册

演进趋势

  1. 云原生数据源
    支持从 AWS S3、阿里云 OSS 直接读取文件
   OSSDataSource ds = new OSSDataSource("oss://bucket/report-data.csv");

运行

  1. 流式处理
    通过 Reactive Streams 实现实时数据推送
   Flux<Data> flux = service.getStreamingData();JasperPrint print = JasperFillManager.fillReport(jasperReport, params, new FluxDataSource(flux));

运行

  1. AI 增强
    自动推断数据源结构并生成适配模板
   AIDataSourceAnalyzer.analyze(ds).generateTemplate();

运行

通过灵活选择数据源类型并优化实现,JasperPrint 可覆盖从传统数据库到现代数据湖的全场景报表需求,其扩展性设计(如自定义 JRDataSource)为复杂企业级应用提供了坚实基础

相关文章:

介绍下pdf打印工具类 JasperPrint

JasperPrint 工具类深度解析 JasperPrint 是 JasperReports 框架中实现 PDF 打印的核心载体类&#xff0c;其本质是 填充数据后的可打印报表对象&#xff0c;承担着从模板编译、数据填充到格式输出的全流程控制。以下从 7 个维度展开深度解析&#xff1a; 一、核心定位与生命周…...

Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函数调用流程图、Python代码示例

文章目录 Function Calling介绍**核心原理**1. **动态扩展模型能力**2. **JSON结构化交互** **实现步骤**&#xff08;以支持Function Calling的模型为例&#xff09;1. **定义可用函数**2. **模型匹配与生成**3. **开发者执行函数**4. **结果反馈给模型** **DeepSeek R1的当前…...

分享一套适合做课设的SpringBoot商城系统

开学季到了&#xff0c;不少同学都进入了学习的状态中去了&#xff0c;趁着今天有空来分享一套商城系统&#xff0c;这套代码实现了商城的前后台&#xff0c;整体界面和代码非常简洁&#xff0c;熟悉项目之后可以根据需求进行二次开发&#xff0c;也适合用来做毕设、课设&#…...

C语言自定义类型:联合和枚举

在C语言中&#xff0c;联合&#xff08;Union&#xff09;和枚举&#xff08;Enum&#xff09;是两种重要的的自定义数据类型。它们分别适用于不同的场景&#xff0c;能够提升代码的效率和可维护性。。本文将结合代码示例&#xff0c;详细讲解它们的声明、特点及使用方法。 一、…...

Redis SCAN 命令详解:安全遍历海量键的利器

一、SCAN 命令的核心价值 Redis 的 KEYS * 命令虽然可以遍历所有键&#xff0c;但在生产环境中直接使用可能导致服务阻塞&#xff08;时间复杂度 O(n)&#xff09;。SCAN 命令通过游标分批次迭代&#xff0c;实现非阻塞式遍历&#xff0c;成为处理百万级键的安全选择。 二、命…...

文字滚动效果组件和按钮组件

今天和大家分享一个vue中好用的组件&#xff0c;是我自己写的&#xff0c;大家也可以自己改&#xff0c;就是文字的循环滚动效果&#xff0c;如下图&#xff0c;文字会向左移动&#xff0c;结束之后也会有一个循环&#xff0c;还有一个按钮组件&#xff0c;基本框架写的差不多了…...

Sqlserver安全篇之_TLS的证书概念

证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…...

VS Code 如何搭建CC++开发环境

VS Code 如何搭建C/C开发环境 文章目录 VS Code 如何搭建C/C开发环境1. VS Code是什么2. VS Code的下载和安装2.1 下载和安装2.2 环境的介绍 3. VS Code配置C/C开发环境3.1 下载和配置MinGW-w64编译器套件3.2 安装C/C插件3.3 重启VS Code 4. 在VS Code上编写C语言代码并编译成功…...

计算机网络之传输层(传输层的功能)

一、数据分段与重组 传输层从会话层接收数据&#xff0c;并将其分割成较小的数据段&#xff0c;以适应网络层的最大传输单元&#xff08;MTU&#xff09;限制。在目的端&#xff0c;传输层负责将这些数据段重新组合成原始数据&#xff0c;确保数据的完整性和正确性。 二、端口…...

中科大计算机网络原理 1.5 Internt结构和ISP

一、互联网的层次化架构 ‌覆盖范围分层‌ ‌主干网&#xff08;Tier-1级&#xff09;‌ 国家级或行业级核心网络&#xff0c;承担跨区域数据传输和全球互联功能。例如中国的四大主干网&#xff08;ChinaNET、CERNET等&#xff09;以及跨国运营商&#xff08;如AT&T、Deuts…...

【网络安全 | 渗透工具】小程序反编译分析源码 | 图文教程

未经许可,禁止转载。 本文仅供学习使用,严禁用于非法渗透测试,笔者不承担任何责任。 文章目录 1、下载Proxifier2、下载反编译工具unveilr3、寻找小程序文件包4、对文件包进行反编译5、对源码进行分析6、渗透思路6.1、查找敏感信息泄露6.2、解析加解密逻辑6.3、枚举 API 接口…...

在鸿蒙HarmonyOS手机上安装hap应用

一、下载工具 安装hap包需要用到小工具 。 二、解压到目录后&#xff0c;进入该文件夹&#xff0c;打开命令行&#xff0c;如下图 三、将下载好的hap包放入刚才解压的文件夹内&#xff08;假设hap包文件名为app.hap&#xff09; 四、连接好手机和电脑&#xff0c;手机需要打…...

SQLAlchemy系列教程:SQLAlchemy快速入门示例项目

SQLAlchemy是与数据库交互的Python开发人员不可或缺的库。这个强大的ORM允许使用python结构进行简单的数据库操作。设置过程很简单&#xff0c;并且允许可扩展的数据库应用程序开发。本文通过入门项目完整介绍SQLAlchemy的应用过程&#xff0c;包括安装依赖包&#xff0c;创建连…...

【大模型系列篇】DeepSeek开源周,解锁AI黑科技

&#x1f525; Day1&#xff1a;FlashMLA —— GPU推理加速器 专为处理长短不一的AI推理请求而生&#xff0c;就像给Hopper GPU装上了智能导航&#xff0c;让数据在芯片上跑出3000GB/s的"磁悬浮"速度。✅ 已支持BF16格式&#xff5c;580万亿次浮点运算/秒FlashMLA G…...

【Java 基础(人话版)】Java SE vs Java EE

Java SE vs Java EE&#xff1a;有什么区别&#xff1f; 最近在学习 Java 的时候&#xff0c;总是会看到 Java SE 和 Java EE 这两个概念。刚开始有点迷糊&#xff0c;后来查了资料、做了一些实验&#xff0c;终于弄清楚了它们的区别。这里记录一下&#xff0c;希望对以后复习…...

Nmap使用指南

Nmap使用指南 Nmap (网络映射器) 是一款强大的应用网络扫描和安全核查工具&#xff0c;适合于网络管理和安全专家。本文将介绍Nmap的基本使用方法&#xff0c;包括基本命令和常用功能。 1. 基本使用方式 Nmap的基本命令格式如下&#xff1a; nmap [选项] 目标地址目标地址 可…...

C#-委托

Action 无返回值&#xff0c;多线程常用 Action<string> action1 (name) > Console.WriteLine($"hello {name}"); action1("tom"); Func 有返回值&#xff0c;扩展方法常用&#xff0c;最后一个参数是输出参数 Func<int, int, double>…...

Qt中如果槽函数运行时间久,避免阻塞主线程的做法

Qt中如果槽函数运行时间久&#xff0c;避免阻塞主线程的做法 一、解决步骤 创建一个工作线程类&#xff1a;继承自QObject&#xff0c;并在其中实现槽函数的逻辑。将工作线程类的实例移动到单独的线程中&#xff1a;通过moveToThread()方法将对象移动到新线程。启动线程&…...

SQLark 数据迁移|断点续迁已上线(Oracle-达梦)

数据迁移是 SQLark 最受企业和个人用户欢迎的功能之一&#xff0c;截止目前已帮助政府、金融、能源、通信等 50 家单位完成从 Oracle、MySQL 到达梦的全量迁移&#xff0c;自动化迁移成功率达 96% 以上。 在 Oracle 到达梦数据库迁移过程中&#xff0c;SQLark V3.3 新增 断点续…...

【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元

第七届人文教育与社会科学国际学术会议&#xff08;ICHESS 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 一、Spring Boot简介 1.1 Spring Boot的诞生背景 1.2 Spring Boot的核心特性 二、搭建开发环境 2.1…...

【Multipath网络层协议】MPTCP工作原理

常见网络层多路径协议介绍 MPTCP&#xff08;Multipath TCP&#xff09; MPTCP 是在传统 TCP 基础上进行扩展的协议&#xff0c;它允许在源端和目的端之间建立多个 TCP子流&#xff0c;这些子流可以通过不同的网络路径传输数据。 例如&#xff0c;一台笔记本电脑同时连接了 W…...

【网络安全】从NA到P1,我是如何扩大思路的?

未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 正文正文 在这篇文章中,我将向大家展示一个我发现的漏洞,该漏洞利用了一个硬编码的 Basic 认证头,获取了管理员权限。 首先,假设公司域名为“target.com”。 第一步是使用多种工具(如 Amass、subfinder、findoma…...

使用 Postman 访问 Keycloak 端点

1. 引言 在本教程中&#xff0c;我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后&#xff0c;我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架&#xff0c;它允许经过身份验证的用户通过令牌向第三方授予访问…...

[AI机器人] Web-AI-Robot机器人前瞻版--比奇堡海之霸凯伦

文章目录 简述开源Web-AI-Robot 项目-比奇堡-海之霸-凯伦 技术架构效果预览 简述 本项目配合前端项目bikini_bottom_karen_ui运行&#xff0c;来源于柒杉工作室&#xff08;截止2025.2&#xff0c;目前我自己&#xff09;。 打造一个只需要在浏览器上运行的AI智能机器人&#…...

FastAPI 学习笔记

简介&#xff1a; FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Python 并基于标准的 Python 类型提示。 关键特性: 快速&#xff1a;可与 NodeJS 和 Go 并肩的极高性能&#xff08;归功于 Starlette 和 Pydantic&…...

CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。

CineMaster是一种 3D 感知且可控的文本到视频生成方法允许用户在 3D 空间中联合操纵物体和相机&#xff0c;以创作高质量的电影视频。 相关链接 论文&#xff1a;cinemaster-dev.github.io 论文介绍 CineMaster是一种用于 3D 感知和可控文本到视频生成的新型框架。目标是让用…...

Linux上用C++和GCC开发程序实现两个不同PostgreSQL实例下单个数据库中多个Schema稳定高效的数据迁移到其它PostgreSQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的PostgreSQL实例&#xff0c;其中两个实例中分别有两个数据库中多个Schema的表结构分别与第三实例中两个数据库中多个Schema个结构完全相同&#xff0c;同时复制两个实例中两个数据库中多个Schema里的所有表的数…...

【Qt】ffmpeg照片提取、视频播放▲

目录 一、图像的成像原理&#xff1a; RGB成像原理&#xff1a; YUV成像原理&#xff1a; 二、多线程 三、ffmpeg解码&#xff08;照片提取&#xff09; 1.准备工作 &#xff08;1&#xff09;在工程文件夹里面新建三个文件夹 &#xff08;2&#xff09;在main函数中加…...

大语言模型中的 Token:它们是什么,如何工作?

引言 如果你使用过 ChatGPT 这样的 AI 工具&#xff0c;你可能会好奇&#xff1a;它是如何理解并生成文字的&#xff1f;大语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;并不是直接处理整个句子或文章&#xff0c;而是拆分成一个个 Token&#xff08;…...

如何评估所选择的PHP后端框架的性能?

大家在选择PHP后端框架的时候&#xff0c;如果想评估其性能如何&#xff0c;能不能扛得住你的项目&#xff1f;可以根据以下几点进行分析&#xff0c;帮助大家选择到更符合自己心目中的PHP后端框架。 1. 基准测试 基准测试是评估框架性能的基础方法&#xff0c;主要通过模拟高…...

从UNIX到Linux:操作系统进化史与开源革命

从UNIX到Linux&#xff1a;操作系统进化史与开源革命 一、操作系统&#xff1a;数字世界的基石 1.1 什么是操作系统&#xff1f; 操作系统&#xff08;OS&#xff09;是计算机系统的核心管理者&#xff0c;承担着三大核心使命&#xff1a; 硬件指挥官&#xff1a;直接管理C…...

神经网络 - 激活函数(Sigmoid 型函数)

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力&#xff0c;激活函数需要具备以下几点性质: (1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数. (2) 激活函数及其导函数要尽可能的简单&#xff0…...

【AD】3-10 原理图PDF导出

文件—智能PDF 多页原理图导出 导出设置时选择工程&#xff0c;可自行选择导出一页或多页原理图&#xff0c;一般PCB不用导出...

Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的MySQL实例&#xff0c;其中两个实例中分别有两个Schema的表结构分别与第三实例中两个Schema个结构完全相同&#xff0c;同时复制两个实例中两个Schema里的所有表的数据到第三个实例中两个Schema里&#xff0c;使…...

C进阶 自定义类型

目录 前言 一 结构体 二 结构体的存储 三 位段 四 枚举 五 联合体 总结 前言 我们之前学习的int char double ......都是内置类型&#xff0c;但是我们今天所学习的是自定义类型&#xff0c;比如联合体&#xff0c;结构体&#xff0c;枚举 一 结构体 结构体是一…...

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能&#xff0c;但有⼀定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...

【华三】从零开始掌握SR技术:原理、架构与应用全解析

【华三】从零开始掌握SR技术&#xff1a;原理、架构与应用全解析 一、初识SR&#xff1a;路由技术的新革命1.1 传统网络的困扰&#xff1a;从真实案例看技术瓶颈1.1.1 企业网络运维之痛问题2&#xff1a;流量工程实现困难问题3&#xff1a;网络智能化缺失 1.2 SR的诞生意义&…...

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...

考虑复杂遭遇场景下的COLREG,基于模型预测人工势场的船舶运动规划方法附Matlab代码

考虑复杂遭遇场景下的COLREG&#xff0c;基于模型预测人工势场的船舶运动规划方法附Matlab代码 一、引言 1.1、研究背景和意义 随着全球航运业的迅猛发展&#xff0c;船舶交通密度不断增大&#xff0c;海上交通事故频发&#xff0c;严重威胁到海上航行的安全。国际海上避碰规…...

构建高效系统:API接口设计规范详解

在当今的数字化时代&#xff0c;应用程序接口&#xff08;API&#xff0c;Application Programming Interface&#xff09;已成为连接不同软件系统和服务的桥梁&#xff0c;是推动数字化转型的关键技术之一。无论是企业内部系统集成、第三方服务接入&#xff0c;还是面向开发者…...

【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models

发表时间&#xff1a;二〇二四年九月二十三日 摘要 大型基础模型&#xff0c;包括大语言模型&#xff08;LLMs&#xff09;、视觉Transformer&#xff08;ViTs&#xff09;、扩散模型以及基于大语言模型的多模态模型&#xff0c;正在革新整个机器学习的生命周期&#xff0c;…...

mysql 全方位安装教程

下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包&#xff0c;小的安装包是一个安装器。 我们不用登录&#xff0c;直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…...

【Linux】Linux的进程控制

目录 1. 学习思维导图 2.进程创建&#xff08;fork&#xff09; 2.1 fork创建进程失败 3.进程终止 3.1 进程退出情况 3.1.1main函数 3.1.2 退出码 3.2 exit/_exit函数 1. exit() 函数 2. _exit() 函数 4.进程等待 4.1 实现进程等待的方法 wait/waitpid方法 区别&a…...

金融支付行业技术侧重点

1. 合规问题 第三方支付系统的平稳运营&#xff0c;严格遵循《非银行支付机构监督管理条例》的各项条款是基础与前提&#xff0c;其中第十八条的规定堪称重中之重&#xff0c;是支付机构必须牢牢把握的关键准则。 第十八条明确指出&#xff0c;非银行支付机构需构建起必要且独…...

Django模型管理器/QuerySet 常见的方法

模型管理器/QuerySet 常见的方法 get([**kwargs]) 方法 用途&#xff1a;获取满足条件的唯一对象。参数&#xff1a;关键字参数&#xff0c;指定查询条件。返回值&#xff1a;模型对象。异常&#xff1a;如果找到多个对象或未找到对象&#xff0c;将分别抛出 MultipleObjects…...

QT播放视频保持视频宽高比消除黑边

QT播放视频保持视频宽高比消除黑边 1、问题 在播放视频的时候&#xff0c;由于框架的大小发生变化&#xff0c;导致视频出现黑边很不好看。 因此需要像一种方法消除黑边 2、处理 1、读取视频的宽高比 2、设置视频的Widget的大小固定&#xff0c;Widget的宽高比和视频宽高比…...

在Ubuntu中,某个文件的右下角有一把锁的标志是什么意思?

在Ubuntu中&#xff0c;某个文件的右下角有一把锁的标志是什么意思&#xff1f; 在 Ubuntu&#xff08;或其他基于 GNOME 文件管理器的 Linux 发行版&#xff09;中&#xff0c;文件或文件夹的右下角出现一把“锁”标志&#xff0c;通常表示 你当前的用户没有该文件/文件夹的写…...

聊聊Java的SPI机制

个人自建博客地址 什么是SPI呢&#xff1f; SPI全称Service Provider Interface&#xff0c;翻译过来就是服务提供者接口。调用方提供接口声明&#xff0c;服务提供方对接口进行实现&#xff0c;提供服务的一种机制&#xff0c;服务提供方往往是第三方或者是外部扩展。 下面…...

【 实战案例篇三】【某金融信息系统项目管理案例分析】

大家好,今天咱们来聊聊金融行业的信息系统项目管理。这个话题听起来可能有点专业,但别担心,我会尽量用大白话给大家讲清楚。金融行业的信息系统项目管理,说白了就是如何高效地管理那些复杂的IT项目,确保它们按时、按预算、按质量完成。咱们今天不仅会聊到一些理论,还会通…...

go并发编程

https://www.bilibili.com/video/BV16A4y1f7EX sync包工具 Mutex&#xff1a;同一时间只有一个goroutine持有锁&#xff0c;其它申请该锁的goroutine会被阻塞。RWMutex&#xff1a;允许多个协程同时读取共享数据&#xff0c;但写入时需要独占锁。WaitGroup&#xff1a;等待一组…...