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 22/09/2026 7 phút

Serialization và tiến hoá schema trong Kafka: vì sao Avro nhỏ hơn JSON 2,4 lần và không làm vỡ consumer

Kafka chỉ chuyển byte — cách bạn mã hoá message quyết định băng thông, dung lượng và cả khả năng nâng cấp hệ thống. Bài này đo thật trong go-lab: cùng một bản ghi, JSON 88 byte, gob 115 byte, Avro chỉ 36 byte. Rồi chứng minh schema evolution bằng Avro resolution: thêm field có default đọc được dữ liệu cũ (channel lấy web), nhưng đổi kiểu double sang string bị từ chối ngay. Hiểu vì sao Schema Registry là bắt buộc khi nhiều team dùng chung topic.

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

Heap và bài toán top-k: vì sao lấy 10 phần tử lớn nhất lại nhanh hơn sắp xếp 247 lần

Cần 10 phần tử lớn nhất từ 8 triệu? Sắp xếp cả mảng rồi lấy 10 đầu là cách ai cũng nghĩ tới — và là cách sai. Bài này đo thật trong go-lab: min-heap size k lấy top-10 trong 4,3 ms, còn full sort mất hơn 1 giây — nhanh hơn 247 lần. Kèm cơ chế heap làm hàng đợi ưu tiên với Push/Pop O(log n), nền tảng của Dijkstra và lập lịch.

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.

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

Tổng kết sê-ri Kafka: khi nào nên dùng, khi nào đừng, và checklist vận hành đúc kết từ 11 bài đo thật

Mười một bài, hàng chục phép đo thật trên lab — giờ gộp lại thành thứ dùng được. Bài tổng kết này so Kafka với RabbitMQ và hàng đợi trên database để biết khi nào Kafka là đúng công cụ (và khi nào nó chỉ thêm gánh nặng), một cây quyết định có nên dùng Kafka không, và một checklist vận hành production ánh xạ về từng bài: partition, replication, acks, offset, lag, retention, compaction, schema, outbox.

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

Map evacuation trong Go: mở rộng map mà không gây khựng, đo tận nanosecond

Khi map quá đầy, số bucket phải gấp đôi và mọi entry phải chuyển chỗ. Làm một lần sẽ khựng O(n). Đo thật: chèn 2 triệu entry, insert chậm nhất chỉ 0.6 ms — nhỏ hơn 330 lần so với 200 ms nếu chuyển hết một lần. Cơ chế evacuation tăng dần và load factor 6.5. Go 1.23.