使用Protocol Buffers的Maven插件_chengqiuming的博客-程序员宅基地

技术标签: 微服务  Spring Cloud  

一 代码位置

https://github.com/cakin24/spring-cloud-code/tree/master/ch19-1

二 编译protobuf

三 编译后通过下面代码测试

package cn.springcloud;

import cn.springcloud.proto.PersonModel;
import com.google.protobuf.InvalidProtocolBufferException;

public class PersonUseCase {


    public static void main(String[] args) {
      PersonModel.Person forezp= PersonModel.Person.newBuilder()
               .setId(1)
               .setName("forezp")
               .setEmail("[email protected]").build();

        for(byte b : forezp.toByteArray()){
            System.out.print(b);
        }


        System.out.println("\n" + "bytes长度" + forezp.toByteString().size());
        System.out.println("===== forezp Byte 结束 =====");


        System.out.println("===== forezp 反序列化生成对象开始 =====");
        PersonModel.Person forezpCopy = null;
        try {
            forezpCopy = PersonModel.Person.parseFrom(forezp.toByteArray());
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
        System.out.print(forezpCopy.toString());
        System.out.println("===== forezp 反序列化生成对象结束 =====");
    }
}

四 测试结果

8118610211111410112211226151091051081011154850644954514699111109
bytes长度27
===== forezp Byte 结束 =====
===== forezp 反序列化生成对象开始 =====
id: 1
name: "forezp"
email: "[email protected]"
===== forezp 反序列化生成对象结束 =====

演示了使用Proto Buffer来序列化和反序列化一个Java对象的过程,这跟使用JSON进行序列化和反序列化类似。采用Proto Buffer序列化的数据可读性很差,但是数据体积很小,所以能够大大提高传输效率。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chengqiuming/article/details/103411762

智能推荐

Python第三方模块beautifulsoup安装和使用_ppython beau安装使用_小胖_@的博客-程序员宅基地

文章目录beautifulsoupBeautifulSoup4的安装BeautifulSoup4简介BeautifulSoup4主要解析器,以及优缺点BeautifulSoup4的使用bs 的初始化操作Beautiful Soup常用的方法和属性1.find_all() 方法:2.find() 方法:3.get_text()方法:4.获取节点属性的方法:5.select()方法:6.string属...

pycharm修改界面主题颜色和字体大小_pycahrm界面改颜色_Alisa樱的博客-程序员宅基地

上面是修改pycharm界面颜色操作路径:file/settings/appearance&behavior/appearance(可以选择白色背景或黑色背景) 下面是修改pycharm字体大小操作路径:file/settings/editor/font    ...

Yii框架中MongoDB类似In查询_yii2.0 聚合查询mongodb_a117616的博客-程序员宅基地

情景: 方法A接收一个包含多个id的字符串, 多个id用空格隔开, 在不需要遍历的情况下, 查询出字段中所有的满足条件的记录.如: $idList = '123   454   121 656  5584'function query ( $idList ) {//先对字符串进行拆分, 并去除多余的空项$idArray = array_filter(explode(' ', $id

git 获取git仓库_shenzhen_zsw的博客-程序员宅基地

关于git的理解1:git同VCS和SVN不同,它是分布式版本控制工具,就是各个仓库都可以 作为中央仓库,而集中式版本控制工具只有一个集中的中央仓库,每个开发者拥有不同的读写权限,并且在更新和提交的时候都必须联网(从中央仓库直接联网更新下来,或者将本地改动直接提交到中央仓库,不能本地提交,因为本地不具有中央仓库的功能,git就可以);而git就不同,你所有的改动都可以先提交到本地仓库,到网络允...

基于神经网络的分类_基于神经网络的城市声音分类_weixin_26735933的博客-程序员宅基地

基于神经网络的分类Every day we hear different sounds and it is part of our life. Humans can differentiate between sounds easily but how cool it will be if computer can also classify the sounds into categories....

kaldi的TIMIT实例一_weixin_34370347的博客-程序员宅基地

TIMIT语音库是IT和MIT合作音素级别标注的语音库,用于自动语音识别系统的发展和评估,包括来自美式英语,8个地区方言,630个人。每个人读10个句子,每个发音都是音素级别、词级别文本标注,16kHz,16bit。注意:不用使用TIMIT配置作为运行Kaldi的一个通用型例子,因为它不是一个非常标准的结构。其它的一些配置也是非常好用的。 -------------------------...

随便推点

cuda、torch、torchvision对应版本以及安装_torch版本_李昂的的博客-程序员宅基地

查找torch与torchvision对应版本github链接:https://github.com/pytorch/vision#installation在线下载或者离线下载1、在线下载在pytorch官网选择相应的历史版本,使用conda或者pip安装,使用官网的镜像下载很慢,建议使用其他的镜像源,这里我使用的是阿里的镜像速度还不错。pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 -i https://mirror

Spring Boot 使用 WebSocket 实现消息推送 及 WebSocket原理_二一点的博客-程序员宅基地

WebSocket 是什么原理,为什么可以实现持久连接?一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容

Qt之QCustomPlot_qcustomplot边界限制_赵树成的博客-程序员宅基地

在学完各种dll的调用方式和QAbstractItemModel之后,终于到了这一步,之前用过CustomPlot来实现简单图的绘制,但是这次我需要从头开始,理解内涵文章目录1 Main Page1.1 QCustomPlot 2.0.1 Documentation1.2 Plottables 绘图板1.3 Controlling the Axes 坐标轴的操控1.4 Plot Legend 绘...

js 数组转成二叉树(递归)_青梅煮酒论英雄的博客-程序员宅基地

判断终止条件。 leng === 1 return this.value = value取中间mid先定义一个root = arr[mid];root.left 递归左半部分root.right 递归右半部分返回rootfunction sortedArrayToBST (arr) { if (!arr.length) { return null; } if (arr.length === 1) { return arr[0]; } let mid = parseIn.

PDU解析_thinkandchange的博客-程序员宅基地

A.收到PDU                SMS-DELIVER (Mobile Terminated) 收到DELIVER-PDU格式SCAPDU TYPEOA  PID    DCS       SCTS    UDL     UD      服务中心号码

推荐文章

热门文章

相关标签