自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(415)
  • 资源 (11)
  • 收藏
  • 关注

原创 DROP、DELETE、TRUNCATE千万别用错,否则准备跑路吧!

• DELETE数据操作语言 (DML)。逐行删除,可以带WHERE子句删除部分数据,可以回滚,会触发触发器,速度最慢。• TRUNCATE数据定义语言 (DDL)。删除所有行,保留表结构,不可回滚,不触发触发器,速度很快。• DROP数据定义语言 (DDL)。删除整张表,包括结构和数据,不可回滚,不触发触发器,速度最快。命令DELETE(搬家公司)TRUNCATE(内部拆迁队)DROP(爆破专家)操作对象数据行(可指定)所有数据(保留结构)整个表(结构+数据)语言类型DML (数据操作)

2025-08-13 21:42:10 199

原创 让你的密码“密”不透风:手把手教你写一个属性加密 Spring Boot Starter

通过实现一个自定义的 Spring Boot Starter 和利用扩展点,我们成功地构建了一个轻量级、可复用、对业务代码零侵入的配置加密解决方案。这种方式不仅极大地提升了配置的安全性,避免了在代码仓库中暴露明文密码,还展示了 Spring Boot 自动配置机制的强大威力。掌握这种能力,你将可以为团队封装更多通用的、可插拔的功能,极大地提升开发效率和项目的标准化水平。

2025-08-13 21:41:33 874

原创 还在用PUT更新局部数据?Jakarta REST 4.0 的“合并补丁”,优雅!

然而,我注意到一个日益增长的趋势:越来越多的客户选择 Spring WebMvc 或 WebFlux 作为他们的首选框架,而不是 Jakarta REST。像 JSON Patch 以及这个版本中新引入的 JSON Merge Patch 这样的功能,在真实世界的 RESTful API 开发中很少被使用。, JSON Patch 和 JSON Merge Patch 的完整测试代码,此处为简洁起见,不再重复展示。• 新增了一些便捷的方法来检查请求头的值,特别是那些包含由令牌分隔的列表的请求头,包括。

2025-08-12 19:20:00 378

原创 “小表驱动大表”,IN和EXISTS你真的用对了吗?

特性IN(先拉清单)EXISTS(逐一问询)驱动方式内表驱动外表外表驱动内表执行流程先执行子查询,再执行主查询循环执行主查询,每次代入子查询核心比喻助理先把名单抄好,老板再核对老板逐一指名,助理跑腿验证适用场景外表大,内表小外表小,内表大关于NULLNOT IN遇到NULL时会出问题NOT EXISTS对NULL表现稳健这个“小表驱动大表”的经典法则是理解两者逻辑差异的绝佳方式。但需要注意的是,现代的MySQL优化器已经非常智能,在很多情况下,它能够分析你的查询,并自动将IN。

2025-08-12 19:18:46 575

原创 为什么TEXT不区分大小写,而BLOB严格区分?

特性BLOB(传世画作)TEXT(历史文献)核心数据类型二进制字符串 (Byte String)非二进制字符串 (Character String)字符集概念❌没有✅有(如utf8mb4排序与比较基于字节的数值(区分大小写)基于字符集的校对规则(通常不区分大小写)核心比喻一个密封的、内容未知的保险箱一本语言明确、内容可读的档案册一句话总结我存的是“比特流”,我不管内容是啥。我存的是“文字”,我知道这是哪国话。选择BLOB还是TEXT。

2025-08-11 21:17:22 549

原创 用户一发 Emoji,我的 Spring Boot 应用就报错了...

让你的 Spring Boot 应用支持 Emoji 并不是一件难事,关键在于建立“全链路编码一致”的思维。1. ✅数据库、表、字段的字符集全部设置为utf8mb4。2. ✅JDBC 连接 URL中必须添加参数。3. ✅新项目从一开始就使用utf8mb4作为标准配置。•utf8mb4字符最多占用4字节,这意味着在为VARCHAR字段创建索引时,可能会更容易超出旧版 InnoDB 的 767 字节前缀索引长度限制。现代 MySQL 版本(5.7+)通常已通过解决了此问题,但如果是旧系统,需要特别留意。

2025-08-11 21:16:47 613

原创 面试官:线上遇到数据库死锁,你怎么排查?(教科书式回答来了)

简单来说,死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,它们都将无法向前推进。想象两个人(事务 A 和 B)吃饭,桌上只有一双筷子(资源 1 和 2)。1.事务 A拿起了筷子1。2. 与此同时,事务 B拿起了筷子2。3. 现在,事务 A想去拿筷子2,但筷子2在事务B手里,于是 A 只能等待。4. 同时,事务 B也想去拿筷子1,但筷子1在事务A手里,于是 B 也只能等待。5. A 等 B,B 等 A,形成了一个“死亡循环”,谁也无法继续,这就是死锁。

2025-08-10 19:06:44 804

原创 索引不是越多越好!这4种情况,加索引=“性能自杀”

场景技术描述图书馆馆长的智慧高重复值区分度低的列(如性别)“这柜子只会把人引向半个图书馆,没用!写多读少写密集型表(如日志)“不能为了偶尔的方便,堵死日常的主干道!从不查询不用于WHERE/JOIN/ORDER BY的列“我们不为没人会问的问题,准备答案。表太小小数据量表“为只有10本书的阅览室配个卡片柜?直接看书架更快!索引是一项需要成本的投资。在决定是否添加一个索引时,你必须像一位精明的馆长一样,仔细权衡它在“查询加速”上带来的收益,是否大于它在“空间占用”和“写入维护。

2025-08-10 19:06:01 661

原创 表设计得好不好,就看“三大范式”,一篇讲透!

范式技术要求大白话整理员的规则1NF原子性:列不可再分一格一事“表格要整齐,一个格子里只写一件事!2NF消除部分依赖:非键列完全依赖于整个主键只谈主题“一张表只说一件事,学生信息不要和选课信息混在一起!3.sqlNF消除传递依赖:非键列不依赖于其他非键列拒绝闲聊“学生信息表里,就不要插入关于‘系’的八卦了!BCNF消除所有异常:所有决定因素都是候选键终极洁癖“任何可能引起混乱的‘旁门左道’依赖关系,都不能有!数据库范式化,就是一个通过拆分表来减少数据冗余、提高数据一致性的过程。

2025-08-09 20:30:00 453

原创 Spring Boot的@Transactional在多线程下竟然“悄悄”失效了!

在本文中,我们将探讨如何在 Spring Boot 中有效地处理事务内的多线程,内容涵盖常见的陷阱、实用的解决方案以及最佳实践。要在 Spring Boot 的事务中处理多线程,你需要确保子线程要么参与父线程的事务,要么适当地管理它们自己的事务。然而,由于数据库连接通常不是线程安全的,你必须确保进行适当的同步,或使用一个可感知事务的执行器。尽可能缩短事务的范围,避免在嵌套事务中产生冲突的锁请求。传播事务上下文、配置可感知事务的执行器,或者为不同线程分配独立的事务,你可以成功应对多线程环境带来的挑战。

2025-08-09 20:29:18 682

原创 我明明加了索引,为什么查询还是那么慢?!

要让这位强大的管理员乐于使用“索引卡片柜”,你的请求必须遵循他的规则:•保持索引列的“纯粹”: 不要在等号左边的索引列上做任何计算、函数或类型转换。•遵循“字典”的查找方式: 从左到右,清晰明确。•提供“同一种语言”: 保证查询条件的数据类型与列定义的数据类型完全一致。简单来说,你得让你的查询条件,去无限匹配索引的“原始形态”,而不是让索引来将就你“千奇百怪”的查询条件。

2025-08-08 19:42:59 550

原创 Java 17的“三板斧”:Sealed类 + Records + 模式匹配,代码从未如此优雅

在编写 JSON、XML、HTML 和 SQL 查询时,格式更清晰,代码更整洁。鼓励开发者从那些过时的或不安全的特性迁移出来,拥抱更现代、更安全的替代方案。通过限制继承层级,提高了代码的安全性和可维护性,使得类的意图更加明确。提供了对随机数生成算法更好的控制、可复现性以及更多样化的选择。引入了多行字符串字面量,让编写包含多行内容的字符串变得简单。提供了新的、更灵活的随机数生成器 API。减少了样板代码,提高了代码的可读性。实现了更简洁、更易读、也更安全的。已被废弃,并计划在未来版本中移除。

2025-08-08 19:42:24 441

原创 Java 17的“三板斧”:Sealed类 + Records + 模式匹配,代码从未如此优雅!

✅ 6. 增强的伪随机数生成器 (Enhanced Pseudo-Random Number Generators - JEP 356)在编写 JSON、XML、HTML 和 SQL 查询时,格式更清晰,代码更整洁。鼓励开发者从那些过时的或不安全的特性迁移出来,拥抱更现代、更安全的替代方案。通过限制继承层级,提高了代码的安全性和可维护性,使得类的意图更加明确。提供了对随机数生成算法更好的控制、可复现性以及更多样化的选择。提供了新的、更灵活的随机数生成器 API。减少了样板代码,提高了代码的可读性。

2025-08-08 07:31:13 368

原创 MySQL索引,加对了吗?普通索引和唯一索引,区别不止是“唯一”

特性普通索引 (姓名名录)唯一索引 (身份证名录)核心目的加速查询加速查询 + 保证数据唯一是否允许重复✅允许❌不允许(NULL除外)数据完整性不负责✅提供,是一种约束核心比喻一本普通的电话黄页一本带防伪验证的官方ID册写入性能相对更快相对更慢 (因为需要查重)一句话总结我只管快,不管你存的是啥。我既要快,也要保证存的东西不重样。如何选择?• 如果你的业务逻辑本身就能保证字段的唯一性(比如,在代码层面做了严格校验),或者这个字段就是允许重复的(比如姓名、城市),那么使用普通索引。

2025-08-07 15:13:14 330

原创 【Java黑科技】ANTLR入门到实战:手把手教你构建自己的表达式解析器

通过使用像 ANTLR 这样强大的库,并采用一种简单直接的实现方式,我们能够相对轻松地处理复杂的语法解析任务。正如你所见,如果我们想添加更多功能或处理更复杂的表达式,我们只需要更新语法文件 (,这是一个特殊的类,当解析器根据语法规则遍历输入文本时,它的方法会被回调。我们希望开发一个能够解释基本数学运算的模块,例如:加、减、乘、除、幂运算、平方根和对数。这样的函数,我们只需从栈中弹出一个操作数,应用函数,然后将结果推回栈中。• 语法文件名必须与语法本身的名称一致——在我们的例子中,就是。

2025-08-07 15:12:44 354

原创 Spring AOP的this调用失效?别慌,那是因为你没用AspectJ

特性Spring AOP (快速改装)AspectJ AOP (量身定制)核心比喻在成衣外套一件“功能风衣”(动态代理)将特殊纤维直接“织入”西装面料(字节码修改)织入时机运行时(Runtime)编译时/加载时性能有开销,相对较慢无额外开销,性能更高功能强度有限(仅方法执行、仅Spring Bean)强大(任何连接点、任何Java对象)易用性简单,开箱即用复杂,需额外配置一句话总结方便的“AOP Lite”,解决80%的常见问题。强大的“A-O-P-lus”,应对100%的复杂场景。

2025-08-06 19:46:42 1248

原创 Java 工具类的“活化石”:Apache Commons 核心用法、性能陷阱与现代替代方案

Apache Commons 是一座蕴含着 Java 发展历史和无数前辈智慧的宝库。它并非过时的技术,而是一个成熟、稳健的基石。作为一名现代开发者,我们的任务不是盲目地抛弃它,而是要以批判性的眼光去审视:理解它的哪些部分(如FileUtils)因其设计的卓越而历久弥新;理解它的哪些部分(如BeanUtils)因时代的变迁而有了更优的替代方案。掌握了这种辨别能力,你才能真正地站在巨人的肩膀上,构建出更优秀的软件。

2025-08-06 19:46:03 1071

原创 告别重复造轮子:Hutool 常用工具类实战宝典

Hutool 的名字意为“糊涂工具”,寓意是让开发者“偷懒”的工具。它遵循“大道至简”的原则,将复杂的操作封装成极其简单的静态方法调用,几乎没有学习成本。它的优势在于:•几乎涵盖了Java开发的方方面面。•核心模块不依赖任何第三方库。•所有功能皆为静态方法,开箱即用。•中文文档和注释非常完善。Hutool 并非一个创造新技术的框架,而是一个将 Java 开发中无数“最佳实践”和“常用代码片段”进行系统化沉淀的工具集。它以其全面的功能和极致的易用性,极大地提升了我们的开发效率。

2025-08-05 20:09:40 665

原创 一个HTTP请求,在Spring MVC内部的奇妙漂流

Spring MVC组件故事中的角色核心职责大堂经理总指挥,协调所有组件工作预订部前台找到正确的处理器(主厨)厨房调度员适配并调用处理器(主厨)Controller主厨执行核心业务逻辑,准备数据带指令卡的银盘菜品封装数据和视图信息摆盘/餐具专家解析逻辑视图名,找到真实视图View最终的艺术品呈现渲染数据,生成最终响应的工作流程,就是一个责任链模式的完美体现。它通过将复杂的请求处理流程,拆解给一系列各司其职的专业组件,实现了高度的模块化和可扩展性,这也是Spring框架设计的精髓所在。

2025-08-05 20:08:51 1088

原创 Java“考古”指南:这10个被废弃的特性,见证了Java的血泪进化史

为你的特定数据库(如 MySQL, PostgreSQL, Oracle 等)使用对应的、纯粹的。,从来就不是为公众使用而设计的,其实现可能在不同 JDK 版本间随意变化。,在单线程环境下或在已有外部同步的场景下,这会带来不必要的性能开销。• API 过于复杂、难以正确使用,并且在实际中很少被用到。在 Java 9 中被正式废弃,并计划在未来版本中移除。在 Java 17 中被废弃,并计划在未来版本中移除。(例如,月份是从 0 开始计数的,年份有偏移量)。),或者在确实需要线程安全的 Map 时使用。

2025-08-04 15:57:09 513

原创 @Controller, @Service, @Repository...不都是@Component吗?到底有啥区别?

注解@Component(后勤)(接待)@Service(医生)(检验科)所属分层不明确,通用组件表现层业务层数据访问层核心比喻通用员工前台/分诊护士专科医生带翻译技能的检验科医生特殊功能无标记为Web请求处理器无 (主要为语义)✅开启异常转译一句话总结我是块砖,哪里需要哪里搬我守着门,负责接客和分流我是大脑,负责核心业务我操作数据,还兼职翻译虽然这四个注解在注册Bean这个基础功能上是等价的,但使用更具体的@Service来代替通用的@Component,是一种。

2025-08-04 15:56:31 1314

原创 别再无脑用@Transactional了!这个注解正在悄悄“杀死”你的应用性能!

如果你用一个典型的、包含 10 个连接的连接池,这意味着你每分钟最多只能处理大约 200 个注册请求,而不是你本可以处理的数千个。这个标志会告诉数据库(和驱动)这个事务是只读的,可以进行相应的优化(例如,跳过脏数据检查、路由到读库等)。它现在也成了你数据库事务的一部分,在你等待邮件 API 响应的时候,它一直占着宝贵的数据库连接。在过去一年里,我看过不少的 Spring Boot 的代码库,在几乎每一个项目中,都潜伏着同一个。你的数据库连接不是无限的,你的用户没有耐心,你的性能监控仪表盘也没有对你说谎。

2025-08-03 14:47:08 905

原创 别再死记硬背了!一篇故事讲明白Spring Bean的“一生”

生命周期阶段技术步骤骑士的故事常用扩展点实例化new诞生构造函数属性填充DI (依赖注入)授予装备@Autowired@Resource初始化Aware接口 ->Before ->->->After获知身份 -> 初审 -> 核心试炼 -> 最终册封(等同使用中为王国效力(无)销毁->光荣退役(等同(位于包): 相当于和的结合,是初始化逻辑的首选。: 相当于destroy和的结合,是销毁逻辑的首选。: 是进行框架级扩展、实现AOP等高级功能的核心。

2025-08-03 14:46:27 712

原创 故事Spring AOP:如何在不“凿墙”的情况下,给所有房间通上“水电”?

AOP术语技术定义故事比喻 (装修大楼)Aspect(切面)一个封装了横切关注点的模块一家专业的服务公司(如消防公司、布线公司)Join Point(连接点)程序执行过程中可以插入切面的点服务接入点(如门口、天花板、窗户)Advice(通知)切面在特定连接点上执行的具体动作具体的服务内容(如“在门口安装一个喷头”)Pointcut(切点)一组连接点的集合,定义了Advice在哪里生效一份总安装方案(如“在10-20楼所有房间的门口”)Target(目标对象)被一个或多个切面所通知的对象被安装服务的房间。

2025-08-02 15:36:32 863

原创 Guava 宝库:5 个让你的 Java 代码瞬间优雅的“骚操作”

Guava 并非一个过时的库,而是一个经过时间检验的、依然充满活力的“宝库”。虽然它的部分功能已被现代 JDK 所吸收,但其不可变集合、全新的集合类型(MultisetMultimap)、强大的本地缓存 (等核心工具,在今天的 Java 开发中依然具有不可替代的价值。

2025-08-02 15:35:56 603

原创 一个“豪华酒店”的故事,讲透Spring Bean的5大作用域

作用域singleton(古董摆钟)prototype(全新毛巾)request(送餐车)session(房卡)实例数量一个(全局唯一)多个(每次请求都新建)多个(每个请求一个)多个(每个会话一个)生命周期与容器同生共死创建后由使用者负责与HTTP请求绑定与HTTP会话绑定核心比喻酒店大堂的公共设施一次性的个人卫生用品一次送餐的专属服务一次入住的身份凭证一句话总结大家共用一个每次都给你新的每次请求给你新的每次会话给你新的singleton。

2025-08-01 15:20:15 510

原创 关于 Jackson,看这一篇就够了

Jackson 是一个高性能的 Java JSON 处理库。它并不仅仅是一个库,而是一个由三个核心组件构成的生态系统:核心库,提供了底层的、流式的JsonParser和,是性能最高的部分。包含了一整套用于定制序列化和反序列化行为的 Java 注解。提供了强大的数据绑定功能,能方便地在 Java 对象 (POJO) 和 JSON 之间进行转换。这是我们最常直接打交道的库。在库中,是我们进行所有操作的中心入口。它负责读取和写入 JSON,功能极其强大且高度可配置。为什么 Jackson 能脱颖而出?

2025-08-01 15:19:42 843

原创 为什么我们写的Spring,几乎都在用ApplicationContext?

特性(发动机套件)(豪华整车)本质关系核心/基础扩展/高级is-a加载策略懒加载(第一次用才启动)饿汉式加载(出厂时就已启动)功能集基础(只有Bean管理)全面(Bean管理 + AOP, I18N, 事件等)核心比喻只提供最核心的引擎提供一辆功能完备的汽车一句话总结我是Spring的心脏,但只是个零件。我是Spring的完整形态,拿来就能开。在任何现代的Spring应用(尤其是Spring Boot)中,我们几乎总是与打交道。更多的是作为底层的基础设施存在。

2025-07-31 15:06:55 709

原创 Java Stream进阶:map是“一对一”,flatMap是“一对多”

例如,把一个包含句子的流拆分成一个包含所有单词的流,或者合并多个嵌套的列表。是完美的,因为每个名字(String)都只对应一个长度(Integer),是一对一的转换。(一个列表,其中每个元素又是一个电话号码列表),这意味着你可能得再写个循环来处理它。则是把所有盒子里的礼物都拿出来,放到一个大袋子里(你直接得到了一堆礼物)。假设每个员工都有多个电话号码,而你想获取所有员工的所有电话号码。现在你得到了一个包含所有员工的所有电话号码的单一列表。的一个花哨版本,但它实际上是函数式编程中的一个基本概念。

2025-07-31 15:06:16 1002

原创 LocalDateTime vs Instant vs ZonedDateTime:到底该用哪个?

在这个新API中, 是最常用、也最容易被误用的类之一。它的名字中,“Local”(本地)这两个字既是其核心优势,也是导致无数线上问题的“万恶之源”。本文将深入剖析 ,帮助你真正理解它,并学会在项目中正确地使用它。 的官方定义是:一个不包含时区或偏移量信息的日期和时间。这是什么意思?你可以把它想象成墙上挂钟显示的时间,或者你日历上记下的一个约会。例如,。这个值本身是“不完整”的,它并不代表宇宙时间轴上的一个确切瞬间。为什么?因为“上午10点30分”这个时刻,在新加坡、东京和伦敦,是三个完全不同的时间点。• :

2025-07-30 14:24:03 1124

原创 Spring两大核心IoC和AOP,到底啥关系?一篇“盖楼”文章讲透

理念IoC (控制反转)AOP (面向切面编程)核心目的解耦模块化解决的问题组件之间紧密的依赖关系横切关注点的逻辑分散、代码重复核心比喻总承包商负责组装,你只管提需求专业服务公司负责安装,不碰房间核心功能一句话总结你不用找工具,让工具来找你。给你的业务逻辑“穿上”一层功能外套。最终关系:IoC是Spring的根基,它像“骨架”,负责把各个组件搭建起来;AOP是Spring的利器,它像“血肉”,在不改变骨架的前提下,为应用添加丰富的功能。两者结合,构建出了一个高度解耦、高度模块化的强大应用。

2025-07-30 14:13:34 695

原创 RoaringBitmap:高性能人群圈选与标签系统的“最优解”

RoaringBitmap 是一个开源的、经过高度优化的位图(bitmap)数据结构。它的核心目标是:在保持极高计算性能的同时,大幅压缩存储空间。它的“魔法”在于其巧妙的混合式数据结构RoaringBitmap 将32位的整数空间(0 到 2³²-1)分割成 65536 (2¹⁶) 个“容器”(Container),每个容器负责存储一个 65536 大小的整数区间。一个整数的高16位决定它属于哪个容器,低16位决定它在容器内的位置。

2025-07-29 19:41:26 557

原创 java.util.Date和java.sql.Date,你是不是也导错过包?

特性(首席计时官)(石碑雕刻师)出身java.util包 (通用)java.sql包 (专用)继承关系父类子类数据内容✅ 包含年月日 + 时分秒✅ 只包含年月日(时间被清零)核心比喻多才多艺的通用计时官专注日期格式的专职雕刻师一句话总结我是Java时间的老祖宗,啥都记。我是我爹的儿子,但我只为数据库记“日期”。当你需要在Java程序和数据库的DATE类型之间传递数据时,就使用。在其他所有纯Java的应用逻辑中,你应该使用,或者,更好的选择是使用现代的java.timeAPI。

2025-07-29 19:40:34 685

原创 【Java高手进阶】CompletableFuture从入门到精通,这篇全讲透了!

并发指的是程序能够同时处理多个任务,或者通过在这些任务之间快速切换来管理它们的能力。这在处理需要同时应对多个用户、任务或事件的应用程序中尤其重要。在 Java 中,并发主要依赖于线程 (threads)。线程是 Java 应用程序中最小的独立执行单元。Java 透过同时运行多个线程来支持并发,每个线程都独立于其他线程执行。示例: 创建并运行一个基础的 Java 线程:输出可能会像这样(顺序不保证):并行 (Parallelism)并行指的是真正地在同一时刻执行多个任务。具体来说,它意味着

2025-07-28 10:34:19 1349

原创 故事Java:ThreadLocal,给每个线程发一个“私人魔法背包”

概念普通共享变量 (大坩埚)(私人魔法背包)数据归属公共,所有线程共享一份私有,每个线程独享一份副本线程安全❌非安全,需加锁保护✅安全,数据天然隔离核心思想时间换空间(大家排队用一个)空间换时间(每人发一个,不用等)故事比喻一个公用的大锅一个凭咒语召唤的私人背包一句话总结大家一起用,得排队。各用各的,互不打扰。为解决多线程环境下的并发问题提供了一种全新的思路。

2025-07-28 10:23:09 822

原创 别再只会@Autowired了!这10个Spring Boot高级技巧,才是拉开差距的关键!

一个 Spring Boot Starter 本质上就是一个普通的 Maven 模块,加上一个(可选的)自动配置模块。你可以创建一个 Starter 来打包那些在你的多个项目中通用的依赖、配置和工具类。如果你以为自己已经把 Spring Boot 玩得滚瓜烂熟,这篇文章将挑战你的认知——并在此过程中让你成为一名更优秀的后端开发者。才注册一个 Bean——比如,当某个配置属性被设置了,或者应用的类路径(classpath)下存在某个特定的类时。,但它被低估和未被充分利用的程度令人震惊。

2025-07-27 17:24:04 917

原创 Spring经典“送命题”:BeanFactory vs FactoryBean

特性(玩具作坊)(3D打印机)本质容器Spring IoC的基础设施。Bean。一个实现了特定接口的特殊Bean。角色工厂。负责生产和管理所有的Bean。工厂 Bean。一个能生产其他对象的Bean。返回返回id对应的Bean实例。返回该FactoryBean生产的对象(调用的结果)。返回(无此用法)返回该FactoryBean实例本身。核心比喻整个玩具作坊作坊里的一台“玩具制造机”一句话总结我是Spring的心脏,是所有Bean的妈。我是一个特殊的Bean,我的工作是当另一个对象的妈。

2025-07-27 17:23:17 345

原创 EXPLAIN 输出怎么看?抓住这 4 个核心指标就够了

EXPLAINEXPLAIN是连接开发者与数据库优化器的桥梁。掌握它,你就能将慢 SQL 优化从一门“玄学”变成一门有据可依的“科学”。1.看type是否为ALL或index?2.看key是否为NULL?是否用对了索引?3.看rows预估扫描行数是否过大?4.看Extra是否出现了或?下一次遇到慢 SQL,不要再凭感觉修改。先EXPLAIN一下,让数据告诉你问题究竟出在哪里。

2025-07-26 15:39:06 770

原创 DriverManager在rt.jar里,凭什么能加载到classpath下的驱动?

概念双亲委派的困境与解决方案核心矛盾上级(父)看不见下级(子)。皇家运输署(由皇帝加载)无法找到民间高手(由县令加载)。解决方案SPI + TCCL(招贤令 + 钦差)SPI (招贤令)提供一个“约定”,让下级可以主动暴露自己能提供哪些服务。TCCL (钦差)提供一个“通道”,让上级可以临时借用下级的权力,去加载下级才能看到的类。是否“打破”它没有修改“向上委托”的家法本身,而是绕过了它。是一种从上到下的“逆向调用”,而非“从下到上”的加载。一句话总结。

2025-07-26 15:38:27 950 2

原创 故事架构:缓存的穿透、击穿、雪崩,分别是啥样的“餐馆事故”?

事故类型缓存穿透 (恶意骚扰)缓存击穿 (爆款秒杀)缓存雪崩 (大屏断电)核心原因查不存在的数据一个热点Key过期大量Key同时过期 或缓存服务宕机问题范围点(单个不存在的Key)点(单个存在的Key)面(大量Key或整个服务)故事比喻不停打电话问不存在的菜限量款在刷新瞬间被秒杀叫号大屏集体黑屏解决方案黑名单(缓存空值)门禁(布隆过滤器)排队护栏(锁)永不过期(逻辑过期)有效期打散备用电源(高可用)紧急限流。

2025-07-25 15:54:06 976

jquery autocomplete下载

教程地址:http://blog.csdn.net/dandandeshangni/article/details/47320973

2015-08-06

gradle+spring+springmvc+springjdbc

采用IDE idea 创建的gradle项目,项目框架为 spring+springMVC+springJDBC 实现单表的insert,update,delete ,getList等操作,一个小小的demo()

2015-09-14

JAVA工具类

原文:https://github.com/yangchenjava/com.yangc.utils cache EhCacheUtils - 基于ehcache的工具类 LruCacheUtils - 基于LinkedHashMap实现LRU缓存的工具类 MemcachedUtils - 基于memcached的工具类 RedisUtils - 基于redis的工具类,与redis的集群配置无缝结合 db JdbcUtils - 操作jdbc的工具类 MongodbUtils - 操作mongodb的工具类 email EmailUtils - 邮件工具类,支持发送带附件的邮件 encryption AesUtils - 实现AES加密解密 Base64Utils - 实现Base64加密解密 Md5Utils - 获取字符串或文件的md5 excel ReadExcel2003 - 以model方式读2003版Excel(大数据) ReadExcel2007 - 以sax方式读2007版Excel(大数据) WriteExcel - 写Excel image CaptchaUtils - 生成验证码 ImageUtils - 图片压缩、截图 QRCodeUtils - 生成二维码、解析二维码 io SerializeUtils - 序列化、反序列化对象 ZipUtils - 压缩、解压文件 json JsonUtils - json格式转换 lang CharsetDetectorUtils - 获取文本文件编码格式 ChineseCalendar - 农历日历 ConvertUtils - 高低字节转换 DateUtils - 日期工具类 HtmlFilterUtils - 过滤html标签 JsoupUtils - 基于jsoup过滤html标签 MoneyUtils - 获取大写金额 NumberUtils - 数字工具类 PinyinUtils - 汉字转拼音 media MediaUtils - 基于ffmpeg,qtfaststart,yamdi的多媒体工具类 net AttachmentUtils - HTTP文件下载防止中文乱码 FastDFSUtils - 操作FastDFS的工具类 FtpUtils - 操作FTP的工具类(基于sun自家的包,jdk7以后不建议使用) FtpUtilsApache - 基于apache操作FTP的工具类 HttpUtils - 发送HTTP请求 IpUtils - 获取IP SFtpUtils - 操作SFTP的工具类 prop PropertiesUtils - 操作properties配置文件

2015-08-18

elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz

elastic-job-lite-console 控制面板

2020-05-13

左手画圆,右手画方

java 利用多线程 实现两个面板上 一个画圆 一个画方 源码的噢

2014-02-22

dubbo-admin-0.0.1-SNAPSHOT.jar

dubbo-admin-0.0.1-SNAPSHOT 修改zookeeper连接地址 jar -jar dubbo-admin-0.0.1-SNAPSHOT

2020-05-28

human_resources

oracle 10 g 中hr用户需要单独安装,很麻烦,上传资料是HR用户的所有创建语句 ,下载后释放到$ORACLE_HOME/demo/schema/human_resources/目录下,在SYS用户下运行$ORACLE_HOME/demo/schema/human_resources/hr_main.sql来创建就可以,希望能帮到大家。 如有不懂打开这个http://blog.csdn.net/dandandeshangni/article/details/45244855

2015-04-24

java 猜数字游戏源码

利用随机数产生的数字 ,接收键盘录入,实现才数字游戏!

2014-02-22

全屏雪花飘落

此软件使用vb编写的!谢谢打开全屏化飘落花瓣!

2013-03-13

jquery.validationEngine校验插件

jquery 校验插件、不用写坑爹的 取值和正则比较了 http://blog.csdn.net/dandandeshangni/article/details/47339781

2015-08-07

gralde+spring+springmvc+springjdbc+mysql

idea+gralde+spring+springmvc+springjdbc+mysql实现单表的增删改查

2015-09-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除