Protobuf初次使用小记

本文详细介绍如何在Windows环境下安装和配置Protobuf,并通过示例演示如何使用Protobuf进行数据的序列化与反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来是正在研究学习netty,教程中出现了protobuf,索性仔细研究了一番。厚积薄发,说不定哪一天就突然要用到。

protobuf是一种类似于json和xml的数据传输格式,优势在于高效的序列化和反序列化。关于这个,我没有去测试,只是把整个使用过程熟悉了一遍。

一、首先是需要安装protobuf

我是用的是windows,需要从github下载安装文件

https://github.com/protocolbuffers/protobuf/releases

需要下载这个文件,这是目前的最新版本。

https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protoc-3.15.8-win64.zip

下载之后解压,然后添加到环境变量。测试是否可用

C:\Users\chris>protoc --version
libprotoc 3.15.8

二、我们要在Idea中去编辑proto文件,需要一个对.proto格式支持的插件。到github去下载这个插件

https://github.com/ksprojects/protobuf-jetbrains-plugin/releases/download/v0.13.0/protobuf-jetbrains-plugin-0.13.0.zip

然后通过本地安装插件,重启Idea。

三、建立一个Java工程,创建.proto文件

四、生成Java类

终端默认处在工程根部,执行命令:

protoc --java_out=./src/main/java/ ./src/proto/Person.proto

自动生成的文件建议不要做修改,所以原始.proto文件中最好有package属性,否则生成Java类之后就必须要去修改包。虽然不伤大雅,但是破坏原则。

五、添加依赖

    implementation 'com.google.protobuf:protobuf-java:3.15.8'
    implementation 'com.google.protobuf:protobuf-java-util:3.15.8'

六、测试类

package com.chris.proto;

import com.google.protobuf.InvalidProtocolBufferException;

/**
 * @author Chris Chan
 * Create on 2021/4/19 20:38
 * Use for:
 * Explain:
 */
public class ProtoTest {
    public static void main(String[] args) throws InvalidProtocolBufferException {
        //构建对象
        ProtobufData.Person person = ProtobufData
                .Person
                .newBuilder()
                .setName("chris")
                .setAge(44)
                .setGender(ProtobufData.Person.Gender.MAN)
                .setAddress("中国上海")
                .setJob(ProtobufData.Person.Job.newBuilder().setCompanyName("满天星公司").setWork("Java开发"))
                .build();
        //序列化
        byte[] byteArray = person.toByteArray();

        //反序列化
        ProtobufData.Person person1 = ProtobufData.Person.parseFrom(byteArray);

        //测试
        System.out.println(person1.getJob().getWork());

    }
}

这个过程没有网络数据传输。只是测试了数据的序列化和反序列化。

七、测试结果

整个过程就这样。下一篇文章我们建立netty通信模型,通过proto来传输数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值