初识Protobuf与Protobuf的安装

目录

一、Protobuf

1.回顾序列化

2.Protobuf的特性

3.Protobuf的下载

①ProtoBuf 在 window 下的安装

②ProtoBuf 在 Linux 下的安装

一、Protobuf

1.回顾序列化

        我们在先前的学习中也遇到过序列化。所谓序列化我的理解是,将复杂的对象以特定的方式转换以便于存储或者传输。

        像以前在网络传输信息时用到的JSON或者XML,或者将对象永久化存储时用到的方法,都是序列化的方式。

        我们今天接触到的Protobuf也是一种将结构化的数据序列化的方法。

        Protocol Buffers 是 Google 的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤ 于(数据)通信协议、数据存储等。

2.Protobuf的特性

 简单来讲, ProtoBuf(全称为 Protocol Buffer)是让结构数据序列化的⽅法,其具有以下特点:

·语言无关,平台无关:即 ProtoBuf 支持 Java、C++、Python 等多种语言,支持多平台。

·高效:即比 XML 更小、更快、更为简单。

·扩展性、兼容性好:你可以更新数据结构,⽽不影响和破坏原有的旧程序。

        想平常我们写一个类,如果有必要的话,需要自己写一些处理该的⼀系列接口方法 (例如:序列化和反序列化方法),当使用了Protubuf我们就不用自己写了。

        总的来说:ProtoBuf 是需要依赖通过编译生成的头文件和源文件来使用的。

3.Protobuf的下载
①ProtoBuf 在 window 下的安装

       下载地址:https://github.com/protocolbuffers/protobuf/releases

        当前讲述的版本为v21.11.

       下载对应的版本之后,我们需要配置系统的环境变量。

        复制解压后的文件路径。

        打开编辑系统环境变量,点击环境变量,编辑path,将复制到的路径添加进去。                 如何检查是否安装并配置成功呢?

        打开cmd,输入protoc --version,得出版本号即为成功。

②ProtoBuf 在 Linux 下的安装

        下载 ProtoBuf 前⼀定要安装依赖库:autoconf automake libtool curl make g++ unzip

        sudo yum install autoconf automake libtool curl make gcc-c++ unzip

         下载地址:https://github.com/protocolbuffers/protobuf/releases

         右键复制连接,在linux中使用wget命令。

        下载之后的zip文件:

        我们将它解压:

第⼀步执⾏autogen.sh,但如果下载的是具体的某⼀⻔语⾔,不需要执⾏这⼀步。 ./autogen.sh  

第二步修改安装⽬录,统⼀安装在/usr/local/protobuf下

./configure --prefix=/usr/local/protobuf

        再依次执⾏

1.make // 执⾏15分钟左右

2.make check // 执⾏15分钟左右

3.sudo make install

还需要在/etc/profile 中添加⼀些内容:

# 添加内容如下: #(动态库搜索路径) 程序加载运⾏期间查找动态链接库时指定除了系统默认路径之外的其他路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/ #(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/ #执⾏程序搜索路径

export PATH=$PATH:/usr/local/protobuf/bin/ #c程序头⽂件搜索路径

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/ #c++程序头⽂件搜索路径 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/ #pkg-config 路径 export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/     

最后⼀步,重新执⾏ /etc/profile ⽂件:

source /etc/profile 

        输⼊ protoc --version 查看版本,有显⽰说明安装成功。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络笔记】物理层——信道与信道容量

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

【稳定检索|投稿优惠】2024年光电信息与机器人发展国际会议(ICOIRD 2024)

2024年光电信息与机器人发展国际会议(ICOIRD 2024) 2024 International Conference on Optoelectronic Information and Robot Development(ICOIRD 2024) 一、【会议简介】 信息技术与人工智能的浪潮正在激荡,不断刷新我们生活的页面,深刻烙印在光电信息…

Homework 3: Higher-Order Functions, Self Reference, Recursion, Tree Recursion

Q1: Compose 编写一个高阶函数composer,它返回两个函数func和func_adder。 func是一个单参数函数,它应用到目前为止已经组合的所有函数。这些函数将首先应用最新的函数(参见doctests和示例)。 func_adder用于向我们的组合添加更多…

“快慢指针”思想在物理或者逻辑循环中的应用

1 基础概念 1.1 什么是物理循环和逻辑循环? 物理循环是指物理索引访问顺序上相邻,逻辑上也相邻,比如循环链表,逻辑循环则指物理的索引上不一定相邻 1.2 快慢指针本质上可以解决逻辑循环问题,而物理循环也属于逻辑循…

用AI在抖音直播做姓氏头像的全新玩法,详细分析制作教程

前段时间在圈子里给大家分享了用AI写艺术字做小红书账号案例玩法,同学们都比较热衷学习。纷纷动手实践。 事实上用AI艺术字变现玩法还有许多。 例如上周末在星球给圈友们分享的一个AI艺术字直播的抖音账号,直播内容形式很简单,就是展现用AI…

七大经典高效学习方法

金字塔学习模型 金字塔学习是美国学习专家爱德加戴尔1946年提出的。 他将学习分为主动学习和被动学习两种类型,用数字形象地呈现了采用不同学习方式,学习者在两周后还能记住的内容有多少。 被动学习:通过听讲、阅读、视听、演示这些活动&a…

Java网络编程——基础入门

1、进程间的通信 进程指运行中的程序,进程的任务就是执行程序中的代码。EchoPlayer类是一个独立的Java程序,它可以在任意一台安装了JDK的主机上运行: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr…

Linux socket编程(11):Unix套接字编程及通信例子

Unix套接字是一种用于在同一台计算机上的进程间通信的一种机制。它是Linux和其他类Unix系统中的一项特性,通过在文件系统中创建特殊的套接字文件,进程可以通过这些套接字文件进行通信。 文章目录 1 Unix和TCP套接字对比2 Unix套接字初始化流程3 例:服务端…

3.4 路由器的DHCP配置

实验3.4 路由器的DHCP配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施(一)配置基于接口地址池的DHCP1.交换机的基本配置2.路由器的基本配置3.开启路由器的DHCP服务器功能4.配置路由器接口的DHCP功能5.设置计算机使用DHCP方式获取IP地…

DS图应用--最短路径

Description 给出一个图的邻接矩阵,再给出指定顶点v0,求顶点v0到其他顶点的最短路径 Input 第一行输入t,表示有t个测试实例 第二行输入n,表示第1个图有n个结点 第三行起,每行输入邻接矩阵的一行,以此类…

Hello World!

一、minist数据集 深度学习编程特有的hello world程序:采用minist数据集完成意向特定深度学习项目 1、minist数据集介绍 MNIST数据集是一个广泛使用的手写数字识别数据集,它包含了许多不同人手写的数字图片。这个数据集被广泛用于研究手写数字识别&…

通过keepalived+nginx实现 k8s apiserver节点高可用

一、环境准备 K8s 主机配置: 配置: 4Gib 内存/4vCPU/60G 硬盘 网络:机器相互可以通信 k8s 实验环境网络规划: podSubnet(pod 网段) 10.244.0.0/16 serviceSubnet(service 网段): 1…

【S32K3环境搭建】-0.2-安装S32DS product updates和 packages

目录 1 安装S32DS product updates和 packages 1.1 方法一:通过S32DS Extensions and Updates安装product updates和 packages 1.2 方法二:通过Install New Software…安装product updates和 packages 2 S32DS product updates和 packages安装后的效…

海外服务器和国内服务器有什么样的区别呢

海外服务器和国内服务器有什么样的区别呢,其实呢在外形方面是大同小异,除了外形还有一些其他方面还存在这一些差异。 一,地理位置的差异。 海外服务器——有可能在中国数据中心之外的任何国家地区,例如美国服务器,韩…

视频汇聚/音视频流媒体视频平台/视频监控EasyCVR分享页面无法播放,该如何解决?

国标GB28181安防视频监控/视频集中存储/云存储EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统…

PRCD-1229 : An attempt to access configuration of database

今天维护oda一体机时,发现无法在grid用户下面关闭数据库实例,如下 ASM1:/home/gridoda0>srvctl stop database -d orcl -o immeidate PRCD-1229 : An attempt to access configuration of database orcl was rejected because its version 11.2.0.4.…

dockerdesktop推送镜像到dockerhub

1.查看镜像(打开powershell) docker ps2.打tag docker tag pengzx/aspnetcoredocker:v1 pengzx/aspnetcoredocker:v2pengzx/aspnetcoredocker:v1:本地的镜像名加版本号 pengzx/aspnetcoredocker:v2:需要上传的镜像名(要以dockerhub的用户名开头/本地镜像…

软著项目推荐 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

【工作生活】汽车电子嵌入式开发简介

目录 1. 目标 2. 要分享什么 3.1 行业知识 3.1.1车载行业知识: 3.1.2项目: 3.1.3开发测试工具: 3.2 硬件平台 3.3 基础知识 3.4 工作生活 3. 我们是谁 1. 目标 随着新能源汽车的快速崛起,汽车电子行业开始快速发展&…

掌控安全 暖冬杯 CTF Writeup By AheadSec

本来结束时发到了学校AheadSec的群里面了的,觉得这比赛没啥好外发WP的,但是有些师傅来问了,所以还是发一下吧。 文章目录 Web签到:又一个计算题计算器PHP反序列化又一个PHP反序列化 Misc这是邹节伦的桌面背景图什么鬼?…