Google Protocol Buffer 的使用(二)
一、protobuf应用场景
protobuf 在Java中的应用场景可以是序列化和反序列化,流可以通过文件或者通过网络TCP/UDP等方式传输。
新建一个.proto文件
syntax = "proto3";
option java_package = "com.test.proto";
option java_outer_classname = "RequestInfo";
message SearchRequest {
repeated Param query_param = 1;
int32 page_number = 2;
int32 result_per_page = 3;
} message Param {
int32 age = 1;
string name = 2;
}
二、注意事项
1、使用proto3,必须显示申明:syntax = "proto3" ,否则使用proto2
2、生成的Java类的包可添加: option java_package = "com.test.proto";
3、生成的Java类的类名可添加:option java_outer_classname = "RequestInfo";
三、序列化和反序列化测试
通过idea插件生成Java类RequestInfo.java(生成方式详见上篇文章:Google Protocol Buffer 的使用(一)),将数据序列化到本地文件。
1、序列化测试:
/**
* 序列化
* @author monkjavaer
* @date 2019/01/05 09:27
*/
public class WriteTest { public static void main(String[] args) throws IOException {
//构造的RequestInfo信息
RequestInfo.SearchRequest.Builder searchRequest = RequestInfo.SearchRequest.newBuilder();
searchRequest.setPageNumber(1);
searchRequest.setResultPerPage(10);
RequestInfo.Param.Builder param = RequestInfo.Param.newBuilder();
param.setAge(25);
param.setName("Lee");
searchRequest.addQueryParam(param);
RequestInfo.SearchRequest request = searchRequest.build();
//写文件
FileOutputStream outputStream = new FileOutputStream(new File("F:\\request.pro"));
request.writeTo(outputStream);
outputStream.close();
}
}
2、 反序列化测试:
/**
* 反序列化
* @author monkjavaer
* @date 2019/01/06 09:43
*/
public class ReadTest {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream(new File("F:\\request.pro"));
RequestInfo.SearchRequest request = RequestInfo.SearchRequest.parseFrom(in);
System.out.println(request.toString());
}
}
Google Protocol Buffer 的使用(二)的更多相关文章
- Google Protocol Buffer的安装与.proto文件的定义
什么是protocol Buffer呢? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准. 我理解的就是:它是一种轻便高效的结构 ...
- Google Protocol Buffer 的编码方式
Google Protocol Buffer 使用到了两种编码方式:Varints 和 zigzag. 一 Varints 编码 每个 byte 只用 7bit 表示数字,最高位 bit作为标志位,如 ...
- Google Protocol Buffer的安装与.proto文件的定义(转)
转自(https://www.cnblogs.com/yinheyi/p/6080244.html) 什么是protocol Buffer呢? Google Protocol Buffer( 简称 P ...
- Google Protocol Buffer 的使用(一)
一.什么是Google Protocol Buffer下面是官网给的解释:Protocol buffers are a language-neutral, platform-neutral exten ...
- Netty使用Google Protocol Buffer完成服务器高性能数据传输
一.什么是Google Protocol Buffer(protobuf官方网站) 下面是官网给的解释: Protocol buffers are a language-neutral, platfo ...
- Google Protocol Buffer 的使用和原理[转]
本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...
- Google Protocol Buffer 的使用
简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...
- 学习Google Protocol buffer之概述
XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下 ...
- Google Protocol Buffer 的使用和原理
Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...
随机推荐
- 11 DOM基础
1.css 标签 js 元素 dom 节点,元素节点,属性节点,文本节点 2.dom浏览器支持率 ie 10% chrome 60% FF 99% 3. ...
- struts2 源码地址
http://archive.apache.org/dist/struts/
- Java之抽象和封装
① 如何从现实世界中抽象出类? 根据软件开发需求: 发现类-->发现类的属性-->发现类的方法 ② 构造方法的作用和特点是什么? 作用:在创建对象时执行一些初始化操作 ...
- BotFramework学习-01
微软在Build2016大会上表示,未来将是一个充满聊天机器人的世界,为此他们推出了微软Bot Framework,能够允许任何人制作自己的聊天机器人,微软则提供“cognitive microser ...
- C# 获取文件编码
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 「二叉搜索树 / set / 朝鲜树 / 替罪羊树」快速排序
要求 给定n个数,对这n个数进行排序 这题当然可以直接调用sort #include<cstdio> #include<vector> #define ll long long ...
- CREATE CONVERSION - 定义一个用户定义的码制转换
SYNOPSIS CREATE [DEFAULT] CONVERSION name FOR source_encoding TO dest_encoding FROM funcname DESCRIP ...
- CAD控件,CAD插件使用教程:Android开发使用控件--开发环境的搭建
Android开发使用控件入门--环境搭建 2014-12-24 09:57 14人阅读 评论(0) 收藏 编辑 删除 CAD控件.CAD三维控件,手机 ...
- 为了安全请不要随意在页面中设置validateRequest="false"
为了安全请不要随意在页面中设置validateRequest="false" 分类: ASP.NET2009-04-12 17:24 531人阅读 评论(0) 收藏 举报 asp. ...
- [Python3网络爬虫开发实战] 1.6.2-Tornado的安装
Tornado是一个支持异步的Web框架,通过使用非阻塞I/O流,它可以支撑成千上万的开放连接,效率非常高,本节就来介绍一下它的安装方式. 1. 相关链接 GitHub:https://github. ...