Skip to content

Tất cả các Pattern

46 pattern đã được chứng minh trong production, phân theo nhóm. Mỗi cái đều có trực quan hoá tương tác, triển khai đa ngôn ngữ, bài tập và liên kết nguồn chính xác.

Cấu trúc dữ liệu

PatternMô tả ngắnNguồn
BitmaskNhồi N flag vào một số nguyên, kiểm tra mọi tổ hợp O(1)React, Linux
Min HeapPeek phần tử ưu tiên cao nhất O(1), push/pop O(log n)React, Linux CFS
Ring BufferFIFO kích thước cố định, vòng quanh, không cấp phátLMAX, Linux
TrieTra cứu prefix O(k), các prefix chung dùng chung nodeLinux FIB, Redis
Skip ListCấu trúc sắp xếp O(log n) theo xác suấtRedis, LevelDB
Bloom FilterThành viên tập theo xác suất, không âm tính giảLevelDB, Chromium
LRU CacheLoại bỏ cái ít dùng nhất, get/put O(1)groupcache, Linux
B+ TreeCây branching cao, lá liên kết để quét theo khoảngPostgreSQL, SQLite
Tagged UnionTag kiểu + union cho dispatch đa kiểu an toànGodot, PyTorch
Merkle TreeHash lên trên cho bằng chứng toàn vẹn O(log n)Git, ZFS
Merge IteratorGộp K-luồng qua min-heapLevelDB, RocksDB

Concurrency

PatternMô tả ngắnNguồn
SemaphoreBộ đếm giới hạn truy cập đồng thờiLinux, Go
Actor ModelState riêng + mailbox, không bộ nhớ chungAkka, Erlang
Work StealingThread rảnh lấy việc từ queue bậnGo, Tokio
MVCCRow có phiên bản giúp reader không bao giờ chặn writerPostgreSQL, etcd
Cooperative SchedulingYield giữa các khối để giữ phản hồi nhanhReact, Go
Double BufferingHoán đổi hai bản sao để cập nhật nguyên tửReact Fiber, GPU
BackpressureLàm chậm producer khi consumer không theo kịpNode.js, Reactive
Event LoopGhép kênh I/O đơn luồnglibuv, Redis
Logical ClockSắp xếp sự kiện không cần wall-clocketcd, LevelDB

Hệ thống

PatternMô tả ngắnNguồn
Circuit BreakerNgừng gọi service đang lỗi, fail nhanhHystrix, gobreaker
Rate LimiterToken bucket điều tiết throughputGo, Nginx
Retry with BackoffDelay cấp số nhân + jitter khi thất bạiK8s, gRPC
Write-Ahead LogLog thay đổi trước khi áp dụng, an toàn khi crashetcd, PostgreSQL
Batch ProcessingGom thao tác, thực thi theo nhómKafka, React
Consistent HashingThêm/bớt node chỉ remap ~1/n keygroupcache, HAProxy
Dependency GraphDAG + sắp xếp topoCargo, pnpm
Middleware ChainHandler trước/sau có thể ghépgRPC, Koa
RegistryTự đăng ký theo tên, khám phá lúc runtimeTensorFlow, gRPC
Dirty FlagChỉ tính lại khi được đánh dấu đã đổiChromium, React
LSM TreeĐệm ghi trong bộ nhớ, flush sắp xếp ra đĩaLevelDB, RocksDB
CheckpointingSnapshot định kỳ, khôi phục từ checkpointPostgreSQL, Redis

Bộ nhớ

PatternMô tả ngắnNguồn
Object PoolCấp phát trước và tái dùng để bỏ qua GCGo sync.Pool, Godot
FlyweightChia sẻ các object bất biến giống nhauCache int Python, V8
Arena AllocatorCấp phát bump trong vùng, giải phóng tất cả một lầnbumpalo, Go
Free ListCấp/giải phóng O(1) qua slot đã giải phóng liên kếtGo runtime, Linux
Copy-on-WriteChia sẻ qua tham chiếu, copy khi sửaGit, Rust Cow
Reference CountingTự dọn dẹp khi không còn chủ sở hữuCPython, Rust Arc
TombstoneĐánh dấu đã xoá, thu hồi sauLevelDB, Cassandra
InterningKhử trùng lặp giá trị bất biến, so sánh bằng con trỏCompiler Rust, CPython

Hành vi

PatternMô tả ngắnNguồn
State MachineTrạng thái rõ ràng, chuyển tiếp bất hợp lệ không biểu diễn đượcXState, Linux TCP
ObserverĐăng ký sự kiện, tách rời producer/consumerEventEmitter, Redux
IteratorChuỗi lười, không cấp phát trung gianRust, Python
Diff / PatchTính thay đổi tối thiểu giữa hai stateReact, Git
VtableStruct con trỏ hàm cho đa hìnhNhân Linux, CPython
VisitorDispatch callback đặc thù kiểu trên node câyLLVM, Vue

Released under the MIT License.