摘要: 一、迁移背景 用了几年 IntelliJ IDEA,从 Community 到 Ultimate,体验没得说——代码补全精准、重构靠谱、调试器强大,写 Java 的效率确实高。但最近在认真考虑迁移到 VSCode,原因不复杂: 一是 IDEA 越来越重。启动慢、吃内存,打开一个中型 Spring B 阅读全文
posted @ 2026-07-20 20:59 减瓦~ 阅读(33) 评论(0) 推荐(0)
摘要: 一、概述 OpenJDK 8 的 javac 编译器(位于 langtools 仓库)由三层 API 构成,从内到外分别是: 层级 包名 用途 稳定性 内部实现层 com.sun.tools.javac.* 编译器实际实现 非标准,可能跨版本变化 工具层 com.sun.source.util.*、 阅读全文
posted @ 2026-07-20 00:09 减瓦~ 阅读(5) 评论(0) 推荐(0)
摘要: 背景 Git Bash 底层是 MSYS2/Cygwin 兼容层。调用原生 Windows 程序(如 cmd.exe)时,MSYS2 会自动转换参数中的路径、引号、环境变量等特殊字符。这些转换是大多数陷阱的根源。 调试工具 showargs.bat,内容只有两行: @echo off echo %* 阅读全文
posted @ 2026-07-08 18:44 减瓦~ 阅读(13) 评论(0) 推荐(0)
摘要: 目录 Git 的诞生与设计哲学 2005—2008:从原型到 1.0 的奠基期 Git 1.5—1.9:基础功能完善期 Git 2.0:里程碑式的行为变更 Git 2.1—2.22:渐进式改进与体验优化 Git 2.23:switch 与 restore 的引入 Git 2.24—2.29:Part 阅读全文
posted @ 2026-07-04 12:21 减瓦~ 阅读(23) 评论(0) 推荐(0)
摘要: 问题背景 在 Java 项目中同时使用 MapStruct 与 Lombok 两款基于注解处理器的代码生成工具时,编译可能失败。MapStruct 需要读取由 Lombok 生成的 getter、setter 等方法来完成映射接口的实现代码生成。若 MapStruct 在 Lombok 尚未完成代码 阅读全文
posted @ 2026-06-01 19:35 减瓦~ 阅读(17) 评论(0) 推荐(0)
摘要: 背景 在 Jackson 中,当我们需要自定义 String 类型的反序列化逻辑时,通常会继承 JsonDeserializer<String> 并重写 deserialize 方法。但如果不注意 token 类型的校验,就会引入一个隐蔽的缺陷——类型不匹配被悄悄吞掉,变成 null。 代码 Sim 阅读全文
posted @ 2026-05-29 21:37 减瓦~ 阅读(3) 评论(0) 推荐(0)
摘要: 引言 在 Java 生态中,对类进行功能增强是一项极为常见且核心的工程需求。无论是 AOP(面向切面编程)、APM(应用性能监控)的探针注入,还是编译期的模板代码生成,其本质都是对类的结构或行为进行解析与修改。Java 类的生命周期从源码编写开始,经历编译、加载、链接、初始化,直至运行时使用,每一个 阅读全文
posted @ 2026-05-24 18:59 减瓦~ 阅读(28) 评论(0) 推荐(0)
摘要: 前言 大佬大佬,JDK的HashMap运行效率确实高,但太难理解,有没有更加简单的HashMap实现? 有的,兄弟,有的! 传统的数组+链表实现略显复杂。本文将展示如何仅用数组实现功能完整的哈希表,通过开放寻址法实现极致简化! 当发生哈希冲突时,不使用链表而是顺序查找数组中的下一个空位,这种方法称为 阅读全文
posted @ 2025-07-16 19:37 减瓦~ 阅读(45) 评论(0) 推荐(0)
摘要: 前言 通过重构单位转换器案例,揭示如何运用设计模式打造高扩展性系统,告别if-else地狱! 原始版本 在初始实现中,单位转换逻辑都堆积在一个方法里,典型的"万能上帝类"模式: public static UnitValue convert(UnitValue unitValue, String t 阅读全文
posted @ 2025-07-06 12:54 减瓦~ 阅读(37) 评论(0) 推荐(0)
摘要: 在Maven中,仓库和镜像改如何进行配置呢?今天,我们就来彻底理清Maven仓库与镜像配置解析的过程! 阅读全文
posted @ 2025-06-21 20:39 减瓦~ 阅读(228) 评论(0) 推荐(0)