本周系统设计复习:

  • Java 如何工作
  • Gitflow 分支如何工作?
  • 成为 AI 工程师 | 从做中学 | 基于队列的课程
  • Redis 查询的生命周期
  • 创建新 AI 模型的 6 个步骤

Java 如何工作

你有没有想过当你运行 Java 程序时幕后发生了什么?让我们看看:

Java(JVM 运行时)

  1. Java 源代码(.java)使用 javac 编译成.class 字节码
  2. 类加载器将字节码加载到 Java 运行时环境(JVM)中
  3. 字节码被验证和执行
  4. JVM 使用解释器和 JIT 编译器,频繁使用的代码(热路径)被转换为本机机器码,使 Java 更快

Gitflow 分支策略如何工作

Gitflow 分支策略是一个 Git 工作流,将开发组织为 dedicated 分支用于功能、发布、热修复和主生产线。它是有定期版本部署项目的理想 Git 分支策略。

工作原理

  1. 开发从 develop 分支开始 新功能在此集成。

  2. 每个功能分支从 develop 创建 一旦功能完成就合并回 develop。

  3. 准备发布时 从 develop 创建发布分支用于最终 bug 修复。

  4. 发布分支合并到 main(用于生产)和回 develop 保持一致历史。

  5. 对于紧急修复 直接从 main 创建热修复分支,然后合并回 main 和 develop。

Redis 持久化机制

Redis 是内存数据库,这意味着所有数据都生活在 RAM 中以提高速度。然而,如果服务器崩溃或重启,数据可能丢失。为解决这个问题,Redis 提供两种持久化机制将数据写入磁盘:

1. AOF(仅追加文件)

当客户端发送命令时,Redis 首先在内存(RAM)中执行它。之后,Redis 通过将命令追加到磁盘上的 AOF 文件来记录命令。这确保每个操作可以稍后重放以重建数据集。由于命令首先执行然后记录,写入是非阻塞的。恢复过程使用事件日志重放记录的命令。

2. RDB(Redis 数据库)

Redis 可以定期获取整个数据集的快照,而不是写入每个命令。主线程 fork 一个子进程(bgsave),它共享主线程的所有内存数据。bgsave 子进程从主线程读取数据并将其写入 RDB 文件。Redis 使用写时复制。当主线程修改数据时,创建数据副本,进程在该副本上工作以便写入不被阻塞。然后快照作为 RDB 文件写入磁盘,允许 Redis 在需要时快速重新加载快照到内存。

3. 混合方法

在生产中,Redis 通常同时使用 AOF 和 RDB。RDB 提供快速重新加载和紧凑快照。AOF 通过记录自上次快照以来的每个操作保证持久性。

创建新 AI 模型的 6 个步骤

1. 设定目标

通过识别用例、检查可行性和设定清晰 KPI 来定义 AI 模型要解决的问题。

2. 数据准备

收集和清理原始数据,工程有用特征,并将数据分割为训练、验证和测试集。

3. 选择算法

为你的问题选择正确算法并选择框架(例如,TensorFlow、PyTorch、Sci-kit Learn)。

4. 训练模型

将数据输入模型,迭代训练,并调整超参数直到性能提高。

5. 评估和测试模型

在未见数据上测试,分析性能指标,并检查偏见或不公平结果。

6. 部署模型

选择部署策略,构建 API,并为生产使用容器化模型。

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

原文链接:EP181: How Java Works

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