自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 CI/CD 流水线:代码提交后的自动化流程

本文介绍了 CI/CD 的核心概念和完整流水线结构,从手动部署的痛点出发,讲解了代码检查、自动测试、镜像构建、仓库推送到环境部署的各个环节,并给出了一个基于 GitHub Actions + Docker 的 Spring Boot 项目自动部署示例。

2026-08-07 21:09:41 1160

原创 Agent架构设计:Planning与动态任务规划

本文介绍了 Agent Planning 的核心设计思想,解释了为什么 LLM 天然不具备规划能力(当前上下文 ≠ 完整任务状态,当前最优 ≠ 全局最优),以及如何通过 Planning + ReAct 混合模式让 Agent 在复杂任务中保持执行方向,并通过触发式 Replan机制应对执行过程中的意外情况。

2026-07-27 22:06:26 1954

原创 Netty 线程模型:NIO 之上的工程设计

本文旨在介绍 Netty 的主从 Reactor 线程模型,从 BIO/NIO/AIO 三种 IO 模型的演进切入,通过原生 NIO 的痛点引出 Reactor模式,拆解 BossGroup/WorkerGroup 分工、EventLoop 循环驱动、ChannelPipeline 流水线三个核心设计,帮助初学者理解 Netty如何用几十个线程撑起百万连接。

2026-07-16 22:06:50 1201

原创 Agent 三层记忆机制:短期记忆、情景记忆与语义记忆

本文介绍了记忆的三层模型:短期记忆(当前会话的上下文窗口)、情景记忆(历史会话的 RAG检索)、语义记忆(从对话中提炼的用户画像),并通过 Python 代码演示三层各自的存储、检索和更新机制。

2026-07-08 19:10:27 1506

原创 Agent 上下文管理

本文梳理了上下文窗口有限带来的核心问题,并围绕压缩、隔离、按需加载、持久化四个策略展开,帮助读者理解为什么Agent 会"越用越笨",以及如何在有限的 token 窗口里让模型始终看到最有价值的信息。

2026-06-30 21:37:02 1960

原创 Redis 的存取速度为什么这么快

本文逐一拆解 Redis高性能背后的五个核心设计因素:内存存储、高效数据结构、单线程模型、IO 多路复用和 RESP 协议,帮助初学者建立对 Redis性能优势的系统性理解。

2026-06-24 23:40:39 3341 2

原创 设计模式:单例模式

本文系统梳理了单例模式的六种 Java实现方式:饿汉式、懒汉式、synchronized、DCL、静态内部类、枚举。

2026-06-16 20:12:33 2015

原创 MySQL B+树:百万行查询只要几毫秒的秘密

本文将帮助读者理解聚簇索引的本质——数据和主键索引绑在一起存放在B+ 树的叶子节点中。通过有序数组、二叉树、Hash 表、B 树四种数据结构的淘汰赛,自然引出 B+ 树,并从磁盘 IO次数、范围查询效率、查询稳定性三个维度解释为什么 B+ 树是 MySQL 的最优选择。

2026-06-09 06:42:37 2454

原创 自定义Spring Boot Starter全流程

本文介绍 Spring Boot Starter 的组成:一个聚合依赖的模块,加上负责自动配置的 autoconfigure模块,两者组合起来才是一个完整的自定义 Starter。文章先盘点常用 Starter 与命名规范,再以一个短信服务为例,带你从@ConfigurationProperties、自动配置类、imports 文件一路走到双模块组装,理解如何把内部服务封装成团队开箱即用的组件。

2026-09-07 18:39:21 207

原创 Agent 评测:代码 Agent 评测体系演进

本文沿着代码评测的演进线,从 HumanEval、MBPP 的函数级代码生成,到 SWE-bench 的真实仓库级工程任务,展示了评测对象如何从"一个函数"扩展到"一次完整的软件工程任务",并重点拆解了 pass@k 与 resolved rate 的本质差异、Agent Harness 对评测结果的巨大影响,以及 SWE-bench 的完整 Agent Loop 执行流程。

2026-08-09 15:18:33 383

原创 Agent 评测:如何判断一个 Agent 是否可靠

本文从"Agent 的输出是非确定性的"这一事实出发,区分了公开 Benchmark 和私有 Eval 两条评测主线,并从最终结果、执行轨迹和系统运行三个层面,以及任务完成率、效率、稳定性、安全约束和可恢复性五个维度,建立了 Agent 评测的基本框架。

2026-08-09 13:53:41 406

原创 JVM 垃圾回收:对象如何被判定和回收

本文从 GC Roots 的可达性分析出发,解释了 JVM 如何判定对象生死,接着介绍了分代模型和三种基础回收算法,然后沿 Serial → Parallel → CMS → G1 → ZGC/Shenandoah 的脉络讲清楚每代收集器解决了什么问题、遗留了什么问题,最后给出了 GC 日志的阅读方法和调优的基本思路。

2026-08-06 15:35:04 681

原创 高并发下的流量控制:四种限流算法解析

本文从接口流量控制的实际需求出发,依次拆解固定窗口、滑动窗口、漏桶、令牌桶四种限流算法的实现原理和适用场景,结合 Sentinel、Guava RateLimiter 等实际组件给出选型思路,帮助开发者根据系统面对的具体问题选择合适的限流方案。

2026-08-05 21:59:53 445

原创 WebSocket 与 SSE:实时通信方案的选择

从 HTTP 轮询的资源浪费切入,分别介绍 SSE 和 WebSocket 的协议原理、连接特性和断线重连机制,对比两者在通信方向、数据格式、传输开销上的核心差异,最后给出选型判断标准和 Spring Boot 实现示例,帮助读者根据场景选择合适的推送方案。

2026-08-04 21:21:29 863

原创 Docker 部署 SpringBoot:从镜像构建到服务器运行

本文讲解 Spring Boot 项目从本地到服务器的完整部署链路:Dockerfile 多阶段构建、本地验证、Compose 编排 MySQL 和 Redis、镜像交付(save/load、Registry、GitHub 三种方式),再到服务器启动。重点说明了开发环境和生产环境的四个关键差异:配置隔离、数据持久化、JVM 内存限制和日志输出,以及部署失败时按容器启动、网络通信、配置、时区逐层排查的思路。

2026-08-03 21:16:13 901 1

原创 Docker Compose:把多个容器组织成一个应用

从手动启动多个容器的痛点出发,介绍 Docker Compose 如何用一个 YAML 文件集中管理多服务的配置、网络和启动顺序,重点说明服务名替代 localhost 的通信机制和 depends_on 配合 healthcheck 保证依赖就绪的做法,并对比了 docker run 和 docker compose 的适用场景。

2026-08-02 16:54:49 442

原创 从 Dockerfile 到容器:部署一个 SpringBoot 应用

从一个简单的 Dockerfile 示例出发,逐条拆解 FROM、COPY、ENTRYPOINT 等指令的职责,通过镜像体积问题引出多阶段构建,再用构建缓存说明 COPY 顺序对构建速度的影响,最后给出一份可直接复用的生产模板和几个首次容器化时容易踩的坑。

2026-08-02 16:30:49 361

原创 Docker 基础概念:镜像、容器和仓库之间的关系

本文介绍了 Docker 的三个核心概念:镜像是只读的分层打包模板,容器是镜像的运行实例并在镜像层上方增加可写层,Registry 负责镜像的存储和分发。文章从镜像结构、容器生命周期、Registry 工作方式三个角度展开,最后对比了容器与虚拟机的隔离方式差异,帮助读者建立 Docker 工作流的完整认知。

2026-08-01 17:23:07 492

原创 volatile 原理与使用边界:可见性、重排序与 DCL 单例

本文从一个线程无法停止的例子出发,拆解 JMM 的 happens-before 规则,说明 volatile如何通过可见性和有序性两项保证解决跨线程的读写问题,并以 DCL 单例展示安全发布的实际价值,最后通过 counter++ 的反例划清 volatile 与原子操作的边界。

2026-07-30 17:10:28 333

原创 AQS 原理:Java 并发同步器的核心骨架

本文从 ReentrantLock、Semaphore、CountDownLatch 的共同底层出发,拆解 AQS 的三个设计要素——volatile state、CLH 队列变体、模板方法,分别讲了独占模式和共享模式的获取释放流程、传播机制,以及 Condition 的第二条等待队列,帮助读者理解JUC 并发工具的共同骨架。

2026-07-29 23:27:39 356

原创 synchronized 与 ReentrantLock:Java 锁机制原理与实现对比

本文从字节码层面拆解 synchronized 的 monitorenter/monitorexit 指令和 HotSpot 的轻量级锁/重量级锁优化机制,再从 AQS 的 state + CLH 队列结构解析 ReentrantLock 的公平/非公平锁实现,最后通过对比表格和实战代码给出选型决策:需要超时、中断或多条件变量就用 ReentrantLock,其他场景synchronized 就够了。

2026-07-29 18:31:27 395

原创 Java 四种引用类型:强引用、软引用、弱引用与虚引用

本文从 ThreadLocal 的弱引用设计切入,依次讲解了 Java 四种引用类型(强引用、软引用、弱引用、虚引用)对应的可达状态和 GC 行为,并以 ThreadLocal 的 Entry key、WeakHashMap 的 value 引用 key 陷阱、DirectByteBuffer 的堆外内存清理为例说明各自的实际应用与注意事项,最后给出选型建议:强引用是默认选择,弱引用适合不应延长 key 生命周期的映射关系,虚引用适合 native 资源清理,软引用因回收策略不可预测,生产缓存

2026-07-28 20:42:51 455

原创 ThreadLocal 原理与实践:线程隔离、内存泄漏与使用边界

本文从 ThreadLocal 如何实现线程隔离出发,拆解了 Thread 持有 ThreadLocalMap、Entry使用弱引用、开放定址法解决冲突等核心设计,并重点分析了内存泄漏与数据污染的区别,以及线程池场景下 finally 中调用remove() 的必要性。

2026-07-28 18:09:47 429

原创 JVM运行时数据区详解:变量、对象和类信息到底存在哪里

本文以"变量运行时存在哪"为切入点,拆解 JVM 五个运行时数据区(程序计数器、虚拟机栈、本地方法栈、堆、方法区)各自的职责和存储内容,最后通过一段代码逐行分析变量的去向,并纠正了"静态变量存放在方法区"这一常见误区。

2026-07-26 20:10:24 561

原创 分布式 ID 生成方案:从数据库自增到雪花算法

本文从单库自增在分库分表下的局限出发,依次讲解 UUID、数据库号段、Redis INCR、雪花算法四种分布式 ID生成方案的原理和适用场景,重点分析了雪花算法的位分配设计以及时钟回拨问题的处理方式,最后给出选型建议:不要过早引入复杂方案,在当前业务规模下选择合适的复杂度就够了。

2026-07-25 22:08:19 507

原创 Session 和 Cookie 的区别、原理与应用场景

本文从 HTTP 的无状态性出发,讲解 Cookie 和 Session 配合完成用户认证的完整流程,并对比了内存/Redis/数据库三种 Session存储方案的适用场景,最后厘清 Session 和 JWT 的本质区别:一个查存储拿用户信息,一个解析 Token拿用户信息,选哪个取决于系统实际场景。

2026-07-25 21:38:23 574

原创 CompletableFuture:异步编排使接口摆脱串行等待

本文从商品详情页接口串行调用三个远程服务导致响应慢的实际问题出发,介绍 CompletableFuture的链式处理、并行编排和异常处理能力,并通过 Spring Boot实战示例演示如何把无关依赖的远程调用从串行改成并行,同时做好子任务异常隔离和线程池配置。

2026-07-24 21:26:54 447

原创 DDD + Spring Boot 实战:一个订单系统从需求到代码的完整落地

本文以电商订单系统为案例,走完从需求分析、领域建模到 Spring Boot代码落地的全流程,串联前八篇讲过的实体、值对象、聚合、领域服务、领域事件、Repository、分层架构、CQRS全部概念,并在最后讨论 DDD 的适用边界和贫血/充血模型的选择。

2026-07-24 16:42:02 529

原创 DDD 战术设计:CQRS,让读和写各司其职

本文意在介绍 CQRS 的核心思想:让读写各走各的路。通过订单列表只显示几个字段却要加载整个聚合的痛点,引出 Repository越来越臃肿的根源,并以同库实现为重点,演示如何用 QueryService 直接查 DTO,让写模型维护业务规则、读模型高效展示数据。

2026-07-23 18:22:56 619

原创 DDD 分层架构:六层分层架构

本文意在介绍 DDD 六层架构(trigger、api、app、domain、infrastructure、types)的职责划分和依赖方向,通过依赖倒置让领域层成为核心而非底层,并以 Spring Boot 项目结构为例,演示各层如何配合完成一个完整的下单流程。

2026-07-23 17:40:58 623

原创 DDD 战术设计:Repository 与持久化的边界

本文旨在介绍 DDD 中 Repository 仓储模式的设计思想,解释为什么领域层不应该直接依赖数据库操作,以及 Repository 如何通过接口与实现分离、领域对象(Order)与数据库对象(OrderDO)的转换,让聚合根作为整体被存取,同时隔离底层存储细节,并通过Order.create() 与 Order.reconstruct() 两种构造路径区分业务行为与持久化还原。

2026-07-22 22:16:56 572

原创 DDD 战术设计:领域事件与操作解耦

本文旨在介绍 DDD中领域事件的核心概念,解释为什么将"发生了什么"和"之后做什么"拆开能降低模块耦合,并通过聚合根产生事件、事务后发布(含Outbox Pattern)、订阅者各自响应的完整流程,演示下单场景下事件驱动的实现方式与分层归属。

2026-07-22 21:36:13 497

原创 DDD 战术设计:领域服务与跨对象业务规则

本文从"跨聚合的业务逻辑放哪"这个问题出发,介绍领域服务的核心定位:承载那些重要但无法自然归属于任何实体的业务规则。通过DiscountService的实战代码演示领域服务与应用服务的分工,并给出判断逻辑归属的三问口诀:实体方法、领域服务、还是应用服务。

2026-07-21 17:39:25 383

原创 DDD 战术设计:从实体到聚合根,构建领域模型

本文承接 DDD 战略设计,系统介绍了战术设计的三个核心构造块:实体(有标识、可变、封装规则)、值对象(无标识、不可变、消除基本类型迷恋)、聚合(一致性边界 + 聚合根保护),并通过 Order 聚合的实战代码串联所有概念。

2026-07-21 16:55:50 458 1

原创 DDD 战略设计:限界上下文与统一语言

本文围绕 DDD 战略设计的两个核心概念展开,解释了统一语言如何消除团队内部的业务术语歧义,以及限界上下文如何通过划分业务边界让不同场景各自维护独立的模型,并以电商系统的实际拆分演示了上下文映射和防腐层的用法。

2026-07-20 23:58:37 480

原创 DDD:领域驱动设计的初步认识

本文旨在介绍 DDD 的核心思想,从传统三层架构的痛点出发,解释业务规则为什么会越来越分散,以及 DDD如何通过让代码结构反映业务结构来解决这个问题,并说明了 DDD 适合和不适合的场景。

2026-07-19 20:07:05 340

原创 MyBatis Plus:快速上手指南

本文旨在帮助后端开发者快速上手 MyBatis Plus,覆盖 BaseMapper 内置 CRUD、Wrapper条件构造、分页、自动填充、逻辑删除等核心功能,并结合实际踩坑经验说明 MP 的适用边界。

2026-07-18 22:59:31 464

原创 MyBatis 原理解析:Mapper 接口没有实现类,SQL 如何执行

本文从 MyBatis 的三层架构出发,拆解了一条 Mapper 方法调用从接口层到 JDBC 执行的完整链路,重点分析了 MapperProxy动态代理如何在运行时为接口生成实现类,并通过源码讲解了代理对象的创建过程和方法拦截机制。

2026-07-17 23:50:13 300

原创 Function Calling:LLM 是怎么学会调工具的

本文意在从 LLM 侧解释 Function Calling 的实现原理,帮助读者理解工具定义如何通过上下文注入被模型"看到",模型如何通过监督训练掌握工具调用格式、再通过偏好优化学会判断何时该调工具,并区分 Function Calling 与原生 JSON 输出的本质差异。

2026-07-15 23:24:40 383

原创 Spring Cloud:微服务的基础设施工具箱

本文从微服务和 Spring Cloud 的基本概念出发,讲清了二者的分工关系(微服务负责拆,Spring Cloud 负责管),并通过 Nacos服务发现、OpenFeign 声明式调用、Spring Cloud Gateway 网关、Sentinel 熔断降级、Nacos Config配置中心五个核心组件的代码示例,带你了解 Spring Cloud 如何解决微服务拆分后的治理问题。

2026-07-14 23:26:06 817 5

空空如也

空空如也

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

TA关注的人

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