发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967
课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。
腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518
第二个视频发布 https://edu.csdn.net/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.csdn.net/course/detail/27574
详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------
scala版本
package ms
import scala.collection.mutable.ArrayBuffer
/**
* 2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
*/
class CustomStack[T<%Ordered[T]]{
var data:ArrayBuffer[T]=ArrayBuffer[T]();
var mins:ArrayBuffer[T]=ArrayBuffer[T]();
def push(value:T)={
data.append(value)
if(mins.isEmpty){
mins.append(value)
}else{
if(mins(mins.length-1)>value){
mins.append(value)
}
}
}
def pop():Option[T]={
if(data.length==0){
return None
}
val v=data.remove(data.length-1);
if(v==mins(mins.length-1)){
mins.remove(mins.length-1)
}
return Some(v)
}
def min():Option[T]={
if(mins.length==0){
return None
}
Some(mins(mins.length-1))
}
}
object MicroSoft002 extends App{
val stack=new CustomStack[Int]();
stack.push(5);
stack.push(10);
stack.push(3);
println(stack.min)
stack.pop()
println(stack.min)
stack.pop()
println(stack.min)
stack.pop()
println(stack.min)
}
python版本
'''
Created on 2017-1-9
2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
@author: admin
'''
class MinStack:
def __init__(self):
self.mainAry=[]
self.auxAry=[]
def push(self,data):
if len(self.mainAry)==0:
self.auxAry.append(data)
elif data<=self.auxAry[len(self.auxAry)-1]:
self.auxAry.append(data)
self.mainAry.append(data)
def pop(self):
if len(self.mainAry)==0:
raise IndexError
data=self.mainAry[len(self.mainAry)-1]
del self.mainAry[len(self.mainAry)-1]
if data==self.auxAry[len(self.auxAry)-1]:
del self.auxAry[len(self.auxAry)-1]
return data
def min(self):
if len(self.auxAry)==0:
raise IndexError
else:
return self.auxAry[len(self.auxAry)-1]
if __name__ == '__main__':
stack=MinStack()
stack.push(7)
stack.push(5)
stack.push(9)
stack.push(2)
stack.push(4)
print(stack.pop())
print(stack.min())
print(stack.pop())
print(stack.min())
print(stack.pop())
print(stack.min())
print(stack.pop())
print(stack.min())
java版本
地址1 http://blog.csdn.net/hxpjava1/article/details/22096809
c语言版本
/*
* microsoft002.c
*
* Created on: 2017年1月26日
* Author: admin
*
2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
*/
#include <stdio.h>
#define ARRAY_MAX_LENGHT 100
void push(int data);
int min();
int pop();
//主数组
static int mainArray[ARRAY_MAX_LENGHT];
//辅助数组
static int auxArray[ARRAY_MAX_LENGHT];
static int mainIndex=0;
static int auxIndex=0;
int main2(){
push(5);
push(4);
push(10);
printf("%d\n",min());
printf("%d\n",pop());
printf("%d\n",min());
printf("%d\n",pop());
printf("%d\n",min());
return 0;
}
void push(int data){
mainArray[mainIndex++]=data;
if(auxIndex==0){
auxArray[auxIndex++]=data;
}else{
if(auxArray[auxIndex-1]>data){
auxArray[auxIndex++]=data;
}
}
}
int min(){
if(auxIndex==0){
return -1;
}
return auxArray[auxIndex-1];
}
int pop(){
if(mainIndex==0){
return -1;
}
if(mainArray[mainIndex-1]==auxArray[auxIndex-1]){
auxIndex--;
}
return mainArray[--mainIndex];
}
c++版本
/*
* microsoft002.cpp
*
* Created on: 2017年2月6日
* Author: admin
2.设计包含min函数的栈(栈)
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
*/
#define MAX_LEN 100
#include "iostream"
using namespace std;
template <typename T>
class MinStack{
public:
MinStack(){
mainIndex=0;
auxIndex=0;
}
public:
void push(T value){
mainArray[mainIndex++]=value;
if(auxIndex==0){
auxArray[auxIndex++]=value;
}else{
if(value<=auxArray[auxIndex-1]){
auxArray[auxIndex++]=value;
}
}
}
T pop(){
T tmp=mainArray[mainIndex-1];
if(auxArray[auxIndex-1]==mainArray[mainIndex-1]){
mainIndex--;
auxIndex--;
}else{
mainIndex--;
}
return tmp;
}
T min(){
return auxArray[auxIndex-1];
}
private:
int mainIndex;
int auxIndex;
T mainArray[MAX_LEN];
T auxArray[MAX_LEN];
};
int main002(){
MinStack<int> stack;
stack.push(10);
stack.push(9);
stack.push(12);
stack.push(6);
cout<<stack.min()<<endl;
cout<<stack.pop()<<endl;
cout<<stack.min()<<endl;
stack.push(3);
cout<<stack.min()<<endl;
cout<<stack.pop()<<endl;
cout<<stack.min()<<endl;
return 0;
}