CN114153896A - 序列化与反序列化方法及其装置、设备和介质 - Google Patents
序列化与反序列化方法及其装置、设备和介质 Download PDFInfo
- Publication number
- CN114153896A CN114153896A CN202111395635.2A CN202111395635A CN114153896A CN 114153896 A CN114153896 A CN 114153896A CN 202111395635 A CN202111395635 A CN 202111395635A CN 114153896 A CN114153896 A CN 114153896A
- Authority
- CN
- China
- Prior art keywords
- field
- code
- serialization
- byte length
- recording
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种序列化与反序列化方法及其装置、设备和介质,通过对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码;或者通过获取包含字段码队列和总字节长度的记录码;依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。本申请可针对多种类型字段,以及由字段构成的实例、数组等多种数据结构进行统一编码或序列化,得到便于网络传输或缓存的字节流,且无需考虑或判定数据结构或目标类型,无需添加复杂的标识数据;此外,还可通过独立存储id字段实现对数据库快速索引记录码。
Description
技术领域
本发明涉及序列化技术领域,特别是涉及一种序列化与反序列化方法及其装置、设备和介质。
背景技术
通常对于待存储的数据,会有不同的类型,不同的字段,而如何做到统一的存储,序列化与反序列化是较好的手段。
序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。
但现有技术中需要先判定数据结构类型,然后再依据类型不同分别序列化或分别存储,在序列化过程中还会生成便于反序列化的标识数据或其他参考数据,并且在反序列化时,还需要指定对象的目标类型,若指定目标类型不准确,则无法反序列无法正常赋值,容易导致序列化结果出错。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种序列化与反序列化方法及其装置、设备和介质,以解决现有序列化与反序列化存在的至少一个问题。
为实现上述目的及其他相关目的,本申请提供一种序列化方法,所述方法包括:对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
于本申请的一实施例中,所述预设编码规则包括:每个所述字段码包括字段长度位和字段值位;其中,所述字段长度位的字节长度固定;所述字段值位的字节长度可变,并根据字段类型确定。
于本申请的一实施例中,所述拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码,其过程包括:将每个所述字段码按对应的字段顺序进行相应拼接,并在拼接队列的列首设置用于存储所述总字节长度的首字段码,以生成所述记录码。
为实现上述目的及其他相关目的,本申请提供一种反序列化方法,所述方法包括:获取包含字段码队列和总字节长度的记录码;依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
于本申请的一实施例中,所述获取包含字段码队列和总字节长度的记录码的方式包括:通过网络传输直接获取所述记录码。
为实现上述目的及其他相关目的,本申请提供一种序列化装置,所述序列化装置包括:序列化模块,用于对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;处理模块,用于拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
为实现上述目的及其他相关目的,本申请提供一种反序列化装置,所述反序列化装置包括:获取模块,用于获取包含字段码队列和总字节长度的记录码;反序列化模块,用于依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
为实现上述目的及其他相关目的,本申请提供一种计算机设备,所述设备包括:存储器、处理器、及通信器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如上所述的序列化方法;或者,所述处理器运行计算机指令实现如上所述的反序列化方法;所述通信器用于外部通信。
为实现上述目的及其他相关目的,本申请提供一种计算机可读存储介质,存储有计算机指令,所述计算机指令被运行时执行如上所述的序列化方法;或者,所述计算机指令被运行时执行如上所述的反序列化方法
综上所述,本申请提供的一种序列化与反序列化方法及其装置、设备和介质,通过对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码;或者通过获取包含字段码队列和总字节长度的记录码;依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
具有以下有益效果:
本申请可针对多种类型字段,以及由字段构成的实例、数组等多种数据结构进行统一编码或序列化,得到便于网络传输或缓存的字节流,且无需考虑或判定数据结构或目标类型,无需添加复杂的标识数据。
附图说明
图1显示为本申请于一实施例中序列化方法的流程示意图。
图2显示为本申请于一实施例中实际序列化后的字节流示意图。
图3显示为本申请于一实施例中反序列化方法的流程示意图。
图4显示为本申请于一实施例中序列化装置的模块示意图。
图5显示为本申请于一实施例中反序列化装置的模块示意图。
图6显示为本申请于一实施例中计算机设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,虽然图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,但其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
其中提到的第一、第二及第三等术语是为了说明多样的部分、成分、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成分、区域、层或段区别于其它部分、成分、区域、层或段。因此,以下叙述的第一部分、成分、区域、层或段在不超出本申请范围的范围内,可以言及到第二部分、成分、区域、层或段。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
为解决上述问题,本申请提出一种序列化与反序列化方法及其装置、设备和介质,旨在针对多种类型字段,以及由字段构成的实例、数组等多种数据结构进行统一编码或序列化,得到便于网络传输或缓存的字节流,且无需考虑或判定数据结构,无需添加复杂的标识数据。
如图1所示,展示为本申请于一实施例中序列化方法的流程示意图。如图所示,所述方法包括:
步骤S101:对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码。
于本申请中,本序列化方法主要面向对象的类,包括嵌套的类或继承的类,然后将其序列化成字节流Bytes,再通过网络进行传输或进行本地缓存。其中所述目标数据包括由字段构成的多种数据类型,如实例、数组等均可作为本申请目标数据以进行序列化。
需要说明的是,本申请所述目标数据不限制也不要求数据结构,并且在本申请的序列化方法与反序列化方法中均无需考虑或判定数据结构,也未应用到数据结构的类型信息或类型标识。例如,在本申请一或多个实际应用中,所述目标数据可以是栈、队列和串等线性结构,也可以是数组、广义表、树结构和图结构等非线性结构。
于本申请一实施例中,所述预设编码规则包括:每个所述字段码包括字段长度位和字段值位;其中,所述字段长度位的字节长度固定;所述字段值位的字节长度可变,并根据字段类型确定;其中,所述字段长度位用于存放字节长度;所述字段值位用于存放字段值。
简单来说,本申请针对目标数据主要对数据中最基础的字段进行编码或序列化。假设用户提供了一组面向对象的目标数据。其中用户定义了id信息以及其他字段信息。
首先,每个字段都会占据一定长度的字节。例如,所述字段长度位可设为2个字节长度;
其次,字段长度分两种情况,当字段类型为字符串时,该字段值位的字节长度是不固定的,具体依据字段值的字节长度确定;而字段类型为非字符串时,各字段值位的字节长度则是固定的。
例如,age=31。其中,age为字段名,age的字段类型对应的字节长度为4个字节整数,假设字段长度位为2。因此,按预设编码规则对age=31序列化或编码为:4/0/31/0/0/0;其中,前2位4/0为字段长度位,后4位31/0/0/0为字段值位。这里用2个字节位来存储age对应的字段类型所确定的4个字节长度的信息,在用4个字节位来存储字段值31。
再如,id=1。其中,id为字段名,id的字段类型对应的字节长度位20个字节大整数,假设字段长度位为2。因此,按字段码预设编码规则对id=1序列化或编码为:20/0/1/0/…0/0/0;其中,前2位20/0为字段长度位,后20位1/0/…0/0/0为字段值位。
举例来说,name="jim"。其中,name为字段名,name的字段类型为字符串,其对应的字节长度是可变的,其具体字节长度根据其字段值来确定,假设字段长度位为2。因此,按字段码预设编码规则对name="jim"序列化或编码为:3/0/j/i/m;其中,前2位3/0为字段长度位,后3位j/i/m为字段值位,这里字段值位的长度根据字段值"jim"而确定为3个字节。
再如,name="tomash"。按字段码预设编码规则对name="tomash"序列化或编码为:5/0/t/o/m/a/s/h;其中,前2位5/0为字段长度位,后5位t/o/m/a/s/h为字段值位。
步骤S102:拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
具体来说,当目标数据由多个字段构成,那么除了对每个字段进行序列化或编码外,还需要对整个数据进行一定的组合与处理,不仅便于对整个数据进行统计或打包,也便于客户端的反序列化。
所述步骤S102具体为,将每个所述字段码按对应的字段顺序进行相应拼接,并在拼接队列的列首设置用于存储所述总字节长度的首字段码,以生成所述记录码。
举例来说,假设目标数据为单个实例teacher{id=1,name="jimma",age=31},那么按照如上述举例的预设编码规则可得到每个字段的编码:id=1对应字段码为20/0/1/..../0;name="jimma"对应字段码为5/0/j/i/m/m/a;age=31对应编码为4/0/31/0/0/0。
进一步可知,上述三个字段的字段码的总字节长度位35,因此,将每个所述字段码按对应的字段顺序进行相应拼接以得到字段码队列,在拼接队列的列首设置用于存储所述总字节长度的首字段码,最后得到的所述记录码则为:35/0/20/0/1/..../0/5/0/j/i/m/m/a/4/0/31/0/0/0。
优选地,所述总字节长度与所述id字段对应的字段码之间还可加入校验值,该校验值可依据总字节长度数值进行相应设置。例如,校验值为X,则记录码为:35/0/X/20/0/1/..../0/5/0/j/i/m/m/a//4/0/31/0/0/0。
于一或多个实施例中,当所述目标数据包含多个实例时,先序列化每个实例,然后拼接各记录码。
举例来说,当所述目标数据存在多个实例时,如teacher1,teacher2,…,teachern;每个teacher包含{id,name,age};每个实例或数组对应得到的记录码分别为:对应teacher1的b1/b2/.../b_y1,对应teacher2的c1/c2/.../c_y2,对应teacher n的n1/n2/.../n_y3。其中,根据b1b2可知道teacher1的总字节长度为b1+b2*256,同理c1c2为teacher2的总字节长度为c1+c2*256,n1n2为teacher n的总字节长度为n1+n2*256。
然后拼接各记录码,则该teacher1,teacher2,…,teacher n目标数据对应的大记录码为:b1/b2/.../b_y1/c1/c2/.../c_y2/n1/n2/.../n_y3。
可参考图2,展示为实际序列化后的字节流的示意图。
需要说的是,基于上述思想,本申请的序列化方法能够对非常大的目标数据进行存储,例如再将多个实例或数组作为小单元,再进行如上方式的处理,最后可得到总的记录码。
于一些示例中,最后得到的字节流的记录码数据可存储在dat文件。dat文件位于ins目录下。应理解,所述dat文件并不是一种标准文件,其可以是数据文件(如杀毒软件病毒库,软件资料等)、wordPerfect合并数据文件、多媒体格式文件、MacroModel文件等。
本申请可以按照步骤S101-S102的流程全部序列化或编码为字节流的记录码可用于网路传输或存储。
如图3所示,展示为本申请于一实施例中反序列化方法的流程示意图。如图所示,所述方法包括:
步骤S301:获取包含字段码队列和总字节长度的记录码。
于本申请一实施例中,可通过网络传输直接获取所述记录码。其可对应图1所述序列化方法中对所述目标数据中的全部字段直接进行序列化所得到的记录码。
步骤S302:依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
由图1中所述的反序列方法可知,所述预设编码规则包括:每个所述字段码包括字段长度位和字段值位;其中,所述字段长度位的字节长度固定;所述字段值位的字节长度可变,并根据字段类型确定。所述记录码是通过将每个所述字段码按对应的字段顺序进行相应拼接,并在拼接队列的列首设置用于存储所述总字节长度的首字段码生成的。
于本申请中,由记录码得到最初的目标数据,主要依据预设编码规则序列化得到记录码所反映出的信息,如字段的类型,拼顺序,字段值长度等信息,找到各字段码的位置并对个各字段码赋值得到各字段,最终得到初始的目标数据。
举例来说,反序列化b1/b2/.../b_y1/c1/c2/.../c_y2/n1/n2/.../n_y3成tearcher的数组,首先依据编码数组的字段码预设编码规则可知,根据b1/b2可知道第一个实例的长度为:y1-2=b1+b2*256,然后根据b3/.../b_y1去解码或反序列出teacher1,进而就可知道teacher2的其实位置,同理,根据c1/c2知道c3/..../c_y2去解码或反序列出teacher2,以此类推,可得到teacher3的起始位置。
然后,假设b1/b2/.../b_y1的编码为35/0//20/0/1/..../0//5/0/j/i/m/m/a//4/0/31/0/0/0,首先依据编码数组的字段码预设编码规则可知,该记录码总共由35位字节。其中,根据第3位和第4位的20/0可知,该字节长度对应的是id字段长度,其后面20位字节上为对应id的字段值,其字段值为1,即反序列出id=1,以此类推,还可得出,字段name=jimma,以及字段age=31,最终可得到目标数据teacher1为{id=1,name="jimma",age=31}。
需要说明的是,本申请在反序列化的过程中,不需要去判定数据结构类型或设置类型指针,或者设置其他便于还原或赋值的标识。
综上所述,本申请可针对多种类型字段,以及由字段构成的实例、数组等多种数据结构进行统一编码或序列化,得到便于网络传输或缓存的字节流,且无需考虑或判定数据结构或目标类型,无需添加复杂的标识数据。
需说明的是,上述基于序列化方法或反序列方法可应用于控制器,如ARM(Advanced RISC Machines)控制器、FPGA(Field Programmable Gate Array)控制器、SoC(System on Chip)控制器、DSP(Digital Signal Processing)控制器、或者MCU(Micorcontroller Unit)控制器等;还可应用于包括存储器、存储控制器、一个或多个处理单元(CPU)、外设接口、RF电路、音频电路、扬声器、麦克风、输入/输出(I/O)子系统、显示屏、其他输出或控制设备,以及外部端口等组件的计算机设备,如台式电脑、笔记本电脑、平板电脑、智能手机、智能手环、智能手表、智能头盔、智能电视等;还可应用于服务器,所述服务器可以根据功能、负载等多种因素布置在一个或多个实体服务器上,也可以由分布的或集中的服务器集群构成。
如图4所示,展示为本申请于一实施例中序列化装置的模块示意图。如图所示,所述装置400包括:
序列化模块401,用于对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;
处理模块402,用于拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请所述序列化方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
还需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,各模块可以为单独设立的处理元件,也可以集成在上述系统的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述系统的存储器中,由上述装置的某一个处理元件调用并执行以上各模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital signal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
如图5所示,展示为本申请于一实施例中反序列化装置的模块示意图。如图所示,所述装置500包括:
获取模块501,用于获取包含字段码队列和总字节长度的记录码;
反序列化模块502,用于依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请所述反序列化方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
如图6所示,展示为本申请于一实施例中的计算机设备的结构示意图。如图所示,所述计算机设备600包括:存储器601、处理器602、及通信器603;所述存储器601用于存储计算机指令;所述处理器602运行计算机指令实现如图1所述的序列化方法,或者,所述处理器602运行计算机指令实现如图3所述的反序列化方法;所述通信器603用于外部通信。
在一些实施例中,所述计算机设备600中的所述存储器601的数量均可以是一或多个,所述处理器602的数量均可以是一或多个,所述通信器603的数量均可以是一或多个,而图6中均以一个为例。
于本申请一实施例中,所述计算机设备600中的处理器602会按照如图1所述的步骤或如图3所述的步骤,将一个或多个以应用程序的进程对应的指令加载到存储器601中,并由处理器602来运行存储在存储器601中的应用程序,从而实现如图1所述的序列化方法或如图3所述的反序列化方法。
所述存储器601可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。所述存储器601存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
所述处理器602可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
所述通信器603用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信连接。所述通信器603可包含一组或多组不同通信方式的模块,例如,与CAN总线通信连接的CAN通信模块。所述通信连接可以是一个或多个有线/无线通讯方式及其组合。通信方式包括:互联网、CAN、内联网、广域网(WAN)、局域网(LAN)、无线网络、数字用户线(DSL)网络、帧中继网络、异步传输模式(ATM)网络、虚拟专用网络(VPN)和/或任何其它合适的通信网络中的任何一个或多个。例如:WIFI、蓝牙、NFC、GPRS、GSM、及以太网中任意一种及多种组合。
在一些具体的应用中,所述计算机设备600的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清除说明起见,在图6中将各种总线都成为总线系统。
于本申请的一实施例中,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所述的序列化方法;或者,该程序被处理器执行时实现如图3所述的反序列化方法。
在任何可能的技术细节结合层面,本申请可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本申请的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
综上所述,本申请提供的一种序列化与反序列化方法及其装置、设备和介质,通过对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码;或者通过获取包含字段码队列和总字节长度的记录码;依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
本申请可针对多种类型字段,以及由字段构成的实例、数组等多种数据结构进行统一编码或序列化,得到便于网络传输或缓存的字节流,且无需考虑或判定数据结构或目标类型,无需添加复杂的标识数据;此外,还可通过独立存储id字段实现对数据库快速索引记录码。
本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中包含通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种序列化方法,其特征在于,所述方法包括:
对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
2.根据权利要求1所述的序列化方法,其特征在于,所述预设编码规则包括:
每个所述字段码包括字段长度位和字段值位;其中,所述字段长度位的字节长度固定;所述字段值位的字节长度可变,并根据字段类型确定。
3.根据权利要求1所述的序列化方法,其特征在于,所述拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码,其过程包括:
将每个所述字段码按对应的字段顺序进行相应拼接,并在拼接队列的列首设置用于存储所述总字节长度的首字段码,以生成所述记录码。
4.一种反序列化方法,其特征在于,所述方法包括:
获取包含字段码队列和总字节长度的记录码;
依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
5.根据权利要求4所述的序列化方法,其特征在于,所述预设编码规则包括:
每个所述字段码包括字段长度位和字段值位;其中,所述字段长度位的字节长度固定;所述字段值位的字节长度可变,并根据字段类型确定。
6.根据权利要求4所述的序列化方法,其特征在于,所述记录码是通过将每个所述字段码按对应的字段顺序进行相应拼接,并在拼接队列的列首设置用于存储所述总字节长度的首字段码生成的。
7.一种序列化装置,其特征在于,所述序列化装置包括:
序列化模块,用于对目标数据中的各字段按预设编码规则进行序列化,以得到对应于各字段的字段码;
处理模块,用于拼接各所述字段码并计算总字节长度,以得到用于传输或存储的记录码。
8.一种反序列化装置,其特征在于,所述反序列化装置包括:
获取模块,用于获取包含字段码队列和总字节长度的记录码;
反序列化模块,用于依据预设编码规则对所述记录码进行反序列化,找到各字段码的位置并对个各字段码赋值得到各字段,据以得到目标数据。
9.一种计算机设备,其特征在于,所述设备包括:存储器、处理器、及通信器;所述存储器用于存储计算机指令;所述处理器运行计算机指令实现如权利要求1至3中任意一项所述的序列化方法;或者,所述处理器运行计算机指令实现如权利要求4至6中任意一项所述的反序列化方法;所述通信器用于外部通信。
10.一种计算机可读存储介质,其特征在于,存储有计算机指令,所述计算机指令被运行时执行如权利要求1至3中任意一项所述的序列化方法;或者,所述计算机指令被运行时执行如权利要求4至6中任意一项所述的反序列化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111395635.2A CN114153896A (zh) | 2021-11-23 | 2021-11-23 | 序列化与反序列化方法及其装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111395635.2A CN114153896A (zh) | 2021-11-23 | 2021-11-23 | 序列化与反序列化方法及其装置、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114153896A true CN114153896A (zh) | 2022-03-08 |
Family
ID=80457159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111395635.2A Pending CN114153896A (zh) | 2021-11-23 | 2021-11-23 | 序列化与反序列化方法及其装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153896A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115001628A (zh) * | 2022-06-07 | 2022-09-02 | 北京百度网讯科技有限公司 | 数据编码的方法及装置、数据解码的方法及装置和数据结构 |
CN117271456A (zh) * | 2023-11-22 | 2023-12-22 | 阿里云计算有限公司 | 数据序列化方法、反序列化方法、电子设备及存储介质 |
CN117498987A (zh) * | 2024-01-02 | 2024-02-02 | 南京元阵视界科技有限公司 | 一种应用于大规模网络数据传输的方法 |
-
2021
- 2021-11-23 CN CN202111395635.2A patent/CN114153896A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115001628A (zh) * | 2022-06-07 | 2022-09-02 | 北京百度网讯科技有限公司 | 数据编码的方法及装置、数据解码的方法及装置和数据结构 |
CN115001628B (zh) * | 2022-06-07 | 2024-02-27 | 北京百度网讯科技有限公司 | 数据编码的方法及装置、数据解码的方法及装置和数据结构 |
CN117271456A (zh) * | 2023-11-22 | 2023-12-22 | 阿里云计算有限公司 | 数据序列化方法、反序列化方法、电子设备及存储介质 |
CN117271456B (zh) * | 2023-11-22 | 2024-03-26 | 阿里云计算有限公司 | 数据序列化方法、反序列化方法、电子设备及存储介质 |
CN117498987A (zh) * | 2024-01-02 | 2024-02-02 | 南京元阵视界科技有限公司 | 一种应用于大规模网络数据传输的方法 |
CN117498987B (zh) * | 2024-01-02 | 2024-03-15 | 南京元阵视界科技有限公司 | 一种应用于大规模网络数据传输的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114153896A (zh) | 序列化与反序列化方法及其装置、设备和介质 | |
WO1997048033A2 (en) | Data representation for mixed-language program development | |
CN106909597B (zh) | 一种数据库迁移方法和装置 | |
CN111522796A (zh) | 系统间的数据迁移方法、装置、计算机设备及介质 | |
CN110769002A (zh) | 基于LabVIEW的报文解析方法、系统、电子设备和介质 | |
CN109960212B (zh) | 任务发送方法和装置 | |
US20200142669A1 (en) | Controlling storage accesses for merge operations | |
TW201820119A (zh) | 具有可選擇比較屬性之浮點指令 | |
JP7374546B2 (ja) | ベクトル文字列検索命令 | |
CN109033456B (zh) | 一种条件查询方法、装置、电子设备和存储介质 | |
US10565202B2 (en) | Data write/import performance in a database through distributed memory | |
CA3203549A1 (en) | Unified verification method, device, equipment and storage medium | |
US11941078B2 (en) | Set operations using multi-core processing unit | |
AU2021268828B2 (en) | Secure data replication in distributed data storage environments | |
US11630663B2 (en) | Compressing multi-attribute vector into a single eigenvalue for ranking subject matter experts | |
CN115168358A (zh) | 数据库访问方法、装置、电子设备及存储介质 | |
US9542246B2 (en) | Sharing a partitioned data set across parallel applications | |
KR20050076762A (ko) | 코드로의 객체의 결정적 규칙 기반 디스패치 | |
CN115698981A (zh) | 基于nlp模型增强的语料库的定向部分重新丰富 | |
KR20210012886A (ko) | 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체 | |
US11636111B1 (en) | Extraction of relationship graphs from relational databases | |
CN117075912B (zh) | 用于程序语言转换的方法、编译方法及相关设备 | |
CN113342413B (zh) | 用于处理组件的方法、装置、设备、介质和产品 | |
US20220036226A1 (en) | Translation of a quantum design across multiple applications | |
Park et al. | Adaptable I/O system based I/O reduction for improving the performance of HDFS |
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 |