Graceful shutdown cho HTTP server Go
Tắt HTTP server Go an toàn với signal.NotifyContext và http.Server.Shutdown, xử lý timeout, WebSocket, tài nguyên phụ và Kubernetes.
Tắt HTTP server Go an toàn với signal.NotifyContext và http.Server.Shutdown, xử lý timeout, WebSocket, tài nguyên phụ và Kubernetes.
Hướng dẫn dùng encoding/json trong Go, từ Marshal/Unmarshal, struct tag, Encoder/Decoder đến kiểu tuỳ biến, kèm test và các lỗi hay gặp.
Cách xây dựng worker pool trong Go bằng channel, sync.WaitGroup, context và errgroup để xử lý song song có giới hạn, có hủy và có kiểm thử.
Go không có kế thừa. Bài này giải thích struct embedding, cách method được "thăng cấp", bẫy ghi đè method và cách kết hợp embedding với interface.
Hiểu cơ chế defer, panic, recover trong Go, các bẫy hay gặp, và khi nào nên trả về error thay vì panic.
Hướng dẫn dùng pprof để thu và đọc profile CPU, heap, goroutine, block, mutex trong ứng dụng Go, từ HTTP service tới benchmark.
Tìm hiểu cách map trong Go hoạt động, vì sao chương trình crash với "concurrent map writes" và các cách sửa bằng sync.Mutex, sync.RWMutex, sync.Map.
Hiểu cách slice dùng chung mảng bên dưới, vai trò của len và cap, và cách tránh các lỗi ghi đè dữ liệu khó phát hiện khi dùng append.
Hướng dẫn dùng Go modules để khởi tạo project, thêm và nâng cấp dependency, xử lý major version, replace, go.work và module private.
Cách viết table-driven test trong Go với slice struct, t.Run, kiểm tra lỗi, chạy song song và so sánh struct bằng go-cmp, kèm các lỗi hay gặp.
Dùng sync.WaitGroup để chờ goroutine, sync.Mutex để tránh data race và errgroup để gom lỗi, hủy bằng context và giới hạn số goroutine.
Học cách dùng type parameter, constraint, ký hiệu ~ và kiểu generic trong Go qua ví dụ Order, Customer, Stack và Cache.
Dùng ServeMux của Go 1.22 để khớp method, đọc path parameter và trả JSON. Bạn sẽ có một REST API hoàn chỉnh mà không cần router bên thứ ba.
Interface trong Go được thỏa mãn ngầm định. Bài viết hướng dẫn cách giữ interface nhỏ, đặt chúng ở phía sử dụng, test bằng fake và tránh lỗi nil interface.
Cách wrap lỗi bằng %w, kiểm tra lỗi qua chuỗi wrap với errors.Is, lấy lỗi tùy biến bằng errors.As, gộp lỗi với errors.Join và các lỗi hay gặp.
Tìm hiểu cách dùng context.Context trong Go để kiểm soát timeout, deadline, cancel goroutine và truyền giá trị request-scoped một cách an toàn.
Goroutine leak không crash ngay mà âm thầm ngốn RAM theo thời gian. Bài viết chỉ ra nguyên nhân phổ biến, cách phát hiện và fix triệt để.
Tìm hiểu cách Go xử lý concurrency qua goroutine và channel, từ cơ bản đến các pattern thực chiến như WaitGroup, select và context.