https://www.gravatar.com/avatar/7a0c24f697ea1587001c36d00039b60f?s=240&d=mp

类型驱动设计:让非法状态在编译期无处藏身

从一个 Bug 说起

你一定见过这样的代码:

1
2
3
4
5
interface User {
  id: string
  email: string | null
  verified: boolean
}

看似合理,但仔细想想——一个 emailnull 的用户,verified 能是 true 吗?显然不能。但在当前类型定义下,{ email: null, verified: true } 是完全合法的值。这就是非法状态可以表达的典型问题:类型系统允许存在逻辑上不可能的数据组合。

代码复杂度度量实战:从圈复杂度到认知复杂度

我们常说某段代码复杂,但复杂到底怎么衡量?靠感觉?还是靠指标?代码复杂度度量是工程实践中最实用的质量评估手段之一,它能让代码审查从主观判断走向客观数据。本文从两种主流度量方法入手,用实际代码对比分析,帮你建立可落地的复杂度评估体系。

AI智能体开发实战:完整目录

📖 AI智能体开发实战

这是一本系统讲解 AI 智能体(Agent)开发的实战技术书。从智能体的基本概念出发,覆盖架构设计、LLM 集成、提示工程、工具调用、推理模式、记忆系统、RAG 检索增强、多智能体协作、MCP 协议、评估可观测性,最终落地到生产化部署。

MCP协议:智能体的标准化工具接口

1. 引言:MCP解决了什么问题

在前面几章中,我们反复使用了一个关键能力——Function Calling(函数调用)。无论是查数据库、调API,还是操作文件系统,智能体都需要通过"函数"这一抽象来触达外部世界。然而,当工具数量膨胀、应用场景复杂化时,一个令人头疼的问题浮现出来:

SSH 隧道实战:端口转发、跳板机与反向代理的完整指南

为什么你需要掌握 SSH 隧道

日常开发中,你大概率遇到过这些场景:本地调试需要连接内网数据库、生产服务器只允许跳板机访问、内网服务需要临时暴露给外部测试。很多人第一反应是改防火墙规则或装个 frp,但其实 SSH 自带的三种端口转发就能解决绝大多数问题,无需额外工具。