- 博客(1101)
- 资源 (9)
- 收藏
- 关注
原创 MyBatis源码学习系列文章目录
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合...
2021-04-24 21:44:25
359
原创 MyBatis工作流程-与Spring整合
系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合文章目录系列文章目录 前言与MyBatis相关的Beanbean实例化的流程1. Sql
2020-12-19 16:12:11
422
1
原创 兼容Oracle与MySQL的一些事
文章目录前言一、字段类型差异二、函数差异 1、几种兼容方案a. 利用Mybatis的特性b. 是否存在相同的函数c. 自定义同名函数三、语法差异四、锁的差异总结前言由于公司目前主要使用的数据库为Oracle,然后部分兼容MySQL,后期会考虑全部支持Oracle和MySQL。由于二者的各种差异,我们必须有一套可行的方案减少工作量。在兼容Oracle与MySQL的那些事中我们已经仔细讨论过在数据层对多数据库的支持了,接下来的目标就是结合这种支持同时考虑其他手段达到目标了。本文从以下几点来谈一下对兼容考
2020-11-09 10:56:58
2327
7
原创 从 JDK 8 到 JDK 17:那些改变 Java 开发方式的新特性
2014 年 JDK 8 的发布无疑是 Java 历史的里程碑,Lambda 表达式和 Stream API 让 Java 正式拥抱函数式编程。然而在此之后,Java 的发布节奏发生了根本性变化——从 2018 年起,Oracle 采用“每 6 个月一个版本”的快节奏发布策略。JDK 17 于 2021 年 9 月发布,是继 JDK 8 和 JDK 11 之后的第三个 LTS(长期支持)版本,提供长达 8 年的官方支持。从 JDK 8 到 JDK 17,Java 平台由约。
2026-09-04 10:06:59
283
原创 Spring Boot DispatcherServlet 自动配置源码深度解读
位于包下,是 Spring Boot 对 Spring的自动配置实现。独立应用(Standalone Application):使用嵌入式 Web 服务器(如 Tomcat、Jetty、Undertow)的场景;可部署应用(Deployable Application):使用部署到外部容器的场景。// ...中定义了两个自定义条件类,它们共同决定了自动配置是否生效。通过源码分析,我们可以总结出。
2026-09-04 10:06:03
254
原创 Spring Boot WebMvcAutoConfiguration 源码深度解析
模板方法模式定义创建组件的骨架,子类()通过重写等方法提供扩展点。策略模式提供替代实现策略,定义路径匹配策略。外部化配置模式将 Spring Boot 配置属性()应用到 Spring MVC 的默认配置中,实现"约定优于配置"。提供者模式(懒加载):通过和实现模块间松耦合,仅在 Bean 实际可用时才进行依赖获取,避免不必要的初始化。是 Spring Boot "自动配置哲学"的典范之作。它通过精心设计的条件装配、分层扩展点以及"用户优先"原则,实现了"开箱即用"与"灵活定制"的完美平衡。
2026-09-03 19:30:37
333
原创 Spring MVC 配置深度解析:WebMvcConfigurer 接口全览(含默认实现剖析)
作用:返回自定义的Validator(校验器)实例。若返回null,则使用默认的 JSR-303 校验器。默认实现会创建一个(如果类路径上有 JSR-303 实现,如 Hibernate Validator)。作用:返回自定义的,用于生成校验错误时的消息码。默认实现默认返回null,此时会使用。是 Spring MVC 定制的“瑞士军刀”。理解其背后的(核心默认配置)、的桥梁)以及 Spring Boot 的。
2026-09-03 18:58:36
277
原创 深入解读 Spring Framework 的五大设计哲学
↓↓↓“提供选择”是出发点——Spring 相信开发者有能力做出正确的决定。“包容多元”是态度——不强迫、不排他,尊重每一种合理的实现方式。“向后兼容”是承诺——你的投资不会因为框架升级而贬值。“API 设计”是手段——用直观的接口降低学习成本,用分层设计兼顾易用性与灵活性。而**“代码质量”** 是这一切的基石——没有干净的内部结构,前四条都是空中楼阁。一个框架凭什么让开发者信任它二十年?
2026-08-16 12:41:48
251
原创 深入解读 Spring Framework 的五大设计哲学
↓↓↓“提供选择”是出发点——Spring 相信开发者有能力做出正确的决定。“包容多元”是态度——不强迫、不排他,尊重每一种合理的实现方式。“向后兼容”是承诺——你的投资不会因为框架升级而贬值。“API 设计”是手段——用直观的接口降低学习成本,用分层设计兼顾易用性与灵活性。而**“代码质量”** 是这一切的基石——没有干净的内部结构,前四条都是空中楼阁。一个框架凭什么让开发者信任它二十年?
2026-08-16 12:41:12
264
原创 从 J2EE 到云原生:Spring Framework 的设计哲学与演进之路
面对复杂的 J2EE,它没有另立标准,而是用更轻量的方式集成规范。面对 Jakarta EE 的包名变更,它果断升级基线,始终保持前沿兼容性。面对云原生和 DevOps 的浪潮,它借助 Spring Boot 和 WebFlux 重新定义了应用交付方式。从 2003 年到 2026 年,Spring 已经走过了二十余年的历程。从最初的轻量级容器到如今的响应式、云原生、模块化全面支持,Spring 始终保持着旺盛的生命力。理解这些背景,不仅能帮助我们更好地应对每一次技术升级,更能让我们。
2026-08-16 10:44:35
360
原创 Spring SOAP Web Service 完整实战指南:从服务端到客户端(Spring Boot 3.x 修正版)
在微服务和 RESTful API 大行其道的今天,SOAP(Simple Object Access Protocol)依然在企业级集成、金融系统、电信等领域占据重要地位。其严格的契约规范、内置的安全标准和事务支持,使其在需要高可靠性和标准化的场景中不可或缺。本教程将基于 Spring 官方指南,完整地带领你从零构建一个 SOAP 服务端,并开发一个客户端来消费该服务。我们将深入每一行代码、每一个配置,确保你不仅"跑通"案例,更理解其背后的原理。
2026-08-15 11:35:06
501
原创 资管系统核心知识全景指南:从产品架构到资金清算的底层逻辑
通俗理解产品是你在银行或券商买到的那个"理财计划"(比如"稳盈1号"),它是面向投资者的外衣;投组(投资组合)则是系统内部用来装钱、装股票、算账的"真实钱包"。业务细节:在资管系统中,通常是"一个产品对应多个投组"。为什么要这么设计?为了满足监管要求的**"三单"原则(单独管理、单独建账、单独核算)** ,以及隔离不同策略、不同资金来源的风险,系统会在底层将产品拆分为多个投组。系统落地:在系统里,所有的交易指令、估值核算、风控校验,都是基于"投组"这个最小颗粒度来进行的。监管依据。
2026-08-05 11:03:35
185
原创 一文读懂资管系统里的“清算路径”:钱和券的“导航地图”
简单来说,清算路径就是给每一笔交易预设好的“导航路线”。钱从哪个银行账户出?通过哪家证券公司去买?用哪个股东账户去登记?买回来的股票记在谁的名下?“清算路径”就是把这一连串问题的答案提前配置好。它连接了银行托管户(钱的源头)、券商(交易的中介)和交易所(买卖的市场)。没有配好这条路,交易就无法闭环。清算路径是金融基础设施的缩影。资金如何安全地从银行流向市场;资产如何合法地归属到产品名下;交易数据如何在不同系统间流转。它是资管系统能够日复一日、准确无误地处理亿万级交易的基石。
2026-08-05 10:55:36
233
原创 企业会计准则第5号——生物资产(2006)深度解读:确认、计量与实务案例
准则第三条规定,生物资产分为消耗性生物资产生产性生物资产和公益性生物资产(一)消耗性生物资产:是指为出售而持有的、或在将来收获为农产品的生物资产,包括生长中的大田作物、蔬菜、用材林以及存栏待售的牲畜等。消耗性生物资产本质上类似于工业企业的存货——其价值通过一次性的出售或收获来实现。(二)生产性生物资产:是指为产出农产品、提供劳务或出租等目的而持有的生物资产,包括经济林、薪炭林、产畜和役畜等。生产性生物资产类似于工业企业的固定资产——其在多个生产周期中持续发挥作用,价值通过折旧逐步转移。(三)公益性生物资产。
2026-08-04 13:50:09
283
原创 企业会计准则第4号——固定资产(2006)深度解读:确认、计量与实务案例
准则第三条规定,固定资产是指同时具有下列特征为生产商品、提供劳务、出租或经营管理而持有的——强调了持有目的,排除了作为存货(待售)的房地产;使用寿命超过一个会计年度——体现了长期资产的特征。第一,持有目的的多样性。固定资产不仅包括生产用设备,还包括为出租而持有的资产(但不能是投资性房地产)。例如,一家从事设备租赁的公司持有的机器设备,同样属于固定资产。第二,“使用寿命”的双重含义。准则明确指出:使用寿命是指企业使用固定资产的预计期间,或者该固定资产所能生产产品或提供劳务的数量。
2026-08-03 14:41:12
323
原创 企业会计准则第3号——投资性房地产(2006)深度解读:确认、计量与实务案例
准则第二条规定:“投资性房地产,是指为赚取租金或资本增值,或两者兼有而持有的房地产。”同时,投资性房地产应当能够单独计量和出售。已出租的土地使用权:指以经营租赁方式出租的土地使用权;持有并准备增值后转让的土地使用权:指企业取得的、准备增值后转让的土地使用权。但按照国家有关规定认定的闲置土地,不属于此类;已出租的建筑物:指企业拥有产权的、以经营租赁方式出租的建筑物。《企业会计准则第3号——投资性房地产》的制定,标志着我国会计准则在资产分类和计量方面的重要进步。
2026-08-03 14:33:16
280
原创 关于《企业会计准则第14号——收入》的完整指南
企业会计准则第14号——收入》是整个企业会计准则体系中应用最广泛、影响最深远的具体准则之一。它不像基本准则那样回答“为什么要这样做账”,而是告诉你“收入到底该怎么确认和计量”。2017年7月5日,财政部正式发布了修订后的《企业会计准则第14号——收入》(财会〔2017〕22号)。这次修订是收入准则历史上最大的一次变革——它取代了原《企业会计准则第14号——收入》和《企业会计准则第15号——建造合同》,用一套统一的“五步法”模型来规范所有与客户之间的合同产生的收入。
2026-07-23 20:01:20
1222
原创 企业会计准则——基本准则全攻略:从入门到精通
企业会计准则——基本准则》是整个企业会计准则体系的“根本大法”。它不像存货、长投等具体准则那样教你“怎么做账”,而是告诉你“为什么要这样做账”。基本准则只有50条,但贯穿了从会计确认、计量到报告的全过程。它定义了资产、负债、所有者权益、收入、费用、利润六大会计要素,确立了八大会计信息质量要求,规范了五种会计计量属性——这些是所有具体准则的共同基础。初学者常觉得基本准则太抽象、太理论,不如具体准则“实用”。但事实上,所有具体准则的条款都是基本准则原则的具体化。
2026-07-21 20:03:34
409
原创 企业会计准则第1号——存货全攻略:从入门到精通
存货是企业资产中最常见、最基础的项目之一,但看似简单,背后却藏着不少容易踩坑的知识点。从采购成本该不该计入存货,到发出存货用哪种计价方法,再到存货跌价准备如何计提与转回——每一个环节都有明确的准则规定。本文将用大白话 + 详细案例 + 完整的报表影响分析的方式,把存货准则的核心内容彻底讲透。本文对每一个案例都分别列出资产负债表(资产、负债、所有者权益分项)和利润表的变动,让你清清楚楚看到每一笔分录如何影响报表。适用准则:《企业会计准则第1号——存货》(财会〔2006〕3号),共4章22条。
2026-07-21 17:34:51
420
原创 Apache POI Word(docx) 实战教程:从入门到精通表格合并、图片插入与文档合并
在日常开发中,我们经常需要动态生成 Word 文档——无论是生成报表、合同、还是导出各类业务数据。Apache POI 的 XWPF 模块是 Java 生态中操作.docx格式文档的事实标准,而 poi-tl 则在 POI 基础上提供了更强大的模板引擎能力。本文将基于官方入门教程,进行大幅度的充实和扩展,提供完整可运行的示例代码,并对表格合并、图片插入、文档合并等高级操作做深入演示。无论你是 POI 初学者还是有一定经验的开发者,都能从中找到实用价值。
2026-07-07 10:19:01
355
原创 告别手动写报告!这款 Java 模板引擎让你轻松生成复杂 Word 文档
动态生成 Word 文档——比如项目报告、合同、简历、产品说明书、数据分析报表……如果是纯文本替换,用 Freemarker 或者直接字符串替换还能应付,但一旦涉及到图片、表格、图表、多级列表、嵌套文档,事情就变得棘手起来。今天给大家推荐一款专注于 Word 文档生成的 Java 模板引擎 ——poi-tl。它是基于 Apache POI 构建的,但无需理解 POI 的底层 API,你只需要在 Word 模板中写标签,在 Java 中传数据,就能得到一份风格精美的文档。而且它的设计理念是“所见即所得”
2026-07-03 11:15:26
329
原创 一张表读懂企业会计准则:从入门到实战的“财务宪法”解读
本文系统解读《企业会计准则——基本准则》的核心框架,帮助非财务人员快速掌握财报阅读的关键逻辑。文章从两大报表(资产负债表、利润表)的基本公式出发,深入讲解会计信息质量的“八项军规”、六大会计要素(资产、负债、所有者权益、收入、费用、利润)的定义与确认条件,以及五种会计计量属性(历史成本、重置成本、可变现净值、现值、公允价值)。通过面包店案例贯穿始终,重点解析了利得/损失的两条去向、收入确认的“总额法 vs 净额法”、费用确认的三条路线,以及公允价值作为“脱手价”的本质。
2026-06-25 16:35:06
440
原创 彻底搞懂 SLF4J 桥接模块:让老日志 API 乖乖听话
桥接模块用途核心操作风险/注意将 JCL 调用重定向到 SLF4J替换不能与共存slf4j-jcl将 SLF4J 调用委托给 JCL(极少用)添加 jar不能与共存将 Log4j 1.x 调用重定向到 SLF4J替换log4j.jar不能与共存;不适用于 Appender 等高级组件将 JUL 日志路由到 SLF4J安装性能开销大;不能与共存最佳实践建议优先迁移源码:对于自己编写的代码,直接改用 SLF4J API,而非依赖桥接。逐步替换。
2026-06-23 09:54:20
328
原创 深入理解 SLF4J:Java 日志的终极门面
SLF4J 作为 Java 日志领域的标准门面,以其简单、灵活、高性能的特点赢得了广泛的认可。它解耦了日志 API 与实现,让开发者专注于业务代码,让运维灵活掌控日志配置。无论你是做应用开发还是框架编写,掌握 SLF4J 都是必备技能。希望本文能帮助你深入理解 SLF4J,并在实际项目中用好这个强大的工具。如果你想了解更多细节,可以查阅官方用户手册,那里有更完整的说明和故障排除指南。(本文基于 SLF4J 2.0.18 编写,确保信息最新准确。
2026-06-23 09:53:44
347
原创 告别“在我电脑上能跑”——用 Vagrant 一键搭建可复现的开发环境
文章摘要本文是一篇全面的 Vagrant 入门与实践指南,通过一个真实的 Web 应用Terramino演示了 Vagrant 的核心功能。Vagrant 解决的问题:解决传统开发环境中的“在我电脑上能跑”问题,通过“环境即代码”实现环境一致性、可移植性和隔离性。安装与基础使用:详细介绍了 Vagrant 和 VirtualBox 的安装步骤,以及如何通过vagrant up等命令创建和管理第一个虚拟机环境。自动化配置(Provisioning)
2026-06-22 17:25:42
450
原创 Java SAX 流式解析全解:从原理到 EasyExcel 实战
SAX 是一种基于事件驱动的 XML 解析 API。它不构建完整的文档树,而是像流水线一样顺序读取 XML 文件,每遇到一个 XML 结构(开始标签、文本、结束标签、属性等)就回调开发者定义的处理器方法。// SAX ContentHandler 典型回调示例与之相对的是,它会将整个 XML 文档加载到内存中,生成一棵对象树,允许任意遍历和修改。SAX 的核心价值在于“用编程复杂度换取内存与速度”。在需要处理超大 XML(或类 XML 结构,如 xlsx、docx)的场景下,它几乎是唯一可行的方案。
2026-06-15 10:26:37
504
原创 18 Byte Buddy 进阶:揭秘方法委托中的“歧义解析”机制
如果默认的 4 条规则无法满足你的奇葩需求(比如你想根据方法上的自定义注解来选择),你可以实现接口。// 自定义逻辑:例如,优先选择带有 @AdminOnly 注解的方法 for(Resolution candidate : candidates) {// 直接选中 } } // 否则返回 null,交给下一个解析器处理 return null;
2026-03-16 18:45:21
577
原创 18 Byte Buddy 进阶指南:解锁 `@Pipe` 注解,实现灵活的方法转发
Pipe// 模拟一个简单的数据库服务 class MemoryDatabase {// 模拟耗时操作 try {} }// 模拟一个简单的数据库服务 class MemoryDatabase {// 模拟耗时操作 try {} }List;// 模拟一个简单的数据库服务 class MemoryDatabase {// 模拟耗时操作 try {} }ArrayList;// 模拟一个简单的数据库服务// 模拟耗时操作@Pipe。
2026-03-16 17:11:27
554
原创 18 Byte Buddy 进阶指南:优雅调用接口默认方法 (@DefaultCall)
*** 场景一:强制调用 ServiceA 的默认方法* 即使 MyService 重写了 log,这里也能通过 targetType 找回 ServiceA 的默认逻辑} /*** 场景二:强制调用 ServiceB 的默认方法} /*** 场景三:如果不想指定 targetType,且方法本身就是默认方法的直接实现(未重写)* 注意:对于 MyService 这种重写了的情况,不加 targetType 可能会导致绑定失败或调用的是 super (如果存在)} }
2026-03-16 15:20:02
577
原创 17 深入理解 Byte Buddy @Super:是“父类代理”而非“父类实例”
/ 普通虚方法 (可被重写)// Final 方法 (不可被重写)// Private 方法 (不可见)/**/*** 拦截逻辑* @param origin 原始方法信息* @param allArgs 所有参数* @param zuper 原始方法的调用句柄。
2026-03-13 13:42:01
524
原创 12 Byte Buddy 进阶指南:如何动态定义全新方法与字段
重写 (Override):针对父类或接口中已存在的方法进行修改。定义 (Define):创建一个全新的方法或字段,它在父类中并不存在。Byte Buddy 允许你通过和API 轻松实现后者。你可以使用来声明一个新方法,指定其名称、返回类型、参数列表和可见性。定义完成后,必须立即通过提供具体的实现逻辑。与方法不同,字段的处理逻辑要简单得多。方法定义的时序敏感后立即intercept是标准动作。警惕:后续注册的匹配器可能会“误伤”你刚定义的新方法。对策。
2026-03-12 13:25:49
265
原创 11 ByteBuddy 泛型深坑:为什么名字相同的 `T` 却不是同一个类型?
ByteBuddy 文档中提到的机制,是其在处理泛型时最核心的智能特性之一。核心认知:泛型类型变量(TE等)不是全局唯一的,它们是上下文相关的。跨类复用泛型类型时,必须更新其绑定的上下文。自动修复:当你传入一个包含类型变量的Type对象给 ByteBuddy 时,它不会盲目复制,而是会自动识别并将其重绑定到新生成类或方法的上下文中。开发者收益:你不需要关心字节码中复杂的常量池索引、签名属性格式或类型变量表。你只需要关注业务逻辑,ByteBuddy 会保证生成的字节码在泛型层面是严格合法的。
2026-03-11 16:56:00
237
原创 08 ByteBuddy 进阶:Manifest 加载策略——用内存换“后悔药”?
ByteBuddy 的 Manifest 版本是一个强大的“后悔药”,它让动态类在加载后依然保留了“肉身”(字节码)。核心建议默认忽略:95% 的场景下,你只需要操作Class对象,不需要原始字节码。请坚持使用普通的WRAPPER策略。按需开启:只有当你明确调用了且期望得到非空结果时,才切换到*_MANIFEST版本。警惕内存:使用 Manifest 版本时,务必监控 JVM 堆内存使用情况,避免因为动态类过多而导致 OOM。认清局限。
2026-03-11 15:21:04
303
Spring Boot整合Druid Demo项目代码包
2020-03-03
simpe-demo-diffdb.7z
2020-11-10
动态多数据源示例代码
2020-11-04
Spring Boot中整合MyBatis
2020-04-01
编程式创建Aspect代理源码
2020-05-27
Spring Boot中整合MyBatis
2020-04-01
springcloud.zip
2020-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅