左值引用、右值引用、移动语义、完美转发
|
还是再来罗嗦一遍,树的结构就像是一颗倒挂的树,结点的组成是以层级往下。一棵树由若干子树构成,而子树又有更小的子树构成。 树的血缘关系 对于树中的某个结点,最多只和上一层的结点有直接的关系,而与其下一层的多个结点有直接关系。其上一层的结点称为双亲结点,下一层的结点称为孩子结点。所有位于树的最底部,没有孩子结点的结点被称之为叶子节点。具有相同双亲的结点互为兄弟节点。 树的家族等级 树是一个大家族,等级十分森严。树中某个结点的子树个数称为该结点的度。所以叶子结点也就是度为0的结点。而度不为0的结点被称之为内部结点。每一个结点都具有自己的层次,该层次由高往低递增,根结点为第一层,根的孩子结点为第二层,依次类推。一棵树最大的层数称之为树的高度(或深度)。 2 树的存储结构 由于普通的树结构并不像二叉树那么规则,可能是多叉树的组合,因此很难用常规的线性结构来存储。因此树结构的存储需要将树家族中的关系剥离出来进行存储,保存了每个结点之间的关系,整个树结构也就能依次进行恢复。 这就好比家族中的族谱一样,记录的是我们和双亲以及兄弟姐妹的关系。对于树而言,则根据存储关系的不同,可分为双亲表示、孩子表示以及孩子兄弟表示三种存储方法。 双亲表示法
树的双亲表示,显然就是通过记录每个结点的双亲结点来存储整颗树的层次关系。这里常用的一种存储结构就是数组。在连续的地址中存储树的结点,同时将之与其双亲结点在数组中的序号进行对应,这样一来就能够保存所有结点的双亲信息。 不仅如此,所谓百川成海,白木成林。既然有了树结构,自然而然也会有相应的森林结构。因此,本文就将从普通的树结构出发,探讨并介绍一下树和森林的那些事。 1 树的定义
树实际上就是由许多个节点组成的集合,只不过每个节点的的组成是根据树状结构进行划分。一颗普通的树结构可以通过以下图来定义。 此外,所有在Kubernetes集群共享某些集群范围的服务,如工作负载DNS,这使得应用可发现集群中的其他应用程序的服务。 所以,这些问题可能是否会出现问题,具体取决于应用程序的安全要求。 Kubernetes提供了各种防止安全漏洞的方法,例如PodSecurityPolicies和NetworkPolicies,但是,它需要经验来以完全正确的方式来调整这些工具,并且它们也不能防止所有的安全漏洞。 而且,Kubernetes是为共享而设计的,而不是为了隔离和安全而设计的。 缺点:多租户资源侵占 Kubernetes集群中有许多共享资源,不同的应用程序可以通过多种方式侵占资源。比如,一个应用程序可能会占据某个共享资源(例如CPU或内存),从而使同一节点上运行的其他应用程序无法运行。 Kubernetes提供了多种方法来控制这种行为,例如资源请求和限制,ResourceQuotas和LimitRanges。但是,以完全正确的方式调整这些工具并不是一件容易的事,它们也无法防止所有不必要的副作用。 缺点:用户权限复杂 如果只有一个集群,则企业中的许多人必须有权访问集群。用户使用系统的机会越多,破坏的风险就越高。在集群中,你可以控制哪些人可以使用基于角色的访问控制(RBAC)进行操作。但是,这仍然不能防止用户破坏其授权范围内的某些行为。 缺点:集群不能无限大 如果将单个群集用于所有工作负载,则集群可能会很大(就节点和Pods而言)。但是,Kubernetes集群不能无限增长。 对于集群的大小,存在一些理论上限,Kubernetes大约在5000个节点,150000个Pods和300000个容器的定义。但是,实际上,使用较小的集群大小(例如500个节点)可能已经出现了挑战。 原因是较大的集群对Kubernetes控制平面施加了更高的压力,这需要仔细计划来保持集群的功能和效率。 (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
