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

unsafe.Pointer trong Go: bốn mẫu chuyển đổi hợp lệ, và quy tắc uintptr sống còn

unsafe.Pointer cho phép gạt kiểu an toàn sang bên, nhưng chỉ vài mẫu chuyển đổi là hợp lệ và được runtime bảo đảm. Đo thật trong Go 1.23: các mẫu đúng chạy sạch, go vet bắt mẫu sai lưu uintptr vào biến, và chuyển []byte sang string không sao chép nhanh gấp 136 lần.

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

mTLS: khi server cũng đòi client trình chứng chỉ — xác thực hai chiều tận tầng TLS

HTTPS thường chỉ có client xác minh server. mTLS lật thêm một nửa: server cũng bắt client trình chứng chỉ hợp lệ. Bài này tự dựng một CA nội bộ bằng openssl, ký cert cho server và client, rồi đo output thật ba tình huống: client hợp lệ bắt tay thành công, client không cert bị từ chối, và client giả cùng tên nhưng CA khác cũng bị chặn — vì danh tính đến từ chữ ký CA, không phải cái tên.

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.

Cơ sở dữ liệu 22/09/2026 7 phút

Nạp dữ liệu lớn vào PostgreSQL: vì sao bỏ index rồi tạo lại nhanh gần gấp đôi

Mỗi index phải cập nhật theo từng dòng chèn, nên nạp khối lượng lớn vào bảng đã đầy index rất chậm. Đo thật: nạp 3 triệu dòng với 4 index sẵn mất 12,6 giây; bỏ index thứ cấp rồi tạo lại sau khi nạp chỉ 7 giây và bảng còn nhỏ hơn. Và một điểm bất ngờ về maintenance_work_mem. PostgreSQL 16.

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

Property-based testing trong Go: khẳng định tính chất, để máy tìm phản ví dụ

Test ví dụ kiểm từng cặp input-output cụ thể; property-based testing khẳng định một tính chất đúng với mọi input rồi để máy sinh hàng vạn input tìm phản ví dụ. Đo thật trong Go với testing/quick: bất biến sắp xếp qua 100k input, và round-trip lộ bug logic khi list rỗng ra [0] — thứ fuzzing trần bỏ lọt.