Kỹ thuật "Hollow" là gì?
Last updated: August 26, 2025 Xem trên toàn màn hình



- 03 May 2019
Business Rule là gì? 889
- 04 Jan 2023
Phát triển phần mềm linh hoạt theo mô hình Big Bang 590
- 01 Feb 2023
Information Radiator là gì? 578
- 18 May 2021
Cây cầu hiện đại vô dụng nhất thế giới và câu chuyện cái kết của thay đổi yêu cầu 525
- 03 Mar 2020
Giả định (Assumption ) là gì? Tại sao giả định rất quan trọng với dự án? 427
- 03 May 2022
Mô hình Hybrid Agile là gì? 409
- 01 May 2022
Có thể xác định vị trí địa lý của địa chỉ IP với độ chính xác đến từng địa chỉ con phố? 397
- 18 Mar 2021
Kỹ thuật ước lượng dự án phần mềm linh hoạt dựa vào Story Point - phương pháp T-Shirt Sizing 385
- 02 Aug 2023
Tổng hợp một số project tham khảo khi xây dựng các ứng dụng theo mô hình Microservices 329
- 20 Jul 2021
Quản lý và đánh giá công việc theo quy trình TIGO SmartWork 311
- 02 Aug 2021
Product Owner làm gì trước khi bắt đầu sprint đầu tiên của dự án (Sprint Zero)? 306
- 29 May 2022
Templafy là gì? Tại sao nói Templafy là nền tảng tài liệu thế hệ mới? 303
- 01 May 2021
Unit Test là gì? 300
- 01 Aug 2023
Phân tích yêu cầu phần mềm sẽ nhìn vào thực trạng (AS-IS) hay tương lai (TO-BE)? 297
- 14 Apr 2019
Product Backlog là gì? Các đặc điểm cơ bản của một Product Backlog 283
- 28 Jun 2024
Tại sao các kỹ sư IT giỏi nhất lại là những người theo thuyết bất khả tri về công nghệ (technology agnostics)? 259
- 04 Sep 2023
Giải mã nhóm tính cách (ISTP - Nhà kỹ thuật) 213
- 08 Jan 2022
Yêu cầu thay đổi (Change Request) là gì? Làm thế nào để kiểm soát Change Request? 192
- 07 Jan 2025
Phân biệt Proxy, HMA và VPN 179
- 16 Oct 2020
Thiết kế "mở" là gì? 177
- 10 May 2021
Phát triển Phần mềm Tinh gọn (Lean Software Development) 176
- 08 Feb 2021
Quy trình nâng cấp phần mềm quản trị doanh nghiệp TIGO ERP 162
- 21 May 2024
Hiệu ứng chữ động (kinetic typography) là gì? 159
- 24 Mar 2019
Scrum giống như bà mẹ chồng, giúp bạn nhìn ra các lỗi sai 154
- 14 Dec 2022
Phương pháp kiểm tra Fagan Inspection là gì? 152
- 21 Apr 2020
Bảo trì phần mềm là gì? Phân biệt các loại bảo trì 141
- 28 Feb 2023
Đừng biến phần mềm thành công việc bàn giấy hay một "tờ sớ" dài vô tận 119
- 22 Jul 2020
Quản lý dự án phần mềm trong thực tế và câu chuyện thành công của InfoSys 86
- 04 Mar 2025
So sánh các giải pháp Sales Loft, Power BI và Salesforce 40
- 29 Jul 2023
Giải mã 10 "Pain Points" của Big Data: Khi "mỏ vàng dữ liệu" vẫn không thể khai thác 29
- 09 Aug 2023
"Loop unrolling" là gì? 26
- 29 Aug 2023
"Function inlining" là gì? 24
- 16 Apr 2025
Thuật ngữ cơ bản và nâng cao trong thiết kế UI/UX 18
- 30 Apr 2024
Web3 là gì? Tại sao nói Web3 là nền tảng để Blockchain thay đổi Internet? 16
- 01 Nov 2022
MVF (Minimum Viable Features): Tối ưu tính năng trong giới hạn nguồn lực 15
Thuật ngữ “hollow list” thực sự xuất hiện trong một số bài viết kỹ thuật nâng cao, đặc biệt là trong ngữ cảnh của thư viện Hollow do Netflix phát triển. Hollow là một thư viện Java được thiết kế để xử lý và lưu trữ dữ liệu trong bộ nhớ một cách hiệu quả, đặc biệt là đối với các tập dữ liệu không thuộc loại "big data".
Hollow là gì?
Hollow là một thư viện Java được thiết kế để xử lý và lưu trữ dữ liệu trong bộ nhớ một cách hiệu quả, đặc biệt là đối với các tập dữ liệu không thuộc loại "big data". Nó cho phép bạn lưu trữ và truy xuất dữ liệu theo cách tối ưu về bộ nhớ và hiệu suất.
Trong Hollow, một HollowList là một lớp cung cấp triển khai của giao diện List
trên một bản ghi LIST trong một tập dữ liệu Hollow. Điều này có nghĩa là bạn có thể sử dụng HollowList để truy xuất và quản lý các phần tử trong danh sách dữ liệu của mình một cách hiệu quả.
Kỹ thuật Hollow trong lập trình
Kỹ thuật Hollow trong lập trình thường liên quan đến việc sử dụng thư viện Hollow để quản lý và xử lý dữ liệu trong bộ nhớ. Điều này bao gồm việc sử dụng các cấu trúc dữ liệu như HollowList để lưu trữ và truy xuất dữ liệu một cách hiệu quả.
1. Sparse Array (mảng thưa / mảng rỗng)
- Là một mảng hoặc danh sách mà nhiều phần tử không có giá trị (undefined, null).
- Các ngôn ngữ lập trình thường có hỗ trợ trực tiếp:
- JavaScript:
let arr = new Array(10); // mảng 10 phần tử rỗng
- Python:
[None]*10
hoặc dictionary để tạo sparse array.
- JavaScript:
- Mục đích: tiết kiệm bộ nhớ, đặc biệt với các mảng rất lớn.
2. Lazy-Loaded List (danh sách tải chậm / tải theo nhu cầu)
- Là kỹ thuật chỉ nạp dữ liệu vào danh sách khi thực sự cần.
- Thường dùng trong:
- UI: infinite scroll, virtual list.
- API/Database: chỉ load record khi user request.
- Giúp tăng hiệu năng và giảm thời gian khởi tạo.
3. So sánh Sparse Array và Lazy-Loaded List
Bảng so sánh giữa Sparse Array và Lazy-Loaded List, kèm ví dụ trong Python và JavaScript để bạn dễ hình dung:
Tiêu chí | Sparse Array | Lazy-Loaded List |
---|---|---|
Khái niệm | Mảng/danh sách có nhiều phần tử rỗng hoặc undefined/null. | Danh sách/dữ liệu chỉ nạp khi cần, không tải tất cả ngay từ đầu. |
Mục đích | Tiết kiệm bộ nhớ khi mảng rất lớn nhưng nhiều phần tử không dùng. | Tối ưu hiệu năng, giảm thời gian khởi tạo, chỉ load dữ liệu cần thiết. |
Bộ nhớ | Chiếm ít bộ nhớ hơn mảng đầy đủ, nhưng vẫn lưu trữ cấu trúc slots. | Có thể chiếm rất ít bộ nhớ ban đầu, tăng dần khi load thêm dữ liệu. |
Hiệu năng | Truy xuất phần tử rỗng nhanh, nhưng thao tác trên nhiều phần tử rỗng không có giá trị. | Truy xuất lần đầu chậm hơn (phải load dữ liệu), các lần sau nhanh hơn (đã cache). |
Ứng dụng phổ biến | Biểu diễn dữ liệu thưa (sparse matrices, dữ liệu thiếu). | Infinite scroll, virtual list trong UI, lazy fetch từ API/database. |
