Go HTTP 服务:路由、严格解码、超时与测试
Go 标准库已经具备 HTTP 服务、路由、JSON 与测试能力。先把边界做对,再决定是否引入 Gin 等框架,可以更清楚地辨认框架解决了什么。本实验使用 Go 1.22 引入的方法路由模式,因此需要 Go 1.22 或更高版本;只依赖标准库。 ...
Go 标准库已经具备 HTTP 服务、路由、JSON 与测试能力。先把边界做对,再决定是否引入 Gin 等框架,可以更清楚地辨认框架解决了什么。本实验使用 Go 1.22 引入的方法路由模式,因此需要 Go 1.22 或更高版本;只依赖标准库。 ...
Go 的类型、错误返回与 goroutine 让服务代码可以写得直接,但简单语法不意味着没有隐含共享。读代码时先追踪值包含什么、谁能修改、谁负责关闭,以及错误沿什么路径传播。 ...
这条路线使用 Go 标准库建立服务边界,再以有界任务工程练习并发与可靠性。掌握这些之后,如果项目需要 Gin 等框架,可以把它作为路由、绑定和中间件的替换选择;不需要为了学习后端先收集所有框架。 ...
这个工程把 HTTP 接收与后台处理拆开:POST 接收任务返回 202,GET 查询状态,工作协程从有界队列处理。它只使用 Go 标准库,展示并发与协议边界;队列和去重记录都在内存中,重启会丢失,不能代替可靠消息系统。 ...
接口契约描述客户端可以依赖什么:请求字段、身份、成功结果、错误、重试方式以及版本变化。只列一个 URL 和 JSON 示例,无法回答“响应丢了以后能不能重发”。先读网络与 HTTP 基础,再把协议语义落实到服务行为。 ...
并发让多个任务在时间上重叠,吞吐能否提高还取决于 CPU、数据库连接、网络和任务依赖。开一万个线程或 goroutine,只是把等待搬到别处;如果数据库只能处理几十个并发查询,其余任务仍占用内存和请求预算。 ...
单进程函数失败时,调用者往往能看到异常;跨网络调用超时后,调用者却不知道对端是否完成。分布式设计的起点是部分失败:一部分节点仍在工作,另一些通信中断,而不同节点看到的状态可能不同。 ...
服务测试不止检查“请求返回 200”。预约返回成功但库存扣了两次,或者越权用户看到他人记录,都是状态与边界错误。先列不变量,再选能观察它的测试层级。通用测试与调试介绍证据与最小复现,这里关注跨 HTTP、数据库和并发的服务行为。 ...
这条路线组织 Java 和 Go 都需要的后端知识。知识点正文只有一份;语言练习分别进入 Java/Spring 路线与 Go 服务路线。不必同时学完两门语言才开始实践。 先确认基础 能写函数、读写结构化数据并使用命令行;不熟悉 HTTP、进程线程或关系数据时,先完成第一阶段。每个阶段的节点可直接跳到正文,正文里的前置项用来发现还缺哪块基础。 ...
缓存保存可以重新获得的数据,用额外复杂度换取较低的读取成本。设计前先回答三个问题:允许旧多久、缓存不可用时怎样降级、哪些数据不能只放缓存。库存余额和支付状态通常仍以数据库中的受约束事实为准,不能把缓存命中当作强一致性的证据。 ...