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

Finalizer trong Go: vì sao runtime.SetFinalizer là công cụ nguy hiểm, đo thật cạm bẫy

SetFinalizer đăng ký hàm chạy khi object thành rác, nghe tiện để dọn tài nguyên nhưng đầy cạm bẫy. Đo thật: finalizer chỉ chạy sau GC (0 trước), bất đồng bộ (9998/10000), giữ object sống thêm một chu kỳ GC (19MB vs 0MB), và KHÔNG chạy nếu chương trình thoát trước GC. Go 1.23.

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

SSA trong compiler Go: xem tận mắt 50 pha biến hàm của bạn thành 3 lệnh

SSA là biểu diễn trung gian nơi mọi tối ưu compiler diễn ra. Đo thật với GOSSAFUNC: một hàm 2 phép cộng, 1 phép nhân và nhánh chết đi qua 50 pha (regalloc và lower đắt nhất) rồi co xuống còn 3 lệnh — CSE gộp biểu thức trùng, DCE xoá nhánh chết, strength reduction đổi nhân thành dịch bit. Go 1.23.

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

Encoding nhị phân tùy biến trong Go: nhỏ hơn và nhanh hơn JSON

JSON là văn bản tự mô tả — lặp tên field, số là chuỗi ASCII, phải phân tích cú pháp khi đọc. Với dữ liệu nội bộ nóng, một định dạng nhị phân tùy biến gọn và nhanh hơn nhiều. Đo thật trong Go: 100k bản ghi, binary nhỏ hơn 2.3 lần, mã hóa nhanh 4 lần, giải mã nhanh 9 lần — cùng đánh đổi và rủi ro.

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

Map evacuation trong Go: mở rộng map mà không gây khựng, đo tận nanosecond

Khi map quá đầy, số bucket phải gấp đôi và mọi entry phải chuyển chỗ. Làm một lần sẽ khựng O(n). Đo thật: chèn 2 triệu entry, insert chậm nhất chỉ 0.6 ms — nhỏ hơn 330 lần so với 200 ms nếu chuyển hết một lần. Cơ chế evacuation tăng dần và load factor 6.5. Go 1.23.

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

Chiến lược tăng trưởng slice trong Go: nhân đôi rồi giảm dần về 1.25x

Khi append vượt cap, Go cấp mảng nền mới lớn hơn — nhưng nhân theo hệ số nào? Đo thật tiến trình cap: slice nhỏ nhân đôi (x2.00 tới cap 512), rồi giảm dần về ~1.25x cho slice lớn (1.66 1.51 1.40 1.33). Vì sao đổi hệ số và tại sao prealloc vẫn thắng. 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í.