使用 dnsmasq 搭建轻量级内网 DNS、DHCP 与 PXE 服务 欢迎你来读这篇博客,这篇博客主要围绕 dnsmasq 的内网 DNS、DNS 缓存、域名分流、DHCP、TFTP/PXE、OpenWrt 集成和生产化排障展开。 如果你之前用过 BIND,会发现 dnsmasq 的思路完全不一样:它不是一个“重量级权威 DNS平台”,而是一个“小而顺手的网络基础设施瑞士军刀”。家庭实验室、小公司内网、开发测试环境、软路由、虚拟化网络、PXE装机环境里,它 2026-06-16 Linux #Linux #OpenWrt #dnsmasq #DNS #DHCP #PXE
IDEA 中如何使用 Docker:从环境配置到 Spring Boot 容器化调试的深度实战 欢迎你来读这篇博客,这篇博客主要讲解如何在 IntelliJ IDEA 中深度使用 Docker。它不是一篇“点点菜单”的入门笔记,而是尽量从真实 Java 后端开发场景出发,把 IDEA、Docker、Docker Compose、Spring Boot、本地依赖服务、容器调试、私服镜像、常见坑和工程化最佳实践串起来。 2026-06-12 Docker > Java #Spring Boot #Java #Docker #IntelliJ IDEA #DevOps #Docker Compose
Passay 与 zxcvbn:Java 项目密码策略与密码强度检测实战 欢迎你来读这篇博客,这篇博客主要是关于 Passay 和 zxcvbn 的。 这两个工具都和“密码安全”有关,但它们解决的问题不一样: Passay 更像是 密码规则执行器:密码必须多长?是否允许空格?是否包含用户名?是否命中弱密码字典? zxcvbn 更像是 密码强度评估器:这个密码站在攻击者角度看,是否容易被猜出来?是不是 P@ssw0rd123! 这种看起来复杂、实际很弱的密码? 如果只 2026-06-12 Java #Spring Boot #Java #Spring Security #Passay #zxcvbn #密码安全 #用户中心
ArchUnit 深度实践:把架构规范写成可以自动执行的测试 欢迎你来读这篇博客,这篇博客主要介绍 Java 架构测试工具 ArchUnit。 它不是用来测试某个接口是否返回正确结果,也不是替代 JUnit、Mockito、Checkstyle、SpotBugs 或 SonarQube;它真正解决的是一个更隐蔽但更致命的问题:项目一开始设计得很好,几个月后依赖关系乱成一锅粥,Controller 直接调 Mapper,Domain 依赖 Spring,App 2026-06-12 Java #Spring Boot #Java #DDD #ArchUnit #架构测试 #工程化
深入理解 OWASP Dependency-Check:给 Java 项目做依赖漏洞扫描 欢迎你来读这篇博客,这篇博客主要是关于 OWASP Dependency-Check。 在日常 Java 开发中,我们经常关注业务代码有没有问题、SQL 是否慢、接口是否超时、线程池是否打满,却容易忽略一个非常现实的问题: 项目里引入的第三方依赖,本身可能已经存在公开漏洞。 比如 log4j-core、jackson-databind、fastjson、spring-security、nett 2026-06-12 Java #Spring Boot #Java #Maven #DevSecOps #OWASP #Dependency-Check #SCA
Maven Wrapper 深入讲解与实战:让团队构建环境真正一致 欢迎你来读这篇博客,这篇博客主要是关于 Maven Wrapper 的完整讲解与工程化落地。 Maven Wrapper 看起来只是多了两个脚本:mvnw 和 mvnw.cmd,但它真正解决的是团队协作里非常现实的问题:同一个项目,到底应该用哪个 Maven 版本构建。 很多构建问题并不是代码错了,而是 A 同事本地 Maven 3.6,B 同事本地 Maven 3.9,CI 又是另一个版本。最后 2026-06-12 Java #Spring Boot #Java #Maven #DevOps #CI/CD #Maven Wrapper
Renovate 依赖自动升级治理实战指南 欢迎你来读这篇博客,这篇博客主要是关于 Renovate 的工程化落地。 它不是“又一个自动发 PR 的机器人”这么简单。更准确地说,Renovate 是一个依赖升级治理系统:它可以扫描项目中的 Maven、Gradle、npm、Docker、GitHub Actions、GitLab CI、Kubernetes、Helm 等依赖声明文件,发现新版本后自动创建 PR/MR,并通过配置规则 2026-06-12 DevOps > 工程效率 #Maven #Docker #GitLab #CI/CD #Renovate #Dependency Management #Gradle #GitHub Actions
OpenRewrite 深度实战:自动化代码重构、Java 迁移与 Spring Boot 升级 欢迎你来读这篇博客,这篇博客主要是关于 OpenRewrite 的原理、使用方式和实战落地。 它不是一个“格式化工具”,也不是简单的“全局替换工具”,而是一个面向大规模代码库的自动化重构与迁移工具。对于 Java 后端项目来说,OpenRewrite 特别适合处理 Spring Boot 升级、JDK 升级、JUnit 迁移、依赖治理和老 API 清理这类重复但又容易出错的工作。 2026-06-12 Java #Spring Boot #Java #Maven #DevOps #Gradle #OpenRewrite #自动化重构
Renovate 与 OpenRewrite:从依赖升级到代码自动迁移的工程化实践 欢迎你来读这篇博客,这篇博客主要是关于 Renovate + OpenRewrite 的整合实践。 如果只用 Renovate,我们可以自动发现依赖新版本,并创建升级 MR;如果只用 OpenRewrite,我们可以自动重构代码、迁移 API、替换配置。但真正的企业项目里,最麻烦的往往不是“有没有新版本”,而是: 依赖升级之后,代码、配置、测试、构建脚本也要跟着改。 所以这篇文章要讲的是一个更 2026-06-12 Java #Spring Boot #Maven #GitLab #DevOps #CI/CD #Renovate #OpenRewrite
jMolecules 深度实战:让 DDD 与架构规则真正写进 Java 代码 欢迎你来读这篇博客,这篇博客主要是关于 jMolecules 的深入介绍和工程化实战。 如果说 ArchUnit 是“架构警察”,Spring Modulith 是“模块边界管理员”,那么 jMolecules 就像是给代码里的每个类发一张“架构身份证”:这个类是聚合根、这个类是值对象、这个接口是仓储、这个包是领域层、这个包是基础设施层。没有身份证也能写代码,但项目大了以后,谁是谁真的很重要。 2026-06-12 Java > Architecture #Spring Boot #jMolecules #DDD #ArchUnit #Spring Modulith #架构治理
IntelliJ IDEA 代码格式化深度实战:从个人快捷键到团队规范治理 代码格式化看起来是一个“小问题”,但在真实团队里,它往往会变成代码评审噪音、无意义 diff、多人协作冲突、CI 失败、甚至规范争论的来源。 这篇文章不只讲 Ctrl + Alt + L / ⌘ + ⌥ + L 怎么按,而是从 IntelliJ IDEA 本地格式化、EditorConfig 跨 IDE统一、Maven/Gradle 自动化格式化、CI 强制校验、团队迁移策略、 2026-06-12 Java #Spring Boot #Java #IntelliJ IDEA #Code Style #EditorConfig #Spotless #Checkstyle
IntelliJ IDEA 无鼠标开发深度实战:从快捷键到键盘流工作流 欢迎你来读这篇博客,这篇博客主要是关于 IntelliJ IDEA 无鼠标开发实战。 很多人学快捷键的方式是:收藏一张快捷键大全,然后三天后忘得干干净净。真正的无鼠标开发不是背快捷键,而是重建一套“键盘驱动的开发工作流”:找文件、跳代码、写代码、重构、调试、提交、跑命令,全程尽量不让手离开键盘。 2026-06-12 工具效率 #Spring Boot #Java #IntelliJ IDEA #JetBrains #快捷键 #无鼠标开发
Spring Modulith 深度实践:从单体系统到模块化单体架构 欢迎你来读这篇博客,这篇博客主要是关于 Spring Modulith 的深度介绍与工程实战。 如果你正在维护一个越来越大的 Spring Boot 单体项目,或者你想做 DDD、COLA、模块化单体、未来可拆微服务的架构演进,那么 SpringModulith 非常值得认真研究。 2026-06-12 Java #Spring Boot #Java #DDD #Spring Modulith #Modular Monolith #Architecture
ShedLock 深入解析:Spring Boot 分布式定时任务锁的原理与生产实战 欢迎你来读这篇博客,这篇博客主要围绕 ShedLock 展开:它是什么、解决什么问题、底层原理是什么、如何在 Spring Boot 3.x项目中落地,以及在生产环境里应该怎么配置、怎么验证、怎么避坑。 如果你有多实例部署的 Spring Boot 服务,并且项目里存在 @Scheduled 定时任务,那么这篇文章基本就是给你的。因为普通的@Scheduled 在单机时代岁月静好,一旦服务扩容到 2026-06-12 Java #Spring Boot #Java #Redis #ShedLock #Scheduled #Distributed Lock #PostgreSQL
libphonenumber 深度介绍与 Spring Boot 实战:手机号校验、解析、格式化与统一存储 欢迎你来读这篇博客,这篇博客主要是关于 Google 开源工具库 libphonenumber 的介绍与工程化实战。 它不是一个简单的“手机号正则校验工具”,而是一个用于处理全球电话号码规则的基础设施级工具。本文会从基础概念讲起,然后结合 Java 与 Spring Boot 3.x 给出一套可落地的实践方案。 2026-06-12 Java #Spring Boot #Java #libphonenumber #手机号校验 #工程实践
基于 Spring Boot 3 的电商模块化单体实战:整合 ArchUnit、Spring Modulith 与 jMolecules 欢迎你来读这篇博客,这篇博客主要围绕 Spring Boot 3 电商系统,深入讲解如何把 ArchUnit、Spring Modulith、jMolecules 三个工具整合到一个可落地的模块化单体架构中。 如果只看单个工具,ArchUnit 像“架构测试工具”,Spring Modulith 像“模块化单体治理框架”,jMolecules 像“DDD 语义标记库”。但真正有价值的地方,不是把三 2026-06-12 Java #Spring Boot #jMolecules #DDD #ArchUnit #Spring Modulith #模块化单体 #电商架构
Togglz 深入解析与 Spring Boot 3 实战:让功能发布变成“可控开关” 欢迎你来读这篇博客,这篇博客主要是关于 Togglz 的深入解析与工程化实战。 Togglz 是 Java 生态里的 Feature Flag / Feature Toggle 工具。它可以让我们把“代码上线”和“功能开放”拆开:代码可以先发布到生产环境,但功能是否真正对用户生效,可以通过开关动态控制。 2026-06-12 Java #Spring Boot #Java #Togglz #Feature Flag #灰度发布 #持续交付
Maven Build Cache Extension 深入实战:让 Maven 多模块构建快起来 欢迎你来读这篇博客,这篇博客主要是关于 Maven Build Cache Extension 的使用、原理、配置、远程缓存、CI 落地和常见问题排查。 如果你的项目是一个比较大的 Maven 多模块工程,每次 mvn clean install 都像是在泡一壶很慢的茶,那么 Maven Build CacheExtension 就值得认真看看。它不是银弹,但在合适的工程里,确实能把构建时间从“等 2026-06-12 Java #Java #Maven #Build Cache #CI/CD
Maven Daemon mvnd 深入实战:从 Maven 3.9+ 平滑迁移到 mvnd 欢迎你来读这篇博客,这篇博客主要是关于 Maven Daemon,也就是 mvnd。 如果说 mvn 是每次构建都重新起炉灶,那么 mvnd 就是让 Maven 后厨一直热着锅:JVM 不用每次重新启动,Maven 插件类加载器可以复用,JIT编译后的热点代码也能继续发挥作用。对于多模块 Java 项目,尤其是 Spring Boot / Spring Cloud 工程,这个优化非常实在 2026-06-12 Java #Java #Maven #CI/CD #mvnd #Maven Daemon #构建优化
Spring Boot 3.5 整合 Spring Data JPA 与 ShardingSphere-JDBC 生产实践 欢迎你来读这篇博客,这篇博客主要是关于 Spring Boot 3.5、Spring Data JPA 和 Apache ShardingSphere-JDBC 的工程化整合。 很多文章讲 ShardingJDBC,最后只停留在“配置两个数据源,然后插入一条数据”。这篇文章会换一个角度:把它放到真实 Spring Boot后端工程里看,重点讨论版本选择、工程结构、JPA 实体设计、审计字段、主键策 2026-06-11 Java #Spring Boot #Spring Data JPA #Hibernate #ShardingSphere #ShardingJDBC #分库分表