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

简介: 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )

文章目录

一、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 源文件 , 可以编译出不同的语言的源代码 , 支持的语言类型如下 :



image.png




二、Protobuf 优缺点分析




1、Protobuf 优点


性能方面 :


体积小 : Protobuf 序列化后 , 体积小 , 序列化后 , 大约是 JSON / XML 等文本方式的 1 3 \cfrac{1}{3}

3

1


 ; 序列化后可操作性高 , 存储时占用的空间少 , 传输时 , 消耗更少的带宽 ;


序列化速度快 : 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


目录
相关文章
|
5月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
63 2
|
7天前
|
Android开发
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
Android源代码定制:添加customize.mk文件进行分项目和分客户的定制
3 0
|
5月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
2月前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
|
3月前
|
Java Android开发 C++
安卓SO层开发 -- 第一个NDK项目
安卓SO层开发 -- 第一个NDK项目
16 0
|
3月前
|
C++
[序列化协议] --- protobuf
[序列化协议] --- protobuf
24 0
|
3月前
|
XML JSON Linux
[序列化协议] --- 简介
[序列化协议] --- 简介
20 0
|
4月前
|
IDE 开发工具 Android开发
Android Studio 下发布项目成APK文件
Android Studio 下发布项目成APK文件
119 1
|
4月前
|
JavaScript Android开发
Cordova 打包 Vue 项目到Android打开白屏
Cordova 打包 Vue 项目到Android打开白屏
|
5月前
protobuf 序列化和反序列化
protobuf 序列化和反序列化
22 0