CN111680051B - 一种数据序列化和反序列化方法、设备及存储介质 - Google Patents

一种数据序列化和反序列化方法、设备及存储介质 Download PDF

Info

Publication number
CN111680051B
CN111680051B CN202010477416.8A CN202010477416A CN111680051B CN 111680051 B CN111680051 B CN 111680051B CN 202010477416 A CN202010477416 A CN 202010477416A CN 111680051 B CN111680051 B CN 111680051B
Authority
CN
China
Prior art keywords
field
data
static
dynamic data
byte stream
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.)
Active
Application number
CN202010477416.8A
Other languages
English (en)
Other versions
CN111680051A (zh
Inventor
李伟
邱炜伟
蔡亮
匡立中
张帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202010477416.8A priority Critical patent/CN111680051B/zh
Publication of CN111680051A publication Critical patent/CN111680051A/zh
Application granted granted Critical
Publication of CN111680051B publication Critical patent/CN111680051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Abstract

本发明公开了一种数据序列化和反序列化方法、设备及存储介质,属于数据传输技术领域。包括:静态字节流的第一字段设为0xff;将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;第三字段的字节数作为静态字节流的第二字段;其中,静态字节流依次包括第一字段、第二字段和第三字段。针对数据网络传输时会对所有数据进行反序列化的技术问题,可以对指定数据进行序列化及反序列化。

Description

一种数据序列化和反序列化方法、设备及存储介质
技术领域
本发明涉及数据传输技术领域,尤其涉及一种数据序列化和反序列化方法、设备及存储介质。
背景技术
在区块链网络中会有大量的数据参与网络传输,需要频繁对数据进行序列化和反序列化操作,目前常用的序列化方案是将数据转成json格式,但是这种方式序列化速度慢,并且序列化后的网络传输数据所占空间明显增大,从而导致节点之间接收数据慢,处理数据慢的情况。近几年也有使用protobuf的序列化方案,相对于json的方案在序列化结果和序列化速度上有较大的提升,但是在区块链网络中的数据相对于一般的网络数据更为庞大,并且传输数据中含有大量的无需处理数据,不论是json或是protobuf都会对所有数据进行反序列化,影响网络数据传输速度。
发明内容
1.发明要解决的技术问题
针对数据网络传输时会对所有数据进行反序列化的技术问题,本发明提供了一种数据序列化和反序列化方法、设备及存储介质。可以对指定数据进行序列化及反序列化。
2.技术方案
为解决上述问题,本发明提供的技术方案为:
一种静态数据序列化方法,包括:静态字节流的第一字段设为0xff;将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;第三字段的字节数作为静态字节流的第二字段;其中,静态字节流依次包括第一字段、第二字段和第三字段。如图2所示,静态数据序列化成静态字节流后,依次包括space、length和data,其中,space为第一字段设为0xff;length为第二字段代表表示静态数据的字节数,data为第三字段,表示静态数据的字节形式。
可选的,所述静态数据的数据类型为数值或布尔。
一种动态数据序列化方法,包括:获取动态数据第一字段,并判断动态数据第一字段的数据类型;若为动态数据,则进一步判断动态数据是否为空;若动态数据为空,则更新字段一的值为0;若动态数据不为空,则更新动态数据第一字段字节流;若为静态数据,则根据以上所述的一种静态数据序列化方法,更新动态数据第一字段字节流;更新字段一的值;判断动态数据是否有下一字段,是,则重复上述步骤;否,则结束;其中,动态数据字节流依次包括字段一、字段二、字段三和字段四;所述字段一、字段二、字段三和字段四的占用位数为预设固定的;更新动态数据第一字段字节流的方法为:动态数据的字段数作为动态数据字节流的字段三的值;在所述字段三之前预设字段一和字段二的值为0;将动态数据直接转化成动态数据的字节形式,作为动态字节流的字段四的值;字段四的字节数作为动态数据字节流的字段二的值;字段四相对于字段三的偏移量作为动态数据字节流的字段一的值。
可选的,所述动态数据的数据类型为string、array、map和struct中的一种。
一种数据序列化方法,包括:判断数据类型,若为静态数据,则执行以上所述的一种静态数据序列化方法;若为动态数据,则执行以上任一项所述的一种动态数据序列化方法。
一种静态数据反序列化方法,包括:根据第二字段值获取第三字段值,根据以上所述的一种静态数据序列化方法;获得第三字段,得到静态数据。
一种动态数据反序列化方法,根据以上任一项所述的一种动态数据序列化方法,包括:S501、定位到字段三、字段二、字段三;S502、根据字段三的值获取字段四的位置,根据字段二的值获取字段四的值,得到动态数据第i字段内容;S503、判断动态数据是否存在下一字段;若否,则结束;若是,则S504、重复步骤S501-S503;其中,i为整数。根据字段四所占长度是否与字段二的值一致,或根据字段四的值是否超过字段三限定的数量;判断动态数据是否存在下一字段。传输和接收数据的双方事先按照上述序列化及反序列化方法约定好传输的数据结构,在接收和传输数据时,按照以上所述的序列化及反序列化方法,分别进行序列化及反序列化,可对指定数据序列化及反序列化,节省数据传输和读取的时间。
一种数据反序列化方法,包括:判断字段一的值是否为0xff;若是,则执行以上所述的一种静态数据反序列化方法;若否,则执行以上所述的一种动态数据反序列化方法。
此外,本发明提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
相应地,本发明提供了一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。
3.有益效果
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
在反序列化的时候能够直接定位到所需要的数据,仅仅对需要的部分进行反序列化的方案。通信双方会以一种唯一且被全网认可的数据结构进行通信,比如区块链中的交易数据,假设其数据结构中具有locktime字段,目的是判断次交易是否需要马上执行,使用本发明的序列化和反序列化规则,接收方可以在得到全量二进制数据的时候,不用把所有数据都反序列化,而是能够直接定位到locktime所对应的二进制内容,直接进行反序列化,判断之后再决定是否反序列化交易数据。序列化速度快,反序列化速度更快,能够快速定位到所需数据,直接进行反序列化,不对无需要的数据进行多余的处理。
附图说明
图1为本发明的一种设备结构示意图。
图2为本发明一实施例提供的静态数据和动态数据序列化对应的字节流的数据结构示意图。
图3为本发明一实施例提供的一种静态数据序列化方法流程图。
图4为本发明一实施例提供的一种动态数据序列化方法流程图。
图5为本发明一实施例提供的一种更新动态数据第一字段字节流的方法流程图。
图6为本发明一实施例提供的一种动态数据反序列化方法流程图。
具体实施方式
为进一步了解本发明的内容,结合附图及实施例对本发明作详细描述。
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。本发明中所述的第一、第二等词语,是为了描述本发明的技术方案方便而设置,并没有特定的限定作用,均为泛指,对本发明的技术方案不构成限定作用。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
实施例1
一种静态数据序列化方法,如图3所示,包括:
S101、静态字节流的第一字段设为0xff;
S102、将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;
S103、第三字段的字节数作为静态字节流的第二字段;
其中,静态字节流依次包括第一字段、第二字段和第三字段。如图2所示,静态数据序列化成静态字节流后,依次包括space、length和data,其中,space为第一字段设为0xff;length为第二字段代表表示静态数据的字节数,data为第三字段,表示静态数据的字节形式。如图3所示,其中初始字节为图2所示的space,即第一字段;生成1字节值为0的初始字节,表示静态字节流的第一字段设为0xff。图3所示包含了静态数据序列化的更新方法,即静态数据更新后,按照静态字节流的形式在其后依次追加第一字段、第二字段和第三字段;即追加图2所述的space、length和data。
所述静态数据的数据类型为数值或布尔。其中,数值类型包括int、float等,布尔对应bool。
此外,本实施例提供了一种动态数据序列化方法,如图4所示,包括:
S201、获取动态数据第一字段,并判断动态数据第一字段的数据类型是否为动态数据;
S202、若为动态数据,则进一步判断动态数据是否为空;
S203、若动态数据为空,则更新字段一的值为0;
S204、若动态数据不为空,则更新动态数据第一字段字节流;
S205、若为静态数据,则根据以上所述的一种静态数据序列化方法,更新动态数据第一字段字节流;
S206、判断动态数据是否有下一字段,若是,则重复上述步骤S201-S205;否若,则结束;
其中,动态数据字节流依次包括字段一、字段二、字段三和字段四;所述字段一、字段二、字段三和字段四的占用位数为预设固定的;如图5所示,更新动态数据第一字段字节流的方法包括:
S301、动态数据的字段数作为动态数据字节流的字段三的值;
S302、在所述字段三之前预设字段一和字段二的值为0;
S303、将动态数据直接转化成动态数据的字节形式,作为动态字节流的字段四的值;字段四的字节数作为动态数据字节流的字段二的值;字段四相对于字段三的偏移量作为动态数据字节流的字段一的值。
如图2所示,字段一为slot,字段二为length,字段三为center,字段四为data;如图3表示动态数据序列化的过程方法。如图2和3所示,slot的值表示字段的值序列化成动态hyperbuf(即对应为动态字节流)后的center或space相对于外层center的偏移量。
所述动态数据的数据类型为string、array、map和struct中的一种。
作为一可选实施方案,本实施例还提出了一种数据序列化方法,包括:S401、判断数据类型,若为静态数据,则执行S101-S103对应的以上所述的一种静态数据序列化方法;若为动态数据,则执行S201-S206对应的以上任一项所述的一种动态数据序列化方法。
作为一可选实施方案,本实施例提出了一种静态数据反序列化方法,包括:
根据第二字段值获取第三字段值,根据S101-S103对应的一种静态数据序列化方法;获得第三字段,得到静态数据。
作为一可选实施方案,本实施例提出了一种动态数据反序列化方法,根据S201-S206对应的所述的一种动态数据序列化方法,如图6所示,包括:
S501、定位到字段三、字段二、字段三;
S502、根据字段三的值获取字段四的位置,根据字段二的值获取字段四的值,得到动态数据第i字段内容;
S503、判断动态数据是否存在下一字段;若否,则结束;
若是,则i=i+1,重复步骤S501-S503;其中,i为整数。
根据字段四所占长度是否与字段二的值一致,或根据字段四的值是否超过字段三限定的数量;判断动态数据是否存在下一字段。根据字段一至三所占位数,分别可以定位并获取到字段一(slot)、字段二(length)、字段三(center)的值;判断slot的值是否为0,若是,则动态数据为空;判断是否存在下一个slot,若是,则S504、结合字段二的值获取字段四,重复S501-S503。
传输和接收数据的双方事先按照上述序列化及反序列化方法约定好传输的数据结构,在接收和传输数据时,按照以上所述的序列化及反序列化方法,分别进行序列化及反序列化,可对指定数据序列化及反序列化,节省数据传输和读取的时间。
作为一可选实施方案,本实施例提出了一种数据反序列化方法,包括:
判断字段一的值是否为0xff;若是,则执行以上所述的一种静态数据反序列化方法;若否,则执行以上所述的一种动态数据反序列化方法。
本实施例提供的一种高效的序列化方案,并且在反序列化的时候能够直接定位到所需要的数据,仅仅对需要的部分进行反序列化的方案。
第一方面,本实施例提供一种区块链网络数据序列化和反序列化方法,包括:
收发双方确定传输的数据结构,slot的所占字节大小。
进一步,发送方将待发送数据序列化成hyperbuf后发送至接收方。
进一步,接收方收到数据后,对hyperbuf进行反序列化处理,还原发送方的数据。
第二方面,基于本实施例还提供一种更高效的反序列化方式。
进一步,区块链网络接收方在某些情况下,只需验证部分数据,可以根据协定好的数据结构,直接定位到所需的部分数据进行序列化。
第三方面,本发明支持修改length所占字节的大小来支持超大数据的序列化和反序列化。
全部反序列化的方案:(二进制)[交易数据,locktime]--->(二进制)[交易数据,locktime]+(明文)[交易数据,locktime]判断locktime,符合规则再处理进一步处理交易数据。
部分反序列化:(二进制)[交易数据,locktime]--->(明文)[locktime]+(二进制)[交易数据,locktime]判断locktime,符合规则再反序列化交易数据--->(明文)[交易数据]进行后续处理。
收发双方定义好数据的结构,slot所占字节的大小,这里以4字节为例且space定义为0xff。序列化时,根据协议好的标准对数据执行序列化操作。
第一步,生成1字节值为0的初始字节,在序列化过程中会在其后追加序列化的内容。
第二步,解析出数据的所属的类型,按规则对数据进行序列化:
若是int(整型数字)、float(浮点数)、bool(布尔)等类型,视为静态类型,将会序列化为静态hyperbuf。具体地,将数据直接转化成字节形式,并且在头部添加0xff以及length长5字节,从而构成静态的hyperbuf。其中0xff+5字节,且5字节的值均为0,是空的hyperbuf,是特殊的静态hyperbuf。
若是string(字符串)、array(数组)、map(字典)、struct(自定义结构体)等类型,视为动态类型,将会序列化成为动态类型。其中,动态类型是可以为null的,对应的slot值为0,且无data。
1)若是array数组,会对数组进行降维处理,直至成为一维数组,处理方式为,最高纬数组下的每个元素视为新类型,则构成了一维数组。具体地,一维数组序列化,先得出数组中的元素个数,确定center的值,并且在center之前追加[(center的值+1)*在序列化前协议好的slot所占字节数4+1]的字节数,值均为0,后续更新。
2)若是struct自定义结构体,具体地,先得出结构体中字段的个数,确定center的值,并且在center之前追加[(center的值+1)*在序列化前协议好的slot所占字节数4+1]的字节数,值均为0,后续更新。
3)若是map字典,具体地,先得出字典中的键值对个数,确定center的值,并且在center之前追加[(center的值+1)*在序列化前协议好的slot所占字节数4+1的字节数,值均为0,后续更新。
4)若是string字符串,具体地,确定center的值为1,并且在center之前追加[(1+1)*在序列化前协议好的slot所占字节数4+1]的字节数,值均为0,后续更新。
5)根据1)序列化获得data进一步地,判断数组是否为空;
若为空,则data为空的hyperbuf,更新1)中的length部分,更新slotset中对应的slot的值,值为空的hyperbuf的space相对于1)中center的字节为单位的相对偏移量。
若不为空,对数组中的元素依次进行第二步处理,得到静态或动态的hyperbuf,并且更新1)中的length部分,更新slotset中对应的slot的值,值hyperbuf的space或是center相对于1)中center的字节为单位的相对偏移量。
6)根据2)序列化获得data进一步地,判断结构体是否为空;
若为空,则data为空的hyperbuf,更新2)中的length部分,更新slotset中对应的slot的值,值为空的hyperbuf的space相对于1)中center的字节为单位的相对偏移量。
若不为空,对struct的字段依次第二步进行处理,得到静态或动态的hyperbuf,并且更新2)中的length部分,更新slotset中对应的slot的值,值为hyperbuf的space或是center相对于2)中center的字节为单位的相对偏移量。
7)根据3)序列化获得data进一步地,判断字典是否为空;
若为空,则data为空的hyperbuf,更新3)中的length部分,更新slotset中对应的slot的值,值为空的hyperbuf的space相对于3)中center的字节为单位的相对偏移量。
若不为空,对字典中的所有的键值对均视为2个字段的struct依次根据6)进行处理,得到静态或动态的hyperbuf,并且更新3)中的length部分,更新slotset中对应的slot的值,值为hyperbuf的space或是center相对于3)中center的字节为单位的相对偏移量。
8)根据4)序列化获得data进一步地,判断字典是否为空;
若为空,则data为空的hyperbuf,更新4)中的length部分,更新slotset中对应的slot的值,值为空的hyperbuf的space相对于4)中center的字节为单位的相对偏移量。
若不为空,slot值为1,length值为string字节形式的长度,0xff+length+string值的字节形式,得到动态的hyperbuf,并且更新4)中的length部分,更新slotset中对应的slot的值,值为hyperbuf的center相对于4)中center的字节为单位的相对偏移量。
第三步,根据第二步得到的动态hyperbuf的center或静态hyperbuf的space相对初始字节的字节相对偏移量,并且把初始字节的值更新为偏移量。
第四步,将第三步得到的hyperbuf发送给接收方。相对于json的序列化方案,序列化后的数据体积会更小。
在本实施例中,本发明提供一种区块链网络数据反序列化的方法,包括:
第一步,接收方解析出初始字节指向的字节。
第二步,获取指向的字节。
若指向space,根据下一个slot的值和length定位出完整的data,协议好的数据结构类型,反序列化出相应的数据。
若指向center,依次获取slot值,判断slot的值;
若值为0,表明该字段为null;
若不为0,获取slot对应data部分所指向的字节,重复第二步。
在hyperbuf的结构下,可以快速定位到所需的数据部分:
接收方如果想要获取miner的姓名,可以在反序列化时按照Center、Slot CEnter、SLot、CENter、SLOt的顺序获取到miner姓名字段的字节形式,跳过其他无效数据,直接对目标数据进行反序列化,大大加快了效率。协议双方还能重新定义slot、length所占用的空间大小,能够对超大数据的序列化反序列化有所扩展。
实施例2
本实施例提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。
此外,本实施例提供了一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1所述的方法。
图1为本发明一实施例提供的一种设备的结构示意图。
如图1所示,作为另一方面,本申请还提供了一种设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (7)

1.一种动态数据序列化方法,其特征在于,包括:
S201、获取动态数据第i字段,并判断动态数据第i字段的数据类型是否为动态数据;
S202、若为动态数据,则进一步判断动态数据是否为空;
S203、若动态数据为空,则更新字段一的值为0;
S204、若动态数据不为空,则更新动态数据第i字段字节流;
S205、若为静态数据,则:
静态字节流的第一字段设为0xff;
将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;
第三字段的字节数作为静态字节流的第二字段;
其中,静态字节流依次包括第一字段、第二字段和第三字段,更新动态数据第i字段字节流;
S206、判断动态数据是否有下一字段,若是,则重复上述步骤S201- S205;否若,则结束;
其中,动态数据字节流依次包括字段一、字段二、字段三和字段四;所述字段一、字段二、字段三和字段四的占用位数为预设固定的;更新动态数据第i字段字节流的方法为:
动态数据的字段数作为动态数据字节流的字段三的值;
在所述字段三之前预设字段一和字段二的值为0;
将动态数据直接转化成动态数据的字节形式,作为动态字节流的字段四的值;
字段四的字节数作为动态数据字节流的字段二的值;
字段四相对于字段三的偏移量作为动态数据字节流的字段一的值。
2.根据权利要求1所述的方法,其特征在于,所述动态数据的数据类型为string、array、map和struct中的一种。
3.一种数据序列化方法,其特征在于,包括:
判断数据类型,若为静态数据,则:
静态字节流的第一字段设为0xff;
将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;
第三字段的字节数作为静态字节流的第二字段;
其中,静态字节流依次包括第一字段、第二字段和第三字段;若为动态数据,则执行权利要求1-2任一项所述的一种动态数据序列化方法。
4.一种动态数据反序列化方法,其特征在于,根据权利要求1-2任一项所述的一种动态数据序列化方法,包括:
S501、定位到字段一、字段二、字段三;
S502、根据字段三的值获取字段四的位置,根据字段二的值获取字段四的值,得到动态数据第i字段内容;
S503、判断动态数据是否存在下一字段;若否,则结束;
若是,则i=i+1,重复步骤S501-S503;其中,i为整数。
5.一种数据反序列化方法,其特征在于,包括:
判断字段一的值是否为0xff;若是,则执行:根据第二字段值获取第三字段值,静态字节流的第一字段设为0xff;
将静态数据直接转化成静态数据的字节形式,作为静态字节流的第三字段;
第三字段的字节数作为静态字节流的第二字段;
其中,静态字节流依次包括第一字段、第二字段和第三字段;获得第三字段,得到静态数据;若否,则执行权利要求4所述的一种动态数据反序列化方法。
6.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-5中任一项所述的方法。
7.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
CN202010477416.8A 2020-05-29 2020-05-29 一种数据序列化和反序列化方法、设备及存储介质 Active CN111680051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010477416.8A CN111680051B (zh) 2020-05-29 2020-05-29 一种数据序列化和反序列化方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010477416.8A CN111680051B (zh) 2020-05-29 2020-05-29 一种数据序列化和反序列化方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111680051A CN111680051A (zh) 2020-09-18
CN111680051B true CN111680051B (zh) 2023-10-20

Family

ID=72434797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010477416.8A Active CN111680051B (zh) 2020-05-29 2020-05-29 一种数据序列化和反序列化方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111680051B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001018692A2 (en) * 1999-09-10 2001-03-15 Everypath, Inc. Method for customizing and rendering of selected data fields
CN105405047A (zh) * 2015-12-30 2016-03-16 广东科海信息科技股份有限公司 一种基于社区o2o的数据分析系统及其实现方法
CN109117209A (zh) * 2018-07-23 2019-01-01 广州多益网络股份有限公司 序列化和反序列化方法及装置
CN109298866A (zh) * 2018-09-26 2019-02-01 杭州米加科技股份有限公司 基于c语言的tlv格式协议快速解析方法
CN109818930A (zh) * 2018-12-27 2019-05-28 南京信息职业技术学院 一种基于tcp协议的通讯文本数据传输方法
CN110830164A (zh) * 2019-10-22 2020-02-21 武汉理工光科股份有限公司 一种用于物联网设备通信的数据序列化方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198482A1 (en) * 2006-02-21 2007-08-23 International Business Machines Corporation Dynamic data formatting during transmittal of generalized byte strings, such as XML or large objects, across a network
US10942943B2 (en) * 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US11222025B2 (en) * 2018-03-27 2022-01-11 Substrate Inc. De-serialized datastore transaction system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001018692A2 (en) * 1999-09-10 2001-03-15 Everypath, Inc. Method for customizing and rendering of selected data fields
CN105405047A (zh) * 2015-12-30 2016-03-16 广东科海信息科技股份有限公司 一种基于社区o2o的数据分析系统及其实现方法
CN109117209A (zh) * 2018-07-23 2019-01-01 广州多益网络股份有限公司 序列化和反序列化方法及装置
CN109298866A (zh) * 2018-09-26 2019-02-01 杭州米加科技股份有限公司 基于c语言的tlv格式协议快速解析方法
CN109818930A (zh) * 2018-12-27 2019-05-28 南京信息职业技术学院 一种基于tcp协议的通讯文本数据传输方法
CN110830164A (zh) * 2019-10-22 2020-02-21 武汉理工光科股份有限公司 一种用于物联网设备通信的数据序列化方法

Also Published As

Publication number Publication date
CN111680051A (zh) 2020-09-18

Similar Documents

Publication Publication Date Title
US7616137B2 (en) Method and apparatus for compression and decompression of an executable code with a RISC processor
US20090284400A1 (en) Method and System for Reducing Required Storage During Decompression of a Compressed File
US4626824A (en) Apparatus and algorithm for compressing and decompressing data
CN109710620B (zh) 数据存储方法、数据读取方法、设备和存储介质
CN110943911A (zh) 基于protobuf的物联网高效数据传输方法
CN112052010B (zh) 一种icd字节序自动转换方法
US7605721B2 (en) Adaptive entropy coding compression output formats
CN111491169B (zh) 一种数字图像压缩方法、装置、设备、介质
CN113613289B (zh) 一种蓝牙数据传输方法、系统及通信设备
WO2008156640A2 (en) A method and apparatus for encoding data
CN111352913A (zh) 一种文件的压缩方法、装置、存储介质及终端设备
CN111680051B (zh) 一种数据序列化和反序列化方法、设备及存储介质
CN113220651A (zh) 运行数据压缩方法、装置、终端设备以及存储介质
CN116489236B (zh) 脑电信号实时无损压缩方法、装置、电子设备及存储介质
CN116470919A (zh) 数据压缩方法、装置、电子设备及存储介质
US20230024148A1 (en) Data processing methods and systems, and electronic devices
CN113222807B (zh) 数据存储器、数据存储、读取方法、芯片及计算机设备
CN114218175A (zh) 一种资源跨平台共享方法、装置、终端设备及存储介质
CN116016296B (zh) 一种基于json的二进制数据处理方法、系统及设备
CN116011551B (zh) 优化数据加载的图采样训练方法、系统、设备及存储介质
CN113254262B (zh) 一种数据库容灾方法、装置和电子设备
CN115696396A (zh) 数据通信的处理方法及装置、存储介质、终端
CN115001628B (zh) 数据编码的方法及装置、数据解码的方法及装置和数据结构
CN114490465B (zh) 用于直接存储器访问的数据传输方法和装置
CN114500647B (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