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

Đọc panic trace và runtime.Stack trong Go: mổ xẻ từng dòng để chẩn đoán crash

Panic trace không phải chữ đỏ đáng sợ mà là bản đồ đầy đủ để tìm bug. Bài này mổ xẻ từng phần: số hiệu goroutine, trạng thái [running]/[chan receive]/[sync.Mutex.Lock], ngăn xếp đọc từ đâu, tham số hex, tín hiệu SIGSEGV — và dùng runtime.Stack chụp mọi goroutine. Đo thật trong Go 1.23.

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

Write barrier trong Go: cái giá ẩn của GC đồng thời, đo tận assembly

GC chạy song song với chương trình bắt buộc phải có write barrier, nếu không sẽ thu nhầm object sống. Đo thật: assembly cho thấy ghi con trỏ có gcWriteBarrier còn ghi số thì không, và ghi con trỏ chậm 2.8 lần (0.636 vs 0.226 ns) vì kiểm cờ barrier. Bất biến tricolor và chi phí thật. Go 1.23.

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

DDD tactical patterns trong Go: value object, entity, aggregate — và cách Go thể hiện chúng

Domain-Driven Design tactical patterns — value object, entity, aggregate — có cách thể hiện riêng trong Go nhờ value semantics của struct. Đo thật trong Go 1.23: value object so theo giá trị bằng ==, entity so theo ID, aggregate root ép bất biến, và struct comparable làm map key miễn phí.