- 博客(29)
- 收藏
- 关注
原创 Java 访问修饰符 public protected default private 详解|面试必背
Java 四个访问权限修饰符,很多人记混边界。用生活化类比 + 表格梳理,搞懂类、方法、变量的访问范围,面试不再踩坑。文末附带记忆技巧。
2026-10-14 10:18:40
321
原创 Redis 分布式锁 + GZIP 压缩缓存踩坑|高并发缓存真实线上复盘
为了保护数据库、节省 Redis 内存,同时用上分布式锁和缓存压缩。功能看着没问题,线上却出现重复计算、内存浪费、随机报错。用大白话讲清坑点、为什么会发生,以及分等级落地修复方案。
2026-10-13 12:27:07
389
原创 Java String、StringBuilder、StringBuffer 底层原理|字符串拼接性能与线程安全
先前我们讲了 String 的 6 大误区,这篇直击底层:String 为什么不可变、StringBuilder 为什么快、StringBuffer 为什么安全。用「纸质档案」类比一次讲透三者差异,字符串拼接埋下的性能隐患。
2026-10-12 12:50:29
768
原创 Java Lambda 表达式与函数式接口详解|面试高频考点
还在写冗长的匿名内部类?Lambda 是语法糖,必须依托函数式接口才能生效。用「任务委托单」类比,看懂适用场景,避开 AI 生成 Lambda 时的常见坑。
2026-10-11 10:40:56
584
原创 Java 接口和抽象类对比|抛弃老旧八股,正确选型
还在背 “抽象类用 extends,接口用 implements” 这种老旧八股?Java8 引入默认方法后,很多旧结论已经失效。用「岗位说明书」类比,分清二者适用场景,避开 AI 写代码的选型错误。
2026-10-10 17:49:20
232
原创 Java final 关键字详解|final 变量、final 方法、final 类与常见误区
final 不是简单的 “加锁”。用 “证件、重写权限、最终订单” 类比,讲清 final 变量、final 方法、final 类的区别,避开 AI 代码里的常见误用。
2026-10-08 11:54:40
582
原创 Java static 关键字详解|静态变量、静态方法、静态代码块
static 是 Java 里最常见也最容易被乱用的关键字。用班级学生类比讲清静态变量、静态方法、静态代码块,避开 AI 写代码时常见的误用坑。
2026-10-07 14:54:13
742
原创 Java 重写 equals 与 hashCode 详解|AI 实体类踩坑,HashSet 存入重复对象
AI 写实体类经常只写 equals,漏掉 hashCode。放进 HashMap、HashSet 就出现诡异 bug。用身份档案类比,一次性吃透契约规则,面试必考。
2026-10-05 11:11:04
693
原创 Java Integer 缓存池原理,为什么 100==100 true,200==200 false,AI 开发踩坑
复制 AI 写的 Integer 对比代码,很容易踩坑。区分包装对象互比、包装类和基础类型对比,自动拆箱藏着空指针风险,存钱罐类比看懂缓存池。
2026-09-30 11:21:13
378
原创 Java异常体系通俗易懂讲解 Error Exception 受检异常 运行时异常 try‑catch 最佳实践 AI时代编程思考
系统崩溃看 Error,无能为力直接挂; 客观风险受检异,编译强制让你抓; 代码 Bug 运行异,编译不报错上线炸; Try 防风险 Catch 兜底,Finally 必执行不落下
2026-09-28 11:46:26
366
原创 Java泛型 通俗易懂 类型擦除 通配符 面试 新手教程
有泛型:贴好标签的收纳盒给盒子贴上标签:本盒子只允许放字符串。编译器在编译阶段就帮你把关。你想丢数字进去,直接编译报错,代码都跑不起来。拿出来不用强转,直接就是字符串。
2026-09-26 14:47:12
476
原创 红黑树原理 红黑树五大性质 二叉搜索树 平衡树 HashMap红黑树 面试
基础不牢,地动山摇。节点只有两种颜色:红色、黑色。根节点一定是黑色。所有叶子节点(NIL空节点)都是黑色。红色节点的两个子节点,必须是黑色。不能出现两个红节点相连。从任意一个节点,到它所有后代叶子节点,经过的黑色节点数量必须相同(黑高一致)。✅ 记住核心推论:因为规则4、5,最长路径最多是最短路径2倍,树不会极端倾斜。
2026-09-24 11:22:52
360
原创 HashMap底层原理 哈希冲突 扩容机制 红黑树 ConcurrentHashMap 线程安全 面试题
ArrayList(数组)、LinkedList(链表)今天搞定 Java集合天花板:HashMap它是工作使用率最高、面试提问最多、底层结构最复杂的集合。单线程、普通业务 → HashMap(速度最快)多线程、并发场景 → ConcurrentHashMap绝对不要用 HashTable
2026-09-22 11:26:29
377
原创 LinkedList源码 双向链表 ArrayList和LinkedList区别 Java集合选型
ArrayList 像一排紧密连坐的座位,中间走人,后面所有人都要往前挪。LinkedList 像一串珍珠项链,拆掉中间一颗、插入一颗,只需要断开两边绳子,其他珍珠完全不用动。
2026-09-20 12:09:50
435
原创 ArrayList源码解析 底层数组 自动扩容机制 Java集合 新手入门 面试题
ArrayList底层本质就是一个可变长度的Object数组。普通数组一旦创建,长度固定,不能变长。ArrayList的魔法:底层维护一个数组,当数组装满时,自动新建一个更大的数组,把旧数组全部拷贝过去,实现“自动扩容”。简单比喻:普通数组 = 固定大小的纸箱,装满就不能再放东西。ArrayList = 纸箱装满后,自动换一个更大的新纸箱,把所有东西搬过去,继续存放。
2026-09-18 14:46:26
365
原创 Java反射入门教程 反射原理 注解底层 新手实战Demo Spring底层基础
注解在代码层面就是一个接口。这意味着它没有构造函数,不能直接 new,它的属性其实接口中定义的抽象方法。没有反射,注解就是一张没有任何作用的贴纸。Spring、SpringBoot所有注解功能,底层全部依靠反射实现。
2026-09-16 11:07:32
321
原创 Java注解新手教程 自定义注解 元注解原理 Spring注解入门 零基础学Java
基础不牢,地动山摇。Spring Boot 表面上“全是注解”,不是 Spring Boot 偏爱注解,而是注解最适合做“声明式配置”的载体;Spring Boot 的核心目标是让开发者少写配置。
2026-09-14 12:09:17
509
原创 Java异常新手教程 try-catch正确写法 运行时异常 编译异常 异常避坑实战
基础不牢,地动山摇。很多小伙伴遇到报错只会慌,要么直接空着不处理,要么无脑 try-catch 一把包住所有代码,看似不报错,实则隐藏一堆线上BUG。今天我们一起来搞懂:Java异常是什么、为什么会报错、什么时候抓异常、怎么优雅写 try-catch。
2026-09-13 11:17:59
455
原创 Java 集合 List Set HashMap 区别 新手教程 代码 demo 集合选型 开发避坑
基础不牢,地动山摇。 在开发的过程中我们几乎时时刻刻都在使用集合存储数据。很多新手分不清什么时候用 List、什么时候用 Set、HashMap,随便选一个,到后面就会遇到重复数据、查找缓慢等问题
2026-09-11 12:49:48
322
原创 MySQL索引失效原因 隐式转换 最左前缀 索引失效demo 数据库优化教程
我明明给字段建索引了,SQL执行却依然很慢,EXPLAIN 一看,根本没走索引!索引建了等于白建,自己完全找不到原因。其实 MySQL 索引失效不是玄学,全部都是固定规则。今天我用 最简单、最通俗、零晦涩理论 的方式,带大家一次性吃透 新手必避的8大索引失效场景,每个场景都附带可直接运行的 SQL Demo,看完彻底告别索引失效问题。
2026-09-07 16:06:56
565
原创 生产实录:MySQL上亿数据治理全流程|参数优化→Mycat淘汰→ShardingSphere混合架构+读写分离
JDBC 做业务读写;Proxy 提供 DBA 查询、报表、数据分析入口;使用同一个配置中心 (Nacos) 统一管理分片规则,两套接入端共用一套分片逻辑;分片解决单表数据量大的存储瓶颈,读写分离解决查询QPS过高的并发瓶颈,二者必须联动使用,才能实现架构最优解。
2026-09-05 16:05:20
418
原创 @Async 事务丢失 MDC 上下文丢失 异常不抛出 自定义线程池 虚拟线程适配 生产最佳实践
业务开发里,为了提升接口响应速度,我们经常用@Async把非核心逻辑异步化:短信推送、日志记录、消息投递、统计计算。升级到 SpringBoot3 + JDK17/JDK21 之后,很多老项目直接沿用旧的@Async很多人以为加个就万事大吉,实际上。本文结合线上故障,拆解 4 个高频坑,给出可直接复制上线的解决方案。前置知识:SpringBoot3 中 @Async 默认线程池为,它不是真正的线程池,每次新建线程;JDK21 开启虚拟线程后,@Async 也需要单独适配。@Async。
2026-09-03 11:10:29
671
原创 SpringBoot3 JDK21 虚拟线程 HikariCP 连接池调优 并发暴涨连接耗尽问题解决 生产最佳实践
虚拟线程让 Spring MVC + JDBC 这种同步阻塞式编程模型具备更强的并发承载能力,但真正决定效果的,仍然是短事务、快 SQL、合理连接池和明确的过载保护。
2026-09-01 11:21:21
661
原创 SpringBoot3 JDK17 HikariCP 连接池耗尽 PoolTimeoutException 故障复现、原因分析、虚拟线程注意点与生产最佳实践
升级 SpringBoot3 + JDK17 会带来虚拟线程、模块化、性能提升,但**不会自动修复长事务、连接泄露、SQL 慢查询这类业务问题**。遇到`could not get JDBC Connection`报错,不要上来就调大最大连接数。优先排查:连接泄露、长事务、慢 SQL、线程模型与连接池的匹配,开启虚拟线程后要额外注意连接池约束。
2026-08-30 14:14:13
833
原创 Java 大批量数据查询 OOM 问题解决,普通分页、游标分页、MyBatis 流式查询、分批导出对比与生产实践
AI 很容易生成直接返回全量 List 的 demo,demo 在测试环境跑起来没问题,但完全不会考虑线上数据膨胀后的 OOM 风险。AI 只实现功能,缺少线上量级的风险考量。复制 AI 代码上生产,一定要评估数据规模。
2026-08-28 10:34:25
292
原创 SpringBoot @Transactional 注解添加完成但事务不回滚,7 类失效场景代码复现、原因分析与生产最佳实践
@Transactional`不是数据一致性的护身符。注解生效前提是经过 Spring 代理对象调用。很多线上脏数据 bug,不是数据库故障,而是编码破坏 AOP 代理规则。写业务代码,不能只看功能跑通,要充分考虑异常场景。
2026-08-27 09:54:02
435
原创 Java 使用 poi‑tl+ aspose‑words 实现 Word 模板导出并转 PDF,优缺点、坑点完整总结
本文基于项目实际依赖 poi‑tl:1.12.2、aspose‑words:15.8.0,讲解 Word 模板填充转 PDF 整套流程,给出代码示例,分析该组合优势、版权风险、版本坑点,给出生产环境落地建议。
2026-08-25 14:16:21
364
原创 【JDK高版本连接SQLServer TLS1.0握手失败问题分析与解决方案】
JDK 从 8u291 之后、JDK17、JDK21 版本,出于安全考虑,已经默认把 TLS1.0、TLS1.1 加入禁用算法列表,不再允许客户端使用这两个不安全协议发起连接。 但现实业务很无奈:第三方系统不归我们维护,对方短期内没有计划升级 TLS 版本,我们的项目又必须升级 JDK,两边矛盾撞在一起,就出现了这个棘手的兼容问题
2026-08-23 13:12:36
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅