HTTP API:把请求、响应与失败写成契约

接口契约描述客户端可以依赖什么:请求字段、身份、成功结果、错误、重试方式以及版本变化。只列一个 URL 和 JSON 示例,无法回答“响应丢了以后能不能重发”。先读网络与 HTTP 基础,再把协议语义落实到服务行为。 ...

2026年10月24日 · 3 分钟 · Cinna

Java 服务基础:类型、异常、资源与运行时

Java 服务代码首先是 Java 程序,然后才是 Spring 应用。类型设计、对象共享、异常与资源边界没有想清楚,增加注解通常只会让问题更难发现。本页以 Java 21 为语法基线,不依赖预览特性。 ...

2026年10月24日 · 3 分钟 · Cinna

Java 工程:带幂等、事务和权限的预约服务

这个工程把 HTTP、数据库事务、幂等与对象授权放在同一条可执行流程里。它使用 Java 21、Spring Boot 3.5.16、JDBC 与内存 H2,方便本机直接测试;不是已经部署的业务系统。数据库产品的锁语义、真正消息转发和持久恢复需要另外验收。 ...

2026年10月24日 · 4 分钟 · Cinna

Java/Spring Boot 路线:从语言边界到事务服务

这条路线以 Java 21 和 Spring Boot 为实践主线,共用后端协议、数据库与可靠性知识点。先理解 Java 对象、异常和资源,再理解容器与代理;避免把服务行为完全归因于注解。 ...

2026年10月24日 · 2 分钟 · Cinna

Spring Boot:从请求到事务的调用边界

Spring Boot 在 Spring 的基础上提供自动配置、依赖管理与应用启动约定。它减少常见服务的装配工作,但不会替你决定业务模块、数据库事务和权限边界。本页配套工程固定使用 Java 21、Spring Boot 3.5.16;这是一组可复现依赖,不表示必须把既有项目全部升级到它。 ...

2026年10月24日 · 3 分钟 · Cinna

并发与背压:让任务数量、资源和取消有边界

并发让多个任务在时间上重叠,吞吐能否提高还取决于 CPU、数据库连接、网络和任务依赖。开一万个线程或 goroutine,只是把等待搬到别处;如果数据库只能处理几十个并发查询,其余任务仍占用内存和请求预算。 ...

2026年10月24日 · 3 分钟 · Cinna

分布式可靠性:在超时与部分失败中做取舍

单进程函数失败时,调用者往往能看到异常;跨网络调用超时后,调用者却不知道对端是否完成。分布式设计的起点是部分失败:一部分节点仍在工作,另一些通信中断,而不同节点看到的状态可能不同。 ...

2026年10月24日 · 3 分钟 · Cinna

服务测试与调试:验证状态变化和故障边界

服务测试不止检查“请求返回 200”。预约返回成功但库存扣了两次,或者越权用户看到他人记录,都是状态与边界错误。先列不变量,再选能观察它的测试层级。通用测试与调试介绍证据与最小复现,这里关注跨 HTTP、数据库和并发的服务行为。 ...

2026年10月24日 · 3 分钟 · Cinna

后端主干路线:从接口契约到可靠运行

这条路线组织 Java 和 Go 都需要的后端知识。知识点正文只有一份;语言练习分别进入 Java/Spring 路线与 Go 服务路线。不必同时学完两门语言才开始实践。 先确认基础 能写函数、读写结构化数据并使用命令行;不熟悉 HTTP、进程线程或关系数据时,先完成第一阶段。每个阶段的节点可直接跳到正文,正文里的前置项用来发现还缺哪块基础。 ...

2026年10月24日 · 2 分钟 · Cinna

缓存一致性:从一次旧值回填开始

缓存保存可以重新获得的数据,用额外复杂度换取较低的读取成本。设计前先回答三个问题:允许旧多久、缓存不可用时怎样降级、哪些数据不能只放缓存。库存余额和支付状态通常仍以数据库中的受约束事实为准,不能把缓存命中当作强一致性的证据。 ...

2026年10月24日 · 3 分钟 · Cinna