首页 > 其他分享 >Google protoBuf

Google protoBuf

时间:2022-11-04 21:01:48浏览次数:68  
标签:Google java protoBuf FirstProtobuf 编译 protoc 序列化 protobuf


前言:

最近app要做用户行为统计埋点,对数据进行序列化和反序列化实用Google提供的protoBuf,这里也简单的介绍一下

protobuf 已经更新到3.2.0 :查看blog下面资源包

Google protoBuf_反序列化

依赖:

Win7+64位,android studio 2.3 gradle.build 2.2.3

Protobuf 主页:​​进入​​​
Protobuf win+java demo ​​​进入​

Mvn下载地址:​​进入链接​​​
Mvn安装步骤:​​​进入​​​
Protobuf源码:​​​进入​

定义:

protobuf,全称:Google Protocol Buffer,是Google开源的一种轻便高效的结构化数据存储格式,可以用于结构化数据的串行化,也称作序列化,主要用于数据存储或是RPC数据交换,支持多语言,可拓展。

安装步骤:

1.安装Maven环境(可以直接使用已经打好的jar,免去安装maven),具体安装过程,参考Mvn安装步骤部分
安装好Maven后,需要进行编译,才能生成需要引入的Jar文件,具体操作为:首先将下载好的protoc.exe文件复制到\protobuf-2.6.1\src目录下。然后进入protobuf-2.6.1\java目录下,直接运行命令:

编译完成后,会在\protobuf-2.6.1\java\target\目录下生成文件:protobuf-java-2.6.1.jar。可以直接导入Eclipse中进行使用,这里mvn环境安装异常,使用从网上down下的jar

2.下载

Google protoBuf_java_02


这里使用 protoc.exe 可执行文件。进行文件的生成

3.编写待处理文件,后缀名使用 .proto,语法遵循protobuf语法

4.Test.proto

package protobuf; 
option java_package = "com.sq.protobuf";
option java_outer_classname = "FirstProtobuf";
message testBuf {
required int32 ID = 1;
required string Url = 2;
}

说明:该文件中:

java_package:包名
java_outer_classname:类名
testBuf :对象名
required:必须有值
optional:可以不写值
string:相当于Java中的String
int32:相当于Java中的int

具体proto文件类型、Java类型及C++类型对比如下:

Google protoBuf_反序列化_03

使用protoc进行编译,cm进入到protoc-2.5.0-win32文件中 语句为:

protoc –java_out=./test.proto

注:

protoc:指使用下载好的protoc.exe进行编译

java_out:编译器编译时,生成的语言同样的参数也可以是cpp_out

“=” 后边内容为需要编译的文件路径和文件名

编译完成后,会在编译文件位置相同的路径下,生成编译完成的文件,Java的以包的形式存放,即以文件夹的形式存放。

至此,已经完成了Jar包的编译和需要传输的对象的编译,接下来举例说明如何进行使用。

新建Eclipse 的java工程,当然android studio同样可以建立java工程

需要导入前面编译好的FirstProtobuf.java和protobuf-java-2.5.0.jar
进行编译和反编译测试

package test;

import org.omg.CORBA.Request;
import com.sq.protobuf.FirstProtobuf;

/**
* Protobuf 序列化反序列化例子 log:http://www.cnblogs.com/leehongee/p/3323784.html
*
* @author weichyang
*
*/

public class test2 {

public static void main(String[] args) {

FirstProtobuf.testBuf.Builder builder = FirstProtobuf.testBuf
.newBuilder();

builder.setID(125);
builder.setUrl("http://www.nuoyuan.cn");

FirstProtobuf.testBuf buf = builder.build();
byte[] buffer = buf.toByteArray();

System.out.println("进行序列化" + buf.toString());
// 反序列化

deSerialize(buffer);
}

public static void deSerialize(byte[] buffer) {

try {
FirstProtobuf.testBuf request = FirstProtobuf.testBuf
.parseFrom(buffer);
System.out.println("反序列化" + request.toString());
}

catch (Exception ex) {
System.out.println(ex.getMessage());
}

}

}

运行结果:

进行序列化ID: 125
Url: "http://www.nuoyuan.cn"
反序列化ID: 125
Url: "http://www.nuoyuan.cn"

Ok到这里protobuf的简单实用 已经完成。总的来说首次还是需要费一些时间进行环境配置的

demo下载: ​​http://pan.baidu.com/s/1jImfnd8​

protobuf 3.2.0 资源包: ​​http://pan.baidu.com/s/1hsMesoG​

引用: Protobuf语言指南
官方网站: ​​​https://developers.google.com/protocol-buffers/​


标签:Google,java,protoBuf,FirstProtobuf,编译,protoc,序列化,protobuf
From: https://blog.51cto.com/u_15861646/5824762

相关文章

  • Google 软件版本经历周期
    前言经常会看到依赖jar后缀一些alpha、release、rc、beta等,所代表的含义也很容易通过搜索引擎找到,以下就是通过搜索引擎找到的说明梳理。Jetpact库遵循​​严格的语义版本控......
  • git clone https://chromium.googlesource.com/chromium/tools/depot_tools 下载时超
    解决方案1我这里使用的是极光,端口是......
  • 深度学习从入门到精通——GoogLeNetV1分类算法
    GoogLeNet​​模型优势​​​​不同尺度的特征信息​​​​采用了1*1卷积​​​​池化层​​模型优势引入了Inception结构(融合不同尺度的特征信息)使用1x1的卷积核进行降维以......
  • unity3d:protobuf .java转.cs
    服务器端定义好protobuf结构,放unity编辑器中生成.cs的结构usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEditor;usingSystem......
  • Google Guava 工具类(一)—— EventBus(观察者模式的实现)
    GoogleGuava工具类(一)——EventBus(观察者模式的实现)❗❗❗未解决的问题:AsyncEventBus的并发执行EventBus是设计模式中的观察者模式(生产者/消费者编程模型)......
  • 设置Google浏览器不更新
    设置Google浏览器不更新右键计算机=>管理,在计算机管理(本地)=>系统工具=>任务计划程序=>任务计划程序库中找到两个和Google自动更新相关的任务计划:GoogleUpdateTaskMa......
  • Win环境安装Protobuf 2.0 版本
    转载请注明出处:安装步骤下载protobuf-2.5.0.zip与protoc-2.5.0-win32.zip下载链接:https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0将prot......
  • Google Earth Engine(GEE)分析多个地区的植被覆盖趋势
    数据介绍:使用的是MODIS数据的NDVI和EVI来分析多个地区的植被覆盖趋势在GEE调用的数据名称为“MODIS/061/MOD13A1”本次利用MODIS数据中的两个数据分别是“NDVI”和"EVI"**ND......
  • Google 登录,海外游戏接入
    ##准备1,开发者注册(需要25美元,国内任意一家visa信用卡都可以绑定支付,推荐招商银行的),商家账号注册(需要填写资料)2,创建项目-打开网址https://console.cloud.google.com/,......
  • Google-高精地图-riscv-收购Twitter杂谈
    Google-高精地图-riscv-收购Twitter杂谈参考文献链接https://mp.weixin.qq.com/s/xk4RvcYVXOJ-1WfSCcvnPQhttps://mp.weixin.qq.com/s/24LD5uKTkAG_lIYHWmpX_ghttps://......