Memory lãng phí của map trong Golang

Trong Golang, map là một kiểu dữ liệu built-in và rất thường xuyên được sử dụng, đặc biệt là trong caching in memory. Tuy nhiên, nếu chúng ta không để ý trong việc sử dụng map thì chúng ta rất dễ làm tăng RAM khi ứng dụng của chúng ta chạy một khoảng thời gian dài. Vậy lý do là gì? Tình huống Giả sử chúng ta có một map với key là int và value là một mảng byte có kích thước là 128. ...

28/06/2026

Hướng dẫn setup Dev Container cho mọi dự án

Mệt mỏi vì cảnh “máy tôi chạy được nhưng máy anh lại lỗi”? Khám phá cách cấu hình Dev Container để đồng nhất môi trường phát triển (Go, Docker, DB) cho cả team, giúp thành viên mới onboard dự án chỉ trong một cú click. Dẫn nhập Tôi không biết mọi người giống như tôi không? Thông thường khi bắt đầu dev một dự án mới hay cài lại hệ điều hành (Ubuntu) thì tôi phải đối mặt với hàng tá thứ để setup môi trường chạy: ...

23/05/2026

Go Memory Allocation là gì? Cách Go quản lý bộ nhớ và tối ưu RAM

Khám phá cách Go quản lý bộ nhớ và các kỹ thuật tối ưu hóa giúp tiết kiệm RAM, tăng hiệu năng. Trong việc lập trình, đặc biệt là Go, thông thường ta sẽ không để ý quá nhiều khi khởi tạo biến, do Go đã có trình thu gom rác tự động rồi. Dần dà, ta không còn quan tâm đến việc liệu khởi tạo biến có gây áp lực lên trình dọn rác của Go hay không? Biến nào sẽ được lưu trên stack? Biến nào thì lưu trên heap? Liệu sự vô tâm của ta có làm lãng phí tài nguyên hệ thống hay không? ...

22/03/2026

Memory Alignment là gì?

Trong Go, size thực tế của struct không chỉ là tổng size các field. Compiler sẽ chèn padding để bảo đảm memory alignment, nên thứ tự khai báo field có thể làm tổng size thay đổi. Sắp xếp field hợp lý giúp giảm lãng phí bộ nhớ và đôi khi cải thiện hiệu quả cache. Dẫn nhập Ta có bao giờ để ý tới size của class và struct chưa? Giả dụ ta có struct S như sau, bạn đọc đoán xem size của struct S là bao nhiêu? ...

18/03/2026