/images/hugo/avatar.png

容器基础

这个系列我们开始学习 k8s,但是想学好 k8s 并不容易,网络、操作系统、分布式原理都是 k8s 重要的组成部分。我自己将整个学习分成了如下几个系列:

  1. k8s 的设计和使用: 这个系列我们从使用层次上,明白 k8s 高层次的抽象和设计,达到能高效使用 k8s 的目的
  2. k8s 的源码解析: 这个系列我们从源码层次上,透析 k8s 的设计与实现,并学习 k8s 里面优秀的代码设计
  3. k8s 的网络模型: 这个系列我们从网络层次上,学习 k8s 上不同的网络插件对应的网络模型及其实现

这篇文章开始,我们学习 k8s 的设计和使用,选用的教材是:

5. 不相交集合

不相交集合

1. 不相交集合的抽象

在图的最小生成树算法(Kruskal 算法)中我们看到了一个有趣的数据结构,不相交集合(Group ADT)。不相交集合用来对数据进行分组和合并,但不同于Python Set:

4. 图

图

1. 图的抽象

1.1 图的基本概念

在基础的数据结构中,图应该算的上最复杂的非线性数据结构了,包含了很多专业术语,比如:

  1. 顶点,边,权
  2. 顶点的度,入度,出度 概念比较好理解,就不在此叙述了,我们的重点是如何实现一个图以及图相关的众多算法。

1.2 图的存储

图有两种存储方式:

3. 树

树

1. 树的抽象

我们都知道树是一种数组组织形式,通过限定树中数据的组织方式,我们可以得到很多树的变种。因此要想学好树,我们就要从最基本的树开始,逐一去了解每种特殊的树的数据组织方式以及他们能提供的操作。

2. 递归

递归

1. 如何写递归

递归是一种应用非常广泛的算法(或者编程技巧),搞懂递归非常重要。基本上,所有的递归问题都可以用递推公式来表示。要想使用递归解决问题,必需满足三个前提条件:

1. 编程思想

编程思想

1. 原理

基础的数据结构与算法中,有几块非常难懂,贪心,分治,回溯和动态规划这四个编程思想应该算是"名列前茅"了。本文希望通过详细解答几个经典示例来帮助大家搞懂他们。在进入实战之前,我们先来看看他们的区别。