Bài viết mới nhất

Tổng 2300 bà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.

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

Mocking với gomock và mockgen trong Go: sinh mock tự động từ interface

Mock cô lập đơn vị khỏi phụ thuộc: một cài đặt giả của interface mà bạn khai hành vi mong đợi. gomock còn verify — đúng lời gọi, đúng đối số, đúng số lần. Đo thật: mockgen sinh mock từ interface, 3 test qua mock pass, và gomock bắt lời gọi sai đối số (kỳ vọng 200 mà code gọi 100).

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

Hexagonal (ports và adapters) trong Go: lõi ở giữa, đổi adapter không đụng lõi

Kiến trúc Hexagonal đặt lõi nghiệp vụ ở trung tâm với ports hai phía: driving (lõi cung cấp) và driven (lõi cần). Đo thật trong Go 1.23: đổi adapter gửi thông báo từ email sang SMS mà lõi không đổi một dòng, lõi cô lập hoàn toàn, và test lõi bằng spy không cần I/O thật.

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

govulncheck trong Go: quét lỗ hổng theo cái code thực sự gọi tới

Scanner thường báo động mọi phụ thuộc dính CVE dù code không dùng hàm lỗi — ngập trong cảnh báo giả. govulncheck phân tích call graph, chỉ báo lỗ hổng code thực sự gọi tới, kèm đường dẫn gọi chính xác. Đo thật: 3 lỗ hổng yaml.v2 code gọi tới (kèm trace + phiên bản vá) so với 42 chỉ-có-không-gọi.

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

Closure trong Go biểu diễn thật thế nào: khi nào miễn phí, khi nào tốn 2 cấp phát

Một func value là con trỏ tới {con trỏ mã, các biến bắt}. Đo thật: closure dùng tại chỗ 0 cấp phát dù bắt biến, nhưng bắt biến rồi trả ra tốn 24 B và 2 cấp phát; gọi qua con trỏ hàm ~2x gọi trực tiếp. Đọc assembly thanh ghi ngữ cảnh. Go 1.23.