protocal buffers入门实例

43 篇文章 0 订阅
6 篇文章 0 订阅

hadoop yarn中新的系列化protocol buffers

1.安装protoc,附件里是win,llinux的文件,win配置下环境变量,或是linux下configure make make install

2.写protoc文件person.proto

package tutorial;
option java_package="";//包名
option java_outer_classname="PersonProtos";//类名

message Person{
	required string name = 1;  //required为必填,optional为可为空
	required int32 id =2;   
	required string email = 3;
	
	message PhoneNumber{
		required string number = 1;
		optional int32 type = 2;
	}
	
	repeated PhoneNumber phone = 4;
}

2.protoc命令生成类到当前目录

protoc -java_out=. person.proto

 3.测试类

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import com.zb.demo.protocalBuffers.PersonProtos.Person;

/**
 * proto buffer实例
 * @author dirk.zhang
 *
 */
public class ProtocalBufferExample {
	
	public static void main(String[] args) {
		Person person1 = Person.newBuilder()
				.setName("dirk.zhang")
				.setEmail("kongzhiguiji@aliyun.com")
				.setId(41)
				.addPhone(Person.PhoneNumber.newBuilder().setNumber("13522616858")
						.setType(0))
						.addPhone(Person.PhoneNumber.newBuilder().setNumber("110").setType(1)).build();
		
		
		try {
			FileOutputStream output = new FileOutputStream(new File("d:\\delete\\protobufExample.txt"));
			person1.writeTo(output);
			output.close();
		} catch (Exception e) {
			System.out.println("write Error!");
		}
		try {
			FileInputStream input = new FileInputStream(new File("d:\\delete\\protobufExample.txt"));
			Person person2 = Person.parseFrom(input);
			System.out.println("person2:"+person2);
		} catch (Exception e) {
			System.out.println("read Error");
		}
						
	}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值