20 个系统设计概念
- 负载均衡(Load Balancing):分布流量跨多个服务器为可靠性和可用性
- 缓存(Caching):存储频繁访问数据在内存为更快访问
- 数据库分片(Database Sharding):分裂数据库处理大规模数据增长
- 复制(Replication):复制数据跨副本为可用性和容错
- CAP 定理(CAP Theorem):一致性、可用性和分区容错之间权衡
- 一致性哈希(Consistent Hashing):分布负载均匀在动态服务器环境
- 消息队列(Message Queues):解耦服务使用异步事件驱动架构
- 速率限制(Rate Limiting):控制请求频率防止系统过载
- API 网关(API Gateway):集中入口点为路由 API 请求
- 微服务(Microservices):打破系统为独立、松耦合服务
- 服务发现(Service Discovery):定位服务动态在分布式系统
- CDN:交付内容从边缘服务器为速度
- 数据库索引(Database Indexing):加速查询通过索引重要字段
- 数据分区(Data Partitioning):划分数据跨节点为可扩展性和性能
- 最终一致性(Eventual Consistency):保证一致性随时间在分布式数据库
- WebSockets:启用双向通信为实时更新
- 可扩展性(Scalability):增加容量通过升级或添加机器
- 容错(Fault Tolerance):确保系统可用性在硬件/软件故障期间
- 监控(Monitoring):跟踪指标和日志理解系统健康
- 认证和授权(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。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。