software-engineer icon indicating copy to clipboard operation
software-engineer copied to clipboard

CS resources: C/C++, Data structure, Algorithm, Design Pattern, Linux, Architecture, Distributed Systems, MicroService...

Table of Contents

  • Road Map

  • Computer Science

    1. Operating System
    2. Computer Architecture
    3. Compilation
    4. Network
    5. Data Structure
    6. Database
  • Programming Language

    • C/C++
  • Software Engineering

    1. Coding Cultivation
    2. Code Review
    3. Safety Precaution
    4. Testing
    5. Publishing
  • System Design

  • Linux

    1. Kernel
    2. Memory Management
    3. Linux Network
    4. AIO
    5. Lock-free
    6. Memory Order
    7. CPU Cache
  • Distributed Architecture

    1. Distributed Messages System
    2. Logs & Data
    3. Distributed monitoring and tracking
    4. Data Analysis
    5. Distributed Architecture Engineering Design
    6. Design Pattern
    7. Failure testing of distributed systems
    8. Scalability
    9. Consistent Hashing
    10. Cache
    11. Message Queue
    12. Log
    13. Performance
    14. Search
    15. Architecture Practices by Companies
  • Microservice

    1. API Gatway
    2. Microservice VS SOA, IaaS, Paas, Monolithic
    3. Practice
    4. Authentication & Authorization
    5. Design Pattern
  • Cloud Native

  • Cloud Computing

    1. IO Virtualization
  • Thanks

Computer Science

Operating System

  • [x] :orange_book: Computer Systems A Programmer’s Perspective :pencil2: Book Notes

  • [ ] :orange_book: Modern Operating Systems :pencil2: Book Notes

  • [ ] :orange_book: Operating Systems: Three Easy Pieces

  • [ ] :orange_book: Operating System Concepts

  • [ ] :orange_book: Operating Systems Design and Implementation

  • [ ] :orange_book: Advanced Programming in the UNIX Environment

  • [x] CPU Registers x86_32

  • [x] CPU Registers x86_64

Computer Architecture

  • [ ] :orange_book: Computer Organization and Design: The Hardware/Sofeware Interface :pencil2: Book Notes
  • [ ] :orange_book: Computer Architecture: A Quantitative Approach
  • [ ] :orange_book: Structure and Interpretation of Computer Programs

Compilation

  • [ ] :orange_book: Compilers: Principles, Techniques, and Tools
  • [x] :orange_book: Programmer Self-Cultivation: Linking, Loading and Libraries (:cn: CN) :pencil2: Book Notes

Network

Database

Data Structure

  • [ ] :orange_book: Data Structures and Algorithm Analysis in C: Second Edition

Algorithm

  • [ ] :orange_book: Algorithms,Fouth Edition
  • [ ] :orange_book: Grokking Algorithms: An illustrated guide for programmers and other curious people
  • [ ] :orange_book: Programming Pearls (2/e)
  • [ ] :orange_book: Data Structures and Algorithm Analysis in C: Second Edition

Programming Language

The Essence of Programming

C/C++

Open-Close

Software Engineering

Coding Cultivation

  • [ ] :orange_book: Refactoring: Improving the Design of Existing Code :pencil2: Book Notes

  • [ ] :orange_book: Working Effectively with Legacy Code

  • [ ] :orange_book: Clean Code: A Handbook of Agile Software Craftsmanship :pencil2: Book Notes

  • [ ] :orange_book: The Clean Coder:A Code of Conduct for Professional Programmers

  • [ ] https://refactoring.guru

Code Review

Safety Precaution

Testing

  • [ ] :orange_book: Perfect Software: And Other Illusions about Testing
  • [ ] :orange_book: How Google Tests Software

Publishing

System Design

Linux

Kernel

Memory Management

Linux Network

AIO

Lock-free

Memory Order

CPU Cache

Distributed Architecture

Distributed Messages System

Logs & Data

Distributed monitoring and tracking

Data Analysis

Distributed Architecture Engineering Design

Design Pattern

Failure testing of distributed systems

Scalability

Consistent Hashing

Distributed Database

Cache

Message Queue

Log

Performance

Search

Architecture Practices by Companies

Microservice

API Gatway

Microservice VS SOA, IaaS, Paas, Monolithic

Practice

Authentication & Authorization

Design Pattern

Cloud Native

Cloud Computing

IO Virtualization



Edge Computing

Thanks

This roadmap is highly inspired by course: https://time.geekbang.org/column/intro/48. Thanks Hao Chen.