前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Netty整合Protobuffer 顶

Netty整合Protobuffer 顶

作者头像
算法之名
发布2019-10-24 14:45:30
4000
发布2019-10-24 14:45:30
举报
文章被收录于专栏:算法之名算法之名

现在我们都知道,rpc的三要素:IO模型,线程模型,然后就是数据交互模型,即我们说的序列化和反序列化,现在我们来看一下压缩比率最大的二进制序列化方式——Protobuffer,而且该方式是可以跨语言的,几乎大部分的语言都可以互相序列化和反序列化。

要使用Protobuffer,需要先进行安装。因为本人使用的是mac,所以我使用的是.tar.gz的二进制压缩文件。

其下载地址为https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.0

下载完成后,依次执行以下命令

代码语言:javascript
复制
tar -xzvf protobuf-all-3.5.0.tar.gz
cd protobuf-3.5.0/
./configure
make
make check
make install
安装需要的时间比较长,需要耐心等待,安装完成后,执行
admindeMacBook-Pro:protobuf-3.5.0 admin$ protoc --version
 libprotoc 3.5.0

有显示红色字样,表示安装成功。

现在我们来写一个hello world的样例

新建一个player.proto的文件

touch player.proto

vim player.proto

添入如下代码

代码语言:javascript
复制
option java_package = "com.guanjian.proto";   //此处为生成java文件的包名
 option java_outer_classname = "PlayerModule"; //生成Java的类名
message PBPlayer{            //Protobuffer的类声明,会生成java的内部类
     required int64 playerId = 1;  //required为必须字段,int64表示java的long类型,= 1这个1表示字段键名,每个字段的键名不能重复
     required int32 age = 2;  //int32表示java的int类型
     required string name = 3;  //string表示java的String
     repeated int32 skills = 4;  //repeated int32表示Java的List<Integer>
 }
message PBResource{
     required int64 gold = 1;
     required int32 energy = 2;
 }

保存后,输入命令

protoc ./player.proto --java_out=./

会在当前文件夹生成com/guanjian/proto的三个文件夹

cd com/guanjian/proto后,可以看到我们生成的java文件

admindeMacBook-Pro:proto admin$ ls PlayerModule.java

这里java文件里面的内容非常的多,也非常复杂。

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com