发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967
课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。
腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518
第二个视频发布 https://edu.youkuaiyun.com/course/detail/27109
腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518
介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。
第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574
详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------
1.把二元查找树转变成排序的双向链表(树) 题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ /
6 14
/ / / /
4 8 12 16
转换成双向链表
4=6=8=10=12=14=16。
首先我们定义的二元查找树 节点的数据结构如下:
struct BSTreeNode
{
int m_nValue; // value of node
BSTreeNode *m_pLeft; // left child of node
BSTreeNode *m_pRight; // right child of node
};
package com.microsoft;
public class SearchTreeToList {
private static ListNode listRoot;
public static void print(){
ListNode node=listRoot;
while(node!=null){
System.out.print(node.value+"==");
node=node.right;
}
}
private static class ListNode{
private ListNode left;
private ListNode right;
private int value;
}
private static class BinarySearchTree {
private Node root;
public BinarySearchTree(int[]data){
for(int i=0;i<data.length;i++){
Node node=new Node();
node.value=data[i];
insert(node);
}
}
/**
* 中序遍历
*/
public void inorderTreeWalk(){
innerInorderTreeWalk(root);
while(listRoot.left!=null){
listRoot=listRoot.left;
}
}
/**
* 中序遍历
*/
private void innerInorderTreeWalk(Node node){
if(node!=null){
innerInorderTreeWalk(node.left);
ListNode listNode=new ListNode();
listNode.value=node.value;
if(listRoot!=null){
listNode.left=listRoot;
listRoot.right=listNode;
}else{
listRoot=listNode;
}
listRoot=listNode;
innerInorderTreeWalk(node.right);
}
}
public void insert(int value){
Node node=new Node();
node.value=value;
insert(node);
}
/**
* 插入节点
* @param node
*/
public void insert(Node node){
Node y=null;
Node x=root;
while(x!=null){
y=x;
if(node.value<x.value){
x=x.left;
}else{
x=x.right;
}
}
node.parent=y;
if(y==null){
root=node;
}else if(y.value>node.value){
y.left=node;
}else{
y.right=node;
}
}
private class Node{
private Node left;
private Node right;
private Node parent;
private int value;
}
}
public static void main(String[] args) {
int [] data=new int[]{4,6,8,10,12,14,16};
BinarySearchTree tree=new BinarySearchTree(data);
tree.inorderTreeWalk();
print();
}
}