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
Bảo mật 22/09/2026 5 phút

RSA: mã hóa bất đối xứng — hai khóa, và vì sao không mã được dữ liệu lớn

AES mã nhanh nhưng cả hai bên phải chung một khóa bí mật — làm sao trao khóa qua mạng không lộ? RSA giải: mỗi người một cặp khóa công khai + riêng. Bài này đo thật bằng openssl: ai cũng mã bằng khóa công khai, chỉ khóa riêng giải được; giải sai khóa thất bại; và giới hạn cốt tử — RSA chỉ mã được vài trăm byte nên thực tế dùng mã hóa lai.

Web 22/09/2026 5 phút

HTTP/3 và QUIC: vì sao web bỏ TCP sang UDP — và điều nó sửa mà HTTP/2 không

HTTP/2 multiplex nhiều luồng trên một kết nối TCP, nhưng mất một gói TCP là mọi luồng bị giữ lại (TCP head-of-line blocking). HTTP/3 chạy trên QUIC (UDP) để mỗi luồng độc lập ở tầng vận chuyển. Bài này đo thật: curl lab không có h3 (báo trung thực), site thật quảng cáo h3 qua Alt-Svc, và chi phí bắt tay TCP+TLS hai vòng mà QUIC gộp còn một.

Công cụ 22/09/2026 5 phút

Git hooks: tự động kiểm tra trước commit/push — và vì sao hook không clone theo

Git có thể tự chạy script của bạn ở mỗi commit, mỗi push — chặn code lỗi, ép định dạng message, chạy test trước khi push. Bài này đo thật bằng git 2.39: pre-commit chặn commit chứa TODO, commit-msg bắt buộc mã ticket, và cái bẫy lớn nhất — hook nằm trong .git nên không clone theo, đồng đội không có.

Kiến trúc hệ thống 22/09/2026 6 phút

Stripe idempotency key: vì sao retry thanh toán không tính tiền bạn hai lần

Mạng chập chờn khiến client retry — và với thanh toán, retry ngây thơ nghĩa là tính tiền hai lần. Stripe giải bằng Idempotency-Key: lưu kết quả lần đầu, request trùng key trả lại kết quả cũ mà không thực thi lại. Bài này dựng THẬT trên Redis bằng Lua atomic và đo: có idempotency trừ tiền 1 lần, không có thì 5 lần.