程序员思维导图
《程序员思维导图》
一、基础知识 (Fundamentals)
1.1 数据结构 (Data Structures)
- 线性结构 (Linear Structures)
- 数组 (Arrays)
- 连续内存空间
- 随机访问 (O(1))
- 插入/删除 (O(n))
- 动态数组 (ArrayList/Vector)
- 链表 (Linked Lists)
- 非连续内存空间
- 插入/删除 (O(1)),查找 (O(n))
- 单向链表 (Singly Linked List)
- 双向链表 (Doubly Linked List)
- 循环链表 (Circular Linked List)
- 栈 (Stacks)
- LIFO (Last-In, First-Out)
- Push (入栈), Pop (出栈), Peek (查看栈顶)
- 应用:函数调用栈, 表达式求值, 括号匹配
- 队列 (Queues)
- FIFO (First-In, First-Out)
- Enqueue (入队), Dequeue (出队)
- 应用:任务调度, 消息队列, 广度优先搜索
- 哈希表 (Hash Tables)
- 键值对存储 (Key-Value Pairs)
- Hash 函数 (Hash Function): 将键映射到索引
- 冲突解决 (Collision Resolution): 链地址法, 开放寻址法
- 平均查找时间 (O(1))
- 非线性结构 (Non-Linear Structures)
- 树 (Trees)
- 二叉树 (Binary Tree)
- 每个节点最多有两个子节点
- 满二叉树 (Full Binary Tree)
- 完全二叉树 (Complete Binary Tree)
- 二叉搜索树 (Binary Search Tree): 左子树 < 根节点 < 右子树
- 遍历:前序遍历 (Preorder), 中序遍历 (Inorder), 后序遍历 (Postorder)
- 平衡树 (Balanced Trees)
- AVL树 (AVL Tree)
- 红黑树 (Red-Black Tree)
- 确保树的平衡,避免最坏情况下的查找性能 (O(log n))
- 堆 (Heap)
- 最大堆 (Max Heap)
- 最小堆 (Min Heap)
- 优先队列 (Priority Queue)
- B树 (B-Tree)
- 图 (Graphs)
- 节点 (Vertices) 和 边 (Edges)
- 有向图 (Directed Graph)
- 无向图 (Undirected Graph)
- 加权图 (Weighted Graph)
- 邻接矩阵 (Adjacency Matrix)
- 邻接表 (Adjacency List)
- 遍历:深度优先搜索 (DFS), 广度优先搜索 (BFS)
1.2 算法 (Algorithms)
- 排序算法 (Sorting Algorithms)
- 比较排序 (Comparison Sorting)
- 冒泡排序 (Bubble Sort)
- 选择排序 (Selection Sort)
- 插入排序 (Insertion Sort)
- 归并排序 (Merge Sort)
- 快速排序 (Quick Sort)
- 堆排序 (Heap Sort)
- 非比较排序 (Non-Comparison Sorting)
- 计数排序 (Counting Sort)
- 桶排序 (Bucket Sort)
- 基数排序 (Radix Sort)
- 搜索算法 (Searching Algorithms)
- 线性搜索 (Linear Search)
- 二分搜索 (Binary Search)
- 图算法 (Graph Algorithms)
- 最短路径算法 (Shortest Path Algorithms)
- Dijkstra 算法
- Bellman-Ford 算法
- Floyd-Warshall 算法
- 最小生成树算法 (Minimum Spanning Tree Algorithms)
- 动态规划 (Dynamic Programming)
- 解决具有重叠子问题和最优子结构的问题
- 自顶向下 (Top-Down) (带备忘录的递归)
- 自底向上 (Bottom-Up) (迭代)
- 贪心算法 (Greedy Algorithms)
- 每一步选择局部最优解,期望达到全局最优解
- 适用问题:活动选择问题, 背包问题 (部分背包)
- 分治算法 (Divide and Conquer)
- 将问题分解为小问题,递归解决,合并结果
- 典型例子:归并排序, 快速排序
1.3 编程范式 (Programming Paradigms)
- 面向过程编程 (Procedural Programming)
- 面向对象编程 (Object-Oriented Programming)
- 以对象为中心,关注对象的属性和行为
- 封装 (Encapsulation), 继承 (Inheritance), 多态 (Polymorphism)
- 例如:Java, C++, Python
- 函数式编程 (Functional Programming)
- 将计算视为数学函数的求值
- 纯函数 (Pure Function), 不可变数据 (Immutable Data), 高阶函数 (Higher-Order Function)
- 例如:Haskell, Scala, Lisp
二、进阶技能 (Advanced Skills)
2.1 设计模式 (Design Patterns)
- 创建型模式 (Creational Patterns)
- 单例模式 (Singleton Pattern)
- 工厂模式 (Factory Pattern)
- 抽象工厂模式 (Abstract Factory Pattern)
- 建造者模式 (Builder Pattern)
- 原型模式 (Prototype Pattern)
- 结构型模式 (Structural Patterns)
- 适配器模式 (Adapter Pattern)
- 桥接模式 (Bridge Pattern)
- 组合模式 (Composite Pattern)
- 装饰器模式 (Decorator Pattern)
- 外观模式 (Facade Pattern)
- 享元模式 (Flyweight Pattern)
- 代理模式 (Proxy Pattern)
- 行为型模式 (Behavioral Patterns)
- 责任链模式 (Chain of Responsibility Pattern)
- 命令模式 (Command Pattern)
- 解释器模式 (Interpreter Pattern)
- 迭代器模式 (Iterator Pattern)
- 中介者模式 (Mediator Pattern)
- 备忘录模式 (Memento Pattern)
- 观察者模式 (Observer Pattern)
- 状态模式 (State Pattern)
- 策略模式 (Strategy Pattern)
- 模板方法模式 (Template Method Pattern)
- 访问者模式 (Visitor Pattern)
2.2 操作系统 (Operating Systems)
- 进程管理 (Process Management)
- 进程的概念 (Process Concept)
- 进程状态 (Process States)
- 进程调度 (Process Scheduling)
- 进程间通信 (IPC) (Inter-Process Communication)
- 管道 (Pipes), 消息队列 (Message Queues), 共享内存 (Shared Memory), 信号量 (Semaphores)
- 内存管理 (Memory Management)
- 虚拟内存 (Virtual Memory)
- 分页 (Paging), 分段 (Segmentation)
- 页面置换算法 (Page Replacement Algorithms)
- 文件系统 (File Systems)
- 文件组织 (File Organization)
- 目录结构 (Directory Structure)
- 文件访问控制 (File Access Control)
- I/O 系统 (I/O Systems)
- I/O 设备 (I/O Devices)
- I/O 控制器 (I/O Controllers)
- I/O 驱动程序 (I/O Drivers)
2.3 数据库 (Databases)
- 关系型数据库 (Relational Databases)
- SQL (Structured Query Language)
- ACID 特性 (Atomicity, Consistency, Isolation, Durability)
- 数据库设计 (Database Design)
- 范式 (Normalization)
- 索引 (Indexes)
- 事务 (Transactions)
- MySQL, PostgreSQL, Oracle
- NoSQL 数据库 (NoSQL Databases)
- 键值存储 (Key-Value Stores)
- 文档数据库 (Document Databases)
- 列式数据库 (Column Family Databases)
- 图形数据库 (Graph Databases)
- Redis, MongoDB, Cassandra, Neo4j
2.4 网络 (Networking)
- TCP/IP 协议栈 (TCP/IP Protocol Suite)
- 应用层 (Application Layer)
- 传输层 (Transport Layer)
- TCP (Transmission Control Protocol)
- UDP (User Datagram Protocol)
- 网络层 (Network Layer)
- 链路层 (Link Layer)
- HTTP 协议 (HTTP Protocol)
- 请求方法 (Request Methods): GET, POST, PUT, DELETE
- 状态码 (Status Codes)
- 请求头 (Request Headers), 响应头 (Response Headers)
- Socket 编程 (Socket Programming)
- 客户端 (Client)
- 服务器 (Server)
三、 工具与实践 (Tools & Practice)
3.1 版本控制 (Version Control)
- Git
- 仓库 (Repository)
- 提交 (Commit)
- 分支 (Branch)
- 合并 (Merge)
- 拉取 (Pull)
- 推送 (Push)
- GitHub, GitLab, Bitbucket
3.2 软件测试 (Software Testing)
- 单元测试 (Unit Testing)
- 集成测试 (Integration Testing)
- 系统测试 (System Testing)
- 自动化测试 (Automated Testing)
- 测试驱动开发 (TDD)
3.3 持续集成/持续部署 (CI/CD)
- Jenkins
- Travis CI
- CircleCI
- GitHub Actions
3.4 常用工具 (Common Tools)
- IDE (Integrated Development Environment)
- VS Code, IntelliJ IDEA, Eclipse
- 调试器 (Debugger)
- 性能分析器 (Profiler)
- 构建工具 (Build Tools)
- Make, Maven, Gradle, npm, yarn
3.5 云计算 (Cloud Computing)
- AWS (Amazon Web Services)
- Azure (Microsoft Azure)
- GCP (Google Cloud Platform)
- Docker
- Kubernetes