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

Generics vs interface trong Go: chi phí thật nằm ở stencil và dictionary

Generics của Go dùng GC shape stenciling: kiểu giá trị sinh mã riêng, mọi con trỏ chung một stencil và phân biệt bằng dictionary lúc chạy. Đo thật trong Go 1.23 bằng benchmark bốn đường thực thi và soi bảng ký hiệu — 4 kiểu chỉ sinh 3 bản mã, generic method nhanh gần gấp đôi interface.

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í.

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

Mức nén gzip -1 tới -9: vì sao mặc định -9 thường là lãng phí

Ai cũng từng gõ gzip -9 nghĩ 'nén tối đa'. Nhưng bài này đo thật trên 11MB log: từ gzip -6 lên -9 chỉ nhỏ hơn 7% mà chậm gấp 3.5 lần; zstd còn kịch tính hơn — từ -9 lên -19 nhỏ hơn 17% nhưng chậm gấp 36 lần. Đây là luật lợi ích giảm dần, và cách chọn mức nén theo cách dùng thay vì mặc định lấy mức cao nhất.