归档
按时间查看全部文章。
微服务日志采集与检索
使用 Elastic Agent 或 Logstash 构建日志采集链,统一 ECS 字段、脱敏、保留期与 Kibana 查询权限。
MySQL 到 Elasticsearch 的一致性
比较应用双写、Binlog CDC 与 Outbox,使用版本化幂等、重放和对账维护搜索索引。
高可用集群、容量规划与性能调优
从故障域、分片大小、JVM 堆、磁盘水位和恢复带宽建立 Elasticsearch 容量与调优方法。
自定义分词、同义词和中文搜索
用分析回归集选择中文分词策略,并设计搜索时同义词、热更新和索引版本管理。
深分页、游标与 Search After
解释 from/size 的分片放大成本,并使用稳定排序、search_after 与 PIT 设计游标分页。
Spring Boot 搜索服务实战
用 Spring Boot 实现受控搜索接口,处理查询参数、结果模型、超时和可操作的错误响应。
聚合、桶与分析查询
理解指标、桶和管道聚合,控制 terms 高基数、分片候选误差与聚合内存成本。
BM25、搜索相关性与排序调优
从词频、逆文档频率与长度归一化理解 BM25,并用离线查询集验证字段权重和业务排序。
Query DSL 与 Filter Context
用 bool、match、term 与 range 写出可解释的查询,并区分参与评分的 query 与精确过滤。
Mapping、Analysis 与数据管理
设计 text、keyword、数值和日期字段,理解分析器链、动态映射边界与零停机重建索引。
Elasticsearch、Kibana、安全与索引生命周期
搭建本地 Elasticsearch 与 Kibana,理解认证授权、快照、数据流和索引生命周期管理。
搜索系统与 Elasticsearch 基础模型
从一次商品搜索理解文档、字段、索引、分片、副本和倒排索引,建立搜索系统的第一张地图。
Redis 生产变更与数据迁移
用分阶段验证设计 Redis 扩容、版本升级、数据迁移、备份恢复、回滚和权限收敛。
Redis 性能诊断与容量规划
使用 Slowlog、延迟监控、内存采样和容量公式定位 Redis 性能问题并预留故障余量。
Redis Stack:搜索、JSON、时序与概率结构
认识 Redis 搜索、JSON、时序、布隆过滤与 Top-K,并按数据规模和系统职责判断是否采用。
热点 Key 探测、隔离与本地缓存
设计客户端采样、代理统计、服务端信号和业务指标组成的热点发现与治理链路。
缓存与数据库一致性
比较更新后删缓存、延迟双删、Binlog CDC、Canal 和事件驱动失效的一致性边界。
Cache-Aside、穿透、击穿与雪崩
实现 Cache-Aside,并组合空值缓存、布隆过滤、请求合并和随机 TTL 保护数据库。
分布式锁的正确边界
用唯一所有者、租约、原子释放和 Fence Token 解释 Redis 分布式锁的安全边界。
主从、Sentinel 与 Cluster
理解 Redis 异步复制、Sentinel 故障转移、Cluster 槽位分片以及脑裂和数据丢失边界。
RDB、AOF 与数据安全
按允许丢失窗口、恢复速度、磁盘写入和内存峰值选择 RDB、AOF 与备份策略。
SDS、Dict、SkipList 与紧凑编码
从 SDS、哈希表、跳表和 Listpack 理解 Redis 数据类型的复杂度与内存边界。
Redis 线程模型、I/O 多路复用与命令原子性
解释 Redis 事件循环、I/O 多路复用、辅助线程和单条命令原子性,识别阻塞风险。
Redis 数据类型与典型建模
按访问模式选择 Redis String、Hash、List、Set 和 Sorted Set,并设计可治理的 Key。
Temporal、Camunda 与持久工作流
为长事务、人工任务、补偿、超时和跨服务流程选择 Temporal、Camunda 或普通消息编排。
消息系统选型与常见事故
用代表性负载、故障实验和退出策略比较 RabbitMQ、Kafka 与 RocketMQ,并处理积压、重复和热点事故。
RocketMQ 存储源码与高可用集群
从 CommitLog、ConsumeQueue、索引、刷盘与复制追踪 RocketMQ 消息存储和故障恢复。
RocketMQ 概念、客户端与消息类型
认识 RocketMQ Topic、MessageQueue、ConsumerGroup,并区分普通、FIFO、延迟和事务消息。
Kafka 日志索引、事务与流处理
理解 Kafka 分段日志与稀疏索引、事务生产者、read_committed 和 Kafka Streams 状态库。
Kafka 集群、分区、副本与再均衡
解释 KRaft 控制器、分区 Leader、ISR、提交边界与 Consumer Group 再均衡。
Kafka 客户端消息流转
追踪 Kafka Producer、Broker、分区、Consumer 与 Consumer Group,理解 key、offset 和提交位置。
RabbitMQ 集群、Quorum Queue 与运维
理解 RabbitMQ 集群元数据、Quorum Queue 的多数派复制,并建立积压、故障与扩容演练清单。
RabbitMQ 可靠性与高级能力
处理发布确认、不可路由消息、死信、延迟重试、顺序消费和重复投递。
RabbitMQ 入门:交换机、队列与路由
区分交换机、队列、绑定与路由键,构建带发布确认和手动消费确认的消息链路。
Seata 工作原理与源码主线
理解 Seata 的 TC、TM、RM、XID、全局锁与 undo_log,并建立可追踪的源码阅读路径。
分布式事务模式
对比 2PC、TCC、Saga、事务消息与 Outbox,用业务不变量和恢复时间选择事务边界。
ShardingSphere-Proxy、内核与扩容
比较 JDBC 与 Proxy 部署模式,追踪 SQL 处理链,并设计可校验、可回滚的分片扩容。
ShardingSphere-JDBC 分片实战
从订单访问模式设计分片键、路由算法、绑定表与广播表,并用 Java 测试验证路由稳定性。
Paxos、Raft 与复制状态机
用提案、任期、日志、法定人数和成员变更建立共识直觉,理解复制状态机的安全边界。
Leader 选举与 ZAB 协议
从事务标识、法定人数和日志复制理解 ZooKeeper 的 Leader 选举、广播与崩溃恢复。
ZooKeeper 配置、选主、锁与注册发现
用 ZooKeeper 原语推导配置、选主、锁和服务发现,并识别羊群效应、会话暂停与 fencing 问题。
ZooKeeper 数据模型、会话与 Watch
从 znode 树、版本号和会话开始,理解临时节点、顺序节点以及一次性 Watch 的正确使用方式。
分布式 ID:趋势递增、时钟与号段
比较 UUID、Snowflake、数据库号段和 CosId,理解唯一性、排序、时钟回拨与容量边界。
超时、重试、幂等、去重与退避
设计带截止时间、指数退避、抖动和幂等键的远程调用,避免重试风暴与重复副作用。
CAP、PACELC 与一致性模型
从一次跨节点读写开始,区分可用性、分区容错以及线性一致、顺序一致、最终一致和业务一致。
数据存储选型:MySQL、PostgreSQL、MongoDB、ClickHouse、对象存储
按事务、访问模式、数据模型、一致性、运维和迁移成本选择数据存储,而不是按流行度站队。
JDBC、连接池、JPA/Hibernate 与 Spring Data
比较 JDBC、MyBatis、JPA/Hibernate、Spring Data 的职责、收益、查询控制和性能风险。
分库分表、历史归档与在线迁移
从容量证据出发选择分片键,治理跨片查询,并用双写校验完成可回滚在线迁移。
高可用集群、备份与恢复演练
从故障模型、RPO、RTO、备份类型和恢复校验设计数据库高可用与灾难恢复。
主从复制、延迟与读写分离
解释 Binlog 复制链路、复制延迟、读己之写、故障切换和读写路由策略。
MySQL 全局性能:Buffer Pool、连接与 I/O
用资源饱和视角分析 Buffer Pool、连接数、日志刷盘、磁盘 I/O 和全局吞吐。
Schema、数据类型与约束
从业务不变量设计主键、金额、时间、字符集、空值、唯一键、外键和检查约束。
Redo、Undo、Binlog 与崩溃恢复
区分三类日志的职责,理解 WAL、提交协调、崩溃恢复和按时间点恢复。
MVCC、Read View 与一致性读
从行版本、Undo 链和 Read View 理解快照读、当前读与长事务危害。
InnoDB 锁、死锁与锁等待
解释记录锁、间隙锁、临键锁和意向锁,并通过双会话实验定位与治理死锁。
ACID 与隔离级别
用转账案例解释原子性、一致性、隔离性、持久性与四种 SQL 隔离级别。
排序、分页、Join 与子查询优化
用稳定排序、寻页分页和小结果集驱动原则优化常见列表与关联查询。
联合索引、覆盖索引与索引下推
根据过滤、排序和返回列设计联合索引,理解最左前缀、覆盖索引和索引条件下推。
Explain 与执行计划阅读
学会阅读 access type、key、rows、filtered、Extra,并用 EXPLAIN ANALYZE 验证估算。
InnoDB 页、行与 B+Tree 索引
从页和主键组织方式理解聚簇索引、二级索引、回表与主键设计。
MySQL 架构与 SQL 生命周期
从连接建立到解析、优化、执行和 InnoDB 读写,建立一条完整 SQL 生命周期。
MyBatis 插件、批处理与性能陷阱
用可测试插件理解拦截链,掌握批处理提交、动态 SQL、N+1 与缓存误用的边界。
MyBatis SQL 执行、缓存与结果映射
沿 Mapper 代理、Executor、StatementHandler 和 ResultSetHandler 理解一次查询及两级缓存边界。
MyBatis 配置解析与核心对象
从一次 Mapper 调用出发,认识 Configuration、MappedStatement、SqlSessionFactory 和插件链。
Spring、Jakarta EE、Quarkus 与 Micronaut 选型
按生态、标准、启动内存、编译模型、团队经验、云平台和迁移成本比较 Java 应用框架。
AOT、GraalVM Native Image 与 CRaC
比较提前处理、原生镜像和检查点恢复的启动时间、内存、构建成本、动态能力与运行约束。
Reactor 与 Spring WebFlux:背压、线程切换和阻塞边界
从 Publisher、Mono、Flux 与订阅解释惰性流水线、背压、调度器、上下文和阻塞调用隔离。
Spring 6/7 与 Boot 3/4 迁移
处理 Jakarta 命名空间、JDK 基线、Starter 拆分、废弃 API、测试模块和生产行为变化,建立可回滚迁移流程。
Spring Boot 生产特性:健康检查、指标与优雅停机
配置 Actuator、存活就绪探针、指标标签、外部配置和优雅停机,避免把管理端点当成默认安全区。
Spring Boot 启动与自动配置源码
追踪 SpringApplication.run、Environment 准备、Context 创建、ImportCandidates、条件匹配和配置属性绑定。
手写 Spring Boot 核心流程
用最小启动器串联主配置源、环境、ApplicationContext、自动配置、服务器启动和关闭钩子。
Spring 与 MyBatis 的整合机制
解释 MapperScanner、MapperFactoryBean、SqlSessionTemplate 和事务同步如何把 MyBatis 代理接入 Spring 容器。
Spring MVC 请求、异常与响应流程
串联 Filter、Interceptor、ControllerAdvice、消息转换和响应写回,设计可观测且稳定的统一错误协议。
Spring MVC 启动、映射与参数绑定
追踪 DispatcherServlet 初始化、HandlerMapping 注册和参数解析,理解请求为什么能定位到控制器方法。
声明式事务的传播、隔离与失效场景
从 TransactionInterceptor 解释事务传播、隔离、回滚规则、自调用失效、异步线程和远程调用边界。
AOP 代理创建与调用链
比较 JDK 动态代理和类代理,解释切点、通知、拦截器链、自调用以及代理对象的真实类型。
Spring 扩展点实战:Registrar、Factory、PostProcessor 与 Listener
按扩展发生的阶段选择 ImportBeanDefinitionRegistrar、FactoryBean、工厂后置处理器、Bean后置处理器和事件监听器。
配置类、组件扫描与条件装配
追踪 ConfigurationClassPostProcessor 如何解析配置类、组件扫描、Bean、Import 与 Conditional。
三级缓存能解决什么循环依赖
区分构造器循环、属性循环和代理早期引用,解释三级缓存的职责以及为什么循环依赖首先是设计信号。
构造器推断与依赖解析
解释构造器选择、按类型候选、Primary、Qualifier、集合注入与 Optional 的解析规则和错误诊断。
Bean 生命周期与后置处理器
定位 Bean 实例化、属性填充、Aware 回调、初始化、后置处理和销毁,并解释代理在哪一步出现。
ApplicationContext 启动主线:读懂 refresh 模板流程
以 AbstractApplicationContext.refresh 为入口,串联 BeanFactory 准备、扩展点调用、单例创建、事件发布和失败清理。
手写最小 IoC 容器
用不到百行 Java 实现 BeanDefinition 注册、类型匹配、构造器注入和单例缓存,理解容器最小闭环。
IoC、DI 与 Spring 核心组件全景
从对象创建和依赖组装问题理解 IoC 与 DI,并建立 BeanFactory、ApplicationContext、BeanDefinition 的核心地图。
HTTP/2、HTTP/3、WebSocket 与 gRPC 选型
按公开 API、内部 RPC、双向推送和弱网实时通信需求,对比 HTTP/2、HTTP/3、WebSocket、SSE 与 gRPC。
Tomcat 类加载、热部署与内存泄漏
解释 WebApp 类加载隔离、委派边界和重新加载流程,定位线程、ThreadLocal、驱动与缓存造成的类加载器泄漏。
Tomcat 线程模型与性能调优:从容量模型开始
用到达率、响应时间和下游容量联合解释连接数、工作线程、接受队列与超时,避免孤立调大参数。
Tomcat 容器、连接器与请求链路
从嵌入式请求出发,解释 Connector、Engine、Host、Context、Wrapper 与 Filter 如何共同完成一次 Servlet 调用。
手写轻量 RPC 框架:从调用假象到失败语义
实现请求响应关联、服务调度、超时和清理,再解释序列化、服务发现、重试与幂等边界。
从 Netty 源码理解启动与读写链路
以服务器绑定、接受连接、入站读取和出站写入四条主线阅读 Netty 源码,避免陷入逐类翻译。
Netty 内存池、引用计数与泄漏排查
解释 ByteBuf 池化、切片、引用计数的所有权规则,并给出直接内存泄漏的复现与排查顺序。
Netty 线程模型与任务调度:不要阻塞 EventLoop
解释连接与 EventLoop 的亲和关系、任务队列和耗时任务卸载,并给出积压观测与容量边界。
编解码、粘包拆包与背压
从 TCP 字节流解释粘包拆包,设计长度字段协议,并用消息上限、水位线和读取控制建立背压。
Netty 快速入门:Channel、EventLoop 与 Pipeline
从原生 Selector 的状态管理出发,解释 Netty 核心组件、入站出站事件和可测试协议处理器。
select、poll 与 epoll:从就绪通知理解高并发 I/O
解释 I/O 多路复用、水平触发、边沿触发和空轮询,并用 Java Selector 回声服务器串联操作系统与应用代码。
BIO、NIO、直接内存与零拷贝
用文件复制的数据路径解释阻塞与非阻塞 I/O、Buffer、Channel、直接内存和 transferTo 的真实边界。
TCP、UDP、拥塞控制与连接故障
从字节流、数据报、重传、流量控制和拥塞控制出发,解释常见 TCP 状态、超时与协议选型边界。
一次网页请求经历了什么:从域名到应用线程
沿一次 HTTPS 请求串联 DNS、ARP、TCP、TLS、HTTP、反向代理、应用线程和下游依赖,建立端到端排障地图。
并发设计模式与确定性测试
用不可变快照、单线程所有权、固定锁顺序和协调器构造可证明、可重复的并发测试。
虚拟线程、固定与观测
把阻塞式任务迁移到 Java 21 虚拟线程,并区分 Java 21 与 24/25 的 monitor pinning、资源限流和观测方式。
CPU 缓存、伪共享与 Disruptor
从缓存行一致性理解伪共享,并说明 Padding、分片计数和 Disruptor 环形队列适合解决什么问题。
ThreadLocal 泄漏与请求上下文治理
在线程池中确定性复现 ThreadLocal 请求数据残留,并用 try/finally、显式 Context 和框架钩子治理。
ForkJoinPool、工作窃取与并行流
通过递归求和理解任务拆分、工作窃取、阈值和 commonPool,并判断 CPU 密集任务何时适合并行。
Future 与 CompletableFuture 异步编排
用显式 Executor 编排异步任务,处理 thenCompose、超时、异常、取消和请求上下文传播。
ThreadPoolExecutor 参数、拒绝与动态调节
通过确定性饱和实验理解 core、maximum、queue、keepAlive 和拒绝策略,并按任务模型配置线程池。
BlockingQueue 与生产者消费者
使用有界 BlockingQueue 和超时 offer 实现可观测背压,并比较 put、offer、take、poll 的失败语义。
并发 Map、List 和 Set 的实现权衡
比较 ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentSkipListMap 和并发 Set 的一致性与成本。
Semaphore、CountDownLatch 与 CyclicBarrier
按并发许可、一次性汇合和重复阶段三个需求选择 Semaphore、CountDownLatch 与 CyclicBarrier。
AQS 与 ReentrantLock 源码主线
沿着 state、tryAcquire、等待队列、park、unpark 和 release 阅读 AQS 与 ReentrantLock 的源码主线。
CAS、ABA 与 Atomic 原子类
用 AtomicStampedReference 复现 ABA,理解 Compare-And-Set 的原子更新、失败重试和竞争代价。
synchronized 的实现、锁状态与适用边界
从 monitorenter、monitorexit 和监视器膨胀理解 synchronized,并纠正现代 JDK 中过时的固定锁升级说法。
JMM、Happens-Before 与三类并发性质
用计数器和发布对象示例理解原子性、可见性、有序性,以及 volatile、锁和线程启动建立的先行发生关系。
线程生命周期、等待通知与中断协议
从线程状态、join、wait/notify 到 interruption,建立不会丢失取消信号的线程协作协议。
JDK 升级与 JVM 性能回归
设计可重复的 JDK 17、21、25 性能对比,识别预热、默认收集器、参数语义和运行时行为变化。
GC 调优方法:目标、基线、变更与复测
用吞吐、P99、暂停预算、分配速率和存活集驱动 GC 调优,每次只改变一个可解释变量。
常量池、字符串与类元数据的内存代价
区分 Class 常量池、运行时常量池与字符串驻留池,并用实验观察 intern、类加载和类卸载边界。
CPU 飙高、死锁和长暂停排查
用有时限的 CPU 热点和死锁实验建立线上应急流程,区分计算热点、锁等待、GC 与 safepoint 暂停。
内存泄漏、OOM 与 Heap Dump 实战
在 64 MiB 小堆中安全制造内存泄漏,生成 Heap Dump,并从增长对象、引用链和保留大小定位根因。
jcmd、JFR、VisualVM 与 async-profiler
在有时限的 CPU 热点实验中采集线程栈、JFR 和 CPU Profile,并理解各工具的证据边界。
JVM 参数、日志与容器资源识别
建立 Java 21/25 可审计启动参数模板,校验堆、容器 CPU、内存限制、GC 日志、Heap Dump 与 JFR。
CMS、G1、ZGC 与现代收集器选型
按延迟、吞吐、堆大小和 JDK 版本比较 Serial、Parallel、CMS、G1 与 ZGC,并给出选型实验方法。
GC 基础与三色标记
从 GC Roots、可达性和 Stop-The-World 讲到三色标记、写屏障与并发收集正确性。
解释执行、JIT、分层编译与反优化
通过编译日志观察热点方法如何从解释执行进入 C1、C2 编译,以及假设失效后的反优化。
Class 文件、常量池与字节码指令
编译一个求和方法,使用 javap 读取 Class 版本、常量池、局部变量表、操作数栈和字节码指令。
对象创建、布局、逃逸分析与分配路径
从 new 指令到 TLAB、对象头、字段布局、晋升和逃逸分析,理解对象分配的真实成本。
运行时数据区与 Java 内存模型不要混淆
区分堆、JVM 栈、方法区、元空间与 Java Memory Model,避免把内存位置和并发可见性混为一谈。
类加载的双亲委派、隔离与打破方式
观察 Bootstrap、Platform、Application ClassLoader,理解父优先委派、类型身份和插件隔离。
JVM 全景:类、内存、线程与执行引擎
建立从 Java 源码、Class 文件、类加载、运行时内存到机器指令的完整 JVM 心智模型。
从 Java 17 迁移到 21/25
用运行、依赖、编译、测试、观测和回滚六步法,把 Java 17 应用安全迁移到 21 或 25。
Record、密封类与模式匹配
使用 Java 21 的 Record、Sealed Class 和 switch 模式表达不可变数据与封闭业务状态。
JUnit 与 Mockito:测试替身怎么选
区分 Stub、Mock、Fake,使用 JUnit 和 Mockito 测试业务结果,并避免脆弱的交互测试。
Maven、Gradle 与依赖冲突
理解坐标、传递依赖、Scope、BOM、依赖树和锁定,并建立可复现的构建检查流程。
时间、金额、精度与序列化
正确选择 Instant、LocalDate、ZonedDateTime 和 BigDecimal,并设计可演进的 JSON 边界。
注解、反射与动态代理
实现最小方法拦截器,理解注解元数据、反射调用、JDK 动态代理及其适用边界。
文件、网络与 NIO 基础
从安全复制文件到 HTTP 请求,理解字节、字符、缓冲区、通道、超时和阻塞边界。
Lambda、Stream 与副作用边界
用订单汇总示例理解 Lambda、Stream 惰性求值、收集器和副作用,并判断何时不用并行流。
泛型、边界与类型擦除
从类型安全仓库接口讲清泛型参数、上下界、PECS 原则和类型擦除带来的运行时限制。
集合框架的选择与复杂度
从顺序、唯一性、键值查找和队列语义选择 List、Set、Map、Queue,并理解复杂度边界。
异常设计与资源关闭
区分业务失败、编程错误与基础设施故障,并用 try-with-resources 正确关闭资源。
面向对象不是堆类:封装、组合与多态
通过订单计价规则理解封装、组合和多态,并判断继承何时会制造错误耦合。
类型系统、值传递与对象引用
用一个可运行实验分清基本类型、包装类型、对象引用、自动装箱和 Java 的值传递语义。
第一个可测试的 Java 项目
从零建立一个能编译、运行和测试的 Java 21 项目,并理解 Maven 生命周期与目录约定。
用 ADR 保存架构决策
编写 Architecture Decision Record,记录决策背景、备选方案、选择理由、后果和重新评估条件。
如何写技术实验报告
用假设、环境、变量、原始证据和结论编写可复测的技术实验报告,避免用一次结果支撑宽泛判断。
如何读源码:调用链、断点、测试与最小复现
用一个明确问题驱动源码阅读,通过调用链、断点、测试和最小复现形成可以验证的结论。
搭建可复现的 Java 实验室
配置 Java 21、Maven Wrapper、JUnit、Docker Compose 和 Git,得到任何成员都能重复运行的学习工程。
架构能力模型与自测表
从技术深度、系统思维、交付能力和技术领导力四个维度建立基线,用证据制定下一阶段学习计划。
从开发者到架构师:职责、边界与常见误区
区分开发者、技术负责人和架构师的工作,理解架构师如何用约束、证据和协作推动系统长期演进。
Java 架构师完整学习路线与博客目录
从 Java 基础到架构决策、生产治理和技术领导力的渐进式博客目录,并给出版本基线、实践标准与知识覆盖检查。
多模态与语音评测:把感知、推理和交互拆开
为图像、文档、ASR、TTS 和实时语音 Agent 设计分层指标、数据集与人工评审。
评测平台选型:先画能力清单,再看产品名称
按数据集、实验、Evaluator、Trace、人工标注和治理六层做 PoC,避免被单一总分或演示界面误导。
在线评测:从生产 Trace 发现新问题
用 Shadow、A/B、抽样评分和反馈回流监控生产质量,同时控制隐私、成本和止损。
Judge 校准:用人工标签选择阈值
构造校准集、计算一致性和错误代价,避免 Judge 分数看起来精确却无法信任。
LLM-as-Judge:让模型评模型,但不让它裁决安全
为主观质量设计 Rubric、结构化评分和防注入边界,并了解哪些指标必须由代码判断。
Tool 与 Agent 评测:不只看最终回答
检查工具必要性、选择、参数、权限、结果使用、轨迹和最终业务 Outcome。
RAG 评测:分别检查检索、证据和回答
学习 Recall@k、Precision@k、Claim 支持率和引用正确性,定位 RAG 问题发生在哪一层。
Golden Dataset:从 3 个可信案例开始
设计输入、期望、元数据、切分和版本,防止数据泄漏与只测简单案例。
Eval 对象与分层:从组件到业务结果
区分模型、检索、工具、轨迹和最终 Outcome,为每层选择确定性测试、人工或 Judge。
Agent Evaluation 零基础路线:先定义“好”,再谈优化
从三个订单样本开始,循序学习 Golden Dataset、RAG、Tool、Judge、在线和多模态评测。
读懂 DBOS:数据库怎样让普通 Python 程序获得持久执行能力
更新于:Agent Runtime沿 Workflow、Step、操作结果与恢复队列解释数据库支撑的执行,并比较不同 Runtime 的边界。
读懂 AgentScope Java Runtime:会话状态怎样进入业务系统
更新于:Agent Runtime沿 RuntimeContext、会话槽位、AgentStateStore 与版本冲突解释 Java Agent 的状态生命周期。
读懂 Temporal:历史重放怎样驱动长期业务流程
更新于:Agent Runtime区分 Workflow 与 Activity,沿 Python Worker 的激活过程理解历史、重试、消息与版本兼容。
用 LangGraph 实现可恢复任务:完整 Python 实战与源码解读
更新于:Agent Runtime用文件型 Checkpoint 完成分进程审批,沿 StateGraph、Pregel 与 SqliteSaver 阅读恢复机制。
生产中的 Runtime 怎样设计:状态、执行、存储与版本升级
更新于:Agent Runtime用退款任务连接 API、数据库、队列、Worker、事件和外部账本,并解释升级与隔离。
A2A 怎样连接独立 Agent:从发现能力到任务交付
更新于:Agent Runtime以 A2A 1.0 解释 Agent Card、Message、Task、Artifact、流式更新与认证边界。
多 Agent 怎样运行:子任务生命周期、并行与失败传播
更新于:Agent Runtime从退款调查解释角色、父子任务、并行预算、结果汇总和取消传播。
执行过程怎样交给用户:事件流、断线重连与取消
更新于:Agent Runtime区分 Token 流与持久业务事件,解释事件序号、恢复游标、慢消费者和取消竞态。
Worker 怎样调度任务:队列、租约、心跳与背压
更新于:Agent Runtime通过旧 Worker 恢复和下游过载解释任务获取、所有权、超时、公平调度与回收。
人工介入怎样恢复:澄清、审批、编辑与接管
更新于:Agent Runtime解释持久等待、批准绑定、重复提交、迟到消息、编辑和恢复冲突。
怎样避免重复副作用:幂等、事务、Outbox 与补偿
更新于:Agent Runtime从支付响应丢失解释稳定操作标识、参数绑定、本地事务与远端边界、消息去重和对账。
崩溃后怎样继续:持久化边界、Checkpoint 与 Replay
更新于:Agent Runtime通过三个崩溃时刻解释结果保存、重新执行、历史重放和恢复前的核对。
工作流怎样执行:节点、分支、循环、并行与 Reducer
更新于:Agent Runtime从退款核验图解释状态更新、条件路由、并行合并、重复数据、子图和流程版本。
任务状态怎样设计:Thread、Run、Step、Event 与业务事实
更新于:Agent Runtime用部分退款和重复恢复解释对象身份、合法状态转换、乐观并发控制与事件溯源。
Agent Runtime 是什么:从一次调用到一个持续执行的任务
更新于:Agent Runtime从退款申请跨越请求、等待和进程生命周期的过程,理解 Runtime 与不同 Agent 控制模式。
读懂 AgentScope Java Harness:工作区、Skill 与会话状态怎样连接
更新于:Agent Harness沿 Builder、ReActAgent 委托、工作区中间件和 SkillRuntime 解读 Java Harness,并区分源码与历史示例版本。
读懂 DeepSeek Harness:怎样用插件构建 Agent 运行环境
更新于:Agent Harness沿 Cordis、工具注册、会话事件和代码模式解释插件生命周期、服务依赖、执行与结果重建。
读懂 Deep Agents:规划、文件与子 Agent 怎样组成工作系统
更新于:Agent Harness沿 create_deep_agent、Backend 和中间件解释能力装配、状态传递及版本相关的默认行为。
读懂 Pi Agent:一个精简的 Coding Harness 怎样工作
更新于:Agent Harness沿创建会话、执行循环、消息队列、文件工具与扩展事件解读 Pi 的固定提交源码。
从头实现一个 Harness:把指令、工具、工作区与验证串起来
更新于:Agent Harness使用标准库完成固定轨迹、真实文件校验与恢复,并提供明确区分的可选真实模型入口。
生产中的 Harness 怎样设计:从单进程到可管理的任务系统
更新于:Agent Harness把业务规则、装配、执行环境、任务状态与产物存储连接起来,解释并发、观测、版本与回收。
子 Agent 怎样协作:委派、隔离、并行与结果合并
更新于:Agent Harness从事实与格式核验理解委派契约、共享边界、预算、冲突和取消传播。
长任务怎样持续推进:计划、进度记录、快照与恢复
更新于:Agent Harness用中断时间线解释初始化、增量推进、Checkpoint、Snapshot、事件、租约及恢复时的状态核对。
怎样判断任务真的完成:Artifact、Verifier 与修复循环
更新于:Agent Harness通过事实错误、验证器被修改和交付失效,解释完成契约、独立校验和证据绑定。
权限与凭证怎样分配:让一次动作只获得需要的能力
更新于:Agent Harness解释主体、资源与条件、PDP和PEP、审批绑定、短期凭据、代理、撤销及委派降权。
Sandbox 为什么必要:文件、进程、网络与资源怎样隔离
更新于:Agent Harness区分目录约定、进程权限、容器和虚拟机,解释挂载、网络出口、限额与实例生命周期。
Harness 怎样控制执行:工具、命令、反馈与停止条件
更新于:Agent Harness沿一次动作经过的入口理解参数校验、执行钩子、结果处理、取消、预算和有限修复。
Workspace 怎样设计:让输入、修改和交付物都有明确位置
更新于:Agent Harness从文件版本与任务目录解释输入快照、差异、原子写入、导出和清理,并说明目录约定的边界。
指令与 Skill 怎样生效:从规则文件到一次模型请求
更新于:Agent Harness解释来源、作用域、冲突、渐进加载和版本清单,并区分行为说明与执行授权。
Agent Harness 是什么:模型之外,谁在推动任务完成
更新于:Agent Harness从订单报告的一次执行理解模型、控制循环、工作环境与完成判断,并划清框架和运行时的职责。
从头接通一个工具系统:Python 实战与 MCP 源码导读
通过本地循环、模拟审批、MCP 双模式 Client 和真实模型桥接,沿 SDK 2.1.1 源码解释整条调用链。
生产中怎样设计工具平台:注册、策略、执行与连接管理
设计工具注册、策略、执行器、操作记录和 MCP 连接管理,串联上下文模块、升级与观测。
接入工具以后,系统多了哪些风险:MCP 与工具安全边界
从恶意工具描述、URL、文件路径和升级变更解释信任边界、准入、隔离、结果处理与应急。
MCP 怎样连接与授权:stdio、HTTP 和凭据的完整路径
沿进程和网络两条路径解释 MCP 传输、OAuth 参与者、令牌边界与连接生命周期。
MCP 不只有工具:Resources、Prompts 与多轮请求
比较 Tools、Resources 和 Prompts,并解释结构化结果、错误、分页、缓存、多轮补充输入及扩展。
为什么需要 MCP:从本地工具到跨应用能力连接
沿订单调用解释 Host、Client、Server、JSON-RPC、版本发现与 MCP、OpenAPI、A2A 的分工。
工具什么时候可以执行:授权、审批与可恢复工作流
用参数变化与审批恢复解释授权、确认、版本绑定、严格布尔校验和执行前复核。
工具调用失败以后:超时、重试、幂等与取消
通过退款响应丢失解释未知结果、有限重试、操作身份、幂等参数绑定、取消与补偿。
一次工具调用怎样完成:执行循环、结果回填与多工具协作
解释工具循环的状态、调用关联、流式参数、并发与停止条件,并区分固定轨迹和真实模型选择。
怎样设计一个好用的工具:名称、参数、结果与业务契约
从订单查询和退款草稿解释工具名称、JSON Schema、金额单位、输出结构以及运行时注入。
Function Calling、Tool Calling 与 MCP:模型怎样使用外部能力
用订单查询逐层解释函数调用、模型工具调用和 MCP,区分参数生成、程序执行与跨服务通信。
把上下文工程串起来:实现组装流程,并定位回答失败
通过两轮售后任务连接组装、状态、记忆、快照与缓存,并沿 LangGraph 固定版本源码理解消息更新。
生产中的上下文工程:设计一个可追溯的上下文管理模块
设计信息提供器、策略、预算、请求组装和记录模块,解释一致性、降级、并发与策略发布。
谁可以看到什么:上下文隔离、可信边界与多 Agent 交接
把授权、用途和指令权限贯穿检索、记忆、摘要、工作区与多 Agent 交接,避免跨用户信息污染。
哪些上下文可以复用:缓存机制、命中条件与失效
分清前缀、组装、检索和答案缓存,用版本变更与权限撤销解释命中条件和失效传播。
长会话怎样压缩:从聊天摘要到可继续执行的任务快照
通过授权条件丢失和取件时间变更说明压缩快照、增量摘要、原文引用以及安全恢复。
哪些信息值得长期记住:记忆的提取、读取、纠正与遗忘
用语言偏好和一次性取件地址解释长期记忆的写入、检索、版本纠正、失效与删除传播。
一次任务怎样继续:会话历史、工作状态与 Checkpoint
从用户修改取件时间解释消息、任务状态、检查点、并发更新和中断恢复的关系。
需要时再加载:渐进式披露、工具发现与外部工作区
解释目录发现、受限读取、工具加载与 Artifact 引用,理解按需获得上下文的收益和代价。
上下文不是越长越好:Token 预算、信息选择与排列
用预算计算、依赖片段与工具交互说明上下文选择,区分窗口容量、有效信息和生成质量。
模型这次应该看到什么:理解上下文工程与上下文组装
从售后问题解释上下文的组成、信息来源、权限与版本,逐步构造一次有依据的模型请求。
MDX 详细使用指南
通过可复制的代码和实时 Demo,学习在 Elaine Blog 中使用 MDX 表达式、数据、Astro 组件、Props、插槽、表格和样式。
博客生成细则
Elaine Blog 的文章创建、目录组织、Frontmatter 配置和发布检查规范。
文字怎样变成模型的输入:Token、Tokenizer 与向量表示
更新于:LLM 基础沿一句售后问题,手推子词切分,观察聊天模板、Token ID、掩码和 Embedding 如何组成模型输入。
Transformer 怎样处理一句话:从 Attention 到完整计算过程
更新于:LLM 基础用向量手算和完整前向代码,解释 QKV、多头、位置编码、FFN、残差、归一化与输出投影,并理解 GQA 和 MoE。
大模型怎样学会回答:训练、指令微调与生成策略
更新于:LLM 基础从错位标签和交叉熵走到梯度更新,解释预训练、SFT、偏好优化与 LoRA,再用概率例子理解采样和幻觉。
一次对话怎样运行:上下文、KV Cache 与流式生成
更新于:LLM 基础从两次请求的差异理解历史、窗口预算、Prefill、Decode、KV Cache 与流式返回。
模型怎样看图和听声音:多模态与实时对话
更新于:LLM 基础从破损照片和语音售后问题,理解视觉编码、跨模态连接、语音链路、播放与打断,以及多模态证据的边界。
怎样把模型用进应用:能力、显存、速度、成本与可靠性
更新于:LLM 基础用同一组客服任务理解质量、延迟、Token 费用与失败处理,再决定调用方式。
Prompt 为什么能改变模型回答:从生成原理到上下文组织
从工单分类理解条件概率、消息角色、任务边界、历史与资料怎样共同影响回答。
怎样用示例和步骤教会模型完成任务
用对照样本、金额提取和可核验的中间结果,解释上下文学习、任务分解与推理策略。
如何写好一个 Prompt:从需求到可用版本
完整设计工单提示,处理歧义、复杂输入与不同任务,并用带注释代码装配可追溯的请求。
怎样让程序可靠接住模型输出:结构化输出与校验
从 JSON 到 Schema,再到订单核验,理解格式保证、未知字段和有限修复的边界。
外部文字为什么会变成指令:Prompt Injection 与任务边界
用客户消息、引用资料和只读工具解释注入如何传播,以及提示边界与程序授权各自负责什么。
Prompt 改了以后真的更好吗:从失败样本到持续改进
以同一套工单分类器建立对照评测,理解数据划分、版本、注入样本与自动优化。
从开源项目学习 Prompt:沿着 DSPy 源码追踪一次调用
固定 DSPy 2.6.27,追踪任务声明、消息装配、输出解析和示例优化,再迁移到自己的工单程序。
RAG 怎样工作:从一份资料到一个有依据的回答
从售后条款完成最小 RAG,理解离线建库、在线查询、上下文装配和证据核验。
文档怎样变成知识库:解析、切分与来源保留
通过条款、表格和扫描件,理解结构恢复、切分策略、父子片段与可追溯元数据。
文本为什么能被搜索:Embedding、相似度与向量索引
从池化和对比学习,到距离公式、精确搜索、HNSW、IVF 与量化,解释检索的计算过程。
为什么找不准:关键词、混合检索与重排
从编号误匹配理解倒排与 BM25,再手算融合并解释两阶段召回、过滤与重排。
用户的问题怎样变成检索任务:改写、分解与多跳
从指代、编号与时间到 HyDE 和跨资料依赖,解释如何取得检索所需信息而不编造事实。
找到资料以后怎样回答:上下文、证据与引用
解释阅读上下文的选择、条件与冲突处理,并把答案主张逐项对应到证据。
怎样判断 RAG 真的变好了:评测与错误诊断
手算检索指标,区分答案、忠实度与引用,并通过阶段记录和消融定位错误。
一次检索不够时:Agentic RAG 与 GraphRAG
以证据缺口驱动补查,解释受限动作、停止条件与带来源的图关系和社区摘要。
怎样把 RAG 接进应用:更新、权限与运行成本
从资料生命周期解释增量更新、索引切换、多租户授权、缓存与故障观测。
从开源项目学习 RAG:沿着 Haystack 追踪一次入库与查询
固定 Haystack 2.9.0 阅读文档编码、存储、检索、提示装配与生成边界,并迁移到售后案例。