Q

Quản trị viên

Là một lập trình viên yêu công nghệ, thích viết blog để chia sẻ kiến thức, kinh nghiệm lập trình và những điều thú vị trong thế giới tech.

2324 bài viết · Website
Lập trình Go 22/09/2026 11 phút

False sharing trong Go: hai biến không liên quan mà làm chậm nhau 30 lần

Tám goroutine tăng tám counter riêng, không chia sẻ dữ liệu — nhưng chậm 30 lần vì chúng nằm chung một cache line. Đo thật: 830 ms so với 27.5 ms sau khi chèn đệm để mỗi counter chiếm một cache line 64 byte. Cơ chế cache coherency và khi nào cần thêm padding. Go 1.23.

Lập trình 22/09/2026 7 phút

Error model của gRPC: status code chuẩn và details có cấu trúc thay cho chuỗi lỗi mơ hồ

Trả về error là một chuỗi text thì client phải đoán xem có nên retry không, lỗi do input hay do server. gRPC có bộ status code chuẩn giải quyết điều đó. Bài này chạy thật: server trả InvalidArgument kèm details có cấu trúc (field nào sai), NotFound, và OK; client đọc code để quyết định tự động — retry với Unavailable, bỏ với InvalidArgument. Code là ngôn ngữ chung máy hiểu, hơn hẳn một dòng text.

Lập trình Go 22/09/2026 10 phút

Plugin architecture trong Go: package plugin (.so) vs registry, và vì sao Go ít nạp động

Go có hai lối làm plugin: package plugin nạp .so lúc chạy, và registry pattern biên dịch tĩnh tự đăng ký qua init(). Đo thật trong Go 1.23: nạp .so thành công nhưng ràng buộc khắc nghiệt (chỉ Linux/macOS, cùng phiên bản), còn registry cho một binary tĩnh gọn và di động — lý do đa số Go chọn nó.