JProtobuf的使用

混江龙づ霸主 提交于 2020-04-11 15:51:28
1)什么是序列化和反序列化?
	(1)数据结构要存储,传送使用,数据结构,数据对象里面的内容-->编码-->二进制
	(2)存入文件,网络发送
	(3)使用: 根据这个数据重建这个对象,初始化这个对象的每个数据成员-->解码

	例子: class{string uname; string upwd;}  -->["uname" + [upwd]]
			等你重建这个: new一个对象,你再从二进制里面将uname、upwd读出来


	目的: 存入文件、网络传送

	JSON: 对象的数据编码为JSON字符串(二进制),根据JSON字符串来解出我们的对象;
	XML: 对象的数据编码成XML, 解码根据XML来将新对象的数据初始化好;
	PROTOBUF: 二进制编码(不是人类可读的文本),编码解码更高效、安全、体积更小

2)Protobuf是什么?
	(1)二进制编码  class{string uname; string upwd;}   [长度, 0xxx, 0xxx, 0xxx]
			文本<uname>blake</uname>

		因此自己要定义一个规则,谁是uname,谁是upwd 
		每个对象都要有一个这样的规则(编码解码的规则, 这个规则叫做协议, json、xml这些是通用的协议):
			编码函数: 把uname放在第一位, upwd放在第二位--》【0xxx, 0xxx】
			解码函数: 吧第一个作为uname,第二个作为upwd

		优点:编码解码高效、体积小、安全
		缺点: 每个协议都要有自己的编码解码函数,每个协议都要写

	(2)google protobuf做了哪些事情:
		1:制定对象的协议内容:
			第1个字段:是什么类型的什么名字
			第2个字段: 什么类型什么名字
			第3个字段: 什么类型什么名字是否是必须的

			message: 数据对象
			required: 这个字段是必须要有值的
			int32 string: 类型
			xxx: 名字
		2:protobuf给我们提供了一个工具:protoc.exe,协议.proto文件编译器: 		
				根据协议文件为每个对象生成我们对应的编码解码函数或对象

		3: gogole protobuf工具,根据协议来生成,各种不同语言版本的编码解码函数或对象,主流的编程语言都支持

		4:为每种编程语言提欧共了一个runtime的环境库:
			  Java如何编码一个String到二进制 
			  java 如何编码int到二进制

			对象再复杂,其实就是把每个基本的数据的编码和解码做好了

			使用的时候,内置runtime库,就可以驱动这些自动生成的对应的协议对应的代码 

3)JProtobuf如何使用(Java代替proto文件)
	(1)
	(2)
	(3)
	(4)

 

发布了1621 篇原创文章 · 获赞 144 · 访问量 179万+
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!