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.

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

Build tags trong Go: một mã nguồn, nhiều binary theo điều kiện biên dịch

Build tags cho phép chọn tệp nào được biên dịch theo hệ điều hành, kiến trúc, hoặc cờ tùy biến. Đo thật trong Go 1.23 hai cơ chế: chỉ thị //go:build với biểu thức logic, và hậu tố tên tệp _GOOS.go — cùng go list chứng minh chính xác tệp nào lọt vào build.

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

Bloom filter tự cài trong Go: kiểm "có thể có" bằng vài bit

Bloom filter là cấu trúc xác suất trả lời phần tử có thể có trong tập hay chắc chắn không — chỉ bằng một mảng bit và k hàm băm, không lưu phần tử. Đo thật khi tự cài trong Go: 1 triệu phần tử, 0 âm tính giả, dương tính giả đúng 1% như thiết kế, và bộ nhớ 1.20 MB so với 56.1 MB của set thường.

Web 22/09/2026 5 phút

Một request HTTP đi qua dây cáp: thực ra chỉ là text gõ đúng khuôn trên TCP

Nhiều người dùng HTTP mỗi ngày qua thư viện mà chưa từng thấy một request thô trông thế nào. Sự thật đơn giản đến bất ngờ: HTTP là vài dòng text kết thúc bằng CRLF, gửi qua một socket TCP. Bài này xem thô bằng curl --trace-ascii, rồi tự gõ tay một request bằng socket Python không dùng thư viện HTTP nào — và server vẫn trả lời.

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

Bounds check elimination trong Go: đo thật và vì sao chiêu reslice có thể phản tác dụng

Mỗi truy cập slice phải kiểm biên để an toàn bộ nhớ; compiler xoá check khi chứng minh được chỉ số hợp lệ. Đo thật: vòng range và i<len(xs) đã 0 check sẵn, nhưng check biên hiện đại rất rẻ (~0,05 ns) — và chiêu reslice để gợi ý BCE ở đây còn chậm hơn. Go 1.23.