初识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 查看版本,有显⽰说明安装成功。 

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

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

相关文章

vue3-vite-ts:编写Rollup插件并使用 / 优化构建过程

一、vue3-vite-ts项目,编写Rollup插件并使用的意义 在使用Vue3 Vite TypeScript这种技术栈时,可以使用Rollup插件来优化构建过程,例如使用rollup-plugin-typescript2插件来编译TypeScript代码,使用rollup-plugin-vue插件来处理…

go-fastfds部署心得

我是windows系统安装 Docker Desktop部署 docker run --name go-fastdfs(任意的一个名称) --privilegedtrue -t -p 3666:8080 -v /data/fasttdfs_data:/data -e GO_FASTDFS_DIR/data sjqzhang/go-fastdfs:lastest docker run:该命令用于运…

基于深度学习YoloV8的火焰烟雾检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介YoloV8模型火焰烟雾检测系统模型训练实时检测 应用领域 二、功能三、系统四. 总结 一项目简介 # 基于深度学习YoloV8的火焰烟雾检测系统介绍 简介 深…

【Unity3D】Android打包报错AAPT2:xxx Linkxxx

Gradle Plugin 与Gradle版本不匹配问题 或 相关依赖库下载不完全问题; 使用镜像即可解决 也可以离线(离线过于复杂 你能找到方法那最好是离线Maven) 仓库服务 找最新可用的镜像url,替换google()和jcenter(), 可以直接使用publ…

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!

​ 11月,StoneDB 新版本如期而至,这一个月来我们的研发同学加班加点,持续迭代:在 2.2.0 版本中,我们针对用户提出的需求和做出了重量级更新,修复了一些已知和用户反馈的 Bug,同时对部分代码进行…

如何计算光伏电站的发电量?

光伏电站的发电量是衡量其性能和经济效益的关键指标。准确地预测和计算光伏电站的发电量对于投资决策、系统设计和优化至关重要。以下是一些计算光伏电站发电量的主要步骤和方法: 1、确定光伏电站的规模和配置 了解光伏电站的组件数量、类型、功率等级以及安装位置…

Win10点关机后马上又进入桌面解决方法

Win10点了关机,马上闪一下就又重新进入了桌面,关不了机怎么办?强制关机虽然是可行,但不能每一次都强制关机。下面给大家带来的win10不能关机的解决方法,希望能帮助到大家。 速印机(理想、荣大等&#xff09…

用php和mysql制作一个网站

当使用PHP和MySQL制作网站时,我们可以利用PHP的强大功能来与MySQL数据库进行交互,从而实现动态网页的创建和数据存取。下面是一个关于如何使用PHP和MySQL制作网站的简单说明,以及一些示例代码。 ​ 1、R5Ai智能助手 chatgpt国内版本 :R5Ai智…

集成测试如何做?

今天学习下如何进行集成测试。 什么是集成测试? 集成测试被定义为一种测试类型,其中软件模块在逻辑上集成并作为一个组进行测试。一个典型的软件项目由多个软件模块组成,由不同的程序员编码。此级别测试的目的是在集成这些软件模块时,暴露…

羊大师带大家探寻,南北地区冬季饮食的差异

羊大师带大家探寻,南北地区冬季饮食的差异 南北地区的冬季饮食有着明显的不同。随着气温的骤降,人们的餐桌上也逐渐变得丰盛起来。精心准备的美食不仅温暖了身心,更能带来满满的幸福感。接下来,让小编羊大师带大家一起走进南北饮…

软件测试,缺少项目实战怎么办?

解决办法 你可以进行一个简单的web测试。 以我目前的认知和经验,悄悄告诉你:政府网站大概率会有bug。 在著此文时,我随便找了个地方政府网站,点了进去。 http://www.yibin.gov.cn/en/ybsq/201905/t20190513_976652.html 大家…

猜数字游戏--数据控制流

#随机生成一个1~100之间的数字作为基准数,每次通过键盘输入一个数,如果输入数和基准数相同,则成功过关,猜中则退出游戏。 import randombase_number random.randint(1, 100) # 生成基准数guess_times 0 # 初始化猜测次数whil…

基于Python+OpenCV的车道线和车辆检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 本文将介绍如何使用Python编程语言结合OpenCV库进行车道线和车辆检测。这种技术常用于计算机视觉领域,特…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2(Windows Subsystem for Linux)二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下,免得自己忘了。 一、安装wsl2(Windows Subsystem for Linux) Redis官网中说&…

Course2-Week1-神经网络

Course2-Week1-神经网络 文章目录 Course2-Week1-神经网络1. 神经网络概述1.1 欢迎来到Course21.2 神经元和大脑1.3 引入神经网络-需求预测1.4 神经网络的其他示例-图像感知 2. 神经网络的数学表达式2.1 单层的神经网络-需求预测2.3 前向传播的神经网络-手写数字识别 3. Tensor…

YOLOv4 学习笔记

文章目录 前言一、YOLOv4贡献和改进二、YOLOv4核心概念三、YOLOv4网络架构四、YOLOv4数据增强五、YOLOv4的损失函数总结 前言 在近年来的目标检测领域,YOLOv4的出现标志着一个重要的技术突破。YOLOv4不仅继承了YOLO系列快速、高效的特点,还引入了一系列…

【LeetCode热题100】【双指针】接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

数据分析师的学习之路-pandas篇(6)

接上篇,画图告一段落,现在学习表格的各种操作。 3.8 表格操作 3.8.1 表的校验 表里有些列的数据是有一定的要求的,比如说下面这个表,Score分数列,要求成绩只能是0到100,那如果有出现错误的数据&#xff0…

opencv轮廓

寻找轮廓之前需使用阈值或者canny边缘检测 找到轮廓 contours, hierarchy cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) 绘制轮廓 第三个参数是轮廓的索引 cv.drawContours(img, contours, -1, (0,255,0), 3) 轮廓面积 area cv.contourArea(cnt) 轮…

很全面 影响无人机自动返航的因素总结

在无人机技术不断成熟的今天,自主返航技术成为保障飞行安全的一种重要工具。无人机在多种情况下能够智能判断,主动实施返航动作,为用户提供更加可靠的飞行保障。以下是一些常见的无人机自动返航场景,让我们深入了解这项技术背后的…