- 博客(187)
- 收藏
- 关注
原创 00 写在最前面
这不是一套**“读起来轻松”**的博客。你将不再害怕任何“智慧城市 / IoT / 视频平台”类项目。下一篇开始,我们不会再铺垫概念。直接下水。
2026-01-16 10:25:04
939
原创 从0到1构建亿级金融支付系统 | 150+篇实战博客带你掌握企业级Java核心技术
《从0到1构建亿级金融支付系统》专栏深度解析企业级Java开发实战,基于真实运行的保险金融支付平台(日处理数万笔交易,对接10+银行)。150+篇技术博客系统覆盖Spring Boot、MyBatis-Plus分表、Redis高可用、多线程优化、银行API集成等10大核心模块,通过真实业务场景(如动态分表、分布式锁、OCR识别等)驱动技术讲解,提供从架构设计到性能调优的完整解决方案。专栏特别适合1-5年Java开发者突破技术瓶颈,获取生产级项目经验,每篇均含代码实现与踩坑记录,帮助开发者快速掌握高并发、分布
2026-01-08 09:51:55
1624
原创 135 报告内容动态替换拦截
1. 文件大小限制小文件 (<100KB) → 启用替换中文件 (100KB-5MB) → 可选启用大文件 (>5MB) → 禁用替换2. 缓存策略相同内容不同用户: 缓存模板,动态替换用户信息相同用户相同内容: 完全缓存缓存过期: 10分钟3. 正则优化预编译Pattern为常量使用非贪婪匹配.+?避免回溯陷阱4. 按需启用根据Content-Type过滤根据URL路径过滤提供开关参数5. 监控告警记录平均替换时间慢请求告警 (>1秒)错误率监控。
2026-04-21 07:15:00
23
原创 134 文件下载响应拦截技术详解
在金融、保险、电商等行业的系统中,文件下载往往涉及敏感信息和复杂的业务逻辑:常见需求场景:举例说明:1.2 技术挑战挑战1: 如何统一拦截所有文件下载请求?挑战2: 如何在不修改业务代码的前提下增强功能?挑战3: 如何正确处理各种文件类型的编码问题?挑战4: 如何高效处理大文件下载? 是Spring MVC提供的一个强大的响应体处理接口,它可以在Controller方法执行完毕、返回值写入HTTP响应体之前进行拦截处理。核心原理:2.2 基础实现 - 下载日志记录先实现一个最基础的功能:记录所有文件
2026-04-20 12:45:00
32
原创 133 报告批量导出优化
在企业应用中,批量导出PDF报告是常见需求,但往往面临诸多挑战:典型业务场景:面临的核心问题:优化目标:核心优化点:批量PDF生成需要平衡速度、内存、稳定性三个维度:策略对比:最佳实践: 批次处理 + 线程池2.2 批量导出服务实现任务模型设计:核心服务类:关键设计点:问题场景重现:内存占用分析:3.2 内存优化策略优化原则:优化后的PDF生成器:内存优化效果对比:JVM内存监控:4 并发导出控制4.1 并发控制的必要性问题场景:4.2 线程池最佳实践核心原则:线程池配置
2026-04-19 12:45:00
30
原创 132 PDF文档生成器封装
在企业级系统中,PDF生成是一个高频且关键的功能:常见应用场景:直接使用iText7的问题:封装PDF生成器的优势:2.2 核心类设计PdfDocumentGenerator核心类:2.3 配置类设计PDF生成器配置:application.yml配置示例:3 HTML到PDF转换流程3.1 转换流程详解完整转换流程:3.2 HTML到PDF转换工具类Html2PdfConverter核心实现:3.3 HTML模板最佳实践企业报告模板示例:HTML转PDF注意事项:CSS兼容
2026-04-18 09:00:00
26
原创 131 报告HTML内容组装
在企业级应用中,经常需要根据用户数据动态生成各类报告文档:典型应用场景:传统方案的问题:HTML组装方案的优势:2 核心方法实现:assemblyContentHtm2.1 方法设计思路方法的职责是将HTML模板与业务数据进行组装,生成最终的HTML内容。设计原则:首先定义报告所需的数据结构:2.3 HTML模板设计报告HTML模板示例(使用占位符标记待替换内容):2.4 核心组装方法实现代码关键点解析:方法设计的核心思想:这个方法采用了模板方法模式的思想,将HTML组装的主流程固定下来,而
2026-04-17 10:00:00
29
原创 130 HTML内容正则替换技术
1. Pattern.DOTALL模式默认不匹配换行符,启用DOTALL后可以匹配HTML/XML内容提取必须使用DOTALL模式注意区分贪婪(.*)和非贪婪(.*?)匹配2. ReplaceUtil工具类设计简单替换用复杂匹配用+缓存使用防止正则特殊字符问题使用防止替换内容中的特殊字符3. 批量替换优化Pattern预编译并缓存,避免重复编译合理使用并行处理,提升批量性能大文件使用流式处理,避免内存溢出4. 安全性考虑替换内容必须转义HTML特殊字符,防止XSS。
2026-04-16 13:34:21
67
原创 129 FreeMarker模板引擎实战
在企业级开发中,经常需要生成格式固定但内容动态的文档:常见场景:不使用模板引擎的问题:FreeMarker的优势:FreeMarker基础语法1. 插值表达式 ${…}用于输出变量值,是最基础的语法:2. 指令 <#…>用于执行逻辑控制,如条件判断、循环等:3. 注释Maven依赖配置FreeMarker配置类配置说明:模板文件:templates/welcome.ftlJava代码:测试代码:输出结果:2 模板变量替换变量插值语法FreeMarker使用语法输出变量值,这是
2026-03-23 10:32:11
250
原创 128 HTML转PDF深度应用
在企业级应用中,PDF文档生成是一个常见但复杂的需求:典型应用场景:为什么选择HTML转PDF方案:直接使用iText7 API的痛点:本文选择iText7原因:一个优秀的HTML转PDF工具类应该具备以下能力:功能列表:配置类设计:2.3 使用示例基础使用:高级使用 - 自定义配置:3 iText7 HTML转PDF原理深度解析3.1 转换流程图3.2 核心API解析1. HtmlConverter - 核心转换器HtmlConverter内部实现原理:2. ConverterPr
2026-03-23 10:30:55
30
原创 127 PDF水印添加技术
场景推荐方案说明普通文档单个旋转水印字体50px,透明度0.3重要合同平铺水印字体35px,透明度0.35,间距200px机密文件防篡改水印带签名验证下载追溯动态用户水印包含用户名、时间、追踪ID批量处理并发线程池并发数=CPU核心数×2大文件(>50MB)流式处理逐页处理+GCiText7:功能强大的PDF操作库PdfCanvas:底层绘图APIPdfExtGState:透明度控制仿射变换矩阵:实现旋转、平移等效果✅ 45度旋转水印:使用concatMatrix实现坐标变换。
2026-03-23 10:13:56
646
原创 126 PDF模板文字替换实战(iText7坐标定位)
在企业级应用中,批量生成标准化PDF文档是常见需求:典型应用场景:为什么用模板而不是纯代码生成?1. 模板文件格式要求2. 预留填充区域标识在设计模板时,需要明确标记哪些位置要动态填充内容:3. 坐标测量工具测量PDF模板中文字填充位置的坐标:4. 坐标记录表格建立字段与坐标的映射关系:5. 模板设计注意事项2 iText7坐标系统理解(X/Y定位)PDF坐标系统原理PDF采用笛卡尔坐标系统,但与传统屏幕坐标不同:坐标单位说明:坐标系统实战示例示例1:理解PDF坐标原点示例2:单位换算
2026-03-23 10:12:55
367
原创 125 文件下载优化实战
参考答案:网络中断或下载失败后,下次下载时可以从上次中断的位置继续,不需要重新下载已完成的部分实现原理:客户端请求:Range: bytes=1024-2047 ← 请求第1024到2047字节服务端响应:// 保存已下载的字节数// 已下载50KB// 下次继续下载时${// 保存已下载的字节数 localStorage . setItem('downloadProgress' , '51200');
2026-03-23 10:11:27
61
原创 124 文件流处理
在企业级应用中,文件输入流处理是高频场景:常见场景:不掌握InputStream的问题:场景1:读取本地文件基础读取方式:性能对比:从HTTP接口下载文件:核心要点:Controller层接收文件上传:Service层处理文件流:场景4:读取SFTP服务器文件从SFTP下载银行对账文件:InputStream使用最佳实践1. 始终使用try-with-resources2. 使用缓冲流提升性能3. 合理设置缓冲区大小4. 避免将大文件完全读入内存2 OutputStream处理
2026-03-23 10:08:04
51
原创 123 临时文件管理
在企业应用中,临时文件无处不在,如果不加以管理,会导致严重的资源问题:常见临时文件场景:不管理临时文件的后果:三大核心目标:JDK原生方式:问题分析:企业级方案: 自定义临时文件管理器核心思路:配置类:配置文件 application.yml:2.3 临时文件信息实体临时文件元数据:2.4 临时文件管理器核心实现临时文件管理器:2.5 使用示例业务代码中创建和使用临时文件:文件下载后自动删除:3 文件过期策略3.1 多级过期策略设计不同类型的临时文件有不同的生命周期需求:过期策略分级
2026-03-23 10:07:23
25
原创 122 ZIP文件操作
流式处理: 大文件必须使用流式处理,避免OOM缓冲区优化: 根据文件大小调整缓冲区(8KB-8MB)压缩级别: 默认级别6是最佳平衡点安全防护: 解压时必须防止路径穿越攻击加密保护: 敏感文件使用AES-256加密临时文件清理: 定时清理,避免磁盘耗尽。
2026-03-23 10:06:29
23
原创 121 文件上传云存储
在金融企业级应用中,文件存储是不可或缺的基础设施。传统的本地文件系统存在诸多问题:传统文件存储的痛点:MinIO的核心优势:典型应用场景:MinIO核心概念对象存储模型:关键术语:生成SSL证书:MinIO服务启动配置:Docker方式部署:配置要点:Maven依赖:配置文件 application.yml:配置类实现:关键技术点:SSL验证策略:证书加载机制:超时配置:完整上传流程:3.2 文件上传Service实现文件上传服务:3.3 Controller实现关键技术点
2026-03-23 10:05:47
54
原创 120 PDF转图片
在企业级应用中,PDF转图片是一个常见且重要的功能需求:典型应用场景:技术挑战:Apache PDFBox是一个开源的Java PDF库,支持PDF文档的创建、读取、编辑、签名等操作。它是目前Java生态中最流行的PDF处理库之一。核心特性:版本说明:核心转换工具类:使用示例:2.4 核心API详解PDDocument类:PDFRenderer类:ImageType枚举:3 PDF渲染原理3.1 PDF文档结构PDF (Portable Document Format) 是一种跨平台的文档
2026-03-14 14:45:52
76
原创 119 PDF操作iText7实战指南
在金融、保险、电商等行业,PDF文档生成是核心业务功能之一:典型应用场景:为什么需要iText7:常见痛点:iText7是iText的重大升级版本,在架构和功能上都有质的提升:核心差异:本文使用iText7.2.x版本,这是目前最稳定的企业级版本。依赖说明:中文字体处理是PDF生成的关键环节,必须正确配置字体路径。字体配置工具类:字体加载最佳实践:Linux服务器字体安装:3 PDF文档创建3.1 基础文档创建流程iText7使用三层架构创建PDF文档:完整示例:关键要点:PDF文档支持丰
2026-03-14 14:45:18
476
原创 118 Excel样式设置
在企业级应用中,Excel导出是最常见的数据交互方式,但原始导出的Excel往往存在以下问题:常见痛点:样式设置的价值:财务报表导出:业务数据统计:对账单导出:表头是Excel表格的第一印象,好的表头样式能够:EasyExcel提供了两种方式设置表头样式:方式一:使用注解(简单场景)核心知识点:颜色索引值: EasyExcel使用POI的颜色索引填充模式: FillPatternTypeEnum对齐方式:导出代码:2.3 自定义表头样式拦截器(推荐)为什么需要拦截器?自定义表头样式拦截器:核心知识点
2026-03-14 14:44:46
132
原创 117 Excel自定义转换器深度实战
在企业级应用中,Excel导入导出是最常见的数据交互方式。但默认的数据转换往往无法满足复杂的业务需求:常见问题:不使用转换器的后果:2 Converter接口核心机制2.1 Converter接口设计EasyExcel的Converter接口是所有转换器的基础,它定义了Java对象与Excel单元格之间的双向转换规则:2.2 转换器工作流程导出流程(Java → Excel):导入流程(Excel → Java):2.3 基础转换器实现抽象基类设计:转换器注册方式:3 日期转换器实战
2026-03-14 14:44:14
320
原创 116 Excel大文件处理实战指南
在企业级应用中,处理Excel文件是非常常见的需求,但传统的Apache POI在处理大文件时存在严重问题:常见场景:传统POI的问题:EasyExcel的优势:场景1: 银行流水对账场景2: 保单数据批量导出2 EasyExcel核心原理2.1 流式读取原理EasyExcel基于SAX(Simple API for XML)事件驱动模式解析Excel,而不是像POI那样一次性加载整个文件到内存。传统POI的加载方式:EasyExcel的流式读取:关键点:以读取10万行、10列的Excel为例
2026-03-14 14:43:40
126
原创 115 EasyExcel导入导出实战
在企业级应用中,Excel文件导入导出是极为常见的需求,传统的POI方案在处理大数据量时存在严重的性能问题:传统POI的痛点:EasyExcel的优势:EasyExcel基于SAX方式解析Excel,采用事件驱动模型,逐行读取和写入,避免将整个文件加载到内存:Maven依赖配置版本说明:在企业级应用中,通常需要统一配置Excel导入导出的一些全局参数:配置文件 application.yml:实体类注解配置EasyExcel通过注解来定义Excel与实体类的映射关系:核心注解说明:多级表头实现
2026-03-14 14:43:03
201
原创 114 OCR限流控制实战
在企业级应用中,OCR(光学字符识别)服务通常是按调用次数计费的第三方API服务。如果不加控制地调用,会面临以下问题:常见痛点:不做限流的后果:2. OCR调用限流实现2.1 简单限流方案 - synchronized + Thread.sleep这是最简单直接的限流实现方式,适合单机应用且调用量不大的场景。核心原理:通过确保同一时刻只有一个线程在调用OCR,配合控制请求间隔。优点:缺点:性能分析:假设OCR单次调用耗时200ms,限流8次/秒:可以看出,由于OCR本身耗时较长,实际QPS远低
2026-03-14 14:42:25
126
原创 113 OCR字段提取优化
在金融、财务等企业级系统中,OCR识别只是第一步,真正的挑战在于如何从海量文本中准确提取结构化数据:常见应用场景:面临的核心问题:2 关键字段识别策略2.1 基于关键词定位关键字段识别的核心思路是通过关键词锚点定位目标数据的位置,然后提取相邻文本。设计思路:核心工具类实现:2.2 实战应用 - 银行回单字段提取使用示例:3 正则表达式精准提取3.1 为什么需要正则表达式?关键词定位虽然简单,但在复杂场景下容易出现问题:正则表达式的优势:3.3 实战应用 - 增强版字段提取4
2026-03-14 14:41:54
81
原创 112 多银行回单识别技术实战
在企业财务系统中,银行回单是资金往来的重要凭证,传统的人工录入方式存在诸多问题:常见痛点:引入OCR识别的价值:2 系统架构设计2.1 整体架构2.2 核心类设计回单识别结果VO:3 回单模板管理3.1 为什么需要模板管理?不同银行的回单格式千差万别,需要建立模板管理机制:模板管理的作用:3.3 字段提取模板配置模板配置示例(JSON格式):4 字段位置定位与提取4.1 OCR文字识别原理华为云OCR识别流程:4.2 OCR调用实现4.3 OCR结果解析4.4 正则表达
2026-03-14 14:41:12
66
原创 111 OCR文字识别技术实战
1. 服务选型根据业务场景选择合适的OCR服务商使用策略模式实现多服务商支持考虑成本、准确率、响应时间等因素2. 图片预处理灰度化: 加权平均法(0.299R + 0.587G + 0.114B)降噪: 中值滤波去除椒盐噪点二值化: OTSU算法自动计算最优阈值尺寸调整: 双线性插值保证质量3. API调用统一封装OCR接口,便于切换服务商实现重试机制(指数退避)实现限流控制(令牌桶)支持批量识别和并发控制4. 结果解析解析JSON响应,提取文字和位置信息。
2026-03-14 14:40:24
66
原创 110 多银行统一封装
接口设计要点:抽象层次合适: 既不能过于细粒度,也不能过于粗粒度参数通用化: 使用通用的请求/响应对象返回结果统一: 统一的响应格式和错误码体系考虑扩展性: 预留扩展字段和扩展点/*** 银行服务统一接口* <p>定义了银行业务的标准操作,各银行实现该接口完成具体业务逻辑* <p>接口设计遵循最小知识原则,业务层只需依赖此接口/*** 单笔支付* @param request 支付请求 - 包含付款账号、收款账号、金额等通用信息。
2026-02-25 09:06:19
67
原创 109 银行接口文档管理
在企业级金融系统中,与多家银行进行API集成是常见场景。缺乏统一的文档规范会导致:常见问题:规范化的价值:一份完整的银行接口文档应包含以下核心要素:文档模板设计创建统一的Markdown文档模板:生产环境: https://api.bank.com/v2/payment/create测试环境: https://test-api.bank.com/v2/payment/create5.2 成功响应示例5.3 失败响应示例6. 注意事项6.1 签名算法6.2 幂等性同一orderNo
2026-02-25 09:05:46
68
原创 108 银行接口测试
银行接口作为金融系统的核心通道,直接关系到资金安全和业务可靠性。一次失败的支付、一笔错误的转账,都可能造成严重的资金损失和信任危机。常见痛点:不做充分测试的后果:2 单元测试编写2.1 单元测试基础架构单元测试是测试金字塔的基石,占比应该达到70%以上。通过Mock银行接口,我们可以快速验证业务逻辑的正确性,无需依赖真实的银行环境。核心测试框架:被测试的Service类(已脱敏):完整的单元测试类:2.3 单元测试核心技巧技巧1: 使用@ExtendWith(MockitoExtension.
2026-02-25 09:05:15
165
原创 107 银行密钥管理实战
1. 表设计要点唯一约束确保密钥不重复版本字段支持密钥演进时间字段控制密钥生命周期状态字段支持启用/禁用/过期2. 动态加载要点从数据库/配置中心加载,避免硬编码多级缓存(本地+Redis)提高性能自动解密,应用层透明使用支持热更新,无需重启3. 密钥轮换要点定期轮换降低风险三阶段切换确保平滑过渡支持紧急切换和回滚自动清理过期密钥4. 安全存储要点数据库加密存储主密钥存储在配置中心使用完立即清理内存日志脱敏避免泄露5. 权限控制要点最小权限原则。
2026-02-25 09:04:43
217
原创 106 银行接口监控体系设计与实现
在企业级金融系统中,银行接口对接是核心业务环节,具有以下特点:业务特点:常见痛点:一个完整的银行接口监控体系应该包含以下核心模块:2 接口调用统计设计2.1 统计维度设计接口调用统计需要从多个维度进行数据采集和分析:核心统计维度:2.2 统计指标设计需要统计的核心指标:2.3 基于AOP的数据采集使用Spring AOP实现无侵入式的接口调用数据采集:2.4 自定义监控注解定义简洁易用的监控注解:2.5 使用示例在银行接口Service中使用监控注解:2.6 实时统计计算基于Red
2026-02-25 09:04:07
60
原创 105 银行接口日志体系设计与实现
当前时间↓├─ 0-6个月: 在线表(bank_api_log) - 实时查询├─ 6个月-2年: 归档表(bank_api_log_archive_YYYY) - 按需查询└─ 2年以上: OSS存储(bank-log-archive/YYYY/) - 长期归档关键要点:渐进式归档: 不要一次性归档所有数据,分批次进行归档时间选择: 选择业务低峰期执行(凌晨2-4点)归档验证: 归档后验证数据完整性,确认无误后再删除原表数据保留策略: 根据业务需要调整保留时长(6个月、1年、2年等)
2026-02-25 09:03:25
63
原创 104 银行接口熔断
参考答案:熔断器是一种保护机制,当检测到依赖服务出现大量失败时,自动切断对该服务的调用,快速返回降级结果,避免调用方资源耗尽。为什么需要熔断器:1. 防止雪崩效应服务A → 服务B → 服务C → 数据库当服务C响应慢:- 服务B的线程被阻塞- 服务B线程池耗尽- 服务A调用服务B超时- 服务A线程池也耗尽→ 整个调用链崩溃2. 资源保护避免线程池耗尽避免连接池耗尽避免内存溢出3. 快速失败不等待超时,立即返回提升用户体验减少资源浪费解决的核心问题:问题1: 故障传播。
2026-02-25 09:02:50
45
原创 103 银行接口限流实战
在对接银行系统时,我们面临着严格的接口调用限制:银行限流的现实场景:银行侧硬性限制银行收费策略业务风险控制不做限流的后果:1.2 限流的核心目标保护三方:业务价值:2 银行限流规则设计2.1 常见的银行限流维度不同银行有不同的限流策略,我们需要在系统中灵活配置:维度1:按 QPS/TPS 限流示例配置:维度2:按时间窗口限流示例:维度3:按用户/商户限流2.2 限流配置表设计为了灵活管理各个银行的限流规则,我们设计一个配置表:插入示例数据:2.3 限流配置管理服务3 令牌桶
2026-02-25 09:02:07
61
原创 102 支付状态轮询
本文深入剖析分布式支付系统中的状态轮询机制,详解定时任务设计、状态查询接口、轮询次数控制等核心技术,掌握银行支付场景下的异步状态同步方案。
2026-02-25 09:01:26
58
原创 101 银行流水对账系统设计与实现
在企业金融系统中,银行流水对账是确保资金安全的关键环节:核心业务场景:不做对账的风险:2. 流水文件格式解析2.1 常见银行流水格式银行流水文件主要有三种格式:1. Excel格式(.xlsx/.xls)2. XML格式3. 管道符分隔格式(|)银行XML报文典型结构:核心解析工具类:核心技术点:使用EasyExcel实现高性能导入:关键技术点:完整的校验体系:4. 自动对账核心算法4.1 对账匹配策略对账的本质是找到系统记录和银行流水的对应关系:匹配维度优先级:精确匹配 (优先级最高
2026-02-25 09:00:43
84
原创 100 银行回单下载
在企业金融业务系统中,银行回单是重要的交易凭证,具有法律效力。自动化的回单下载和管理是企业财务系统的核心功能之一。业务场景:技术挑战:2 回单文件解析2.1 银行回单文件名规则不同银行的回单文件命名规则各异,需要制定统一的解析策略。常见命名规则:2.2 文件名解析器实现设计思路:2.3 ZIP压缩包处理银行可能将多个回单打包成ZIP文件,需要支持ZIP解压和文件提取。2.4 文件匹配策略核心问题: 下载的回单文件如何与数据库中的流水记录匹配?匹配策略设计:匹配策略优先级:3 PDF
2026-02-24 10:47:23
85
原创 99 SFTP文件上传下载实战指南
常见场景:银行对账文件下载: 每日定时从银行SFTP服务器下载对账文件电子回单批量获取: 批量下载交易回单PDF文件报表文件上传: 将系统生成的报表文件上传到第三方系统数据备份: 将重要数据文件备份到远程SFTP服务器文件交换: 多系统之间通过SFTP实现文件交换为什么选择SFTP而不是FTP?✅安全性: SFTP基于SSH协议,数据传输全程加密✅单端口: 只需开放22端口,防火墙配置简单✅认证机制: 支持密码和密钥两种认证方式❌ FTP明文传输,存在安全隐患。
2026-02-24 10:46:07
339
原创 95 农业银行接口对接
在金融科技场景中,企业需要与银行系统进行深度集成:常见业务场景:不熟悉银行接口的问题:1. 通信协议关键特性:2. 账户编号规则农业银行的账号由**省号(2位) + 账号(19位)**组成:省号示例:3. 行号(CNAPS Code)规则人行联行号用于跨行转账时标识银行机构:4. 主要接口功能农行XML报文采用报文头+报文体的标准结构:报文构建最佳实践方法1: 字符串拼接 (推荐用于简单报文)方法2: XStream注解 (适用于复杂报文)请求流水号生成策略唯一性保证:3 响应报文解析
2026-02-24 10:44:27
215
以电商项目为线索,快速掌握 JDK17 + springboot3 + springcloud Alibaba 专栏源码
2023-10-13
02 利用paddleocr识别监控图像的时间 完整代码与Dockerfile及其依赖
2023-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅