vault backup: 2026-05-18 18:44:01

This commit is contained in:
hhs
2026-05-18 18:44:01 +08:00
parent cebab9d7cf
commit 0a9f6f72d1
37 changed files with 6674 additions and 0 deletions
+20
View File
@@ -56,6 +56,26 @@ func main() {
}
```
> **为什么必须用 goroutine?**
> `ListenAndServe()` 是**永久阻塞**调用——它会一直 accept 连接,永不返回。
> 如果直接放在 `main()` 中执行,后面的信号监听和 Shutdown 逻辑永远走不到:
>
> ```
> main()
> ├─ srv.ListenAndServe() ← 阻塞!永不返回
> ├─ <-quit ← 永远不会执行 ❌
> └─ srv.Shutdown() ← 永远不会执行 ❌
> ```
>
> 放进 goroutine 后,"服务运行"和"信号监听"两个任务并行:
>
> ```
> main() 主协程
> ├─ [goroutine] srv.ListenAndServe() ← 后台阻塞,不挡路
> ├─ <-quit ← ✅ 正常阻塞等待信号
> └─ srv.Shutdown() ← ✅ 收到信号后执行
> ```
**流程图:**
```mermaid