iReport 3.0 绿化中文版:遗留报表维护与 JRXML 实战

简介:面向 Java 开发者和报表设计人员的 iReport 3.0 绿化中文版,是一套基于 JasperReports 的完整报表生成方案,覆盖模板设计、数据预览、报表导出等典型环节。压缩包共包含 191 个文件,整体大小约 48.81MB,以 90 个 jar 运行库为主体,并辅以 txt 配置文件、xml 报表模板、ttf 界面字体、bat 与 exe 启动程序以及 PDF 使用手册,文件类型覆盖软件运行所需的主要环节。目前已有 211 人学习下载。解压后无需额外安装即可在 Windows 环境启动主程序,对缺乏英文环境支持的开发者尤为友好。包内除了可直接运行的绿色程序外,还提供了完整的中文用户手册,可帮助初学者掌握报表布局、数据源绑定、参数传递和结果导出等操作;jrxml 与 templates 目录中包含可复用的模板骨架和示例,便于快速搭建新报表;plugins 目录支持扩展功能,可按需集成其他组件;bin 与 etc 目录分别存放脚本和个性化配置,便于调整运行参数。整体来看,该资源适合需要快速搭建本地报表设计环境、降低 JasperReports 学习成本的中初级开发者使用。

1. iReport 3.0 绿化中文版:老报表工具为何至今还有人翻出来用

接手过遗留 Java 项目的开发者,大概率见过这种场景:一套跑了八九年的系统,订单、对账、打印全指着 JasperReports 出 PDF,代码里到处是 .jrxml 文件,文档早没了,老同事也走了。这时候你想改个报表格式,第一反应就是找 iReport——而这个 2008 年前后流行的图形化报表设计器,如今最靠谱的获取方式恰恰是 iReport3.0 完整绿化中文版。它把安装、汉化、示例报表都打包好了,解压就能用,省去你在老版本依赖里折腾的时间。适合做维护期项目、需要快速读懂旧 JRXML 的 Java 工程师,也适合想低成本入门报表设计的新手。下面我把这套工具的版本边界、数据源接入、字段表达式写法以及多年踩过的坑一次讲透。

2. 先搞清 iReport 3.0 的设计逻辑与版本边界:JasperReports 版本必须配套

2.1 3.0 与 JasperReports 3.x 的配套关系

iReport 3.0 不是一个孤立的设计器,它是把 JasperReports 3.x 的报表定义文件(JRXML)可视化的工具。很多人拿它去打开后来版本的 JRXML,结果要么报错要么元素丢失,原因就在于 JRXML 的标签结构在不同大版本之间有变化。iReport 3.0 默认生成的 JRXML 根节点是<jasperReport>,命名空间指向http://jasperreports.sourceforge.net/jasperreports,这套定义在 JasperReports 3.0 到 3.7 之间是稳定的。如果你维护的项目依赖的是 JasperReports 3.x 的运行时,用 iReport 3.0 改文件最稳妥,因为它在保存时不会给文件塞进高版本才有的新元素。

下载回来的 iReport3.0 绿化中文版里,自带了 JasperReports 3.0 的 jar 包,工具内部也用这套库来做预览和编译。这意味着你在设计器里看到的效果,和项目里真正的 JasperReports 3.x 跑出来的结果基本一致,不会出现设计器里正常、项目一跑就错位的问题。反之,如果你用新版 iReport/Jaspersoft Studio 去打开 3.x 时代的文件,它会把文件升级成高版本结构,项目里的老库反而解析不了,这时候“绿化中文版”反而是给老项目续命的正解。

2.2 绿化版目录结构与 Java 环境要求

我建议拿到压缩包后先解压到一个不带空格的路径,比如D:\ireport3,然后打开目录确认几个关键位置:bin目录下是启动脚本和可执行文件,etc目录里有ireport.conf配置文件,lib目录下是工具自身依赖的一堆 jar。iReport 3.0 本质上是基于 NetBeans 平台做的独立应用,所以启动参数的调整方式和 NetBeans 一样,都在ireport.conf里改。

# ireport.conf 中需要关注的两行核心配置 netbeans_jdkhome="J:\\jdk1.6.0_45" netbeans_default_options="-J-Xmx512m -J-XX:MaxPermSize=256m"

第一行指定工具运行所用的 JDK 路径,第二行是 JVM 内存参数。老版本的 iReport 对 JDK 版本比较敏感,我自己实测 JDK 1.6 和 1.7 都能正常跑,JDK 1.8 也能用但部分界面有轻微渲染问题,JDK 9 以上基本跑不起来。配置好之后,双击bin目录下的ireport.exe(Windows 环境)启动。

这里有个容易忽略的点:iReport 3.0 默认构建时用的编译器级别比较老,如果你的机器只装了高版本 JDK,第一次编译报表可能会提示UnsupportedClassVersionError。这种情况不要急着换工具,先去下一个 1.7 的 JDK 指定给netbeans_jdkhome,比在项目代码里绕来绕去省事得多。

2.3 创建第一个报表工程

启动之后先别急着画报表,把工作区路径固定下来。iReport 3.0 支持独立文件操作,但我习惯建一个工程来管理多个 JRXML、图片资源和数据源配置。新建工程的入口在菜单File -> New Project,类型选Report Project,工程名和路径设置好之后,工具会把 JRXML 按目录组织,后面预览和编译都会基于工程上下文。

新建报表的向导里有三个关键选择:报表模板(Blank A4、Blank Letter 等)、数据源类型(Empty datasource、JDBC、JavaBean)、报表名称。一般来说,想快速看效果就选 Empty datasource,这是设计期最干净的起点。向导生成的 JRXML 里有title、pageHeader、detail、pageFooter这几个基础 band,双击文件名就能打开设计视图。到这里,一个能编译、能预览的空白报表就建立了,剩下的工作就是往 band 里拖字段、写表达式。

3. 把数据源接进来:JDBC、JavaBean 与空数据源三种做法

3.1 JDBC 直连:参数怎么填才不出错

报表最常用的数据来源就是数据库。iReport 3.0 的 JDBC 数据源配置在报表属性面板里,点击右侧的Report Datasource按钮,选择New再选JDBC Connection。这里面有三样东西必须填对:驱动类、连接 URL、用户名密码。以 MySQL 为例,驱动类填com.mysql.jdbc.Driver,URL 填jdbc:mysql://127.0.0.1:3306/yourdb?useUnicode=true&characterEncoding=utf8。

填完之后一定先点Test按钮验证连接,这里有个血泪经验:iReport 3.0 时代用的 MySQL 驱动对后续版本的认证协议兼容性很差。MySQL 5.7 以后默认的认证插件是caching_sha2_password,老驱动根本不认,报错信息是Access denied for user。解决办法是把数据库账号的认证方式改回mysql_native_password,或者更换lib目录下驱动的版本。对维护老项目的场景,我一般是保持老驱动不动,在数据库侧做兼容。

JDBC 直连适合报表查询逻辑相对固定、SQL 写在 JRXML 里的场景。iReport 3.0 在Report Inspector面板里有专门的Query编辑器,写好的 SQL 立刻可以点Run看结果集,然后点Create Fields把查询列自动生成报表字段。这一步省去了手工定义每个字段的麻烦,但生成的字段名和 SQL 列名完全一致,大小写、下划线都保持原样,后面拖拽时照着用就行。

3.2 JavaBean 数据源:适合做动态列和对象映射

另一种常见的做法是把报表接到 JavaBean 数据源上,直接在数据源配置里指定实现类的全限定名,然后把集合对象传给填充器。在 iReport 3.0 的设计期,你可以在数据源类型里选JavaBeans Set Datasource,填上 Bean 的全类名,工具会通过反射列出所有属性,作为可选字段显示在设计器里。

// 一个简单的报表数据 Bean 示例 public class OrderReportRow { private String orderNo; private Date orderDate; private BigDecimal amount; public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } // 其余 getter/setter 省略 }

设计器里看到字段名orderNo、orderDate、amount直接拖到 detail band 里,表达式会自动生成$F{orderNo}这种格式。到了运行时,Java 工程里把List<OrderReportRow>传给JasperFillManager.fillReport(),iReport 的字段取值机制会自动调用对应的 getter。这里要注意 getter 命名必须符合 JavaBeans 规范,方法名和属性名对不上,运行时就取不到值,报表会显示 null。设计期能列出字段不代表运行期一定取到值,因为设计器只做反射,运行期才是真正调 getter。

3.3 空数据源:设计报表时的调试技巧

空数据源(Empty Datasource)在设计期太重要了,我几乎每张报表都会先用它把布局调好,再切到真实数据源验证。空数据源不会遍历任何记录,detail band 默认只渲染一行,适合看样式、核对字段标签、确认表格线对齐。配合 iReport 3.0 的预览功能,空数据源模式下 PDF 预览能够秒开,调试速度比每次连数据库快一个数量级。

空数据源还有个隐藏用途:可以手工添加变量来模拟数据。比如在 detail band 里放一个文本框,表达式写成$V{ReportCount}这种汇总变量,预览时能看到计数器的计算效果,虽然字段来自空数据集,但变量机制照样跑。这样就能在没有真实数据的情况下验证表达式逻辑,等切回 JDBC 数据源时,表达式一个字母都不用改。我一直建议报表的表达式设计阶段统一走这套流程:空数据源调样式 -> JDBC 验证结果集字段名 -> 最后接 Bean 或参数做动态化。

4. 报表核心操作:字段、变量、参数与表达式

4.1 字段拖拽与布局细节

从数据源面板把字段拖到 detail band 时,iReport 3.0 默认生成的文本框宽度和字段长度无关,它只按格子对齐。调整布局的常用手段是开启Grid对齐(工具栏的网格图标),然后拖动元素时看边缘的吸附线。字段多了以后,最怕的是层次重叠——两个文本框叠在一起,预览时内容会互相遮盖,查半天查不出原因。我养成的习惯是每次拖完字段,都按一下Ctrl+Shift+F做整体布局重置,把所有元素按网格重新排列,至少能保证不重叠。

字段对齐除了肉眼拖,也可以在属性面板的Size & Position里精确设置 X、Y、Width、Height。对多列报表,我会先拖第一个字段,然后右键选Copy Format,再选中同行的其他字段Paste Format,保证几个文本框的纵向位置完全一致。这个操作比手动一个个敲数字快得多,导出的 PDF 里行高也不会出现肉眼可见的偏差。

4.2 变量与计算:总和、计数、平均

变量是间接功能里最常用的部分。在Report Inspector面板右键Variables -> Add Variable,名称填totalAmount,变量类的Calculation下拉框选Sum,Reset Type保持默认的Report,然后在表达式里引用$V{totalAmount}就能拿到字段累计值。

<variable name="totalAmount" class="java.math.BigDecimal" calculation="Sum"> <variableExpression><![CDATA[$F{amount}]]></variableExpression> </variable>

这段定义的含义是:对每条记录的$F{amount}字段做累加,累加范围是整个报表,结果类型是 BigDecimal。如果你需要每页小计,可以把Reset Type改成Page,这样页面底部显示的就是当前页的合计,正好配合pageFooterband 使用。计数和平均同理,Calculation下拉里还有Count、Average、StandardDeviation这些选项,选择后工具会自动生成对应的累加表达式,你只需要指定参与计算的字段就行。这里值得说明的是,变量计算的触发时机在 band 渲染之前,所以你在pageFooter里引用$V{totalAmount}能拿到整页数据,但在pageHeader里引用它,此时累加还没开始,结果一定是 0 或者 null,很多人第一次写报表就在这翻了车。

4.3 参数传递与表达式语法

参数是外部传入报表的入口,最常见的是日期范围、客户 ID、排序条件。在Report Inspector的Parameters节点右键点击Add Parameter,名称填startDate,Class 类型选java.util.Date,然后在 SQL 查询里用$P{startDate}占位:

SELECT order_no, order_date, amount FROM orders WHERE order_date >= $P{startDate}

跑预览时,iReport 3.0 会弹出一个参数输入框,让你填一个日期值,然后才执行查询。如果参数定义为字符串类型,SQL 里的写法要带引号:WHERE status = '$P{status}',这个引号是 SQL 层面的,不是表达式语法,写错的话数据库会把参数名当成列名,报Unknown column。如果你希望参数即使没传也能跑,可以在参数定义的面板里给Default Value Expression填一个兜底值,比如new java.util.Date()或者具体的字符串。

4.4 编译与预览:iReport3 的 Build 流程

报表设计完成后的动作是编译。iReport 3.0 的Build -> Compile Report会生成.jasper文件,这个文件是 JasperReports 运行时真正加载的东西,JRXML 只是源码。编译时报错集中在两类:一类是表达式类型不匹配,比如把字符串和数字直接相加,$F{amount} + $P{countStr}这种写法会报类型转换异常;另一类是字段名不存在,SQL 改动后忘了点Create Fields,表达式里引用的字段在数据源里没有定义,编译就会提示Field not found。

编译通过后再点预览,工具用内置的填充引擎跑一遍数据源,生成 PDF 预览。如果预览输出的内容和你想的不一样,不要急着改样式,先看Console面板有没有黄色警告,很多时候是字段表达式返回 null 导致文本框整个不渲染,加一个空值判断就能解决,例如($F{remark} == null) ? "-" : $F{remark}。这个和Excel里的IFERROR思路一致,先把 null 处理掉再谈显示效果。

5. 避坑指南:iReport 3.0 高频踩坑与排查方法

5.1 中文乱码

现象:预览 PDF 时中文全部变成方块或者问号,但 iReport 设计器界面里的中文正常。

原因:JasperReports 3.x 输出 PDF 时用了内置的标准字体,这些字体不包含中文字形,需要显式指定 PDF 字体映射。

解决:选中文本框,在属性面板找到PDF Font Name设为STSong-Light,PDF Encoding设为UniGB-UCS2-H,勾选Is PDF Embedded为 true。如果项目里输出 PDF 还有别的样式,最好在 JRXML 里显式声明一次,不要依赖工具的默认值。

5.2 预览空白

现象:点击 Preview 后报表区域一片空白,连边框线都没有,但编译是成功的。

原因:最常见的是数据源一行数据都没查出来,detail band 本来就只渲染一行,没有数据自然什么都不显示。但字段顶部信息是在pageHeader里的,如果 pageHeader 也空白,说明这个 band 的Split Type设置有干扰,数据被挤到下一页了。

解决:先切回空数据源预览,如果空数据源有内容,说明问题在数据查询上,回 SQL 编辑器执行一遍,看是不是参数没传对。如果空数据源也空白,检查 band 的高度是不是被压缩成 0,属性面板里把Band Height调回合理数值即可。

5.3 高版本 JDK 跑不动

现象:双击 exe 后进度条一闪而过,进程直接消失,命令行里能看到UnsupportedClassVersionError。

原因:iReport 3.0 绿化版的启动器和 NetBeans 平台是为 JDK 1.5/1.6 时代编译的,高版本 JDK 拒绝加载老字节码。

解决:明确指定低版本 JDK,修改ireport.conf里netbeans_jdkhome到 JDK 1.7 或 1.8 的安装路径。这里注意,公司内网机器如果被安全软件限制了环境变量,配置里的路径必须写绝对路径,别写相对路径。

5.4 绿化版缺少中文字体文件

现象:报表里用到的宋体、黑体在预览时全部变成默认字体,排版错乱。

原因:绿色版为了体积,把lib目录里的 iText 亚洲字体包精简掉了,或者字体配置文件指向了系统里不存在的字体。

解决:确认lib目录下有没有iTextAsian.jar或者类似名字的字体包,没有就去找 JasperReports 3.x 发行包对应的依赖,补进lib目录重启工具。这个文件不影响到其他功能,补上之后中文输出立刻正常。

5.5 参数类型不匹配

现象:预览时弹窗让你输入参数,但是填完以后运行报ClassCastException,或者直接把参数值当成字符串拼进 SQL。

原因:参数的类型定义和实际的默认值表达式类型不一致,比如定义成java.lang.Integer,默认值却写了个字符串。

解决:打开参数属性面板,Class下拉框选对类型,Default Value Expression里的值也要匹配,最好显式写全限定名,例如new Integer(0)。如果不需要默认值,这个表达式留空即可,别填一个类型对不上的字面量。

6. 进阶技巧:把 iReport3 生成的 jrxml 集成进 Java 工程自动编译

设计器里的工作做完了,真正的战场在 Java 工程里。我一般不在运行期加载 JRXML 源码,而是编译成.jasper文件放进资源目录,运行期直接加载,这样能减少每次填充时的编译器开销。Java 工程里最核心的调用只有三步:

// 编译 JRXML 生成 .jasper 文件 JasperReport jasperReport = JasperCompileManager.compileReport( "/path/to/report.jrxml"); // 填充数据,params 是 Map 类型,传入参数值 Map<String, Object> params = new HashMap<String, Object>(); params.put("startDate", startDate); JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, params, dataSource); // 导出为 PDF 输出到指定文件 JasperExportManager.exportReportToPdfFile( jasperPrint, "/path/to/output.pdf");

第一行是编译入口,返回一个JasperReport对象,相当于把 JRXML 变成了可执行的报表定义;第二行的params里的 key 必须和设计器里的参数名完全一致,少一个 key 运行时就会提示找不到参数,而且错误发生在填充阶段,比编译阶段更难排查;第三行导出 PDF,这里的dataSource可以是 JDBC 连接,也可以是前面提到过的JRBeanCollectionDataSource。如果报表只有一个数据源,也可以把 SQL 写在 JRXML 里,然后直接传JasperFillManager.fillReport(jasperReport, params, connection)给一个 JDBCConnection。

这套流程里我最想强调的是版本一致性:iReport3 设计器用的 JasperReports 库,和工程里 pom 或 lib 里的 JasperReports 版本必须同属 3.x。我在一个项目里就吃过亏,设计器是 3.0,工程里用的是 3.7,结果JasperCompileManager编译出来的文件结构 3.4 不认,运行期报Invalid .jasper file,这个错误相当隐蔽,因为设计器预览是好的。从那以后我每次接手老项目都强制走一遍闭环:先把设计器自带的 JasperReports jar 版本和工程里的版本对比清楚,再动任何 JRXML。

iReport 3.0 绿化中文版这套工具虽然老,但在维护遗留 Java 报表系统的场景里依然是绕不开的一环。理清版本边界、先空数据源调布局、再接真实数据源验证、最后按上面的排查清单处理乱码和空白,大部分问题都能在半小时内解决。希望这些踩过的坑帮你少走点弯路。

本文还有配套的精品资源,点击获取

相关新闻

大模型版本更新情报解读:从API泄露到IDE提前布局

大模型版本更新情报解读:从API泄露到IDE提前布局

10月3日的AI日报&#xff0c;说实话&#xff0c;信息量有点大。不是那种例行公事的小更新&#xff0c;而是好几个重量级玩家集体“秀肌肉”的节奏。Qwen 4疑似在Cursor里被扒出踪迹&#xff0c;Gemini 4在API文档里泄露了配置参数&#xff0c;Fable 5.5悄悄占好了位置&#xff…

2026/10/20 13:25:21 阅读更多 →
商品视频批量生成实战:Kling API与Ace Data Cloud接入指南

商品视频批量生成实战:Kling API与Ace Data Cloud接入指南

最近一直在折腾商品视频自动化生产这件事。电商仓库里有几百个 SKU&#xff0c;每个商品都缺视频素材&#xff0c;外包拍摄一条短则几百&#xff0c;长则上千&#xff0c;而且一改版就要重拍。后来把目标锁定在 Kling 的商品视频生成 API 上&#xff0c;又用 Ace Data Cloud 做…

2026/10/20 13:25:21 阅读更多 →
三台路由器静态路由实验:网络工程师的底层转发逻辑必修课

三台路由器静态路由实验:网络工程师的底层转发逻辑必修课

1. 项目概述&#xff1a;为什么三台路由器的静态路由实验是网络工程师绕不开的“成人礼” 静态路由配置实验二&#xff08;途经三台路由设备&#xff09;——这个标题看起来平平无奇&#xff0c;甚至有点教科书味儿&#xff0c;但在我带过的二十多期网络实训班里&#xff0c;它…

2026/10/20 13:25:21 阅读更多 →

最新新闻

LeRobot定位解析:端到端策略学习与ROS2的边界

LeRobot定位解析:端到端策略学习与ROS2的边界

刚接触LeRobot那会儿&#xff0c;我也和大多数朋友一样&#xff0c;下意识以为它是又一个机器人操作系统&#xff0c;能对标ROS2&#xff0c;甚至还想拿它去做导航和路径规划。后来把这套框架真正跑起来才发现&#xff0c;这玩意儿压根不干那些活&#xff0c;它的主业是把“感知…

2026/10/20 15:08:45 阅读更多 →
PPT自动化生成:内容与模板分离的工程化实践

PPT自动化生成:内容与模板分离的工程化实践

1. 项目缘起与整体设计思路 第一次看到“ppt-master”这个命名&#xff0c;我脑子里蹦出来的不是某个具体工具&#xff0c;而是一类非常典型的需求&#xff1a;把做PPT这件事从“手工活”变成“可复用、可批量、可版本管理”的工程化流程。市面上讲PPT技巧的内容多如牛毛&#…

2026/10/20 15:08:45 阅读更多 →
从均值-方差到风险平价:资产配置与组合优化模型实战

从均值-方差到风险平价:资产配置与组合优化模型实战

做了一年多的智能投顾项目&#xff0c;我最常被问的一句话是&#xff1a;“你这个模型能预测明天哪只股票涨吗&#xff1f;”每次我都得解释半天——智能投顾的核心从来不是择时也不是选股&#xff0c;而是资产配置。标题里的“资产配置与组合优化模型”&#xff0c;本质上就是…

2026/10/20 15:08:45 阅读更多 →
GPT-6 与 DeepSeek 自适应限流调度:基于突发请求熵增的平滑漏斗设计

GPT-6 与 DeepSeek 自适应限流调度:基于突发请求熵增的平滑漏斗设计

在构建支持 GPT-6 与 DeepSeek 混合推理的异构 AI 调度集群时&#xff0c;高并发限流算法常常面临失效的窘境。传统微服务架构中广泛使用的单维度令牌桶&#xff08;Token Bucket&#xff09;或滑动窗口计数器&#xff0c;其核心假设是“请求是同质的”——即单次 RPC 请求消耗…

2026/10/20 15:08:45 阅读更多 →
BCA六要素:把组织经验注入AI系统的落地实践

BCA六要素:把组织经验注入AI系统的落地实践

做AI落地最头疼的其实不是模型选型&#xff0c;也不是算力成本&#xff0c;而是怎么让系统真正继承团队里那些“只可意会不可言传”的组织经验。拿业务部门最常见的场景来说&#xff1a;同样一笔异常交易&#xff0c;新员工查了三套规则文档还是不敢判断&#xff0c;老员工瞟一…

2026/10/20 15:08:45 阅读更多 →
数据库慢排查实战:五步定位慢查询与锁等待问题

数据库慢排查实战:五步定位慢查询与锁等待问题

数据库又慢了。后台报警刷屏&#xff0c;接口超时&#xff0c;前端白转圈&#xff0c;老板在群里问“怎么回事”&#xff0c;你打开终端&#xff0c;脑子一片空白——这种情况干过线上运维的人都不陌生。数据库慢是一个现象&#xff0c;不是结论&#xff0c;你不可能听它说“我…

2026/10/20 15:07:44 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →