fix协议封装挑战-工具类

35 篇文章 0 订阅
34 篇文章 16 订阅

发布一个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插件


————————————————

MsgUtil:

 

 /*
     * @headerAndBody 包含消息头+消息体,包含SOH,不包含checksum域
     */
    public static String checkSum(String headerAndBody) {
        byte[] headerAndBodyBytes = headerAndBody.getBytes();
        
        int sum = 0;

        for (byte b : headerAndBodyBytes) {
            sum += b;
        }

        String rt = String.valueOf((sum) % 256);

        /*
         * 在模256之后需要转换成固定长度为3字符串
         */
        if (rt.length() == 1) {
            rt = "00" + rt;
        } else if (rt.length() == 2) {
            rt = "0" + rt;
        } else {
        }

        return rt;
    }
    
    public static String getGMTTime(){
        SimpleDateFormat foo = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS", Locale.ENGLISH);
        foo.setTimeZone(TimeZone.getTimeZone("GMT"));
        return foo.format(new Date());
    }
    
    public static String[] seperate(String msgStr){
    	String[] tags=msgStr.split(BaseMsg.SOH);
    	List<Integer> seqHead=new ArrayList<Integer>();
    	List<Integer> seqTailer=new ArrayList<Integer>();
    	int indexHead=0;
    	int indexTail=0;
    	boolean firstTail=true;
    	if(tags.length<5){
    		throw new InValidDataException("消息格式错误");
    	}else{
    			String tag=tags[0];
        		String [] ts=tag.split("=");
        		if(ts.length!=2){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tagId=ts[0];
        		if(!tagId.equals("8")){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tag1=tags[1];
        		String [] ts1=tag1.split("=");
        		if(ts1.length!=2){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tagId1=ts1[0];
        		if(!tagId1.equals("9")){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tag2=tags[2];
        		String [] ts2=tag2.split("=");
        		if(ts2.length!=2){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tagId2=ts2[0];
        		if(!tagId2.equals("35")){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tag3=tags[tags.length-1];
        		String [] ts3=tag3.split("=");
        		if(ts3.length!=2){
        			throw new InValidDataException("消息格式错误");
        		}
        		String tagId3=ts3[0];
        		if(!tagId3.equals("10")){
        			throw new InValidDataException("消息格式错误");
        		}
    	}
    	
    	for(int i=0;i<tags.length;i++){
    		String tag=tags[i];
    		String [] ts=tag.split("=");
    		if(ts.length!=2){
    			throw new InValidDataException("消息格式错误");
    		}
    		String tagId=ts[0];
    		if(allHead.contains(tagId)){
    			seqHead.add(i);
    			indexHead=i;
    		}
    		if(allTailer.contains(tagId)){
    			seqTailer.add(i);
    			if(firstTail){
    				indexTail=i;
    			}
    			firstTail=false;
    		}
    	}
    	for(int i=0;i<seqHead.size()-1;i++){
    		if(seqHead.get(i+1)-seqHead.get(i)!=1){
    			throw new InValidDataException("消息格式错误");
    		}
    	}
    	for(int i=0;i<seqTailer.size()-1;i++){
    		if(seqTailer.get(i+1)-seqTailer.get(i)!=1){
    			throw new InValidDataException("消息格式错误");
    		}
    	}
    	int index=0;
    	indexHead++;
        while(indexHead-->0){
        	index=msgStr.indexOf("=", index+1);
        }
        index=msgStr.indexOf(BaseMsg.SOH, index);
        String head=msgStr.substring(0, index+1);
        int indexT=0;
        while(indexTail-->0){
        	indexT=msgStr.indexOf("=",indexT+1);
        }
        indexT=msgStr.indexOf(BaseMsg.SOH, indexT);
        String tailer=msgStr.substring(indexT+1);
        String body=msgStr.substring(index+1, indexT+1);
        String[]sep=new String[3];
        sep[0]=head;
        sep[1]=body;
        sep[2]=tailer;
        return sep;
    }

 

checkSum计算10的值,
seperate将消息,分割为头,体,尾

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值