本周系统设计面试:
- 9 个清洁代码原则
- 4 种 SQL 连接类型
- 如何学习云计算?
- 可视化 SQL 查询
- 用简单术语解释 JWT
9 个清洁代码原则
1. 有意义的名称(Meaningful Names)
命名变量和函数以揭示它们的目的,而不仅仅是它们的值。
2. 一个函数,一个职责(One Function, One Responsibility)
函数应该只做一件事。
3. 避免魔术数字(Avoid Magic Numbers)
用命名常量替换硬编码值,赋予它们意义。
4. 使用描述性布尔值(Use Descriptive Booleans)
布尔名称应陈述条件,而不仅仅是它的值。
5. 保持代码 DRY(Keep Code DRY)
重复代码意味着重复 bug。尝试在有意义的地方重用逻辑。
6. 避免深度嵌套(Avoid Deep Nesting)
扁平化你的代码流以提高清晰度并减少认知负荷。
7. 注释为什么,而不是什么(Comment Why, Not What)
解释代码背后的意图,而不是明显的机制。
8. 限制函数参数(Limit Function Arguments)
太多参数会混淆。将相关数据分组到对象中。
9. 代码应该是自解释的(Code Should Be Self-Explanatory)
编写良好的代码需要更少的注释,因为它读起来像一个故事。
4 种 SQL 连接类型
SQL 连接基于相关列组合两个或多个表的行。以下是你可以使用的不同类型的连接:
1. 内连接(Inner Join)
仅返回两个表之间的匹配行。它只保留公共数据。
2. 左连接(Left Join)
返回左表的所有行和右表的匹配行。如果左表中的行在右表中没有匹配,右表的列在该行中将包含 NULL 值。
3. 右连接(Right Join)
返回右表的所有行和左表的匹配行。如果右表中的记录在左表中没有匹配记录,结果中左表的列将包含 NULL 值。
4. 全外连接(FULL OUTER JOIN)
返回两个表的所有行,填充 NULL 以匹配缺失。
如何学习云计算
云计算是一个广阔的领域,足迹不断增长。对于新开发者来说,理解从哪里开始往往很棘手。以下是学习路线图:
1. 云计算基础
包括”什么是云计算”、其好处、云模型(公共、私有、混合和多云),以及云与本地对比等主题。
2. 云服务模型
了解云服务模型,如 IaaS、PaaS 和 SaaS。
3. 云提供商
探索各种流行云平台,如 AWS、Azure、GCP、Oracle Cloud、IBM Cloud 等。还学习如何选择云提供商。
4. 关键云服务
学习关键云服务,涉及计算(EC2、Azure VM、Docker、Kubernetes、Lambda 等)、存储(EBS、Azure Disk、S3、Azure Blob、EFS 等)和网络(VPC、ELB、Azure LB、Cloudfront、Azure CDN)。
5. 安全和合规
了解关键安全和合规点,涉及身份、访问管理、加密、数据安全、DDoS 保护和 WAF。
6. 云 DevOps 和自动化
学习特定领域的云 DevOps 和自动化,如 CI/CD、IaC 和监控。
SQL 查询如何执行
SQL 语句由数据库系统在几个步骤中执行,包括:
- 解析 SQL 语句并检查其有效性
- 将 SQL 转换为内部表示,如关系代数
- 优化内部表示并创建执行计划,利用索引信息
- 执行计划并返回结果
计算机内存如何工作
这是一个简单的分解,显示数据如何通过系统从输入到处理到存储:
数据通过输入源进入 如键盘、鼠标、摄像头或远程系统。
永久存储保存你的系统文件、应用和媒体 包括硬盘、USB 驱动器、ROM/BIOS 和基于网络的存储。
RAM 是你计算机的工作空间 包括物理内存和虚拟内存,临时存储你正在使用的数据和程序。
缓存内存更靠近 CPU 分为 Level 1 和 Level 2。它帮助加速访问频繁使用的数据。
CPU 寄存器是最快和最小的内存单元 处理器直接使用它们几乎立即执行指令。
内存金字塔越高,存储越快越小。
用简单术语解释 JWT
想象你有一个称为 JWT 的特殊盒子。在这个盒子里,有三个部分:头部、负载和签名。
头部就像盒子外面的标签。它告诉我们它是什么类型的盒子以及它如何保护。它通常用称为 JSON 的格式编写,这只是使用大括号{}和冒号:组织信息的一种方式。
负载就像你想要发送的实际消息或信息。它可以是你的名字、年龄或任何其他你想要分享的数据。它也用 JSON 格式编写,所以它易于理解和使用。
签名是使 JWT 安全的东西。它就像只有发送者知道如何创建的特殊密封。签名使用秘密代码创建,有点像密码。此签名确保没有人可以在发送者不知情的情况下篡改 JWT 的内容。
当你想要将 JWT 发送到服务器时,你将头部、负载和签名放在盒子里。然后你将其发送到服务器。服务器可以轻松读取头部和负载以了解你是谁以及你想要做什么。
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP162: 9 Clean Code Principles To Keep In Mind。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。