Tất cả chặng (3 chặng)
Các chặng độc lập, bắt đầu từ chặng nào cũng được — mỗi chặng link thẳng vào bài học trên OLHub.
Phân cấp bộ nhớ và độ trễ
Đã có bàiĐọc RAM mất ~100 ns, chậm gấp ~100 lần cache L1 (~1 ns) — nên mọi hệ thống đều giữ dữ liệu nóng ở tầng gần hơn.
Vì sao có cache — và những con số độ trễ nên nhớ · Bộ nhớSpring Cache — một annotation, một proxy, ba cái bẫy · Spring Production-ReadyCaching, CDN & proxy — đưa nội dung tới gần user · TCP, HTTP & Web cho BackendTại sao cần index — full scan 800ms vs index scan 0.2ms · SQL & Database — Tư tưởng & Nguyên lýMini-challenge — Implement LRU Cache thủ công không dùng LinkedHashMap · Thuật toán Căn bản — Big-O & Cấu trúc tuyến tínhTuần tự thắng ngẫu nhiên
Đã có bàiCùng 1 GB trên HDD: đọc tuần tự ~10 giây, đọc ngẫu nhiên từng khối 4 KB hơn 43 phút — đĩa tính phạt theo lần nhảy chỗ, không theo byte.
Tuần tự vs ngẫu nhiên — cùng 1 GB, chênh trăm lần · I/O, Lưu trữ & Tài nguyênWAL trong PostgreSQL — vì sao COMMIT chỉ cần ghi log · PostgreSQL — Schema, Index & InternalsB-tree vs LSM-tree — hai triết lý lưu trữ index · SQL & Database — Tư tưởng & Nguyên lýLSM-tree & SSTable — cơ chế bên trong engine ghi-nhiều · SQL & Database — Tư tưởng & Nguyên lýLog-based broker — Kafka, offset, và log chỉ append · Hệ thống Dữ liệu Phái sinhHàm băm: từ khoá tới chỉ số
Đã có bàiHàm băm đổi key thành chỉ số bucket nên tra cứu O(1) thay vì quét cả n phần tử; hàm băm kém có thể dồn 80% key vào một bucket, khi đó lookup tụt về O(n).
Hash function — Uniform, avalanche, và hashCode/equals contract · Thuật toán Cốt lõi — Tìm kiếm, Sắp xếp & Đồ thịHashMap internals — bucket array, separate chaining và resize · Java Internals & ConcurrencyHash index và bức tranh các loại index · SQL & Database — Tư tưởng & Nguyên lýPartition theo key-range vs hash — và bài toán hot spot · Hệ thống Dữ liệu Phân tánConsistent hashing & rebalancing — thêm/bớt node ít xáo trộn · Hệ thống Dữ liệu Phân tán