System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 序列化与反序列化方法、计算机装置及计算机可读存储介质制造方法及图纸_技高网

序列化与反序列化方法、计算机装置及计算机可读存储介质制造方法及图纸

技术编号:40276615 阅读:11 留言:0更新日期:2024-02-02 23:03
本发明专利技术提供一种序列化与反序列化方法、计算机装置及计算机可读存储介质,该方法包括获取待序列化的集合,该集合中具有至少一个待序列化的元素;并且,获取各元素的内存地址,并且初始化各元素的内存地址与序列化结果的映射关系,构建映射关系表;判断当前待序列化的目标元素的内存地址是否存在于映射关系表中,如果不存在于映射关系表中,则对目标元素进行序列化操作,获取序列化数值,并在映射关系表中创建目标元素的内存地址以及对应的序列化数值;如果目标元素的内存地址存在于映射关系表中,则直接记录该内存地址。本发明专利技术还提供实现上述方法的计算机装置备及计算机可读存储介质。本发明专利技术能减少序列化的时间,减少序列化结果的存储空间。

【技术实现步骤摘要】

本专利技术涉及基于数据处理的,具体地,是一种对预设格式的数据进行序列化与反序列化的方法,还涉及实现该方法的计算机装置及计算机可读存储介质。


技术介绍

1、随着计算机技术的发展,对数据的处理往往需要使用各种的数据库,也涉及到面向对象的编程问题。而针对面向对象编程时,编写应用程序时产生的一些存储在内存中的数据,为了对这些数据进行传输,通常会将这些数据转变为字节流写入某个文件中,然后进行存储或者将该文件传送到网络中的另一台计算机上以实现通讯,上述过程中,将程序数据转化成能被存储和传输的格式的过程被称为“序列化”,而它的逆过程则被称为“反序列化”。

2、序列化与反序列化的过程常见在json、fastjson、jackson、protobuf等格式的文件中,以json(javascript object notation)为例,其是一种轻量级的数据交换格式,是基于ecmascript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得json成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

3、其中,json序列化是将内存对象生成json的过程,反序列化是一个反过程,目前,json序列化的过程中,对对象的每个属性或集合中每个元素采用无差别的序列化方式,也就是不管这些需要序列化的对象的内存地址是否相同,都执行相同的序列化操作。

4、然而,针对具有相同内存地址的对象进行相同的无差别的序列化操作,将导致对相同的对象重复的进行序列化操作,不但导致重复执行无用的序列化操作,还会需要使用大量的存储空间来存储序列化获得的结果,导致存储空间的增加。如果后续还需要对这些数据进行传输,还会导致传输的数据量增加,导致传输时间的增加。


技术实现思路

1、本专利技术的第一目的是提供一种能够减少数据处理量、减小存储空间的序列化与反序列化方法。

2、本专利技术的第二目的是提供一种实现上述序列化与反序列化方法的计算机装置。

3、本专利技术的第三目的是提供一种实现上述序列化与反序列化方法的计算机可读存储介质。

4、为实现本专利技术的第一目的,本专利技术提供的序列化与反序列化方法包括获取待序列化的集合,该集合中具有至少一个待序列化的元素;并且,获取各元素的内存地址,并且初始化各元素的内存地址与序列化结果的映射关系,构建映射关系表;判断当前待序列化的目标元素的内存地址是否存在于映射关系表中,如果不存在于映射关系表中,则对目标元素进行序列化操作,获取序列化数值,并在映射关系表中创建目标元素的内存地址以及对应的序列化数值;如果目标元素的内存地址存在于映射关系表中,则直接记录该内存地址。

5、由上述方案可见,建立映射关系表后,对于具有相同内存地址的元素,不再重复进行序列化,而是直接记录相同元素的内存地址,这样可以避免对相同内存地址的对象执行重复的序列化操作,减少数量处理量。另外,由于不需要存储相同的元素的序列化结果,因此,可以减少数据存储量,也不需要对相同元素的序列化结果进行传送,还能够减少数据传输量。

6、一个优选的方案是,输出集合的完整序列化结果中包含有映射关系表以及各元素的内存地址对应的序列化数值。

7、由上述方案可见,所输出的集合的完整序列化结果能够包含该集合的所有的元素的内存地址,也包括相同内存地址的元素的序列化数值,满足反序列化的要求。

8、进一步的方案是,完整序列化结果包含有按顺序排列的元素的内存地址。

9、这样,进行反序列化时,只需要按顺序对完整序列化结果的各个对象进行处理即可获得集合中的各个元素。

10、进一步的方案是,该方法还包括:对完整序列化结果进行反序列化:获取各元素的内存地址与序列化结果的映射关系,并实例化为字符对象;获取映射关系表中的各对象,判断当前的目标对象是否为预设内存地址的引用对象,如是,则从映射关系表中获取相应的引用对象,并设置为反序列化结果中的集合中的一个元素。

11、由此可见,进行反序列化时,从映射关系表中查找各个对象对应的元素,能够获得完整的反序列化的结果。

12、一个优选的方案是,获取映射关系表中的对象时,按照序列化结果的顺序获取映射关系表中的各对象。

13、由于进行序列化时,按照集合中的各个元素的顺序对序列化结果进行排序,进行反序列化时,只需要按照序列化结果中各个对象的顺序获取对应的元素即可。

14、进一步的方案是,获取各元素的内存地址与序列化结果的映射关系包括:从序列化文件的头部字段中获取各元素的内存地址与序列化结果的映射关系。

15、由此可见,将映射关系表设置在序列化文件的头部字段中,有利于在反序列化的时候快速的获取映射关系表并进行反序列化的操作。

16、进一步的方案是,待序列化的集合为json对象集合或者protobuf集合。

17、为实现上述的第二目的,本专利技术提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述序列化与反序列化方法的各个步骤。

18、为实现上述的第三目的,本专利技术提供计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述序列化与反序列化方法的各个步骤。

本文档来自技高网...

【技术保护点】

1.序列化与反序列化方法,包括:

2.根据权利要求1所述的序列化与反序列化方法,其特征在于:

3.根据权利要求2所述的序列化与反序列化方法,其特征在于:

4.根据权利要求3所述的序列化与反序列化方法,其特征在于:

5.根据权利要求4所述的序列化与反序列化方法,其特征在于:

6.根据权利要求4或5所述的序列化与反序列化方法,其特征在于:

7.根据权利要求1至5任一项所述的序列化与反序列化方法,其特征在于:

8.计算机装置,其特征在于,包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述序列化与反序列化方法的各个步骤。

9.计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述序列化与反序列化方法的各个步骤。

【技术特征摘要】

1.序列化与反序列化方法,包括:

2.根据权利要求1所述的序列化与反序列化方法,其特征在于:

3.根据权利要求2所述的序列化与反序列化方法,其特征在于:

4.根据权利要求3所述的序列化与反序列化方法,其特征在于:

5.根据权利要求4所述的序列化与反序列化方法,其特征在于:

6.根据权利要求4或5所述的序列化与反序列化方法,其特征在于:

7.根...

【专利技术属性】
技术研发人员:罗建光罗天钦
申请(专利权)人:远光软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1