发布一个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插件
————————————————------------------------------------------------------------------------------------------------------------------
1 参考根据幻灯片中第9页所给出的“4网页模型” ,现假设有A,B,C,D,E五个网页,其中
1)A网页有链接指向B,C,D,E
2)B网页有链接指向A,D
3)C网页有链接指向A,D
4)D网页有链接指向C
5)E网页有链接指向A,C
A 请写出这个网页链接结构的Google矩阵,目测你认为哪个页面的重要性(PR值)最高?
B(本题可选)手动或编程计算这5个页面的PR值,可以使用任何你熟悉的编程语言,欢迎在论坛上晒自己的程序和结果
C(本题可选)指出当页面较多的时候,计算PR的主要困难在什么地方,Map-Reduce是怎么解决这个难题的?
A的实现:
package demo;
public class PageRank {
public static int[][] linkMatrix(){
int[] A=new int[5];
A[0]=0;A[1]=1;A[2]=1;A[3]=1;A[4]=1;
int[]B=new int[5];
B[0]=1;B[1]=0;B[2]=0;B[3]=1;B[4]=0;
int []C=new int[5];
C[0]=1;C[1]=0;C[2]=0;C[3]=1;C[4]=0;
int []D=new int[5];
D[0]=0;D[1]=0;D[2]=1;D[3]=0;D[4]=0;
int []E=new int[5];
E[0]=1;E[1]=0;E[2]=1;E[3]=0;E[4]=0;
int [][] linkMatrix=new int[][]{A,B,C,D,E};
return linkMatrix;
}
public static double[][]generateSMatrix(int[][]linkMatrix){
double[][] sMatrix=new double[linkMatrix.length][linkMatrix[0].length];
int [] linkSum=new int[linkMatrix.length];
for(int i=0;i<linkMatrix.length;i++){
int sum=0;
for(int j=0;j<linkMatrix[i].length;j++){
sum+=linkMatrix[i][j];
}
linkSum[i]=sum;
}
for(int i=0;i<sMatrix.length;i++){
for(int j=0;j<sMatrix[i].length;j++){
sMatrix[j][i]=linkMatrix[i][j]/((double)linkSum[i]);
}
}
return sMatrix;
}
public static double [][]generateGMatrix(double alpha,double[][]sMatrix){
double [][]gMatrix=new double[sMatrix.length][sMatrix.length];
for(int i=0;i<sMatrix.length;i++){
for(int j=0;j<sMatrix[i].length;j++){
gMatrix[i][j]=sMatrix[i][j]*alpha+(1-alpha)/sMatrix.length;
}
}
return gMatrix;
}
public static double[] generateQVecotor(double quanlity,double[]qVecotor,double[][]gMatrix){
double[] nextQVecotor=new double[qVecotor.length];
for(int i=0;i<gMatrix.length;i++){
for(int j=0;j<gMatrix[i].length;j++){
nextQVecotor[i]+=gMatrix[i][j]*qVecotor[j];
}
}
boolean pass=true;
for(int i=0;i<nextQVecotor.length;i++){
if(Math.abs(nextQVecotor[i]-qVecotor[i])>quanlity){
pass=false;
}
}
if(pass){
return nextQVecotor;
}else{
return generateQVecotor(quanlity,nextQVecotor,gMatrix);
}
}
public static void main(String[] args) {
int[][] linkMatrix=linkMatrix();
System.out.println("连接矩阵(横向)");
for(int i=0;i<linkMatrix.length;i++){
for(int j=0;j<linkMatrix[i].length;j++){
System.out.print(linkMatrix[i][j]+" ");
}
System.out.println();
}
System.out.println("S矩阵(纵向)");
double[][]sMatrix=generateSMatrix(linkMatrix);
for(int i=0;i<sMatrix.length;i++){
for(int j=0;j<sMatrix[i].length;j++){
System.out.print(sMatrix[i][j]+" ");
}
System.out.println();
}
System.out.println("G矩阵(纵向)");
double [][]gMatrix=generateGMatrix(0.8,sMatrix);
for(int i=0;i<gMatrix.length;i++){
for(int j=0;j<gMatrix[i].length;j++){
System.out.print(gMatrix[i][j]+" ");
}
System.out.println();
}
double quantity=0.00000001;
double[] qVecotor=new double[]{1,1,1,1,1};
double [] finallyQVecotor=generateQVecotor(quantity,qVecotor,gMatrix);
System.out.println("Q向量");
for(int i=0;i<finallyQVecotor.length;i++){
System.out.print(finallyQVecotor[i]+" ");
}
}
}