CN116301666A - Java对象序列化方法及其反序列化方法及装置、终端 - Google Patents
Java对象序列化方法及其反序列化方法及装置、终端 Download PDFInfo
- Publication number
- CN116301666A CN116301666A CN202310569647.5A CN202310569647A CN116301666A CN 116301666 A CN116301666 A CN 116301666A CN 202310569647 A CN202310569647 A CN 202310569647A CN 116301666 A CN116301666 A CN 116301666A
- Authority
- CN
- China
- Prior art keywords
- attribute
- converted
- attribute values
- byte
- java object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000006243 chemical reaction Methods 0.000 claims description 48
- 238000013507 mapping Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 238000007667 floating Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种Java对象序列化方法及其反序列化方法及装置、终端,方法包括:获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。本发明可以有效减少Java对象的字节数组的长度,降低存储成本。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种Java对象序列化方法及其反序列化方法及装置、终端。
背景技术
为了便于在网络上进行传输,以及在存储介质上进行存储,通常需要对java对象进行序列化处理以转换为字节码,从而将对象写入到输出流中。在对Java对象序列化之后,还需要进行反序列化处理,以从输入流中读取对象。
在现有的Java对象序列化技术中,通常将数字类型的属性值转换成字符串进行存储,导致存储字节数过大,并且随着值的增加而线性增大,导致Java对象的字节数组的长度过大,导致存储成本增加。
亟需一种Java对象序列化方法,可以在数字类型的属性值较大的时候,有效减少Java对象的字节数组的长度,降低存储成本。
发明内容
本发明解决的技术问题是提供一种Java对象序列化方法及其反序列化方法及装置、终端,可以有效减少Java对象的字节数组的长度,降低存储成本。
为解决上述技术问题,本发明实施例提供一种Java对象序列化方法,包括:获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
可选的,所述字节数组包含所述转换后的属性值的属性值字节长度信息以及属性值字节;基于所述转换后的属性值的实际字节数量,构建所述Java对象的字节数组,包括:将各个转换后属性值的字节的长度存储至所述字节数组中的转换后的属性值字节长度信息,以及将各个转换后属性值的字节存储至所述字节数组中的属性值字节;其中,不同的属性值字节具有各自的存储长度,不同的属性值字节的存储长度相同或不同。
可选的,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
可选的,所述字节数组还包含:版本号;在获取所述Java对象的元数据之前,所述方法还包括:构建多个不同的元数据与所述版本号之间一一对应的映射关系;其中,所述不同的元数据包括:不同的元数据之间属性名称不完全相同;不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
可选的,所述版本号在所述字节数组中的存储长度根据所述元数据的数量确定。可选的,所述版本号的类型为整型short。
可选的,所述Java中的基础数据类型选自:布尔型boolean、字符型char、整型byte、整型short、整型int、整型long、单精度浮点型float 以及双精度浮点型double。
为解决上述技术问题,本发明实施例提供一种基于上述的Java对象序列化方法的Java对象反序列化方法,包括:获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
可选的,所述字节数组还包含各个转换后的属性值的属性值字节长度信息;将所述转换后的属性值恢复为转换前的属性值,包括:基于各个转换后的属性值的属性值字节长度信息,确定对应的属性值字节;将确定的属性值字节恢复为转换前的属性值。
可选的,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
可选的,所述字节数组还包含:版本号;在依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象之前,所述方法还包括:基于预先构建的多个不同的元数据与所述版本号之间一一对应的映射关系,确定所述Java对象的元数据中的各个属性值之间的顺序;其中,所述不同的元数据包括:不同的元数据之间属性名称不完全相同;不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
为解决上述技术问题,本发明实施例提供一种Java对象序列化装置,包括:元数据获取模块,用于获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;转换后确定模块,用于确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;构建模块,用于基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
为解决上述技术问题,本发明实施例提供一种基于上述的Java对象序列化装置的Java对象反序列化装置,包括:字节数组获取模块,用于获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;恢复模块,用于将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;写入模块,用于依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
为解决上述技术问题,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述Java对象序列化方法的步骤,或者执行上述Java对象反序列化方法的步骤。
为解决上述技术问题,本发明实施例提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行上述Java对象序列化方法的步骤,或者执行上述Java对象反序列化方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例中,通过将Java对象的元数据中的数字类型属性值均转换为Java中的基础数据类型,并基于转换后的属性值的实际字节数量,采用可变长度存储方式构建Java对象的字节数组,由于实际字节数量为不进行补零操作的可变长度存储的字节数量,因此在构建Java对象的字节数组时,通过采用实际字节数量进行可变长度存储,在存储较大的数字类型的属性值时,相比于将数字转换成字符串进行存储,采用字节数量较少,可以有效减少Java对象的字节数组的长度,降低存储成本。
进一步,所述字节数组包含所述转换后的属性值的属性值字节长度信息以及属性值字节;将各个转换后属性值的字节的长度存储至所述字节数组中的转换后的属性值字节长度信息,以及将各个转换后属性值的字节存储至所述字节数组中的属性值字节;其中,不同的属性值字节具有各自的存储长度,不同的属性值字节的存储长度相同或不同。采用上述方案,可以通过存储属性值字节长度信息,有效确定属性值字节的结束位置,从而在Java对象反序列化之后,能够准确读取属性值字节。
进一步,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。采用上述方案,可以通过属性值字节长度信息的结束位置直接确定属性值字节的起始位置,从而在Java对象反序列化之后,无需额外信息确定起始位置,就能够准确读取属性值字节。
进一步,通过构建多个不同的元数据与所述版本号之间一一对应的映射关系,可以通过占据存储空间较小的版本号准确指示元数据,由于不同的元数据之间的区分非常细致,不仅对属性名称或属性值不同的情况进行了区分,还对属性值之间的排列顺序不完全相同的情况也进行了区分,因此通过版本号就能够准确确定属性名称、属性值及其个数、属性值之间的排列顺序,从而不必在字节数组中存储属性名称,就能确定各个属性值所属的属性名称,并且还采用占用存储空间非常少的版本号就能指示属性名称及其各个属性值等丰富的信息,在提高确定准确性的同时进一步降低存储成本。
进一步,所述Java中的基础数据类型选自:布尔型boolean、字符型char、整型byte、整型short、整型int、整型long、单精度浮点型float 以及双精度浮点型double,采用本发明实施例中的方案,相比于字符串存储,可以更显著地降低存储成本。
进一步,获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象,从而可以基于不包含属性名称、仅包含属性值的字节数量较少的字节数组,实现反序列化,得到Java对象。
附图说明
图1是本发明实施例中一种Java对象序列化方法的流程示意图;
图2是本发明实施例中另一种Java对象序列化方法的流程图;
图3是本发明实施例中一种元数据与版本号之间的映射关系示意图;
图4是本发明实施例中一种Java对象反序列化方法的流程示意图;
图5是本发明实施例中另一种Java对象反序列化方法的流程图;
图6是本发明实施例中一种Java对象序列化装置的结构示意图;
图7是本发明实施例中一种Java对象反序列化装置的结构示意图。
具体实施方式
如前所述,在现有的Java对象序列化技术中,通常将数字类型的属性值转换成字符串进行存储,导致存储字节数过大,并且随着值的增加而线性增大,导致Java对象的字节数组的长度过大,导致存储成本增加。
参照表1,表1示出了现有技术中三种Java对象序列化方案得到的字节数。
具体而言,在表1中以语言JavaScript对象简谱(JavaScript Object Notation,JSON)、可扩展标记语言 (Extensible Markup Language,XML)、逗号分隔值(Comma-Separated Values,CSV)三种Java对象序列化方案,存储一个描述武力值的Java对象,该对象有两个属性值:武将名称(name)、武力值(value),采用UTF-8编码为例进行说明。
XML格式中存在大量的标签信息,这类信息甚至比数据本身占用空间更多,在将数字2147483647写入文件时,存储的是字符串2147483647,实际占用字节数为10字节,总占用字节数为44。
Json格式中有大量的对象属性名称(如"name"和"value"),在将数字2147483647写入文件时,存储的也是字符串2147483647,实际占用字节数为10字节,总占用字节数为32。
Csv格式无法区分空(null)和空字符串,难以确定对象属性是否发生变化,在将数字2147483647写入文件时,存储的也是字符串2147483647,实际占用字节数为10字节,总占用字节数为17。
经过研究发现,现有的方案中都是将数字转换成字符串进行存储,导致存储字节数过大,并且随着值的增加而线性增大,比如将数字2147483647写入文件,以上三种方案存储的都是字符串2147483647,实际字节数为10字节。尤其是在部分方案中,还需要存储属性名称,导致额外占用过多存储空间。
经过研究进一步发现,这三种方案还存在安全性不足的问题,具体而言,都是明文存储,对数据进行反序列化处理写入文件后,用任何一种文本查看器打开文件即可看到原始数据,即使从网络中捕获到这类数据也能看到原始数据。
在本发明实施例中,通过将Java对象的元数据中的数字类型属性值均转换为Java中的基础数据类型,并基于转换后的属性值的实际字节数量,采用可变长度存储方式构建Java对象的字节数组,由于实际字节数量为不进行补零操作的可变长度存储的字节数量,因此在构建Java对象的字节数组时,通过采用实际字节数量进行可变长度存储,在存储较大的数字类型的属性值时,相比于将数字转换成字符串进行存储,采用字节数量较少,可以有效减少Java对象的字节数组的长度,降低存储成本。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,图1是本发明实施例中一种Java对象序列化方法的流程示意图。所述Java对象序列化方法可以包括步骤S11至步骤S13:
步骤S11:获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;
步骤S12:确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
步骤S13:基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
在步骤S11的具体实施中,所述元数据可以是用于描述数据、代码间关系,或者代码与其它资源(例如数据库表)之间内在联系的数据,例如以标签的形式存在于Java代码中。
在一个非限制性的具体实施例中,可以采用下述内容表示某一java对象的元数据:
fieldName:name,fieldType:String,fieldConvert:StringConvert
fieldName:value,fieldType:int, fieldConvert:IntConvert
其中,属性名称可以采用“fieldName”表示,属性值可以采用“name”、“value”表示。
在表1示出的实施例中,与属性名称对应的有两个属性值,属性值“name”可以是张三,“value”可以是2147483647。
其中,所述属性值的至少一部分为数字类型,如“2147483647”。
需要指出的是,元数据中还可以包括用于表示数据类型的信息,例如“fieldType:String”,用于表示数据类型为字符串(String),或者“fieldType:int” 用于表示数据类型为整型int。
元数据中还可以包括用于表示转换器的信息,例如“fieldConvert:StringConvert”,用于表示转换为字符串(String)数据类型,或者“fieldConvert:IntConvert”,用于表示转换为整型Int数据类型。
在本发明实施例中,表示数据类型的信息和表示转换器的信息还可以采用预定义的默认类型和默认转换器,也即元数据中至少需要包含属性名称和属性值。
在步骤S12中,可以确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型。
进一步地,所述Java中的基础数据类型选自:布尔型boolean、字符型char、整型byte、整型short、整型int、整型long、单精度浮点型float 以及双精度浮点型double。
其中,布尔型boolean仅用于存储两个值:true 和 false,也就是真和假,通常用于条件的判断。
字符型char 可以表示一个 16 位的 Unicode 字符,占用2个字节,其值范围在‘\u0000’(0)和 ‘\uffff’(65,535)(包含)之间。
整型byte的取值范围在 -128 和 127 之间,包含 127。最小值为 -128,最大值为127,默认值为 0。
整型short的取值范围在 -32,768 和 32,767 之间,包含 32,767。最小值为 -32,768,最大值为 32,767,默认值为 0。
整型long 的取值范围在 -9,223,372,036,854,775,808(-2^63) 和 9,223,372,036,854,775,807(2^63 -1)(含)之间,默认值为 0。如果 int 存储不下,就用 long,整型数据就用 int。
单精度浮点型float 是单精度的浮点数,遵循 IEEE 754(二进制浮点数算术标准),取值范围是无限的,默认值为 0.0f。
双精度浮点型double 是双精度的浮点数,遵循 IEEE 754(二进制浮点数算术标准),取值范围也是无限的,默认值为 0.0。
由上可知,在基础数据类型中,其中,字节(byte)与比特(bit)的换算关系是:1字节= 8比特,字节数组中的每个字节可以存储256个数字。以需要存储255为例,此时采用基础数据类型存储,仅占用单个字节,采用字符串存储,需要占用3个字节分别存储“2”、“5”、“5”。
采用本发明实施例中的方案,相比于字符串存储,可以更显著地降低存储成本。
在步骤S13中,基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
具体地,采用可变长度存储方式,存储实际字节数量,不进行补零操作,在存储较大的数字类型的属性值时,相比于将数字转换成字符串进行存储,采用字节数量更少。
如单个字节“11111111”可存储“0~255”,两个字节可存储“0~65535”。在采用可变长度存储方式的情况下,对于大于等于0且小于等于255的属性值,可以采用单个字节存储,不必在前面补零;对于大于等于256且小于等于65535的属性值,可以采用两个字节存储,不必在前面补零。
在本发明实施例中,通过将Java对象的元数据中的数字类型属性值均转换为Java中的基础数据类型,并基于转换后的属性值的实际字节数量,采用可变长度存储方式构建Java对象的字节数组,由于实际字节数量为不进行补零操作的可变长度存储的字节数量,因此在构建Java对象的字节数组时,通过采用实际字节数量进行可变长度存储,在存储较大的数字类型的属性值时,相比于将数字转换成字符串进行存储,采用字节数量较少,可以有效减少Java对象的字节数组的长度,降低存储成本。
进一步地,所述字节数组可以包含所述转换后的属性值的属性值字节长度信息以及属性值字节,还可以包含版本号。
参照图2,图2是本发明实施例中另一种Java对象序列化方法的流程图。所述另一种Java对象序列化方法可以包括步骤S21至步骤S24,以下对各个步骤进行说明。
步骤S21:获取所述Java对象的元数据。
其中,不同的元数据与版本号之间具有一一对应的映射关系。
参照图3,图3是本发明实施例中一种元数据与版本号之间的映射关系示意图。
如图3所示,不同的元数据包括:不同的元数据之间属性名称不完全相同;不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
版本号(Version)00可以对应于包含属性名称1和属性值1的元数据,例如表示如下:
fieldName:name;
以上述表1中的内容为例,版本号00对应的元数据可以用于表示张三。
版本号01可以对应于包含属性名称1、属性值1和属性值2的元数据,例如表示如下:
fieldName:name;
fieldName:value;
以上述表1中的内容为例,版本号01对应的元数据可以用于表示张三和武力值。
版本号02可以对应于包含属性名称1、属性值2和属性值1的元数据,例如表示如下:
fieldName:value;
fieldName:name;
以上述表1中的内容为例,版本号02对应的元数据可以用于表示武力值和张三。
如版本号00和版本号01对应的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;版本号01和版本号02对应的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
由上可知,不同的元数据之间的区分非常细致,不仅对属性名称或属性值不同的情况进行了区分,还对属性值之间的排列顺序不完全相同的情况也进行了区分,因此通过版本号就能够准确确定属性名称、属性值及其个数、属性值之间的排列顺序。
继续参照图2,有关步骤S21的更多内容请参照前文以及图1中的步骤S11的具体描述执行,此处不再赘述。
步骤S22:将版本号存储至所述字节数组中的版本号。
进一步地,所述字节数组还包含:版本号;在获取所述Java对象的元数据之前,所述方法还包括:构建多个不同的元数据与所述版本号之间一一对应的映射关系;其中,所述不同的元数据包括:不同的元数据之间属性名称不完全相同;不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
进一步地,所述版本号在所述字节数组中的存储长度根据所述元数据的数量确定。
具体地,如果元数据的总数量仅需要单个字节即可存储,则版本号在所述字节数组中的存储长度可以为单字节,如果元数据的总数量需要多个字节(例如至少两个字节)才可存储,则版本号在所述字节数组中的存储长度可以为对应的多字节(例如2个字节)。
在本发明实施例中,所述版本号在所述字节数组中的存储长度根据所述元数据的数量确定,从而可以采用可变长度存储方式存储所述版本号,从而通过灵活存储有机会减少版本号占用的存储空间。可以理解的是,由于版本号与元数据之间的映射关系已知且已存储于元数据中,因此采用可变长度存储方式存储版本号,在反序列化处理时也能够准确确定版本号。
进一步地,所述版本号的类型为整型short。
具体地,整型short的取值范围在 -32,768 和 32,767 之间,包含 32,767。最小值为 -32,768,最大值为 32,767,默认值为 0。
在本发明实施例中,选择整型short指示版本号,存储容量较大,能够存储大段文字内容,相比于其他类型,可以更好的辅助可变长度存储方式,还可以在更大范围内满足元数据的版本需求。
在本发明实施例中,通过构建多个不同的元数据与所述版本号之间一一对应的映射关系,可以通过占据存储空间较小的版本号准确指示元数据,由于不同的元数据之间的区分非常细致,不仅对属性名称或属性值不同的情况进行了区分,还对属性值之间的排列顺序不完全相同的情况也进行了区分,因此通过版本号就能够准确确定属性名称、属性值及其个数、属性值之间的排列顺序,从而不必在字节数组中存储属性名称,就能确定各个属性值所属的属性名称,并且还采用占用存储空间非常少的版本号就能指示属性名称及其各个属性值等丰富的信息,在提高确定准确性的同时进一步降低存储成本。
在步骤S23中,确定转换后的属性值。
有关步骤S23的更多内容请参照前文以及图1中的步骤S12的具体描述执行,此处不再赘述。
在步骤S24中,将各个转换后属性值的字节的长度存储至所述字节数组中的转换后的属性值字节长度信息,以及将各个转换后属性值的字节存储至所述字节数组中的属性值字节。
其中,不同的属性值字节具有各自的存储长度,不同的属性值字节的存储长度相同或不同。
在字节数组中,可以包含版本号、各个转换后的属性值的属性值字节长度信息以及属性值字节。
如图2所示,版本号为01,第一个转换后的属性值的属性值字节为6字节,其属性值字节长度信息为0或06,第二个转换后的属性值的属性值字节为3字节,其属性值字节长度信息3。
其中,属性值字节长度信息可以是预定义的,例如可以根据具体需求进行预定义。例如预定义为2字节,则可以用于表示内容较为丰富的信息,还可以预定义为1字节,则可以用于表示内容较为简略的信息。
在本发明实施例中,所述字节数组包含所述转换后的属性值的属性值字节长度信息以及属性值字节;将各个转换后属性值的字节的长度存储至所述字节数组中的转换后的属性值字节长度信息,以及将各个转换后属性值的字节存储至所述字节数组中的属性值字节;其中,不同的属性值字节具有各自的存储长度,不同的属性值字节的存储长度相同或不同。采用上述方案,可以通过存储属性值字节长度信息,有效确定属性值字节的结束位置,从而在Java对象反序列化之后,能够准确读取属性值字节。
进一步地,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
在本发明实施例中,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。采用上述方案,可以通过属性值字节长度信息的结束位置直接确定属性值字节的起始位置,从而在Java对象反序列化之后,无需额外信息确定起始位置,就能够准确读取属性值字节。
参照图4,图4是本发明实施例中一种Java对象反序列化方法的流程示意图。所述Java对象反序列化方法可以包括步骤S41至步骤S43:
步骤S41:获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
步骤S42:将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;
步骤S43:依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
在步骤S41的具体实施中,Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,由于实际字节数量为不进行补零操作的可变长度存储的字节数量,因此在构建Java对象的字节数组时,通过采用实际字节数量进行可变长度存储,在存储较大的数字类型的属性值时,相比于将数字转换成字符串进行存储,采用字节数量较少。
在步骤S42的具体实施中,可以将序列化阶段转换为基础数据类型的属性值恢复为数字类型属性值。
进一步地,所述字节数组还包含各个转换后的属性值的属性值字节长度信息;将所述转换后的属性值恢复为转换前的属性值的步骤可以包括:基于各个转换后的属性值的属性值字节长度信息,确定对应的属性值字节;将确定的属性值字节恢复为转换前的属性值。
在步骤S43中,通过将所述转换前的属性值写入所述Java对象,可以基于不包含属性名称、仅包含属性值的字节数量较少的字节数组,实现反序列化。
在本发明实施例中,获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象,从而可以基于不包含属性名称、仅包含属性值的字节数量较少的字节数组,实现反序列化,得到Java对象。
参照图5,图5是本发明实施例中另一种Java对象反序列化方法的流程图。所述另一种Java对象反序列化方法可以包括步骤S51至步骤S54,以下对各个步骤进行说明。
在步骤S51中,获取所述Java对象的字节数组。
有关Java对象的字节数组的更多内容请参照前文以及图2至图3中的步骤的具体描述执行,此处不再赘述。
在步骤S52中,基于预先构建的多个不同的元数据与所述版本号之间一一对应的映射关系,确定所述Java对象的元数据中的各个属性值之间的顺序。
进一步地,所述字节数组还包含:版本号;在依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象之前,所述方法还包括:基于预先构建的多个不同的元数据与所述版本号之间一一对应的映射关系,确定所述Java对象的元数据中的各个属性值之间的顺序;其中,所述不同的元数据包括:不同的元数据之间属性名称不完全相同;不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
有关元数据与版本号之间映射关系的更多内容请参照前文以及图2至图3中的步骤的具体描述执行,此处不再赘述。
在步骤S53中,将所述转换后的属性值恢复为转换前的属性值。
进一步地,所述字节数组还包含各个转换后的属性值的属性值字节长度信息;将所述转换后的属性值恢复为转换前的属性值的步骤可以包括:基于各个转换后的属性值的属性值字节长度信息,确定对应的属性值字节;将确定的属性值字节恢复为转换前的属性值。
如图5所示,转换后的属性值占用3个字节,分别为1、-122和-96,将其恢复为转换前的属性值后可以得到2147483647。
更进一步地,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
在本发明实施例中,可以通过属性值字节长度信息的结束位置直接确定属性值字节的起始位置,从而在Java对象反序列化之后,无需额外信息确定起始位置,就能够准确读取属性值字节。
有关属性值字节与转换前的属性值的更多内容请参照前文以及图2至图3中的步骤的具体描述执行,此处不再赘述。
在步骤S54中,依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
在具体实施中,由于各个转换后属性值的字节的长度被存储至所述字节数组中的转换后的属性值字节长度信息,各个转换后属性值的字节被存储至所述字节数组中的属性值字节,可以通过属性值字节长度信息有效确定属性值字节的结束位置,从而在Java对象反序列化之后,能够准确读取属性值字节。
在本发明实施例中,可以基于不包含属性名称、仅包含属性值的字节数量较少的字节数组,实现反序列化,得到Java对象。
参照图6,图6是本发明实施例中一种Java对象序列化装置的结构示意图。所述Java对象序列化装置可以包括:
元数据获取模块61,用于获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;
转换后确定模块62,用于确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
构建模块63,用于基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
关于该Java对象序列化装置的原理、具体实现和有益效果请参照前文所述的关于Java对象序列化方法的相关描述,此处不再赘述。
参照图7,图7是本发明实施例中一种Java对象反序列化装置的结构示意图。所述Java对象反序列化装置可以基于图5示出的Java对象序列化装置实现。所述Java对象反序列化装置可以包括:
字节数组获取模块71,用于获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
恢复模块72,用于将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;
写入模块73,用于依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
关于该Java对象反序列化装置的原理、具体实现和有益效果请参照前文所述的关于Java对象反序列化方法的相关描述,此处不再赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。所述计算机可读存储介质例如可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器,还可以包括光盘、机械硬盘、固态硬盘等。
本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述方法的步骤。所述终端包括但不限于服务器、手机、计算机、平板电脑等终端设备。
具体地,在本发明实施例中,所述处理器可以为中央处理单元(centralprocessing unit,简称CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,简称DSP)、专用集成电路(application specificintegrated circuit,简称ASIC)、现成可编程门阵列(field programmable gate array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,简称ROM)、可编程只读存储器(programmable ROM,简称PROM)、可擦除可编程只读存储器(erasable PROM,简称EPROM)、电可擦除可编程只读存储器(electricallyEPROM,简称EEPROM)或闪存。易失性存储器可以是随机存取存储器(random accessmemory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,简称RAM)可用,例如静态随机存取存储器(staticRAM,简称SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,简称DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,简称ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,简称DR RAM)。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (15)
1.一种Java对象序列化方法,其特征在于,包括:
获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;
确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
2.根据权利要求1所述的方法,其特征在于,所述字节数组包含所述转换后的属性值的属性值字节长度信息以及属性值字节;
基于所述转换后的属性值的实际字节数量,构建所述Java对象的字节数组,包括:
将各个转换后属性值的字节的长度存储至所述字节数组中的转换后的属性值字节长度信息,以及将各个转换后属性值的字节存储至所述字节数组中的属性值字节;
其中,不同的属性值字节具有各自的存储长度,不同的属性值字节的存储长度相同或不同。
3.根据权利要求2所述的方法,其特征在于,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;
其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
4.根据权利要求2所述的方法,其特征在于,所述字节数组还包含:版本号;
在获取所述Java对象的元数据之前,所述方法还包括:
构建多个不同的元数据与所述版本号之间一一对应的映射关系;
其中,所述不同的元数据包括:
不同的元数据之间属性名称不完全相同;
不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;
不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
5.根据权利要求4所述的方法,其特征在于,所述版本号在所述字节数组中的存储长度根据所述元数据的数量确定。
6.根据权利要求5所述的方法,其特征在于,所述版本号的类型为整型short。
7.根据权利要求1所述的方法,其特征在于,所述Java中的基础数据类型选自:
布尔型boolean、字符型char、整型byte、整型short、整型int、整型long、单精度浮点型float 以及双精度浮点型double。
8.一种基于权利要求1至7任一项所述的Java对象序列化方法的Java对象反序列化方法,其特征在于,包括:
获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;
依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
9.根据权利要求8所述的方法,其特征在于,所述字节数组还包含各个转换后的属性值的属性值字节长度信息;
将所述转换后的属性值恢复为转换前的属性值,包括:
基于各个转换后的属性值的属性值字节长度信息,确定对应的属性值字节;
将确定的属性值字节恢复为转换前的属性值。
10.根据权利要求9所述的方法,其特征在于,每个转换后的属性值字节长度信息与对应的属性值字节相邻,且位于该对应的属性值字节之前;
其中,不同的转换后的属性值之间的顺序与转换前的属性值在所述元数据中的顺序一致。
11.根据权利要求8所述的方法,其特征在于,所述字节数组还包含:版本号;
在依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象之前,所述方法还包括:
基于预先构建的多个不同的元数据与所述版本号之间一一对应的映射关系,确定所述Java对象的元数据中的各个属性值之间的顺序;
其中,所述不同的元数据包括:
不同的元数据之间属性名称不完全相同;
不同的元数据之间具有相同的属性名称,且与所述属性名称对应的属性值不完全相同;
不同的元数据之间具有相同的属性名称,以及具有相同的与所述属性名称对应的属性值,且属性值之间的排列顺序不完全相同。
12.一种Java对象序列化装置,其特征在于,包括:
元数据获取模块,用于获取所述Java对象的元数据,所述元数据包含一个或多个属性名称,以及与每个属性名称对应的一个或多个属性值,其中,所述属性值的至少一部分为数字类型属性值;
转换后确定模块,用于确定转换后的属性值,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
构建模块,用于基于所述转换后的属性值的实际字节数量,采用可变长度存储方式构建所述Java对象的字节数组。
13.一种Java对象反序列化装置,其特征在于,包括:
字节数组获取模块,用于获取所述Java对象的字节数组,所述Java对象的字节数组是基于转换后的属性值的实际字节数量,采用可变长度存储方式构建的,其中,所述转换后的属性值中的数字类型属性值均被转换为Java中的基础数据类型;
恢复模块,用于将所述转换后的属性值恢复为转换前的属性值,其中,从所述数字类型转换为Java中的基础数据类型的属性值均被恢复为数字类型属性值;
写入模块,用于依照所述Java对象的元数据中的各个属性值之间的顺序,将所述转换前的属性值写入所述Java对象。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至7任一项所述Java对象序列化方法的步骤,或者执行权利要求8至11任一项所述Java对象反序列化方法的步骤。
15.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至7任一项所述Java对象序列化方法的步骤,或者执行权利要求8至11任一项所述Java对象反序列化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310569647.5A CN116301666B (zh) | 2023-05-17 | 2023-05-17 | Java对象序列化方法及其反序列化方法及装置、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310569647.5A CN116301666B (zh) | 2023-05-17 | 2023-05-17 | Java对象序列化方法及其反序列化方法及装置、终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116301666A true CN116301666A (zh) | 2023-06-23 |
CN116301666B CN116301666B (zh) | 2023-10-10 |
Family
ID=86820754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310569647.5A Active CN116301666B (zh) | 2023-05-17 | 2023-05-17 | Java对象序列化方法及其反序列化方法及装置、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301666B (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03223923A (ja) * | 1990-01-29 | 1991-10-02 | Nec Corp | 不定バイト長文字入力制御方式 |
US6128621A (en) * | 1997-10-31 | 2000-10-03 | Oracle Corporation | Apparatus and method for pickling data |
WO2008054790A2 (en) * | 2006-10-31 | 2008-05-08 | Live Cargo, Inc. | Systems and methods for optimized serialization |
CN101661391A (zh) * | 2009-09-24 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
US20140052744A1 (en) * | 2012-08-14 | 2014-02-20 | International Business Machines Corporation | Custom object-in-memory format in data grid network appliance |
CN106407201A (zh) * | 2015-07-29 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
WO2017059798A1 (zh) * | 2015-10-10 | 2017-04-13 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
CN106775638A (zh) * | 2016-11-22 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种对象序列化方法、装置和计算设备 |
CN109491727A (zh) * | 2018-10-16 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 对象序列化方法、终端设备及计算机可读存储介质 |
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111241346A (zh) * | 2020-01-15 | 2020-06-05 | 上海依图网络科技有限公司 | 一种对象序列化方法、装置、机器可读介质以及系统 |
CN112260699A (zh) * | 2020-09-15 | 2021-01-22 | 深圳拓邦股份有限公司 | 属性通讯编解码方法、编码装置、解码装置及系统 |
CN113590551A (zh) * | 2021-07-30 | 2021-11-02 | 广东时谛智能科技有限公司 | 一种材料数字化扩展格式系统、方法、介质及设备 |
CN114169292A (zh) * | 2021-12-13 | 2022-03-11 | 百果园技术(新加坡)有限公司 | 一种字节流数据转换方法、装置、设备及存储介质 |
CN114331416A (zh) * | 2021-12-30 | 2022-04-12 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
CN114385146A (zh) * | 2022-01-05 | 2022-04-22 | 武汉物易云通网络科技有限公司 | 一种简约的对象传输序列化方法及装置 |
CN115167869A (zh) * | 2022-06-29 | 2022-10-11 | 西北工业大学 | 一种Java对象序列化和反序列化的方法、电子设备及介质 |
-
2023
- 2023-05-17 CN CN202310569647.5A patent/CN116301666B/zh active Active
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03223923A (ja) * | 1990-01-29 | 1991-10-02 | Nec Corp | 不定バイト長文字入力制御方式 |
US6128621A (en) * | 1997-10-31 | 2000-10-03 | Oracle Corporation | Apparatus and method for pickling data |
WO2008054790A2 (en) * | 2006-10-31 | 2008-05-08 | Live Cargo, Inc. | Systems and methods for optimized serialization |
CN101661391A (zh) * | 2009-09-24 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
US20140052744A1 (en) * | 2012-08-14 | 2014-02-20 | International Business Machines Corporation | Custom object-in-memory format in data grid network appliance |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN106407201A (zh) * | 2015-07-29 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN106570018A (zh) * | 2015-10-10 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
WO2017059798A1 (zh) * | 2015-10-10 | 2017-04-13 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
CN106775638A (zh) * | 2016-11-22 | 2017-05-31 | 北京皮尔布莱尼软件有限公司 | 一种对象序列化方法、装置和计算设备 |
CN109491727A (zh) * | 2018-10-16 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 对象序列化方法、终端设备及计算机可读存储介质 |
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN111241346A (zh) * | 2020-01-15 | 2020-06-05 | 上海依图网络科技有限公司 | 一种对象序列化方法、装置、机器可读介质以及系统 |
CN112260699A (zh) * | 2020-09-15 | 2021-01-22 | 深圳拓邦股份有限公司 | 属性通讯编解码方法、编码装置、解码装置及系统 |
CN113590551A (zh) * | 2021-07-30 | 2021-11-02 | 广东时谛智能科技有限公司 | 一种材料数字化扩展格式系统、方法、介质及设备 |
CN114169292A (zh) * | 2021-12-13 | 2022-03-11 | 百果园技术(新加坡)有限公司 | 一种字节流数据转换方法、装置、设备及存储介质 |
CN114331416A (zh) * | 2021-12-30 | 2022-04-12 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
CN114385146A (zh) * | 2022-01-05 | 2022-04-22 | 武汉物易云通网络科技有限公司 | 一种简约的对象传输序列化方法及装置 |
CN115167869A (zh) * | 2022-06-29 | 2022-10-11 | 西北工业大学 | 一种Java对象序列化和反序列化的方法、电子设备及介质 |
Non-Patent Citations (3)
Title |
---|
LING-HUA CHANG: "Amazing use of ISG for implementing information systems", 《IEEE XPLORE》 * |
何成万, 余秋惠: "JosML―一个用于实现Java对象序列化的XML模型", 计算机工程, no. 01 * |
刘雨: "一种高压缩率的空间数据序列化方法在输电线路通道数据分析中应用", 《云南电力技术》, vol. 50, no. 3 * |
Also Published As
Publication number | Publication date |
---|---|
CN116301666B (zh) | 2023-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106570018B (zh) | 序列化与反序列化的方法、装置、系统以及电子设备 | |
KR100614677B1 (ko) | 구조화된 문서를 압축/복원하기 위한 방법 | |
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN111124551B (zh) | 数据序列化、数据反序列化方法、装置和计算机设备 | |
KR20190064621A (ko) | 2진 데이터를 인코딩 및 디코딩하기 위한 방법 및 디바이스 | |
CN111680061A (zh) | 一种数据存取方法、装置、设备和存储介质 | |
CN110554878A (zh) | 数据转换方法、游戏数据的处理方法、装置和服务器 | |
US20100095099A1 (en) | System and method for storing numbers in first and second formats in a register file | |
CN115034176A (zh) | 文本处理方法、装置、电子设备和计算机可读存储介质 | |
CN116301666B (zh) | Java对象序列化方法及其反序列化方法及装置、终端 | |
WO2022072802A1 (en) | Systems and methods for lossless compression of tabular numeric data | |
CN113591434A (zh) | 一种ofd文档合并携带语义标引信息的方法 | |
WO2021013047A1 (zh) | 一种文件管理方法及装置 | |
US10997139B2 (en) | Search apparatus and search method | |
US7439887B2 (en) | Method and apparatus for GIF decompression using fixed-size codeword table | |
CN116467372A (zh) | 一种数据库自动转换方法、装置、电子设备及存储介质 | |
US6694393B1 (en) | Method and apparatus for compressing information for use in embedded systems | |
CN111552638B (zh) | 一种代码检测方法及装置 | |
US20190310833A1 (en) | Computing device and operating method thereof | |
CN117130722B (zh) | WebAssembly指令集的优化方法及装置 | |
US20190220502A1 (en) | Validation device, validation method, and computer-readable recording medium | |
CN109710310B (zh) | 用于嵌入式环境的数据处理方法、系统、终端及存储介质 | |
CN117349233A (zh) | 一种基于autosar的数据存储方法及相关产品 | |
EP1152347B1 (en) | Method to convert UNICODE text to mixed codepages | |
CN116126429A (zh) | 一种非数据类型对象的引用持久化及其恢复的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |