发布一个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插件
————————————————------------------------------------------------------------------------------------------------------------------
1python版
'''
Created on 2017-1-17
@author: admin
第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
'''
from _overlapped import NULL
class CrossList:
def __init__(self):
self.listA=Node()
self.listB=Node()
nodeA=self.listA
nodeB=self.listB
for i in range(0,10):
nodeA.next=Node()
nodeA=nodeA.next
if i==9:
nodeB.next=nodeA
else:
nodeB.next=Node()
nodeB=nodeB.next
def isCross(self):
nodeA=self.listA
nodeB=self.listB
while nodeA!=NULL:
while nodeB!=NULL:
if nodeA==nodeB:
return True
nodeB=nodeB.next
nodeB=self.listB
nodeA=nodeA.next
return False
class Node:
def __init__(self):
self.next=NULL
if __name__ == '__main__':
cl=CrossList()
print(cl.isCross())
2java版
http://blog.youkuaiyun.com/hxpjava1/article/details/22210535
3scala版
package ms
/**
* 第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
*/
class CrossList{
var listA:Node=Node()
var listB:Node=Node()
def init(){
var tmpA=listA;
var tmpB=listB
for(i <-0 until 10){
tmpA.next=Node()
tmpA=tmpA.next
if(i==9){
tmpB.next=tmpA
}else{
tmpB.next=Node()
tmpB=tmpB.next
}
}
}
def isCross():Boolean={
var tmpA=listA;
var tmpB=listB;
while(tmpA!=null){
while(tmpB!=null){
if(tmpA==tmpB){
return true;
}
tmpB=tmpB.next
}
tmpB=listB
tmpA=tmpA.next
}
return false;
}
}
case class Node(var next:Node=null)
object MicroSoft007 {
def main(args: Array[String]): Unit = {
var list=new CrossList()
list.init()
println(list.isCross())
}
}
c语言版本
/*
* microsoft007.c
*
* Created on: 2017年1月26日
* Author: admin
第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
*/
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
typedef struct LinkNode{
int val;
struct LinkNode * next;
}node;
void initLinkedList(int lnk1,int lnk2);
bool isCrosss();
static node * makeNode(int value);
node * plnk1;
node * plnk2;
int main007(){
initLinkedList(10,10);
bool res= isCrosss();
if(res==true){
printf("相交\n");
}else{
printf("不相交\n");
}
return 0;
}
void initLinkedList(int lnk1,int lnk2){
node * tmp;
for(int i=1;i<=lnk1;i++){
if(i==1){
plnk1=makeNode(1);
tmp=plnk1;
}else{
tmp->next=makeNode(1);
tmp=tmp->next;
}
}
tmp=NULL;
for(int i=1;i<=lnk2;i++){
if(i==1){
plnk2=makeNode(1);
tmp=plnk2;
}else{
tmp->next=makeNode(1);
tmp=tmp->next;
}
}
tmp->next=plnk1;
}
node * makeNode(int value){
node* p=malloc(sizeof(node));
p->val=value;
p->next=NULL;
return p;
}
bool isCrosss(){
node * tmp1=plnk1;
node * tmp2=plnk2;
while(tmp1!=NULL){
bool cross=false;
while(tmp2!=NULL){
if(tmp1==tmp2){
cross=true;
break;
}
tmp2=tmp2->next;
}
if(cross){
return true;
}
tmp1=tmp1->next;
}
return false;
}
c++版本
/*
* microsoft007.cpp
*
* Created on: 2017年2月6日
* Author: admin
第7题(链表)
微软亚院之编程判断俩个链表是否相交
给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。
为了简化问题,我们假设俩个链表均不带环。
问题扩展:
1.如果链表可能有环列?
2.如果需要求出俩个链表相交的第一个节点列?
*/
#include "iostream"
using namespace std;
class CrossLinkNode{
public:
CrossLinkNode(int value,CrossLinkNode*next=NULL){
this->value=value;
this->next=next;
}
public:
CrossLinkNode*& getNext() {
return next;
}
void setNext( CrossLinkNode* next) {
this->next = next;
}
int getValue() {
return value;
}
void setValue(int value) {
this->value = value;
}
private:
int value;
CrossLinkNode * next;
};
class CrossLink{
public:
CrossLink(){
linkA=new CrossLinkNode(0);
CrossLinkNode*tmp=linkA;
for(int i=1;i<10;i++){
tmp->setNext(new CrossLinkNode(i));
tmp=tmp->getNext();
}
linkB=new CrossLinkNode(0);
tmp=linkB;
for(int i=1;i<10;i++){
tmp->setNext(new CrossLinkNode(i));
tmp=tmp->getNext();
}
tmp->setNext(linkA);
}
public:
bool isCross(){
CrossLinkNode*tmp=linkA;
while(tmp!=NULL){
CrossLinkNode*tmpB=linkB;
while(tmpB!=NULL){
if(tmp==tmpB){
return true;
}
tmpB=tmpB->getNext();
}
tmp=tmp->getNext();
}
return false;
}
private:
CrossLinkNode * linkA;
CrossLinkNode * linkB;
};
int main(){
CrossLink link;
cout<<(link.isCross()?"相交":"不相交")<<endl;
return 0;
}