博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
protocol buffer的简单使用
阅读量:5214 次
发布时间:2019-06-14

本文共 1873 字,大约阅读时间需要 6 分钟。

protocol buffer是一个高效的结构化数据存储格式,用来结构化数据的序列化与反序列化。目前支持java、c++、Python

相对于json而言:

  数据量跟小

  其他的还没看出什么优势

下载地址:

,

 

安装过程:

1、进入解压后的java目录,查看readme.txt

2、把protoc.exe放入到protobuf-2.5中的

3、运行mvn -test

 

编写protocol buffer需要以下三步

1、定义消息格式文件,以proto结尾

  

package tutorial;option java_package = "com.example.tutorial";option java_outer_classname = "PersonProtos";message Person{	required string name=1;	required int32 id=2;	optional string email=3;		message PhoneNumber{		required string number = 1;		optional int32 type=2;	}		repeated PhoneNumber phone=4;	}

  

2、使用编译器生成java文件

  protoc --java_out=. person.proto

3、使用protocol buffer提供的api编写应用程序

package com.example.tutorial;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import com.example.tutorial.PersonProtos.Person;import com.example.tutorial.PersonProtos.Person.PhoneNumber;public class ProtocolBufferExample {	public static void main(String[] args) {		Person person = Person.newBuilder()			.setName("zhengqun")			.setEmail("717401115@qq.com")			.setId(111)			.addPhone(PhoneNumber.newBuilder().setNumber("15351506736").setType(1))			.addPhone(PhoneNumber.newBuilder().setNumber("17751544242").setType(2))			.build();				FileOutputStream out = null;		try {			out = new FileOutputStream("example.txt");			person.writeTo(out);		} catch (Exception e) {			e.printStackTrace();		}finally{			try {				out.close();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}				FileInputStream in = null;		try {			in = new FileInputStream("example.txt");			Person p = Person.parseFrom(in);			System.out.println("person2:" + p);		} catch (Exception e) {			e.printStackTrace();		}finally{			try {				in.close();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}			}}

  

 

转载于:https://www.cnblogs.com/zhengqun/p/4922783.html

你可能感兴趣的文章
NodeJS怎么实现WebSocket功能
查看>>
vue:axios二次封装,接口统一存放
查看>>
Js三大特性--封装、继承以及多态
查看>>
2019年8月2日07:51:10 马上要撤
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
ES5和es6的封装继承
查看>>
call和apply区别
查看>>
Vue2路由鉴权
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
智表ZCELL产品发布企业版
查看>>
html表格中的tr td th用法
查看>>
【前端node.js框架】node.js框架express
查看>>
免费10分钟邮箱上线啦~~
查看>>
matlab实现不动点迭代、牛顿法、割线法
查看>>
20-MySQL-Ubuntu-数据表的查询-子查询(九)
查看>>
第26月第18天 mybatis_spring_mvc
查看>>
LeetCode 16. 3Sum Closest
查看>>
将文本文件中的\n字符串变成换行符
查看>>
如何在博客园设置自己的头像
查看>>