【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | 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 等文本方式的 1 3 \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
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- android apk 签名(平台和普通签名)
- android gradle下载慢的解决方法
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife
- Android Tensorflow 示例代码 Pose Estimation项目编译
- 【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
- Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
- 【Android 返回堆栈管理】打印 Android 中当前运行的 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 中的不同 Task
- 【Android Gradle 插件】Gradle 基础配置 ② ( Gradle 空白项目构建示例演示 )
- 【Unity3D】Android 打包 ② ( Android 编译选项 | Android 工程设置 | 配置基本信息 | 配置不同分辨率图标 | 配置启动动画 | 其它设置 )
- android项目 微博客户端 源码详解手机开发
- Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件详解手机开发
- 苹果iOS系统在美市场份额持续增长 Android系统份额有所下滑详解手机开发
- 解决android studio 创建新项目后假死详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Surface Duo将于9月或10月升级Android 11系统 Duo 2届时也将推出
- 谷歌推Android for Work项目 加快进军企业市场
- Android系统基于Linux内核,实现移动设备突破极限。(android linux内核)
- 在android中ScrollView嵌套ScrollView解决方案
- Android自定义格式显示Button的布局思路
- Android有道词典的简单实现方法介绍
- android音乐播放器监听电话状态实现代码