发布一个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插件
————————————————
废话不多,直接贴代码
package cs.mina.codec;
import java.nio.charset.Charset;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
/*
*@author(huangxiaoping)
*@date 2013-10-24
*/
public class CsFixProtocolCodecFactory implements ProtocolCodecFactory {
private CsFixProtocolDecoder decoder;
private CsFixProtocolEncoder encoder;
public CsFixProtocolCodecFactory(Charset charset){
decoder= new CsFixProtocolDecoder(charset);
encoder=new CsFixProtocolEncoder(charset);
}
@Override
public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
return decoder;
}
@Override
public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
return encoder;
}
}
package cs.mina.codec;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolDecoderAdapter;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;
import cs.mina.SeqenceNum;
import cs.mina.codec.msg.BaseMsg;
import cs.mina.codec.msg.MsgFactory;
import cs.mina.codec.msg.MsgUtil;
import cs.mina.codec.msg.decoder.MsgDecoderFactory;
import cs.mina.exception.InValidDataException;
/*
*@author(huangxiaoping)
*@date 2013-10-24
*/
public class CsFixProtocolDecoder extends ProtocolDecoderAdapter {
private final Charset charset;
private List<String> incorrectMsgList=new ArrayList<String>();
private boolean isChunked=false;
public CsFixProtocolDecoder(Charset charset){
this.charset=charset;
}
@Override
public void decode(IoSession arg0, IoBuffer arg1, ProtocolDecoderOutput arg2)
throws Exception {
String input=arg1.getString(charset.newDecoder());
System.out.println(input);
int index=input.indexOf(BaseMsg.SOH, input.indexOf(BaseMsg.SOH+"10=")+1);
List<String> msgList=new ArrayList<String>();
synchronized (this) {
if(input.lastIndexOf(BaseMsg.SOH+"10=")!=(input.length()-8)||!input.endsWith(BaseMsg.SOH)){
isChunked=true;
incorrectMsgList.add(input);
}else if(input.lastIndexOf(BaseMsg.SOH+"10=")==(input.length()-8)&&input.startsWith("8=")&&input.indexOf("9=")<15&&input.indexOf("35=")<25){
msgList.add(input.substring(0, index+1));
while((index+1)!=input.length()){
input=input.substring(index+1);
index=input.indexOf(BaseMsg.SOH, input.indexOf(BaseMsg.SOH+"10=")+1);
msgList.add(input.substring(0, index+1));
}
}else if(isChunked){
isChunked=false;
String concat="";
for(int i=0;i<incorrectMsgList.size();i++){
concat+=incorrectMsgList.get(i);
}
concat+=input;
int indexIncorrect=concat.indexOf(BaseMsg.SOH, concat.indexOf(BaseMsg.SOH+"10=")+1);
msgList.add(concat.substring(0, indexIncorrect+1));
while((indexIncorrect+1)!=concat.length()){
concat=concat.substring(indexIncorrect+1);
indexIncorrect=concat.indexOf(BaseMsg.SOH, concat.indexOf(BaseMsg.SOH+"10=")+1);
msgList.add(concat.substring(0, indexIncorrect+1));
}
for(int i=0;i<incorrectMsgList.size();i++){
incorrectMsgList.remove(i);
}
}else{
throw new Exception("数据包错误"+input);
}
}
if(!isChunked){
for(int i=0;i<msgList.size();i++){
SeqenceNum.increaseNextSeqNum();
String str=msgList.get(i);
input=str;
str=str.substring(0, str.indexOf(BaseMsg.SOH+"10=")+1);
String checkSum=MsgUtil.checkSum(str);
String msgType=input.substring(input.indexOf(BaseMsg.SOH+"35=")+1);
msgType=msgType.substring(msgType.indexOf("=")+1,msgType.indexOf(BaseMsg.SOH));
String type=msgType;
BaseMsg baseMessage=MsgFactory.getMsg(type);
String[]msgArray=MsgUtil.seperate(input);
baseMessage.setHead(msgArray[0]);
baseMessage.setBody(msgArray[1]);
baseMessage.setTailer(msgArray[2]);
baseMessage.decode();
baseMessage.validate();
if(!checkSum.equals(baseMessage.getTailerEntity().getCheckSum().getTagValue())){
throw new InValidDataException("checksum字段值错误");
}
arg2.write(baseMessage);
}
}
}
}
package cs.mina.codec;
import java.nio.charset.Charset;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
import cs.mina.MessageMap;
import cs.mina.SeqenceNum;
import cs.mina.codec.msg.BaseMsg;
import cs.mina.codec.msg.MsgUtil;
import cs.mina.codec.msg.decoder.MsgDecoder;
import cs.mina.codec.msg.decoder.MsgDecoderFactory;
import cs.mina.codec.msg.encoder.MsgEncoder;
import cs.mina.codec.msg.encoder.MsgEncoderFactory;
import cs.mina.exception.InValidDataException;
/*
*@author(huangxiaoping)
*@date 2013-10-24
*/
public class CsFixProtocolEncoder extends ProtocolEncoderAdapter {
private final Charset charset;
public CsFixProtocolEncoder(Charset charset){
this.charset=charset;
}
@Override
public void encode(IoSession arg0, Object arg1, ProtocolEncoderOutput arg2)
throws Exception {
//SeqenceNum.increaseSeqNum();
BaseMsg message=(BaseMsg)arg1;
MessageMap.addMsg(message);
message.validate();
//MsgEncoder encoder=MsgEncoderFactory.getEncoder(message.getHeadEntity().getMsgType().getTagValue());
String str=message.encode();
message.getHeadEntity().getBodyLength().setTagValue(getBodyLength(str));
str=message.encode();
String result=str;
validateLen(str);
str=str.substring(0, str.indexOf(BaseMsg.SOH+"10=")+1);
String checkSum=MsgUtil.checkSum(str);
message.getTailerEntity().getCheckSum().setTagValue(checkSum);
result=message.encode();
System.out.println(result);
IoBuffer io = IoBuffer.allocate(result.getBytes().length);
io.put(result.getBytes());
io.flip();
arg2.write(io);
}
private String getBodyLength(String msg){
String m1=msg.substring(msg.indexOf(BaseMsg.SOH+"9=")+1);
String m2=m1.substring(m1.indexOf(BaseMsg.SOH)+1);
String m3=m2.substring(0,m2.indexOf(BaseMsg.SOH+"10=")+1);
return m3.length()+"";
}
private void validateLen(String msg){
String m1=msg.substring(msg.indexOf(BaseMsg.SOH+"9=")+1);
String r1=m1.substring(2, m1.indexOf(BaseMsg.SOH));
String m2=m1.substring(m1.indexOf(BaseMsg.SOH)+1);
String m3=m2.substring(0,m2.indexOf(BaseMsg.SOH+"10=")+1);
if( !(m3.length()==Integer.parseInt(r1))){
throw new InValidDataException("BodyLength字段值错误");
}
}
}