CS61B week5 学习笔记

包括第五周讲座内容

lec12 Command Line Programming, Git

Git

方案 1

每一次更改都保存所有文件。

方案 2

对于不变的文件,保存之前文件的指针。只保存更改后的文件。

如果要恢复文件,则需要遍历历史,比较麻烦。

方案 3

每次记录下每个文件对应的版本,相当于 map 或 dict。如果某个版本和之前的版本,则不用存储新文件。

方案 4

使用时间和日期作为版本号码。然而,可能有相同的时间。

方案 5

使用 hash。Git 使用的是 git-SHA 1 hash,有 160 bit 长。

  • 计算 git-SHA 1 hash。例如为 66ccdc…
  • 创造文件夹 .git/objects/66
  • 将文件储存在名为 66ccdc… 的文件中(使用了压缩)

Hash 可能会碰撞,但是概率相当相当小,可以忽略。同时,Hash 也可以更安全。

Commit

Commit 的命令也储存在 objects 中。Commit 包含作者,日期,message,文件和版本的表格,parent ID。对这些使用 git-SHA 1。

Merge

在解决冲突过后,新的 commit 拥有两个 parents。这种结构是图。

lec13 Asymptotics I

时间复杂度

将各种操作看成消耗单位时间,计算操作次数。消耗的最多时间记为 $O()$, 消耗的最小时间记为 $\Omega()$。这都只用看等价无穷大。那么,如果消耗的时间等价与同一个阶数,可以记为 $\Theta$。

使用 Hugo 构建
主题 StackJimmy 设计