您应该了解的 20 大系统设计概念
- 负载平衡:在多个服务器之间分配流量,以实现可靠性和可用性。
- 缓存:将经常访问的数据存储在内存中,以便更快地访问。
- 数据库分片:拆分数据库以应对大规模数据增长。
- 复制:跨副本复制数据以实现可用性和容错能力。
- CAP 定理:一致性、可用性和分区容错性之间的权衡。
- 一致性哈希:在动态服务器环境中均匀分配负载。
- Message Queues:使用异步事件驱动架构分离服务。
- Rate Limiting:控制请求频率以防止系统过载。
- API Gateway:用于路由 API 请求的集中入口点。
- 微服务:将系统分解为独立的松散耦合服务。
- 服务发现:在分布式系统中动态定位服务。
- CDN:从边缘服务器交付内容以提高速度。
- 数据库索引:通过为重要字段编制索引来加快查询速度。
- 数据分区:跨节点划分数据以实现可扩展性和性能。
- 最终一致性:保证分布式数据库中随时间推移的一致性
- WebSockets:为实时更新启用双向通信。
- 可扩展性:通过升级或添加计算机来增加容量。
- 容错:确保硬件/软件故障期间的系统可用性。
- 监控:跟踪指标和日志以了解系统运行状况。
- 身份验证和授权:控制用户访问并安全地验证身份。
什么是 AI 代理?
AI 代理是一种软件程序,可以与其环境交互、收集数据并使用这些数据来实现预定目标。AI 代理可以选择执行最佳作来实现这些目标。
AI 代理的主要特征如下:
- 代理可以执行自主作,而无需持续的人工干预。此外,他们可以让一个人参与进来以保持控制。
- 代理有一个内存来存储个人偏好并允许个性化。它还可以存储知识。LLM 可以承担信息处理和决策职能。
- 代理必须能够感知和处理其环境中可用的信息。
- 代理还可以使用访问互联网、使用代码解释器和进行 API 调用等工具。
- 代理还可以与其他代理或人类协作。
有多种类型的 AI 代理可用,例如学习代理、简单反射代理、基于模型的反射代理、基于目标的代理和基于效用的代理。
可以使用不同的架构方法构建具有 AI 代理的系统。
- Single Agent:代理可以充当个人助理。
- 多代理:代理可以通过协作或竞争的方式相互交互。
- Human Machine:代理可以与人类交互以更有效地执行任务。
必备的 Git 备忘单!
🔧 基本命令
- git init – 初始化新的 Git 存储库。
- git clone <repo_url> – 克隆远程存储库。
- git status – 检查工作目录的状态。
- git add– 暂存提交更改。
- 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– 在另一个分支上重新应用提交以维护线性历史记录。
- git pull --rebase – 在最新的远程更改之上获取并重新应用您的更改。
-
- git remote add– 添加新的远程存储库。
-
🎯 高级 Git
git stash – 临时保存更改而不提交。
- git stash pop – 重新应用隐藏的更改。
- git cherry-pick– 将特定提交应用于当前分支。
- git log --oneline – 查看简化的提交历史记录。
- git reflog – 显示引用更改的历史记录(例如,checkout、resets)。
- git log --graph --decorate --all – 显示可视化提交历史记录。
🚨 撤消更改
- git reset– 取消暂存文件。
- git reset --soft– 重置为提交,但将更改保留在工作目录中。
- git reset --hard– 完全重置为之前的提交,放弃更改。
- git revert– 创建撤消特定提交的新提交。
⚙️ 与他人
- 协作 git fork – 在 GitHub 上 fork 存储库(通过 UI)以开始贡献。
- git pull origin– 从原始远程分支拉取更改。
- git push origin– 将分支推送到原始存储库以进行协作。
您必须知道的 9 个 OOP 设计模式
这些模式可以分为 3 类:
A - 创建模式
处理对象创建机制,将客户端代码与具体类解耦。
- Factory Pattern:集中对象创建逻辑并根据输入返回不同的子类
- Singleton Pattern:确保只存在一个类的实例,并提供对它的全局访问。
- Builder Pattern:逐步构建复杂对象,允许可选配置。
B - 结构模式
帮助将类和对象组合成更大的结构。
- Adapter Pattern(适配器模式):通过将一个接口转换为另一个接口,允许不兼容的接口协同工作。
- Decorator Pattern:动态地向对象添加新行为,而不改变其原始结构。
- Proxy Pattern: 用作访问其他对象的占位符。
C - 行为模式
关注对象之间的通信和交互。
- Strategy Pattern:允许在运行时从一系列可互换策略中选择算法或行为。
- Observer Pattern:启用一对多依赖关系,以便在一个对象更改状态时通知其所有依赖关系。
- Command Pattern:对象封装了执行作或触发事件所需的所有信息。
面向对象编程的基本支柱
抽象、封装、继承和多态性是面向对象编程的四大支柱。它们是什么意思?
抽象
这是隐藏实现细节并仅显示对象的基本功能的过程。例如,具有抽象 stop 方法的 Vehicle 类。
封装
它涉及将数据(字段)和方法包装在单个单元(类)中,并使用访问修饰符限制直接访问。例如,具有公共 getter 和 setter 的私有字段。
继承
创建新类(子类)的过程,该类从现有类(父类)继承属性和方法,从而促进代码重用。例如,Car 类继承自 Vehicle 类。
多态性
它允许方法根据调用它们的对象执行不同的作。当两种类型共享一个继承链时,它们可以互换使用,而不会出现错误。
https://blog.bytebytego.com/p/ep160-top-20-system-design-concepts