protobuf使用

Protocol Buffer是google于2008推出的一种数据交换的格式,它独立于语言,独立于平台。

google 提供了多种语言的实现,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 和 json 进行数据交换快许多。

如何下载?

下载地址:点击这里
最新版本:protoc-25.1
在这里插入图片描述
下载后解压,直接将bin目录配置到环境变量。配置成功,可查看版本:


//查看版本
protoc --version

协议文件

Proto有2个大版本:Proto2和Proto3。proto3是Google开源的一种用于序列化结构化数据的协议,它的全称是Protocol Buffers 3。它是proto2版本的升级版,拥有更简洁、更强大的特性。

创建一个协议文件,比如: all.proto


// 不加这行,默认为proto2,推荐使用proto3
syntax = "proto3";

message CSLogin{
    message User{
        string name= 1;
        string score= 2;
        repeated string addrs = 3;
    }
    repeated User users= 1;
}

数据结构:
在这里插入图片描述

如何编译?

在unity中使用ProtoBuf,一般有google-protobuf和protobuf-net两种库。

1.protogen.exe:
仅支持proto2,且不再更新,而proto2有一些枚举、默认值序列化等问题。需要使用protobuf-net库序列化。

2.protoc.exe:
支持proto3,需要使用google-protobuf库序列化。建议使用google-protobuf和proto3。

现在版本25,支持的语言:
在这里插入图片描述

//编译 生成CS文件,输出目录是out_cs
protoc --csharp_out=out_cs/ all.proto 
//编译 生成java文件,输出目录为当前目录
protoc --java_out=. all.proto 

现在不支持ts,可以使用node,

//安装protobufjs
npm install protobufjs -g

//导出js 该js需要在程序中引入
pbjs -t static-module -w commonjs -o proto.js all.proto
//将导出的js生成对应的.d.ts文件
pbts -o proto.d.ts proto.js

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/291385.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel技巧之【如何修改密码】

我们知道,Excel可以设置多种密码来保护文件,那想要修改密码,要如何操作呢?下面小编来分享一下Excel常用的3种密码的修改方法,一起来看看吧! 1. “打开密码” 想要修改Excel表格的“打开密码”&#xff0c…

网络安全|2024年需要重点关注的10种DNS攻击类型

目前,针对域名系统(DNS)的攻击已经成为企业组织数字化发展中的一个严重问题,每年都有数千个网站成为此类攻击的受害者。据最近的研究数据显示,2023年企业组织与DNS攻击相关的损失同比增加了49%,这些损失不仅…

行业模型与场景落地新样本,网易有道发布多款“子曰”教育大模型落地应用与产品

距离2023年7月正式发布教育大模型“子曰”不到半年时间,教育科技公司网易有道近日再次分享了“子曰”教育大模型创新和落地成果,宣布推出国内首个教育大模型“子曰”2.0版本,同时还发布了基于大模型研发的三大创新应用——AI家庭教师“小P老师…

苗情生态自动监测系统-科普知识

随着科技的飞速发展,智能化技术在各个领域的应用越来越广泛。在农业领域,苗情生态自动监测系统的出现,为农业生产带来了革命性的变革。它不仅能够实时监测植物的生长状况,还能对环境因素进行全面监控,为农业生产提供科…

SSL证书多少钱一年

SSL证书的价格跟证书的种类,品牌都有很大关系。有些厂商是可以提供免费的SSL证书的,但是大部分证书仍然是收费项目。 永久免费SSL证书_永久免费https证书_永久免费ssl证书申请-JoySSL 1. 单域名SSL证书: - 功能: 适用于保护单…

Apollo开放平台概览 :自动驾驶的未来趋势

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式:通过连接报名观看课程,即可免费获取精美周边 ⛳️活动链接&#xf…

APP上线前需要通过哪些测试?如何获取专业的APP测试报告

互联网信息时代,人们最离不开的就是手机,而手机里面吸引我们的也就是APP软件里各式各样好玩的。但一款APP要想在竞争激烈的市场上留存下来,上线前的软件测试就必不可少,那么APP上线前需要通过哪些测试呢?又该如何获取专业的APP测…

RFID数据中心智能资产管理系统

数据中心机房承担着保障企业关键数据处理的重要责任,机房的日常管理直接关系到整体机房的日常维护和运行安全,数据资产管理中心在监管机房各部分设备的运行情况、维护数据中心的资产方面发挥着重要的作用。 成功的数据中心机房管理不仅需要选择高可靠性…

【zk源码分析】

zk作为java分布式系统注册中心和配置中心的典范,一直在思考分析这么一个系统到底从哪里入手呢? zk在使用上是非常的简单,监听节点的变化即可。 一般是从哪里使用,就从哪里开始研究api。 客户端和zk断开时,我看到了一…

Spark内核解析-数据存储5(六)

1、Spark的数据存储 Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数据读取为例,讲述清楚存储子系统中各部件的交互关系。 1.1存储子系统概览 …

windows11上安装docker并处理相关问题

1、安装docker的最新版本: 最新版本我安装的是docker官方的最新版4.26.1.0,结果出现如下异常: Starting the Docker Engine.. Docker Engine is the underlying technology that runs containers 2、查看docker官方文档及结合网上其他资料…

豆豆人智能AI游戏设计与Java实现

豆豆人智能AI游戏设计与Java实现 引言项目结构概述Plans 类Result 类AI 类 总结 引言 豆豆人是一款经典的游戏,而实现一个智能的豆豆人AI则是一项富有挑战性的任务。在这篇博客中,我们将介绍一个基于Java实现的豆豆人智能AI游戏。本游戏中的AI算法主要基…

Spring实现IoC:依赖注入/构造注入

● 控制反转,反转的是什么? ○ 将对象的创建权利交出去,交给第三方容器负责。 ○ 将对象和对象之间关系的维护权交出去,交给第三方容器负责。 ● 控制反转这种思想如何实现呢? ○ DI(Dependency Injection&…

AI模型必选

国内AI人工智能站点 下面来分享一下国内的AI网站 最底下有直接的入口 1、国内使用chatGPT接口二次开发的网站,有很多我随便发一个 https://chat18.aichatos.xyz/#/chat/2、“通义千问”:阿里云推出的一个超大规模的语言模型 https://tongyi.aliyun.…

SpringBoot实现登录拦截器

SpringBoot实现登录拦截器 对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。 1、SpringBoot实现登录拦截的原理 SpringBoot通过实现HandlerIntercep…

three.js Raycaster(鼠标点击选中模型)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"…

集合学习笔记(二)

文章目录 1.请介绍TreeMap的底层原理2. Map和Set有什么区别&#xff1f;3. List和Set有什么区别&#xff1f;4 .ArrayList和LinkedList有什么区别&#xff1f;5. 有哪些线程安全的List&#xff1f;6 .介绍一下ArrayList的数据结构&#xff1f;7. 谈谈CopyOnWriteArrayList的原理…

低代码:实现数据可视化的强大助手

随着数据在企业中的价值越来越受到重视&#xff0c;数据可视化成为了决策者和业务专家们必备的工具。然而&#xff0c;传统的数据可视化开发过程常常繁琐且耗时&#xff0c;限制了其在应用中的广泛应用。低代码平台的出现&#xff0c;为实现高效的数据可视化提供了新的解决方案…

使用Matplotlib绘制模拟上海城市气温变化图

模拟上海气温变化折线图 实现步骤 准备数据创建画布绘制图像显示图像 基本实现 示例代码&#xff1a; import matplotlib.pyplot as plt import random# 准备数据 x range(60) y_shanghai [random.uniform(15,18) for _ in x]# 创建画布 plt.figure(figure(20,8), dpi10…

位运算 (运算符)

文章目录 位运算位运算概述位运算概览& 按位与&#xff08;AND&#xff09;| 按位或&#xff08;bitwise OR&#xff09;^ 按位异或&#xff08;bitwise XOR&#xff09;~ 按位非&#xff08;bitwise NOT&#xff09;<< 左移&#xff08;bitwise shift left&#xff…