序列化

ProtocolBuffer 使用及 一些坑

空扰寡人 提交于 2020-03-09 08:42:56
Protocol Buffers,是 Google公司开发的一种数据描述语言,类似于 XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。 /*--> */ /*--> */ ProtocolBuffer 的优势 跨平台: ProtoBuf 支持多平台和语言, 包括C++/Java/Python 等等 序列化 &反序列号 : ProtoBuf支持直接将对象序列化成 Data, 也支持直接将 Data序列化为对象类型 消息大小 :一条消息数据,用 protobuf序列化后的大小是 json的 10分之一, xml格式的 20分之一,是二进制序列化的 10分之一 . 对于即时通信消息来说, 减小数据量的大小非常有必要 /*--> */ /*--> */ 使用地址: https://github.com/alexeyxo/protobuf-swift 1.ruby -e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )" 2.brew install automake 3.brew install libtool 4.brew install protobuf 5.git clone git@github.com:alexeyxo/protobuf-swift

C# 序列化与反序列化

心已入冬 提交于 2020-03-09 08:42:05
序列化分为几种: xml序列化: 对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。 soap序列化: 对象序列化之后的结果符合SOAP协议,也就是可以通过SOAP 协议传输,通过System.Runtime.Serialization.Formatters.Soap命名空间下的SoapFormatter类来实现的。 二进制序列化: 对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。 来源: https://www.cnblogs.com/cfss/p/XLH.html

Gson(http://www.jianshu.com/p/e740196225a4)

扶醉桌前 提交于 2020-03-09 08:34:32
Serialization:序列化,使Java对象到Json字符串的过程。 Deserialization:反序列化,字符串转换成Java对象。 Gson解决的问题 提供一种像toString()和构造方法的很简单的机制,来实现Java 对象和Json之间的互相转换。 允许已经存在的无法改变的对象,转换成Json,或者Json转换成已存在的对象。 允许自定义对象的表现形式 支持任意的复杂对象 能够生成可压缩和可读的Json的字符串输出。 Gson处理对象的几个重要点 1 推荐把成员变量都声明称private的 2 没有必要用注解(@Expose 注解)指明某个字段是否会被序列化或者反序列化,所有包含在当前类(包括父类)中的字段都应该默认被序列化或者反序列化 3 如果某个字段被 transient 这个Java关键词修饰,就不会被序列化或者反序列化 4 下面的实现方式能够正确的处理null 1)当序列化的时候,如果对象的某个字段为null,是不会输出到Json字符串中的。 2)当反序列化的时候,某个字段在Json字符串中找不到对应的值,就会被赋值为null 5 如果一个字段是 synthetic 的,他会被忽视,也即是不应该被序列化或者反序列化 6 内部类(或者anonymous class(匿名类),或者local class(局部类,可以理解为在方法内部声明的类)

【Google Protocol Buffer】Google Protocol Buffer

China☆狼群 提交于 2020-03-09 08:29:06
http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 17 评论: 刘 明 , 软件工程师, 上海交大电子与通信系 2010 年 11 月 18 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用。 开始您的试用 简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议

Google Protocol Buffer 协议

我是研究僧i 提交于 2020-03-09 08:28:49
1. Protocol Buffers 简介    Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可以使用该技术来持久化数据或者序列化成网络传输的数据。主要用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python、Objective-C、C#、Javascript等6种编程语言。Googel 公司 2015-12-31 更新了最新的版本Version 3.0.0-beta-2,相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活 同XML相比,Protocol buffers在序列化结构化数据方面有许多优点(google官方提出): 更简单 数据描述文件只需原来的1/10至1/3 解析速度是原来的20倍至100倍 减少了二义性 生 成了更容易在编程中使用的数据访问类 2. 相关链接 在网上已有不少热心园友或大牛撰写了关于 Protocol Buffers 的博客或文章,这里对 Protocol Buffers 的介绍就不再赘述了,相关连接如下: https://github.com/google/protobuf/releases Protocol Buffers 下载 http://www

Python中的序列化和反序列化

∥☆過路亽.° 提交于 2020-03-09 08:21:11
为什么要序列化 内存中的字典、列表、集合以及各种对象,如何保存到一个文件中。 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列。所以必须把数据额转换为字节序列,输出到文件,这就是序列化,反之,从文件的字节 序列恢复到内存中,就是反序列化。 1、定义 Serialization系列化,将内存中对象存储下来,把他变成一个个字节。二进制。 deSerialization反序列化,将文件的一个个字节到内存中。 序列胡保存到文件就是持久化。 可将数据序列化后持久化,或者网络传输,也可以将文件中或者网络接受到的字节序列反序列化。 2、pickle库 Python中的序列化、反序列化模块 dumps对象序列化为bytes对象 dump对象序列化到文件对象,就是存入到文件。 loads从bytes对象反序列化。 load对象反序列化,从文件读取数据. ## import pickle filename = 'ser' x= 'a' y = '100' z = '100' with open(filename,'wb') as f: pickle.dump(x,f) pickle.dump(y,f) pickle.dump(z,f) with open(filename,'rb')as f: for _ in range(3): a = pickle.load(f)

jquery 的 ajax 传输 数组 ,但后台无法获取的 原因 与 解决 办法

社会主义新天地 提交于 2020-03-09 02:22:08
1.前言 js传输数组到服务器 ,controller无法解析 ,打印结果是 null 2.原因 jQuery会调用jQuery.param序列化参数,源码是 jQuery.param( obj, traditional ), 作用是深度序列化参数对象,用来适应PHP和Ruby on Rails等框架,但servelt api却无法处理 因此,禁用序列化参数即可,设置traditional: true ,不写则默认为false 3.测试 4.心得 js的数组参数不论是数字还是字符,后台都可以以字符串数组获取,如果肯定元素都是数字 ,可以用 Integer[ ]来接收,否则会报错 来源: https://www.cnblogs.com/c2g5201314/p/12446238.html

序列化组件之ModelSerializer类

╄→尐↘猪︶ㄣ 提交于 2020-03-08 17:58:48
目录 一、基于ModelSerializer类实现序列化器 1.1 实现序列化组件 1.2 使用序列化组件 1.3 视图类给序列化类传参 1.4 通过source可以连接到数据库中的字段 二、连表序列化 2.1 自定义插拔序列化方法属性 2.2 连表序列化的其他知识点 三、子序列化 四、基于序列化组件实现十大接口 4.1 设置关联自己的ListSerializer,重写ListSerializer的 update方法 序列化与反序列功能可以整合成一个类,该类继承ModelSerializer 一、基于ModelSerializer类实现序列化器 例如,我们以及有了一个 数据库模型类User class User(models.Model): sex_choice = ((0,"男"),(1,"女")) name = models.CharField(max_length=32,unique=True) age = models.IntegerField(null=True) height = models.DecimalField(max_digits=5,decimal_places=2,null=True) sex = models.IntegerField(choices=sex_choice,default=0) icon = models.ImageField

drf 之ModelSerializer

ぐ巨炮叔叔 提交于 2020-03-08 17:58:29
ModelSerializer - ModelSerializer是Serializer的子类,序列化和反序列化跟Serializer一样。 - ModelSerializer与常规的Serializer相同,但提供了: ''' 基于模型类自动生成一系列字段 基于模型类自动为Serializer生成validators,比如unique_together 包含默认的create()和update()的实现 ''' - 在使用ModelSerializer序列化器时,我们只需要定义好序列化器类,并指定好对应的模型类 和字段即可。ModelSerializer序列化器自动帮我们定义好了字段信息及约束信息。 1. 创建ModelSerializer序列化器类 1.1 对模型类中所有字段都进行序列化和反序列化操作。 我们通过设置Meta类中的fields属性的值可以指定序列化器能够操作的字段数据。 当fields='__all__'时,表示序列化器能够对模型类中的所有字段数据进行序列化与反序列化的操作。 # 定义ModelSerializers序列化器 class BookInfoModelSerializer(serializers.ModelSerializer): '''定义图书信息的ModelSerializers序列化器''' class Meta: # 指定序列化器对应的模型类

ModelSerializer组件

时光怂恿深爱的人放手 提交于 2020-03-08 17:57:45
ModelSerializer组件 1)序列化与反序列功能可以整合成一个类,该类继承ModelSerializer 2)继承ModelSerializer类的资源序列化类,内部包含三部分 Meta子类、局部钩子、全局钩子 注:create和update方法ModelSerializer已经重写了,使用不需要重写 3)在Meta子类中: 用model来绑定关联的Model类 用fields来设置所有的序列化反序列化字段 用extra_kwargs来设置系统的校验规则 4)重要的字段校验规则: read_only校验规则,代表该字段只参与序列化 write_only校验规则,代表该字段只参与反序列化 required校验规则,代表该字段在反序列化是是否是必填(True)还是选填(False),不能和read_only一起使用(规则冲突) 规则细节: 如果一个字段有默认值或是可以为空,没设置required规则,默认为False,反之默认值为True 如果一个Model字段即没有设置read_only也没设置write_only,该字段默认参与序列化及反序列化 5)自定义序列化字段:在Model类中,定义方法属性(可以返回特殊值,还可以完成连表操作),在序列化类的fields属性中可以选择性插拔 6)自定义反序列化字段:在Serializer类中,自定义校验字段