protobuf入门
Posted 根须
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了protobuf入门相关的知识,希望对你有一定的参考价值。
,step1:准备.proto文件
1 syntax = "proto3"; 2 3 message gps_data { 4 int64 id = 1; 5 string terminalId = 2; 6 string dataTime = 3; 7 double lon = 4; 8 double lat = 5; 9 float speed = 6; 10 int32 altitude = 7; 11 int32 locType = 8; 12 int32 gpsStatus = 9; 13 float direction = 10; 14 int32 satellite = 11; 15 }
step2:下载.proto文件的编译器和对应版本的jar包
step3:解压,通过命令行使用protoc.exe程序编译.proto文件,源文件目录结构如下:
与之对应的指令如下:
编译后的.java文件则在如下目录:
step4:解压,制作相应的jar包
第一步:在src目录下放一个protoc.exe程序文件
第二步:在java文件夹下面的core/src文件夹中也要放置一个protoc.exe程序文件
第三步:cd到上面所述java文件夹下面,直接运行以下命令即可
mvn install
第四步:会在java文件夹下面的core/target文件夹下面生成protobuf-java-3.5.1.jar文件
step5:创建一个java工程进行测试
1 package com.per.sdg.demo; 2 3 import com.google.protobuf.InvalidProtocolBufferException; 4 import com.per.sdg.entity.GpsData; 5 6 public class Demo4 { 7 public static void main(String[] args) { 8 System.out.println("===== 构建一个GPS模型开始 ====="); 9 GpsData.gps_data.Builder gps_builder = GpsData.gps_data.newBuilder(); 10 gps_builder.setAltitude(1); 11 gps_builder.setDataTime("2017-12-17 16:21:44"); 12 gps_builder.setGpsStatus(1); 13 gps_builder.setLat(39.123); 14 gps_builder.setLon(120.112); 15 gps_builder.setDirection(30.2F); 16 gps_builder.setId(100L); 17 18 GpsData.gps_data gps_data = gps_builder.build(); 19 System.out.println(gps_data.toString()); 20 System.out.println("===== 构建GPS模型结束 ====="); 21 22 System.out.println("===== gps Byte 开始====="); 23 for(byte b : gps_data.toByteArray()){ 24 System.out.print(b); 25 } 26 System.out.println("\\n" + "bytes长度" + gps_data.toByteString().size()); 27 System.out.println("===== gps Byte 结束 ====="); 28 29 System.out.println("===== 使用gps 反序列化生成对象开始 ====="); 30 GpsData.gps_data gd = null; 31 try { 32 gd = GpsData.gps_data.parseFrom(gps_data.toByteArray()); 33 } catch (InvalidProtocolBufferException e) { 34 e.printStackTrace(); 35 } 36 System.out.print(gd.toString()); 37 System.out.println("===== 使用gps 反序列化生成对象结束 ====="); 38 } 39 }
以上是关于protobuf入门的主要内容,如果未能解决你的问题,请参考以下文章