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 11 phút

Integration test với testcontainers trong Go: dựng dịch vụ thật trong Docker

Mock chỉ giả lập hành vi bạn nghĩ dịch vụ có; bug thật nằm ở khác biệt với dịch vụ thật. testcontainers-go dựng database/Redis thật trong Docker ngay trong test rồi tự dọn. Đo thật: code testcontainers biên dịch sạch, và một integration test thật chống Redis (không mock) pass — kèm báo cáo trung thực về yêu cầu Docker socket.

Bảo mật 22/09/2026 6 phút

Xoay khoá mà không mã hoá lại cả kho: bao khoá (envelope encryption) và key-id

Đổi khoá mã hoá thì phải giải mã rồi mã hoá lại hàng triệu bản ghi? Không. Bài này dựng demo thật bằng python: mô hình bao khoá KEK bọc DEK, mỗi bản ghi lưu kèm kek_id. Xoay khoá chỉ cần re-wrap DEK vài chục byte, dữ liệu giữ nguyên; dữ liệu cũ vẫn giải được; và chỉ thu hồi khoá cũ sau khi mọi bản ghi đã chuyển.

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

Quicksort, mergesort hay sort.Ints? Đo thật bốn cách sắp xếp và ba điều bất ngờ

O(n²) chậm hơn O(n log n) — ai cũng biết. Nhưng đo thật trong go-lab cho thấy nhiều thứ sách không nói: insertion sort O(n²) lại NHANH HƠN quicksort tự viết ở N=1.000; quicksort tự viết thua mergesort vì cấp phát bộ nhớ; và sort.Ints của thư viện chuẩn (introsort) đánh bại mọi bản tự viết. Cài đặt quan trọng ngang độ phức tạp.