20 个系统设计概念

  1. 负载均衡(Load Balancing):分布流量跨多个服务器为可靠性和可用性
  2. 缓存(Caching):存储频繁访问数据在内存为更快访问
  3. 数据库分片(Database Sharding):分裂数据库处理大规模数据增长
  4. 复制(Replication):复制数据跨副本为可用性和容错
  5. CAP 定理(CAP Theorem):一致性、可用性和分区容错之间权衡
  6. 一致性哈希(Consistent Hashing):分布负载均匀在动态服务器环境
  7. 消息队列(Message Queues):解耦服务使用异步事件驱动架构
  8. 速率限制(Rate Limiting):控制请求频率防止系统过载
  9. API 网关(API Gateway):集中入口点为路由 API 请求
  10. 微服务(Microservices):打破系统为独立、松耦合服务
  11. 服务发现(Service Discovery):定位服务动态在分布式系统
  12. CDN:交付内容从边缘服务器为速度
  13. 数据库索引(Database Indexing):加速查询通过索引重要字段
  14. 数据分区(Data Partitioning):划分数据跨节点为可扩展性和性能
  15. 最终一致性(Eventual Consistency):保证一致性随时间在分布式数据库
  16. WebSockets:启用双向通信为实时更新
  17. 可扩展性(Scalability):增加容量通过升级或添加机器
  18. 容错(Fault Tolerance):确保系统可用性在硬件/软件故障期间
  19. 监控(Monitoring):跟踪指标和日志理解系统健康
  20. 认证和授权(Authentication & Authorization):控制用户访问和安全验证身份

AI 代理是什么?

AI 代理是软件程序可以与它环境交互、收集数据、使用数据实现预定目标。AI 代理可以选择最好行动执行满足那些目标。

AI 代理关键特征

  • 代理可以执行自主行动没有持续人类干预。也可以有人类在循环保持控制
  • 代理有记忆存储个人偏好允许个性化。也可以存储知识。LLM 可以进行信息处理和决策功能
  • 代理必须能够感知和处理信息可用从它环境
  • 代理也可以使用工具如访问互联网、使用代码解释器和进行 API 调用
  • 代理也可以与其他代理或人类协作

AI 代理类型

  • 学习代理(Learning Agents)
  • 简单反射代理(Simple Reflex Agents)
  • 基于模型反射代理(Model-Based Reflex Agents)
  • 基于目标代理(Goal-Based Agents)
  • 基于效用代理(Utility-Based Agents)

AI 代理系统架构方法

  • 单代理(Single Agent):代理可以作为个人助理
  • 多代理(Multi-Agent):代理可以相互交互在协作或竞争方式
  • 人机(Human Machine):代理可以与人类交互执行任务更高效

Git 速查表

基本命令

  • git init – 初始化新 Git 仓库
  • git clone <repo_url> – 克隆远程仓库
  • git status – 检查工作目录状态
  • git add <file> – 暂存变更为提交
  • git commit -m "message" – 提交暂存变更带消息
  • git push – 推送本地变更到远程仓库
  • git pull – 获取和合并变更从远程仓库
  • git diff – 显示工作目录变更(未提交变更)
  • git diff --staged – 显示暂存区和最后提交之间变更

分支和合并

  • git branch – 列出分支
  • git branch <branch_name> – 创建新分支
  • git checkout <branch_name> – 切换到另一个分支
  • git checkout -b <branch_name> – 创建和切换到新分支
  • git merge <branch_name> – 合并分支到当前
  • git branch -d <branch_name> – 删除分支在合并后
  • git branch -D <branch_name> – 强制删除分支,即使它没有合并

同步

  • git fetch – 下载变更从远程没有合并
  • git rebase <branch> – 重新应用提交在另一个分支顶部维护线性历史
  • git pull --rebase – 获取和重新应用你变更在顶部最新远程变更
  • git remote add <name> <url> – 添加新远程仓库

高级 Git

  • git stash – 临时保存变更没有提交
  • git stash pop – 重新应用暂存变更
  • git cherry-pick <commit> – 应用特定提交到你当前分支
  • git log --oneline – 查看简化提交历史
  • git reflog – 显示你参考变更历史(如 checkout、resets)
  • git log --graph --decorate --all – 显示视觉提交历史

撤销变更

  • git reset <file> – 取消暂存文件
  • git reset --soft <commit> – 重置到提交但保持变更在工作目录
  • git reset --hard <commit> – 完全重置到之前提交,丢弃变更
  • git revert <commit> – 创建新提交撤销特定提交

与他人协作

  • git fork – 分叉仓库在 GitHub(通过 UI)开始贡献
  • git pull origin <branch> – 拉取变更从原始远程分支
  • git push origin <branch> – 推送你分支到原始仓库为协作

9 个 OOP 设计模式

A - 创建型模式

处理对象创建机制解耦客户端代码从具体类。

  • 工厂模式(Factory Pattern):家庭创建者 - 制作相关物品组
  • 单例模式(Singleton Pattern):唯一 - 特殊类只有一个实例
  • 构建器模式(Builder Pattern):乐高大师 - 逐步构建对象,保持创建和外观

B - 结构型模式

帮助组合类和对象到更大结构。

  • 适配器模式(Adapter Pattern):万能插头 - 连接东西有不同接口
  • 装饰器模式(Decorator Pattern):定制器 - 添加功能到对象不改变它们核心
  • 代理模式(Proxy Pattern):替身演员 - 代表另一个对象,控制访问或行动
  • 组合模式(Composite Pattern):树构建者 - 形成树状结构简单和复杂部分
  • 桥接模式(Bridge Pattern):功能连接器 - 链接对象工作方式和它做什么
  • 享元模式(Flyweight Pattern):空间节省器 - 共享小、可重用物品高效

C - 行为型模式

关注通信和交互在对象之间。

  • 策略模式(Strategy Pattern):允许选择算法或行为从家族可互换策略在运行时
  • 观察者模式(Observer Pattern):启用一对多依赖所以当一个对象改变状态,所有它依赖通知
  • 命令模式(Command Pattern):对象封装所有信息需要执行行动或触发事件
  • 责任链模式(Chain of Responsibility):请求接力 - 传递请求通过对象链直到处理
  • 中介者模式(Mediator):通信中心 - 简化交互在不同类之间
  • 备忘录模式(Memento):时间胶囊 - 捕获和恢复对象状态
  • 访问者模式(Visitor):技能客人 - 添加新操作到类不改变它

OOP 四个支柱

抽象、封装、继承和多态是面向对象编程四个支柱。

抽象(Abstraction)

  • 隐藏实现细节过程只显示对象基本特征
  • 例如,Vehicle 类有抽象 stop 方法

封装(Encapsulation)

  • 涉及包裹数据(字段)和方法在单一单元(类)
  • 限制直接访问使用访问修饰符
  • 例如,私有字段有公共 getters 和 setters

继承(Inheritance)

  • 创建新类(子)过程继承属性和方法从现有类(父)
  • 从而促进代码重用
  • 例如,Car 类继承从 Vehicle 类

多态(Polymorphism)

  • 允许方法执行不同基于对象它们调用
  • 当两个类型共享继承链,它们可以互换使用没有错误

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP160: Top 20 System Design Concepts You Should Know

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。