文章目录

  • 一、Protobuf 简介
  • 二、Protobuf 优缺点分析
    • 1、Protobuf 优点
    • 2、Protobuf 缺点
  • 三、参考资料

一、Protobuf 简介


Protobuf 是 Google 开源项目 , 该项目是序列化数据的一种解决方案 , JSON , XML 等也可以进行序列化数据操作 ;

  • 序列化 : 将内存中的对象或数据 , 转为二进制数据 , 可存放或传输 ;
  • 反序列化 : 将二进制数据 转为 内存中的对象或数据 ;

Protobuf 使用场景 :

  • 数据交换 : 从网络中下载数据 , 发送数据给服务器 ;
  • 数据存储 : 获取或生成的数据 , 需要存储下来 ;

Protobuf 语言特点 : Protobuf 包含一套 " 数据结构接口描述语言 " , 以及与之配套的 " 编译器 " , 利用 " 编译器 " 生成对应数据结构的不同编程语言的代码 , 如 Java , Python , C++ 等 ;

Protobuf 源码地址 : https://github.com/protocolbuffers/protobuf

Protobuf 当前支持的编程语言 , 平台 ;

一套 Protobuf 源文件 , 可以编译出不同的语言的源代码 , 支持的语言类型如下 :

二、Protobuf 优缺点分析


1、Protobuf 优点

性能方面 :

  • 体积小 : Protobuf 序列化后 , 体积小 , 序列化后 , 大约是 JSON / XML 等文本方式的 13\cfrac{1}{3}31​ ; 序列化后可操作性高 , 存储时占用的空间少 , 传输时 , 消耗更少的带宽 ;

  • 序列化速度快 : Protobuf 序列化速度快 , 转换速度是 JSON / XML 的几十倍到上百倍 ;

在使用方面 , Protobuf

  • 使用简单 ,
  • 维护成本低 ,
  • 扩展性好 ,
  • 安全性好 ;

使用范围方面 , Protobuf 可以

  • 跨平台 ( MAC / Linux / Windows / Android / iOS ) ,
  • 跨语言 ( Java / Python / C / C++ / … ) ,
  • 可扩展 ;

2、Protobuf 缺点

通用性较差 : 目前 XML / JSON 广泛使用 , 是行业标准的序列化 , 反序列化格式 ;

解释性差 : 序列化 , 反序列化 Protobuuf , 需要有 Protobuf 源文件才可以进行 ;

三、参考资料


Protobuf 参考资料 :

  • Protobuf 官网主页 : https://developers.google.com/protocol-buffers

  • Protobuf 语法指南 : https://developers.google.com/protocol-buffers/docs/proto

  • Protobuf Java 语言对应用法 : https://developers.google.com/protocol-buffers/docs/javatutorial

  • Protobuf 源码地址 : https://github.com/protocolbuffers/protobuf

【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )相关推荐

  1. android 播放音乐 自定义控件,Android音乐播放器开发小记——项目简介

    项目源码: 前言 之前做的App多半是巡检,点检类的,一直想开发不同类型的APP来练习.所以选择做一款音乐播放器,基本可以涵盖android所有的基础知识,比如四大组件,自定义控件,网络请求,跨进程通 ...

  2. python项目简介_项目简介

    itchat itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的使用远不止一个机器人 ...

  3. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

    文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...

  4. 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )

    文章目录 一.protoc 编译器简介 二.下载 protoc 编译器 三.使用 protoc 编译器编译 addressbook.proto 源文件 四.参考资料 一.protoc 编译器简介 在上 ...

  5. 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )

    文章目录 一.TCP 粘包和分包 二.TCP 粘包和分包解决方案 三.客户端 Android 应用使用 Protobuf 四.服务器端 Java 服务器使用 Protobuf 五.参考资料 一.TCP ...

  6. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 )

    文章目录 一.Protobuf 源码分析 二.创建 Protobuf 对象 三.完整代码示例 四.参考资料 一.Protobuf 源码分析 Protobuf 源文件如下 : addressbook.p ...

  7. 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )

    文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...

  8. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )

    文章目录 一.Protobuf 序列化 二.Protobuf 反序列化 三.完整代码 四.参考资料 一.Protobuf 序列化 在上一篇博客 [Android Protobuf 序列化]Protob ...

  9. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )

    文章目录 一.Protobuf 使用文档 二.创建 Protobuf 源文件 三.Protobuf 语法 四.参考资料 一.Protobuf 使用文档 Protobuf Java 语言对应用法 : h ...

最新文章

  1. 微服务架构下的测试之道
  2. python操作文件的库_Python使用pyshp库读取shapefile信息的方法
  3. 字符串的压缩【百度】
  4. 单片机8×8点阵显示简单汉字的程序_LED显示屏的显示原理原来是这样,科技实现梦想...
  5. Android基础知识大纲
  6. SonarQube上传分析报告失败
  7. PowerDesigner的CDM模型将低驼峰命名法则的每个大写字母前加_符
  8. Linux文件系统(五)---三大缓冲区之buffer块缓冲区
  9. 【转下载】黑莓7290中文说明书
  10. 解决win10安装portal v13/v15要求反复重启问题
  11. matlab画柱状图斜线,matlab柱状图斜线填充
  12. 生信文献 | TIMER2.0用于分析肿瘤免疫细胞浸润
  13. 灰狼算法优化测试函数branin,测试函数的100种启发式算法求解方法之19
  14. UUID和UUID_SHORT
  15. 【雷达通信】基于matlab雷达探测威力仿真【含Matlab源码 1974期】
  16. 手把手教你把网上下载视频刻录成VCD、DVD
  17. java 获取图片像素_转:java提取图片中的像素
  18. 浙江大学郑强教授的演讲(国民必看)
  19. 求1的阶乘+2的阶乘+3的阶乘+4的阶乘+…+n的阶乘
  20. Ahmedabad公司的LiFi技术为Nadabet提供互联网接入能力

热门文章

  1. 【基础算法-模拟-例题-*校长的问题】-C++
  2. concurrent(六)同步辅助器CyclicBarrier 源码分析
  3. dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  4. from 表单回车自动提交
  5. FTL页面常用到的一些方法combobox、combotree、datagrid
  6. Linux EOF使用
  7. 个人项目【 完成总结】
  8. Sum-product Networks
  9. LayoutInflater中四种类型inflate方法的介绍
  10. DataList编辑、更新、取消、删除、分页(分页控件 AspNetPager.dll)