基本思想

  1. 选定 Pivot 中心轴
  2. 将大于 Pivot 的数字放在 Pivot 的右边
  3. 将大于 Pivot 的数字放在 Pivot 的左边
  4. 分别对左右子序列重复前三步操作

存在两个下标,L 和 R,进行移动下标,与 Pivot 值进行比较,并移动位置,最终,L 和 R 相遇后,Pivot 值放在相遇的位置,完成一次排序,再以当前的位置划分左右两个序列,分别对两边的序列再重复排序操作

目标

为了更好的实施自动化测试,我们希望有一套简单但足够的自动化测试体系,能够从各个层面帮助我们开展自动化测试,从而交付高质量的软件代码。

本文包含三个部分,包括「测试流程」、「测试平台和工具」和「测试方法论」,各自关注不同的维度,整体形成一个良好的体系。

Read more »

一、垃圾回收机制——GC

Javascript 具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。

通常情况下有两种实现方式:

Read more »

图片的懒加载原理: 当图片元素出现在屏幕中时,才给图片的 src 赋值对应的链接,去加载对应的图片

Read more »

merge vs rebase

在 Git 中,Merge 和 Rebase 是两种常见的分支合并策略,它们分别用于将一个分支的更改合并到另一个分支上,但它们的工作方式和影响略有不同。

Merge(合并)

Merge 操作将两个分支的历史合并为一个新的合并提交。这个合并提交有两个父提交,分别代表了合并前的两个分支。Merge 操作会保留原始分支的历史记录,因此在分支图中会形成一个新的合并节点。

特点

  • 保留分支历史:Merge 操作会保留原始分支的完整历史记录,包括合并提交。这使得分支的历史记录更加清晰可见。

  • 生成合并提交:Merge 操作会生成一个新的合并提交,该提交包含了合并前的两个分支的更改。

  • 保留分支结构:Merge 操作会保留分支的结构,不会改变提交的顺序或线性性。

Rebase(变基)

Rebase 操作是将当前分支的提交重新应用到另一个分支上。它会将当前分支的提交逐个应用到目标分支的最新提交上,并在此过程中解决可能出现的冲突。Rebase 操作会改变提交的顺序和历史,使得合并后的提交历史更加线性化。

特点

  • 线性化提交历史:Rebase 操作会将当前分支的提交逐个应用到目标分支的最新提交上,从而使得提交历史更加线性化。

  • 不产生合并提交:与 Merge 不同,Rebase 不会生成新的合并提交,而是将当前分支的提交直接放置在目标分支的顶部。

  • 改变提交的哈希值:由于 Rebase 改变了提交的历史,因此会改变提交的哈希值。因此,不建议对已发布的提交进行 Rebase 操作。

总结

Merge 适用于合并两个独立开发的分支,而 Rebase 则适用于保持提交历史的线性化。

revert vs reset

revert

git revert 命令用于撤销之前的提交,但是通过创建一个新的提交来实现。新的提交包含了撤销了原来提交的更改。使用 revert 命令可以在撤销提交的同时保留提交历史,不会改变历史记录。

reset

git reset 命令用于将 HEAD 指针移动到另一个提交,并且可以选择保留或丢弃修改。reset 命令有三种模式:--soft--mixed--hard

  • --soft 模式:仅移动 HEAD 指针,不会修改暂存区和工作目录的内容。
  • --mixed 模式(默认模式):移动 HEAD 指针,并且重置暂存区,但是不会修改工作目录的内容。
  • --hard 模式:移动 HEAD 指针,并且重置暂存区和工作目录的内容,将其回退到指定提交的状态。
1
2
3
git reset --soft <commit>
git reset --mixed <commit>
git reset --hard <commit>

三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)是 TCP(Transmission Control Protocol,传输控制协议)连接建立和断开的过程。

Read more »

原型

原型: 每个函数都有 prototype 属性,称之为原型
因为这个属性的值是一个对象,称为 原型对象(Array.prototype)

Read more »