Dự án này là gì?
Battle-Tested Patterns sưu tầm các pattern lập trình có những đặc điểm sau:
- Đã được chứng minh trong production — sử dụng tại các dự án hàng đầu như React, nhân Linux, Go runtime và Chromium
- Tương tác — mỗi pattern có một trực quan hoá SVG thực hành mà bạn có thể click, kéo và thử nghiệm
- Đa ngôn ngữ — triển khai theo idiom bằng TypeScript, Rust, Go và Python
- Cấp độ code — các kỹ thuật cụ thể có thể áp dụng ngay hôm nay, không phải khái niệm kiến trúc trừu tượng
Tại sao có dự án này
Đã có nhiều sách "design pattern" và kho lưu trữ "thuật toán". Nhưng vẫn còn một khoảng trống:
| Tài nguyên hiện có | Cái còn thiếu |
|---|---|
| Design Patterns (GoF) | Quá trừu tượng, quá thiên về OOP |
| Kho thuật toán | Tách rời khỏi thực hành kỹ thuật |
| Hướng dẫn System Design | Cấp kiến trúc, không phải cấp code |
| Danh sách "Awesome" | Tổng hợp liên kết, không có dạy học |
| Tutorial tương tác | Thường rời rạc, không phải bộ sưu tập có hệ thống |
Dự án này lấp đầy khoảng trống đó: các kỹ thuật cấp code được trích xuất từ source code production, kèm trực quan hoá tương tác và tham chiếu chính xác bạn có thể tự kiểm chứng.
Điều gì khiến một pattern được gọi là "Battle-Tested"?
Mỗi pattern trong bộ sưu tập này phải có:
- ≥ 2 bằng chứng production — liên kết GitHub chính xác (đến số dòng cụ thể) cho thấy pattern đang được dùng
- Triển khai đa ngôn ngữ — code theo idiom bằng TypeScript + ít nhất một ngôn ngữ khác
- Bài tập chạy được — có các cấp độ khó tăng dần kèm bộ test
Chúng tôi không bao giờ bịa liên kết nguồn. Nếu không tìm được tham chiếu xác minh được, pattern sẽ không được đưa vào.
Lộ trình học khuyến nghị
Chọn một lộ trình phù hợp với background — hoặc cứ tự do duyệt qua.
Lập trình viên frontend
Bắt đầu với các pattern bạn đã dùng (có thể không nhận ra):
- Diff / Patch — reconciliation của virtual DOM trong React
- Bitmask — fiber flags của React
- Cooperative Scheduling — tại sao React yield mỗi 5ms
- Observer — Redux, EventEmitter
- Double Buffering —
current/workInProgresscủa React Fiber
Sau đó xem chúng phối hợp: Pattern trong React · Tra cứu nhanh: Cheat Sheet
Lập trình viên backend / hệ thống
Bắt đầu với các pattern xuất hiện trong database và hệ phân tán:
- Write-Ahead Log — khôi phục sau crash trong PostgreSQL, etcd
- MVCC — vì sao reader không bao giờ chặn writer
- Circuit Breaker — fail nhanh trong microservice
- Rate Limiter — token bucket để kiểm soát throughput
- Consistent Hashing — phân tán key trên các node
Sau đó xem bức tranh đầy đủ: Pattern trong hệ phân tán · Tra cứu nhanh: Cheat Sheet
Kỹ sư hiệu năng / cấp thấp
Bắt đầu với các pattern bộ nhớ và concurrency:
- Arena Allocator — bump allocate, giải phóng tất cả cùng lúc
- Object Pool — tránh áp lực GC
- Free List — cấp phát/giải phóng O(1)
- Work Stealing — Go runtime, scheduler Tokio
- Ring Buffer — queue lock-free
Sau đó xem chúng phối hợp: Pattern trong Go Runtime · Pattern trong Linux · Tra cứu nhanh: Cheat Sheet
Cách dùng dự án này
- Chơi với trực quan hoá — mỗi trang pattern có trực quan hoá SVG tương tác — click, kéo và xây dựng trực giác
- Duyệt các pattern — đọc khái niệm, nghiên cứu bằng chứng production, rồi thử các bài tập
- Chạy bài tập tại máy —
pnpm test:exercisescho TypeScript,cargo testcho Rust,go testcho Go - Thử online — copy bất kỳ code mẫu nào vào playground chính thức: TypeScript · Go · Rust · Python
- Đóng góp — xem Cách đóng góp