CN102750268A - 一种对象序列化方法、对象反序列化方法、装置及系统 - Google Patents
一种对象序列化方法、对象反序列化方法、装置及系统 Download PDFInfo
- Publication number
- CN102750268A CN102750268A CN2012102028534A CN201210202853A CN102750268A CN 102750268 A CN102750268 A CN 102750268A CN 2012102028534 A CN2012102028534 A CN 2012102028534A CN 201210202853 A CN201210202853 A CN 201210202853A CN 102750268 A CN102750268 A CN 102750268A
- Authority
- CN
- China
- Prior art keywords
- field
- binary sequence
- value
- sequence
- binary
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种对象序列化方法、对象反序列方法、装置及系统,预先为对象中各个字段设置类型值,所述对象序列化方法包括对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种对象序列化方法、对象反序列化方法、装置及系统。
背景技术
序列化技术广泛应用于安全云服务平台,主要实现将对象串行化为二进制字节流,既而将该字节流保存至存储设备(如磁盘)中或将该字节流传输。该对象可以为数据对象、类对象等待序列化对象。
目前,主流的序列化技术包括可扩展标记语言XML(ExtensibleMarkup Language)技术和JSON(JavaScript Object Notation)技术等,其序列化过程为:将对象的各个属性的名称及其属性值分别进行整体串行化,再将串行化后的各个字符串进行连接得到二进制字节流。而反序列化过程与上述序列化过程相反。
上述序列化过程中由于其对对象的各个属性的消息结构复杂,导致其串行化时间较长,使得串行化效率较低,同时上述序列化过程对对象各个属性值进行整体串行化后得到的字节流数据量较大,占用较大的存储空间或传输带宽,严重影响数据存储或传输效率。
发明内容
本申请所要解决的技术问题是提供一种对象序列化方法、对象反序列化方法、装置及系统,用以解决现有序列化技术由于其序列化数据对象的各个属性的消息结构复杂,导致其串行化时间较长,使得串行化效率较低的技术问题,以及用以解决现有序列化技术对数据对象各个属性值进行整体串行化后得到的字节流数据量较大,占用较大的存储空间或传输带宽,严重影响数据存储或传输效率的技术问题。
为解决上述技术问题,本发明提供了一种对象序列化方法,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述方法包括:
对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;
合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;
对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;
连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;
对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
上述对象序列化方法,优选地,所述合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列具体为:
对所述各个字段的标签值的二进制序列进行左移三位;
对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
上述对象序列化方法,优选地,所述对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列具体为:
依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
上述对象序列化方法,优选地,所述对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列具体为:
将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
本申请还提供了一种对象反序列化方法,包括:
获取对象的二进制序列中所述各个字段的键值的二进制序列;
对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列;
对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型;
依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
上述对象反序列化方法,优选地,所述依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型具体为:
依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围;
采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
上述对象反序列化方法,优选地,所述依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列具体为:
依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度;
依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列。
本申请还提供了一种对象序列化装置,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述装置包括:
第一转换单元,用于对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;
第一连接单元,用于合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;
第二转换单元,用于对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;
第二连接单元,用于连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;
第三连接单元,用于对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
上述对象序列化装置,优选地,所述第一连接单元包括序列移动子单元和序列相加子单元,其中:
所述序列移动子单元,用于对所述各个字段的标签值的二进制序列进行左移三位;
所述序列相加子单元,用于对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
上述对象序列化装置,优选地,所述第二转换单元包括算法确定子单元和序列转换子单元,其中:
所述算法确定子单元,用于依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
所述序列转换子单元,用于对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
上述对象序列化装置,优选地:
所述第三连接单元,具体用于将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
本申请还提供了一种对象反序列化装置,所述装置包括:
序列获取单元,用于获取对象的二进制序列中所述各个字段的键值的二进制序列,并对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列;
第一反转换单元,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值,并依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型;
第二反转换单元,用于依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
上述对象反序列化装置,优选地,所述第一反转换单元包括:
第一反转换子单元,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
字段类型确定子单元,用于依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围,并采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
上述对象反序列化装置,优选地,所述第二反转换单元包括:
序列获取子单元,用于依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度,并依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列;
第二反转换子单元,用于将所述各个字段的值信息的二进制序列进行转换,得到对象中所述各个字段的值信息。
本申请还提供了一种序列化和反序列化系统,所述系统包括对象序列化装置和对象反序列化装置。
由上述方案可知,本申请提供的一种对象序列化方法、对象反序列化方法、装置及系统,通过将包含有至少一个字段的对象统一定义为待序列化的消息结构,对对象的各个字段的标签值、类型值及字段名称的值信息分别进行二进制转换及连接,得到对象的二进制序列,完成对象的序列化,并采用同样的原理实现对象的二进制序列的反序列化,相对于现有技术中由于序列化数据对象的各个属性的消息结构复杂,导致其串行化时间较长,使得串行化效率较低的技术问题,采用简单的序列化消息结构,缩短了对象的序列化和反序列时间,提高了对象序列化及反序列化的效率。
同时,本申请提供的一种对象序列化方法、对象反序列化方法、装置及系统,由于其采用的序列化消息结构简单,使得序列化后的二进制序列数据量明显相对于现有技术中的字节流降低,其占有的存储空间或传输带宽明显减少,从而明显提高了数据存储的速率或数据传输效率。
同时,本申请提供的一种对象序列化方法、对象反序列化方法、装置及系统,由于其采用的序列化消息结构简单,对不同编译语言编写的数据对象不会产生本质影响,使得本申请能够实现对多种语言编译的对象进行序列化及反序列化操作,实现对象的跨语言序列化及反序列操作。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种对象序列化方法实施例一的流程图;
图2为本申请提供的一种对象序列化方法实施例一中,示例字段的键值的二进制序列的获取过程示意图;
图3为本申请提供的一种对象序列化方法实施例二的部分流程图;
图4为本申请提供的一种对象序列化方法实施例二中,有符号的整型类型字段的值信息进行序列化过程的部分示意图;
图5为本申请提供的一种对象序列化方法实施例二中,字符串类型字段的值信息进行序列化过程的示意图;
图6为本申请提供的一种对象序列化方法实施例二中,示例对象的二进制序列的结构示意图;
图7为本申请提供的一种对象序列化方法实施例二中,示例字段的序列化过程示意图;
图8为本申请提供的一种对象序列化方法实施例二中,另一示例字段的序列化过程示意图;
图9为本申请提供的一种对象序列化方法实施例二中,示例对象的各个字段的连接顺序示意图;
图10为本申请提供的一种对象反序列化方法实施例的流程图;
图11为本申请提供的一种对象反序列化方法实施例中,某一示例字段的值信息的二进制序列进行反序列化过程的流程图;
图12为本申请提供的一种对象序列化装置实施例一的结构示意图;
图13为本申请对象序列化装置实施例一的另一结构示意图;
图14为本申请提供的一种对象序列化装置实施例二的结构示意图;
图15为本申请提供的一种对象反序列化装置实施例的结构示意图;
图16为本申请提供的一种对象反序列化装置实施例的另一结构示意图;
图17为本申请提供的一种对象反序列化装置实施例的又一结构示意图;
图18为本申请提供的一种序列化和反序列化系统实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请应用于多种编译语言描述的数据对象中。
需要说明的是,待序列化对象在组成结构上可以描述为由一个或多个属性组成的消息结构,例如:现有技术中对象的序列化技术所采用的序列化消息结构;对象还可以描述为由一个或多个字段组成的消息结构,每个字段由四部分组成:字段规则、字段类型、字段名称和标签值。
其中,字段规则分为必须字段、可选字段、重复字段三种,分别用required、optional、repeated关键字标识。required表示消息结构即对象中必须含有此字段,optional表示对象中至多含有一个此字段,repeated表示对象中此字段可能重复多次(含0次)。
字段类型包括数字(整数或浮点)类型、布尔类型、字符串类型、枚举类型和嵌套消息类型等。
字段名称的内容即字段名称的值信息,在数据对象被序列化之前,预先进行赋值,可以为任意字符串,还可以为空或其他值,与各语言中定义变量的方式一样。
标签值为数据对象中每个字段所特有的编号标签,即对象中为每个字段分配一个唯一的标签值,对象中各个字段的标签值均不同,这些标签值可以被用来表明在序列化后的对象的二进制序列中的字段顺序,具有固定性。标签以数字标识,其中1~15占用1个字节,16~2047占用两个字节。以消息结构message的对象PeopleInfor中某一字段为例,对该字段中的各部分进行描述如表1所示:
表1字段的四部分组成
字段规则 | 字段类型 | 字段名称 | 标签值 |
required | int32 | iPersonID | 1 |
而由一个或多个字段组成待序列化对象,例如:以以下代码为例,以下代码为由多个字段组成的对象(消息结构message的对象PeopleInfor):
在对上述对象进行序列化之前,对对象中字段的字段名称进行赋值,即将字段名称的值信息写入该对象中对应的字段中,例如:以以下代码为例,以下代码表示消息结构message的对象PeopleInfor中为多个字段的字段名称的赋值:
PeopleInfor peopleInfor;
peopleInfor.set_iPersonID(300);//设置字段名称为iPersonID的字段的值信息为300;
peopleInfor.set_sName(“testing”);//设置字段名称为sName的字段的值信息为testing;
peopleInfor.set_sEmail(“testingexample.com”);//设置字段名称为sEmail的字段的值信息为testingexample.com;
peopleInfor.add_phone.set_number(“010-8888888”);
peopleInfor.add_phone.set_type(“WORK”);//设置标签值为2字段名称为WORK的字段的值信息为010-8888888;
peopleInfor.add_phone.set_number(“13288888888”);
peopleInfor.add_phone.set_type(“MOBILE”);//设置标签值为0字段名称为phone的字段的值信息为13288888888、MOBILE;
peopleInfor.add_phone.set_number(“010-5555555”);//设置标签值为1默认字段名称为phone的字段的值信息为010-5555555、HOME。
参考图1,其示出了本申请提供的一种对象序列化方法实施例一的流程图,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述方法可以包括以下步骤:
步骤101:对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列。
需要说明的是,本申请在进行对象的序列化之前,为对象中各个字段设置类型值,而每个字段的类型值与其所属字段的字段类型相对应。优选地,预先设置字段类型与类型值之间的对应关系,字段类型与类型值的对应关系表如表2所示:
表2字段类型与类型值的对应关系
类型 | 说明 | 用途 |
0 | Varint | int32,int64,uint32,uint64,sint32,sint64,bool,enum |
1 | 64-bit | fixed64,sfixed64,double |
2 | Length-delimited | string,bytes,embedded messages,packed repeated fields |
3 | Start group | groups(deprecated) |
4 | End group | groups(deprecated) |
5 | 32-bit | fixed32,sfixed32,float |
在对对象的序列化时,上述步骤101在执行前,依据表2得到各个字段的类型值。
其中,对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,即所述步骤101具体为:
将所述各个字段的类型值用三个二进制位表示,得到所述各个字段的类型值的二进制序列。
例如:上述对象中字段required string sName=2中的字段类型为string,由此可知该字段的类型值为2,用三个二进制位表示为010,该二进制序列010即为该字段的类型值的二进制序列。对象中其他字段均采用字段required string sName=2的类型值的二进制序列的获取方法进行获取,得到对象中各个字段的类型值的二进制序列。
步骤102:对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列。
其中,由上述可知,各个字段的标签值为其所属字段所特有的编号标签,且用数字标识,1~15占用1个字节,即00000001~00001111,高四位为空满足后续步骤103的优选实施例的移位需求,由此标签值用8个二进制位表示,16~2047占用两个字节,即00010000~011111111111,用两个字节表示,即0000000000010000~0000011111111111,高五位为空满足后续步骤103的优选实施例的移位需求。
例如:上述对象中字段required string sName=2中的标签值为2,对该标签值进行二进制转换,即用8个二进制位表示,得到该字段的标签值的二进制序列00000010。
需要说明的,所述步骤101与所述步骤102的执行顺序可以调换,还可以同时执行,对本申请方法的实现没有实质影响,调换后的对象序列化方法同样属于本申请的发明思想,在本申请保护范围内。
步骤103:合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列。
其中,优选地,所述步骤103为:
对所述各个字段的标签值的二进制序列进行左移三位;
对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
其中,所述步骤103中,具体为:分别将各个字段的标签值的二进制序列左移三位,得到扩大为原始数据8倍的二进制序列,并把所述各个字段的标签值的二进制序列与其所属字段的类型值的二进制序列进行逐位相加,得到新的二进制序列,即为所述标签值的二进制序列所属字段的键值的二进制序列。
例如:上述字段required string sName=2中的标签值的二进制序列为:00000010,其左移三位后为:00010000;该字段的类型值的二进制序列为010,将该字段的左移三位的标签值的二进制序列与其类型值的二进制序列进行逐位相加,得到该字段的键值的二进制序列:00010010。其计算过程请参考图2。
需要说明的是,由上述键值的二进制序列的获取过程可知,所述各个字段的键值的二进制序列均由其所属字段的标签值及类型值经过转换以及合并操作得到。
步骤104:对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列。
其中,所述字段名称的值信息即为字段名称的内容,例如字段required int32iPersonID=1的字段名称iPersonID的内容为300(其赋值过程请参考上述消息结构message的对象PeopleInfor的字段赋值代码),对“300”进行二进制转换,得到300的二进制序列:100101100,优选地,将其拆分为000000010和10101100,其存放顺序为10101100、00000010。
其中,优选地,在所述步骤103中得到所述各个字段的键值的二进制序列之后,在执行所述步骤105之前,所述方法还包括:
对所述各个字段的键值的二进制序列进行十六进制转换,得到所述各个字段的键值的十六进制序列。
例如:对上述字段required string sName=2的键值的二进制序列:00010010进行十六进制转换,得到0x12,即为该字段的键值的十六进制序列,其计算过程请参考图2。
其中,优选地,在所述步骤104中得到所述各个字段的值信息的二进制序列之后,在执行所述步骤105之前,所述方法还包括:
对所述各个字段的值信息的二进制序列进行十六进制转换,得到所述各个字段的值信息的十六进制序列。
例如:上述字段required int32iPersonID=1的值信息的二进制序列为10101100、00000010,对其进行十六进制转换,得到0xac 0x02,即为该字段的值信息的十六进制序列。
需要说明的是,所述步骤101~所述步骤103与所述步骤104之间的执行顺序可以调换,还可以同时执行,对本申请方法的实现没有实质影响,调换后的对象序列化方法同样属于本申请的发明思想,在本申请保护范围内。
步骤105:对所述各个字段的键值的二进制序列和值信息的二进制序列进行连接,得到所述各个字段的二进制序列。
其中,优选地,所述步骤105为:在每个字段中,该字段的值信息的二进制序列按照前后顺序连接在其所属字段的键值的二进制序列之后。
例如,上述字段required int32iPersonID=1的值信息的二进制序列为1010110000000010,其键值的二进制序列为00001000,则该字段的二进制序列为:000010001010110000000010,优选地,其十六进制序列为0x080xac 0x02。
步骤106:对所述各个字段的二进制序列进行连接,得到对象的二进制序列。
其中,优选地,所述步骤106具体为:
将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
由上述方案可知,本申请提供的一种对象序列化方法实施例一,通过将包含有至少一个字段的对象统一定义为待序列化的消息结构,对对象的各个字段的标签值、类型值及字段名称的值信息分别进行二进制转换及连接,得到对象的二进制序列,完成对象的序列化,相对于现有技术中由于序列化数据对象的各个属性的消息结构复杂,导致其串行化时间较长,使得串行化效率较低的技术问题,采用简单的序列化消息结构,缩短了对象的序列化和反序列时间,提高了对象序列化及反序列化的效率。
同时,本申请提供的一种对象序列化方法实施例一,由于其采用的序列化消息结构简单,使得序列化后的二进制序列数据量明显相对于现有技术中的字节流降低,其占有的存储空间或传输带宽明显减少,从而明显提高了数据存储的速率或数据传输效率。
同时,本申请提供的一种对象序列化方法实施例一,由于其采用的序列化消息结构简单,对不同编译语言编写的数据对象不会产生本质影响,使得本申请能够实现对多种语言编译的对象进行序列化及反序列化操作,实现对象的跨语言序列化及反序列操作。
参考图3,其示出了本申请提供的一种对象序列化方法实施例二的部分流程图,优选地,所述步骤104具体包括以下步骤:
步骤301:依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
其中,各个字段的字段类型不同,其字段名称的值信息进行二进制转换的算法不同,而对象中字段的字段类型进行归类后主要包括可变整型类型、不可变数字类型、字符串类型和嵌套消息类型,其中,可变整型类型包括无符号整型和有符号整型,这些类型依次对应的值信息转换算法包括可变整型(varints)字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法,而可变整型字段转换算法包括无符号可变整型字段转换算法和有符号可变整型字段转换算法。
步骤302:对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
其中,所述步骤302具体为:选取对象中任意一个字段,对当前选取字段的字段名称的值信息采用该当前选取字段的值信息转换算法进行二进制转换,得到所述当前选取字段的值信息的二进制序列,同理,对对象中所有其余字段进行同样操作处理,得到对象中各个字段的值信息的二进制序列。
其中,采用无符号(可变)整型字段转换算法对无符号整型字段的值信息进行二进制转换:
可变整型字段的字段名称值信息中的每一个字节,除了最后一个字节外,都是最高有效位集合,即最高位为1,表示还有更多的字节,最低有效位(即最高位为0)的字节在最前面。因此,一个整型字段的值信息转换为二进制后,若位数大于8位,则把后7位加0x80为一个字节,剩余部分为一个字节,且最高有效位在后;若位数大于8位,且最高位为1,则需要拆分成00000001和它本身(整型字段的值信息最高位代表后续是否有数字,并不参与序列化),并且最高位为1的在序列化后二进制序列中靠前位置,若最高位为0,则不需要拆分。
例如:上述字段required int32iPersonID=1的值信息为300,其转换为二进制位:100101100,其位数大于8位,需要拆分为:00000010和10101100的二进制序列为10101100、00000010,对其进行十六进制转换,得到0xac 0x02,即为该字段的值信息的十六进制序列。而0x080xac 0x02为该字段的十六进制序列。
其中,采用有符号(可变)整型字段转换算法对有符号的整型类型进行二进制转换:
若字段为负数类型,在编码为varints时,其长度永远是10个字节长,会被认为是一个非常大的无符号整型,因此,对于有符号整型字段的值信息进行序列化时,先把其映射为无符号整型,然后拥有varint编码值。这种方式使数字穿梭于正整数和负整数之间,因此-1被编码成1,1被编码成2,-2被编码成3,以此类推,其推导过程请参考图4:
换句话说,每个字段的值信息n都是用“(n<<1)^(n>>31)”编码成sint32s的,或者用“(n<<1)^(n>>63)”编码成64-bit的,其中第二个移位(如n>>31)是一个算术移位,因此若n为整数则移位的结果数字都是0位,若为负数则都是1。
其中,采用不可变数字字段转换算法对数字(非varint)字段的值信息的二进制转换:
非varint数字字段的字段类型比较简单,对于double和fixed64的类型值为1的数字,其占用64个二进制位;float和fixed32的类型值为5的数字,其占用32个二进制位。两种情况的值信息都存储成一个小的字节序。
其中,采用字符串字段转换算法对字符串字段的值信息进行二进制转换:
字符串值信息的序列化的内容主要与字段被赋予的值有关,包括两部分:值长度和值的UTF。比如对上述字段sName赋予值“testing”,由于“testing”长度为7,对应的UTF码为0x740x650x730x740x690x6e 0x67,则值信息的序列化结果为0x070x740x650x730x740x690x6e 0x67;结合上述序列化的键值,最后得“required string sName=2,sName值为testing”的序列化结果为0x120x070x740x650x730x740x690x6e 0x67,其序列化过程请参考图5。
其中,采用嵌套消息字段转换算法对嵌套消息字段的值信息进行二进制转换:
嵌套消息字段的值信息的序列化和字符串字段的值信息的序列化方法相同,其类型值为2,序列化结果包括键值二进制序列、值信息二进制序列(字符串长、字符UTF码)。
需要说明的是,对象中各个字段分别得到其各自二进制序列之后,把对象中各个字段的二进制序列进行连接,得到对象的二进制序列。而在对象二进制序列进行存储或传输时,其存储或传输的实际上是对象的二进制序列的键值对,其格式如图6所示,整个对象的二进制序列由各个字段的二进制序列组成,而每个字段的二进制序列由其各自的键值的二进制序列和值信息的二进制序列组成。
如图6所示,field1~fieldN为消息结构Message的对象Buffer中的N个字段,在每个字段中key为字段的键值的二进制序列,value为对象中字段的值信息的二进制序列。key用来标识具体的字段,在后期反序列化时根据key就可以知道相应的value应该对应消息中哪个字段。
所述步骤106具体为:对对象中各个字段的标签值进行自小到大排序,按照该自小到大的字段的标签值顺序,将各个字段的二进制序列进行连接。下面就具体实例对本申请方法实施例的执行过程进行描述:
例如:一个获取CPU信号的对象:
对该对象中的两个字段赋值:
CPUInfo.set_name(“CPU”);
CPUInfo.set_value(“E5300”);
首先,对每个字段进行序列化:
参考图7,对于name字段来说,string字段类型和标签值1的序列化结果为0x0a,字段名称的值信息即字段内容序列化结果为0x030x430x500x55(0x03为字段内容长度,后三个十六进制数为CPU三个字符的UTF码),则name字段的十六进制序列为:0x0a 0x030x430x500x55。
参考图8,对于value字段来说,string字段类型和标签值2的序列化结果为0x12,字段名称的值信息即字段内容序列化结果为0x050x450x350x330x300x30,则value字段的十六进制序列为:0x120x050x450x350x330x300x30。
最后,把对象中每个字段的二进制序列进行连接,组成整个对象的二进制序列。各个字段之间的连接规则是按照各个字段中的标签值的自小到大的顺序进行连接的。标签值相邻的字段,其序列化后的二进制序列也相邻,且标签值越小的字段,其二进制序列越靠前,传输或存储越早。
例如:参考图9,上述对象中,name字段的标签值为1,value字段的标签值为2,则该对象的二进制序列为:0x0a 0x030x430x500x55(name字段的二进制序列)0x120x050x450x350x330x300x30(value字段的二进制序列)。而在上述对象进行存储或传输时,由0x0a开始存储或传输。如果字段name的标签值为2,字段value的标签值为1,则序列化结果字段value的二进制序列在前,字段name的二进制序列在后。
参考图10,其示出了本申请提供的一种对象反序列化方法实施例的流程图,所述方法可以包括以下步骤:
步骤1001:获取对象的二进制序列中所述各个字段的键值的二进制序列。
需要说明的是,对象的反序列化方法,是指将二进制序列格式的对象转换为消息结构的对象,即将对象的二进制序列转换为对象的消息结构,例如:将对象的二进制序列:0x0a 0x030x430x500x550x120x050x450x350x330x300x30,转换为对象:
其中,该对象中的两个字段的值信息内容:
CPUInfo.set_name(“CPU”);
CPUInfo.set_value(“E5300”)。
其中,由于对象中字段的字段类型不同,其序列化形成的二进制序列中值信息的二进制序列的长度无法确定,由此在进行各个字段的值信息的获取之前,首先需要依据各个字段的键值的二级制序列获取各个字段的字段类型,以判断对象二进制序列中各个字段的值信息的二进制序列的实际位数及是否含有记载值信息的二进制序列长度的字节。
步骤1002:对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列。
其中,由于所述各个字段的键值的二进制序列由其所属字段的标签值的二进制序列和类型值的二进制序列组成,在进行后续处理之前,首先对各个字段的键值的二进制序列进行拆分,得到各个字段的标签值的二进制序列及类型值的二进制序列。所述各个字段的标签值的二进制序列和类型值的二进制序列的拆分获取过程与两者的合并过程相反,由此,所述步骤1002中的具体拆分过程还可以参考本申请对象序列化方法实施例一中对各个字段的标签值的二进制序列和类型值的二进制序列进行合并的具体过程。
其中,所述步骤1002具体为:获取所述各个字段的键值的二进制序列的末尾三位,即为其所属字段的类型值的二级制序列;
分别删除所述各个字段的键值的二进制序列的末尾三位,剩余五位即为其所属字段的标签值的二进制序列。
步骤1003:对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值。
其中,优选地,所述步骤1003的详细执行过程请参考本申请通过的对象序列化方法实施例中所述步骤102中对字段标签值进行二进制转换的过程。
步骤1004:对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值。
其中,优选地,所述步骤1004的详细执行过程请参考本申请通过的对象序列化方法实施例中所述步骤101中对字段类型值进行二进制转换的过程。
需要说明的是,所述步骤1003和所述步骤1004的执行顺序可以调换,其调换结果对本申请对象反序列化方法实施例的实现不会有实质影响,也可同时执行所述步骤1003和所述步骤1004,调换顺序后的对象反序列化方法仍属于本申请发明思想,在本申请保护范围内。
例如:上述字段required int32iPersonID=1的十六进制序列为:0x080xac 0x02,其二进制序列为:000010001010110000000010。对其进行反序列化时,首先获取键值的二进制序列:00001000,其末尾三位为:000,即该字段的类型值0;删除该键值的二级制序列的末尾三位,剩余五位00001即为该字段的标签值1。
步骤1005:依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型。
其中,参考表2,在获取到对象中各个字段的类型值之后,并不能直接确定其所属字段的字段类型,此时,需要标签值对获取的各个字段的类型值对应的字段类型范围进行校验,即,优选地,所述步骤1005具体为:
依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围;
采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
其中,所述步骤1005中,可以通过表2确定所述各个字段的类型值对应的初始字段类型范围,例如,若某一字段的类型值为0,其对应的初始字段类型范围包括:int32、int64、uint32等等字段类型,此时,根据对象中各个字段的标签值的唯一性,采用各个字段的标签值,对其所属字段的初始字段类型范围进行筛选,即校验,确定其所属字段的字段类型。
步骤1006:依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列。
其中,在对象中各个字段的值信息的二进制序列的获取过程中,由于其所属字段的字段类型不同,采用的值信息转换算法不同,其转换后,部分字段类型的字段的值信息的二进制序列中,含有标识值信息的二进制序列长度的字节,由此,在对象的二进制序列中获取各个字段的值信息的二进制序列中,需要各个字段的字段类型。
步骤1007:将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
其中,对于不同字段类型的各个字段的值信息的二进制序列获取过程,可以参考本申请提供的对象序列化方法实施例二。
例如:上述字段required int32iPersonID=1的十六进制序列为:0x080xac 0x02,其二进制序列为:000010001010110000000010,其类型值为0,其标签值为1,由此判断其字段类型中不含有标识值信息二进制序列长度的字节,即其值信息的二进制序列为1010110000000010,参考图11,根据高位可知:00000010为高,10101100为低,且用7位表示为0101100,两者进行连接得到100101100,即为300。
参考图12,其示出了本申请提供的一种对象序列化装置实施例一的结构示意图,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述装置包括第一转换单元1201、第一连接单元1202、第二转换单元1203、第二连接单元1204和第三连接单元1205,其中:
所述第一转换单元1201,用于对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列。
需要说明的是,本申请在进行对象的序列化之前,为对象中各个字段设置类型值,而每个字段的类型值与其所属字段的字段类型相对应。优选地,预先设置字段类型与类型值之间的对应关系,字段类型与类型值的对应关系请参考表2。在对对象的序列化时,依据表2确定各个字段的类型值。
其中,具体的,将所述各个字段的类型值用三个二进制位表示,得到所述各个字段的类型值的二进制序列。
例如:上述对象中字段required string sName=2中的字段类型为string,由此可知该字段的类型值为2,用三个二进制位表示为010,该二进制序列010即为该字段的类型值的二进制序列。对象中其他字段均采用字段required string sName=2的类型值的二进制序列的获取方法进行获取,得到对象中各个字段的类型值的二进制序列。
其中,由上述可知,各个字段的标签值为其所属字段所特有的编号标签,且用数字标识,1~15占用1个字节,即00000001~00001111,高四位为空满足后续步骤103的优选实施例的移位需求,由此标签值用8个二进制位表示,16~2047占用两个字节,即00010000~011111111111,用两个字节表示,即0000000000010000~0000011111111111,高五位为空满足后续移位需求。
例如:上述对象中字段required string sName=2中的标签值为2,对该标签值进行二进制转换,即用8个二进制位表示,得到该字段的标签值的二进制序列00000010。
所述第一连接单元1202,用于合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列。
其中,参考图13,其示出了本申请对象序列化装置实施例一的另一结构示意图,优选地,所述第一连接单元1202包括序列移动子单元1221和序列相加子单元1222,其中:
所述序列移动子单元1221,用于对所述各个字段的标签值的二进制序列进行左移三位;
所述序列相加子单元1222,用于对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
其中,所述第一连接单元1202功能的实现过程具体为:分别将各个字段的标签值的二进制序列左移三位,得到扩大为原始数据8倍的二进制序列,并把所述各个字段的标签值的二进制序列与其所属字段的类型值的二进制序列进行逐位相加,得到新的二进制序列,即为所述标签值的二进制序列所属字段的键值的二进制序列。
例如:上述字段required string sName=2中的标签值的二进制序列为:00000010,其左移三位后为:00010000;该字段的类型值的二进制序列为010,将该字段的左移三位的标签值的二进制序列与其类型值的二进制序列进行逐位相加,得到该字段的键值的二进制序列:00010010。其计算过程请参考图2。
需要说明的是,由上述键值的二进制序列的获取过程可知,所述各个字段的键值的二进制序列均由其所属字段的标签值及类型值经过转换以及合并操作得到。
所述第二转换单元1203,用于对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列。
其中,所述字段名称的值信息即为字段名称的内容,例如字段required int32iPersonID=1的字段名称iPersonID的内容为300(其赋值过程请参考上述消息结构message的对象PeopleInfor的字段赋值代码),对“300”进行二进制转换,得到300的二进制序列:100101100,优选地,将其拆分为000000010和10101100,其存放顺序为10101100、00000010。
所述第二连接单元1204,用于连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列。
优选地,所述第二连接单元1204,具体用于在每个字段中,将该字段的值信息的二进制序列按照前后顺序连接在其所属字段的键值的二进制序列之后。
例如,上述字段required int32iPersonID=1的值信息的二进制序列为1010110000000010,其键值的二进制序列为00001000,则该字段的二进制序列为:000010001010110000000010,优选地,其十六进制序列为0x080xac 0x02。
所述第三连接单元1205,用于对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
优选地,所述第三连接单元1205,具体用于将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
由上述方案可知,本申请提供的一种对象序列化装置实施例一,通过将包含有至少一个字段的对象统一定义为待序列化的消息结构,对对象的各个字段的标签值、类型值及字段名称的值信息分别进行二进制转换及连接,得到对象的二进制序列,完成对象的序列化,相对于现有技术中由于序列化数据对象的各个属性的消息结构复杂,导致其串行化时间较长,使得串行化效率较低的技术问题,采用简单的序列化消息结构,缩短了对象的序列化和反序列时间,提高了对象序列化及反序列化的效率。
同时,本申请提供的一种对象序列化装置实施例一,由于其采用的序列化消息结构简单,使得序列化后的二进制序列数据量明显相对于现有技术中的字节流降低,其占有的存储空间或传输带宽明显减少,从而明显提高了数据存储的速率或数据传输效率。
同时,本申请提供的一种对象序列化装置实施例一,由于其采用的序列化消息结构简单,对不同编译语言编写的数据对象不会产生本质影响,使得本申请能够实现对多种语言编译的对象进行序列化及反序列化操作,实现对象的跨语言序列化及反序列操作。
参考图14,其示出了本申请提供的一种对象序列化装置实施例二的结构示意图,优选地,所述第二转换单元1203包括算法确定子单元1231和序列转换子单元1232,其中:
所述算法确定子单元1231,用于依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法。
其中,各个字段的字段类型不同,其字段名称的值信息进行二进制转换的算法不同,而对象中字段的字段类型进行归类后主要包括可变整型类型、不可变数字类型、字符串类型和嵌套消息类型,其中,可变整型类型包括无符号整型和有符号整型,这些类型依次对应的值信息转换算法包括可变整型(varints)字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法,而可变整型字段转换算法包括无符号可变整型字段转换算法和有符号可变整型字段转换算法。
所述序列转换子单元1232,用于对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
其中,优选地,所述序列转换子单元1232,具体用于选取对象中任意一个字段,对当前选取字段的字段名称的值信息采用该当前选取字段的值信息转换算法进行二进制转换,得到所述当前选取字段的值信息的二进制序列,同理,对对象中所有其余字段进行同样操作处理,得到对象中各个字段的值信息的二进制序列。
参考图15,其示出了本申请提供的一种对象反序列化装置实施例的结构示意图,所述装置包括序列获取单元1501、第一反转换单元1502和第二反转换单元1503,其中:
所述序列获取单元1501,用于获取对象的二进制序列中所述各个字段的键值的二进制序列,并对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列。
所述第一反转换单元1502,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值,并依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型。
其中,参考图16,其示出了本申请提供的一种对象反序列化装置实施例的另一结构示意图,优选地,第一反转换单元1502包括:
第一反转换子单元1521,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
字段类型确定子单元1522,用于依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围,并采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
所述第二反转换单元1503,用于依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
其中,参考图17,其示出了本申请提供的一种对象反序列化装置实施例的又一结构示意图,优选地,所述第二反转换单元1503包括:
序列获取子单元1531,用于依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度,并依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列;
第二反转换子单元1532,用于将所述各个字段的值信息的二进制序列进行转换,得到对象中所述各个字段的值信息。
参考图18,其示出了本申请提供的一种序列化和反序列化系统的结构示意图,所述系统包括对象序列化装置1801和对象反序列化装置1802,其中:
所述对象序列化装置1801,用于对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;
合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;
对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;
连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;
对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
其中,优选地,所述对象序列化装置1801在合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列时,具体为:
对所述各个字段的标签值的二进制序列进行左移三位;
对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
其中,优选地,所述对象序列化装置1801在对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列时,具体为:
依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括整型字段转换算法、数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
其中,优选地,所述对象序列化装置1801在对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列时,具体为:
将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
所述对象反序列化装置1802,用于获取对象的二进制序列中所述各个字段的键值的二进制序列;
对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列;
对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型;
依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
其中,优选地,所述对象反序列化装置1802在依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型时,具体为:
依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围;
采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
其中,优选地,所述对象反序列化装置1802在依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列时,具体为:
依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度;
依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种对象序列化方法、对象反序列化方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种对象序列化方法,其特征在于,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述方法包括:
对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;
合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;
对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;
连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;
对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
2.根据权利要求1所述的方法,其特征在于,所述合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列具体为:
对所述各个字段的标签值的二进制序列进行左移三位;
对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
3.根据权利要求1所述的方法,其特征在于,所述对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列具体为:
依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
4.根据权利要求1所述的方法,其特征在于,所述对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列具体为:
将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
5.一种对象反序列化方法,其特征在于,包括:
获取对象的二进制序列中所述各个字段的键值的二进制序列;
对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列;
对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型;
依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
6.根据权利要求5所述的方法,其特征在于,所述依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型具体为:
依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围;
采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
7.根据权利要求5所述的方法,其特征在于,所述依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列具体为:
依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度;
依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列。
8.一种对象序列化装置,其特征在于,预先为对象中各个字段设置类型值,所述类型值与其所属字段的字段类型相对应,所述装置包括:
第一转换单元,用于对所述各个字段的类型值进行二进制转换,得到所述各个字段的类型值的二进制序列,并对所述各个字段的标签值进行二进制转换,得到所述各个字段的标签值的二进制序列;
第一连接单元,用于合并所述各个字段的标签值的二进制序列和类型值的二进制序列,得到所述各个字段的键值的二进制序列;
第二转换单元,用于对所述各个字段的字段名称的值信息进行二进制转换,得到所述各个字段的值信息的二进制序列;
第二连接单元,用于连接所述各个字段的键值的二进制序列和值信息的二进制序列,得到所述各个字段的二进制序列;
第三连接单元,用于对所述各个字段的二进制序列进行连接,得到所述对象的二进制序列。
9.根据权利要求8所述的装置,其特征在于,所述第一连接单元包括序列移动子单元和序列相加子单元,其中:
所述序列移动子单元,用于对所述各个字段的标签值的二进制序列进行左移三位;
所述序列相加子单元,用于对所述各个字段的类型值的二进制序列与左移三位的标签值的二进制序列进行相加,得到所述各个字段的键值的二进制序列。
10.根据权利要求8所述的装置,其特征在于,所述第二转换单元包括算法确定子单元和序列转换子单元,其中:
所述算法确定子单元,用于依据所述各个字段的字段类型分别确定与所述各个字段相对应的值信息转换算法;
其中,所述值信息转换算法包括无符号整型字段转换算法、有符号整型字段转换算法、不可变数字字段转换算法、字符串字段转换算法或嵌套消息字段转换算法;
所述序列转换子单元,用于对所述各个字段的字段名称的值信息,采用与其所属字段的值信息转换算法进行二进制转换,得到所述各个字段的值信息的二进制序列。
11.根据权利要求8所述的装置,其特征在于:
所述第三连接单元,具体用于将所述各个字段的二进制序列按照其所属字段的标签值的自小到大的顺序进行连接,得到所述对象的二进制序列。
12.一种对象反序列化装置,其特征在于,所述装置包括:
序列获取单元,用于获取对象的二进制序列中所述各个字段的键值的二进制序列,并对所述各个字段的键值的二进制序列进行拆分,得到所述各个字段的标签值的二进制序列和类型值的二进制序列;
第一反转换单元,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值,并依据所述各个字段的标签值及类型值,确定所述各个字段的字段类型;
第二反转换单元,用于依据所述各个字段的字段类型,分别获取其所属字段的值信息的二进制序列,并将所述各个字段的值信息的二进制序列进行转换,得到对象中各个字段的字段名称的值信息。
13.根据权利要求12所述的装置,其特征在于,所述第一反转换单元包括:
第一反转换子单元,用于对所述各个字段的标签值的二进制序列进行转换,得到所述各个字段的标签值,并对所述各个字段的类型值的二进制序列进行转换,得到所述各个字段的类型值;
字段类型确定子单元,用于依据所述各个字段的类型值,分别确定其所属字段的初始字段类型范围,并采用所述各个字段的标签值,分别对其所属字段的初始字段类型范围进行校验,确定各个字段的字段类型。
14.根据权利要求12所述的装置,其特征在于,所述第二反转换单元包括:
序列获取子单元,用于依据所述各个字段的字段类型,分别确定其所属字段的值信息的二进制序列长度,并依据所述各个字段的值信息的二进制序列长度,分别获取与其所属字段的值信息的二进制序列;
第二反转换子单元,用于将所述各个字段的值信息的二进制序列进行转换,得到对象中所述各个字段的值信息。
15.一种序列化和反序列化系统,其特征在于,包括对象序列化装置和对象反序列化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102028534A CN102750268A (zh) | 2012-06-19 | 2012-06-19 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102028534A CN102750268A (zh) | 2012-06-19 | 2012-06-19 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102750268A true CN102750268A (zh) | 2012-10-24 |
Family
ID=47030463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102028534A Pending CN102750268A (zh) | 2012-06-19 | 2012-06-19 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750268A (zh) |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN103034698A (zh) * | 2012-12-05 | 2013-04-10 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN103885721A (zh) * | 2012-12-24 | 2014-06-25 | 中国移动通信集团公司 | 一种在键-值系统中的数据存储或读取方法、装置 |
CN104363126A (zh) * | 2014-11-27 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 路由器功能状态的统计方法、系统及其路由器与服务器 |
CN104360865A (zh) * | 2014-11-28 | 2015-02-18 | 中国建设银行股份有限公司 | 一种序列化方法、反序列化方法及相关设备 |
CN104580073A (zh) * | 2013-10-14 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 一种用于在异构系统之间实现消息传递的方法和装置 |
WO2016029788A1 (zh) * | 2014-08-29 | 2016-03-03 | 优视科技有限公司 | 序列化方法和装置、以及反序列化方法和装置 |
CN105993010A (zh) * | 2014-02-11 | 2016-10-05 | 德州仪器公司 | 用以提供扩展对象符号数据的方法及设备 |
CN106155630A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 序列化方法、反序列化方法、序列化装置及反序列化装置 |
CN106326377A (zh) * | 2016-08-15 | 2017-01-11 | 东软集团股份有限公司 | 序列化方法、反序列化方法、装置和系统 |
WO2017008654A1 (zh) * | 2015-07-13 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种反序列化方法及装置 |
CN106598922A (zh) * | 2016-12-23 | 2017-04-26 | Tcl集团股份有限公司 | 一种字符串转换方法及系统 |
CN106649631A (zh) * | 2016-12-07 | 2017-05-10 | 国云科技股份有限公司 | 一种灵活配置额外字段的系统及其方法 |
CN106777292A (zh) * | 2016-12-29 | 2017-05-31 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据序列化方法及装置 |
CN106843819A (zh) * | 2015-12-03 | 2017-06-13 | 北京国双科技有限公司 | 对象序列化的方法及装置 |
CN106899307A (zh) * | 2017-03-03 | 2017-06-27 | 上海东软医疗科技有限公司 | 一种数据压缩方法、数据解压缩方法及装置 |
CN107229670A (zh) * | 2017-04-10 | 2017-10-03 | 中国科学院信息工程研究所 | 基于Avro的通用数据序列化及反序列化方法 |
CN107451237A (zh) * | 2017-07-26 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 序列化与反序列化方法、装置及设备 |
CN107741833A (zh) * | 2017-10-30 | 2018-02-27 | 广东乐心医疗电子股份有限公司 | 可嵌套的key‑value的存储方法及装置 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN107947897A (zh) * | 2017-10-27 | 2018-04-20 | 深圳市创梦天地科技股份有限公司 | 用于网络传输的信息编码方法和装置 |
CN108270546A (zh) * | 2016-12-30 | 2018-07-10 | 北京酷我科技有限公司 | 一种信息传输的方法及系统 |
CN108829649A (zh) * | 2018-05-31 | 2018-11-16 | 西安交通大学 | 基于hbase键值索引的复杂类型编码序列化算法的实现方法 |
CN109413504A (zh) * | 2018-09-30 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 基于字符串替换的弹幕校验方法、装置、终端及存储介质 |
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
CN109937413A (zh) * | 2016-07-20 | 2019-06-25 | 深圳市东信时代信息技术有限公司 | 海量人群特征数据的处理方法及系统 |
CN110298032A (zh) * | 2019-05-29 | 2019-10-01 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 文本分类语料标注训练系统 |
CN110619218A (zh) * | 2018-12-29 | 2019-12-27 | 北京时光荏苒科技有限公司 | 用于生成信息的方法和装置 |
CN110830164A (zh) * | 2019-10-22 | 2020-02-21 | 武汉理工光科股份有限公司 | 一种用于物联网设备通信的数据序列化方法 |
CN111183617A (zh) * | 2017-12-19 | 2020-05-19 | 英特尔Ip公司 | 用于在无线通信中指示数据分组属性的方法和设备 |
CN111813781A (zh) * | 2020-07-10 | 2020-10-23 | 金蝶软件(中国)有限公司 | 一种数据存储方法以及终端设备 |
CN112783974A (zh) * | 2020-12-31 | 2021-05-11 | 杭州趣链科技有限公司 | 数据转换方法、装置、设备和存储介质 |
CN113779001A (zh) * | 2020-11-09 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 数据处理方法及装置、计算机存储介质、电子设备 |
CN115567589A (zh) * | 2022-09-29 | 2023-01-03 | 上海顺舟智能科技股份有限公司 | Json数据的压缩传输方法、装置、设备及存储介质 |
CN116368788A (zh) * | 2021-04-30 | 2023-06-30 | 株式会社软技 | 串行化方法、逆串行化方法、信息处理程序、信息处理装置以及通信系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5600499A (en) * | 1993-04-09 | 1997-02-04 | Western Digital Corporation | Tri-bit encoding for disk drive servo track ID information |
CN101477532A (zh) * | 2008-12-23 | 2009-07-08 | 北京畅游天下网络技术有限公司 | 实现数据存储、读取的方法、装置及系统 |
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
-
2012
- 2012-06-19 CN CN2012102028534A patent/CN102750268A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5600499A (en) * | 1993-04-09 | 1997-02-04 | Western Digital Corporation | Tri-bit encoding for disk drive servo track ID information |
CN101477532A (zh) * | 2008-12-23 | 2009-07-08 | 北京畅游天下网络技术有限公司 | 实现数据存储、读取的方法、装置及系统 |
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
Non-Patent Citations (1)
Title |
---|
GOOGLE: "Protocol Buffers Encoding", 《HTTP://DEVELOPERS.GOOGLE.COM/PROTOCOL-BUFFERS/DOCS/ENCODING》, 2 April 2012 (2012-04-02) * |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN102981884B (zh) * | 2012-11-22 | 2016-03-30 | 用友优普信息技术有限公司 | 序列化装置和序列化方法 |
CN103034698A (zh) * | 2012-12-05 | 2013-04-10 | 北京奇虎科技有限公司 | 数据存储方法及装置 |
CN103885721A (zh) * | 2012-12-24 | 2014-06-25 | 中国移动通信集团公司 | 一种在键-值系统中的数据存储或读取方法、装置 |
CN104580073B (zh) * | 2013-10-14 | 2018-11-13 | 阿里巴巴集团控股有限公司 | 一种用于在异构系统之间实现消息传递的方法和装置 |
CN104580073A (zh) * | 2013-10-14 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 一种用于在异构系统之间实现消息传递的方法和装置 |
US10609009B2 (en) | 2014-02-11 | 2020-03-31 | Texas Instruments Incorporated | Extended javascript object notation file generator circuitry and process |
CN105993010B (zh) * | 2014-02-11 | 2019-05-07 | 德州仪器公司 | 用以提供扩展对象符号数据的方法及设备 |
CN105993010A (zh) * | 2014-02-11 | 2016-10-05 | 德州仪器公司 | 用以提供扩展对象符号数据的方法及设备 |
WO2016029788A1 (zh) * | 2014-08-29 | 2016-03-03 | 优视科技有限公司 | 序列化方法和装置、以及反序列化方法和装置 |
CN104363126B (zh) * | 2014-11-27 | 2018-06-19 | 上海斐讯数据通信技术有限公司 | 路由器功能状态的统计方法、系统及其路由器 |
CN104363126A (zh) * | 2014-11-27 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 路由器功能状态的统计方法、系统及其路由器与服务器 |
CN104360865A (zh) * | 2014-11-28 | 2015-02-18 | 中国建设银行股份有限公司 | 一种序列化方法、反序列化方法及相关设备 |
CN104360865B (zh) * | 2014-11-28 | 2018-05-18 | 中国建设银行股份有限公司 | 一种序列化方法、反序列化方法及相关设备 |
CN106155630A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 序列化方法、反序列化方法、序列化装置及反序列化装置 |
WO2017008654A1 (zh) * | 2015-07-13 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种反序列化方法及装置 |
CN106843819A (zh) * | 2015-12-03 | 2017-06-13 | 北京国双科技有限公司 | 对象序列化的方法及装置 |
CN109937413A (zh) * | 2016-07-20 | 2019-06-25 | 深圳市东信时代信息技术有限公司 | 海量人群特征数据的处理方法及系统 |
CN106326377A (zh) * | 2016-08-15 | 2017-01-11 | 东软集团股份有限公司 | 序列化方法、反序列化方法、装置和系统 |
CN106649631A (zh) * | 2016-12-07 | 2017-05-10 | 国云科技股份有限公司 | 一种灵活配置额外字段的系统及其方法 |
CN106598922B (zh) * | 2016-12-23 | 2020-01-14 | Tcl集团股份有限公司 | 一种字符串转换方法及系统 |
CN106598922A (zh) * | 2016-12-23 | 2017-04-26 | Tcl集团股份有限公司 | 一种字符串转换方法及系统 |
CN106777292B (zh) * | 2016-12-29 | 2019-11-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据序列化方法及装置 |
CN106777292A (zh) * | 2016-12-29 | 2017-05-31 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据序列化方法及装置 |
CN108270546A (zh) * | 2016-12-30 | 2018-07-10 | 北京酷我科技有限公司 | 一种信息传输的方法及系统 |
CN106899307B (zh) * | 2017-03-03 | 2020-10-16 | 上海东软医疗科技有限公司 | 一种数据压缩方法、数据解压缩方法及装置 |
CN106899307A (zh) * | 2017-03-03 | 2017-06-27 | 上海东软医疗科技有限公司 | 一种数据压缩方法、数据解压缩方法及装置 |
CN107229670A (zh) * | 2017-04-10 | 2017-10-03 | 中国科学院信息工程研究所 | 基于Avro的通用数据序列化及反序列化方法 |
CN107451237B (zh) * | 2017-07-26 | 2020-09-15 | 阿里巴巴集团控股有限公司 | 序列化与反序列化方法、装置及设备 |
CN107451237A (zh) * | 2017-07-26 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 序列化与反序列化方法、装置及设备 |
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN107947897A (zh) * | 2017-10-27 | 2018-04-20 | 深圳市创梦天地科技股份有限公司 | 用于网络传输的信息编码方法和装置 |
CN107741833B (zh) * | 2017-10-30 | 2021-02-05 | 广东乐心医疗电子股份有限公司 | 可嵌套的key-value的存储方法及装置 |
CN107741833A (zh) * | 2017-10-30 | 2018-02-27 | 广东乐心医疗电子股份有限公司 | 可嵌套的key‑value的存储方法及装置 |
CN111183617A (zh) * | 2017-12-19 | 2020-05-19 | 英特尔Ip公司 | 用于在无线通信中指示数据分组属性的方法和设备 |
CN111183617B (zh) * | 2017-12-19 | 2023-09-01 | 英特尔公司 | 用于在无线通信中指示数据分组属性的方法和设备 |
CN108829649B (zh) * | 2018-05-31 | 2020-04-10 | 西安交通大学 | 基于hbase键值索引的复杂类型编码序列化算法的实现方法 |
CN108829649A (zh) * | 2018-05-31 | 2018-11-16 | 西安交通大学 | 基于hbase键值索引的复杂类型编码序列化算法的实现方法 |
CN109413504A (zh) * | 2018-09-30 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 基于字符串替换的弹幕校验方法、装置、终端及存储介质 |
CN109413504B (zh) * | 2018-09-30 | 2021-04-09 | 武汉斗鱼网络科技有限公司 | 基于字符串替换的弹幕校验方法、装置、终端及存储介质 |
CN110619218B (zh) * | 2018-12-29 | 2022-07-12 | 北京时光荏苒科技有限公司 | 用于生成信息的方法和装置 |
CN110619218A (zh) * | 2018-12-29 | 2019-12-27 | 北京时光荏苒科技有限公司 | 用于生成信息的方法和装置 |
CN109871519A (zh) * | 2019-02-18 | 2019-06-11 | 北京思特奇信息技术股份有限公司 | 一种无层级结构的json反序列化方法、装置及存储介质 |
CN110298032A (zh) * | 2019-05-29 | 2019-10-01 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 文本分类语料标注训练系统 |
CN110298032B (zh) * | 2019-05-29 | 2022-06-14 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 文本分类语料标注训练系统 |
CN110830164A (zh) * | 2019-10-22 | 2020-02-21 | 武汉理工光科股份有限公司 | 一种用于物联网设备通信的数据序列化方法 |
CN111813781A (zh) * | 2020-07-10 | 2020-10-23 | 金蝶软件(中国)有限公司 | 一种数据存储方法以及终端设备 |
CN113779001A (zh) * | 2020-11-09 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 数据处理方法及装置、计算机存储介质、电子设备 |
CN112783974A (zh) * | 2020-12-31 | 2021-05-11 | 杭州趣链科技有限公司 | 数据转换方法、装置、设备和存储介质 |
CN116368788A (zh) * | 2021-04-30 | 2023-06-30 | 株式会社软技 | 串行化方法、逆串行化方法、信息处理程序、信息处理装置以及通信系统 |
CN115567589A (zh) * | 2022-09-29 | 2023-01-03 | 上海顺舟智能科技股份有限公司 | Json数据的压缩传输方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN104360865B (zh) | 一种序列化方法、反序列化方法及相关设备 | |
CN103582883B (zh) | 具有组格式的可变长度数据的改进型编码和解码 | |
CN106407201A (zh) | 一种数据处理方法及装置 | |
CN100550020C (zh) | 一种用于解决中文软件多语言支持问题的方法和装置 | |
CN105450232A (zh) | 编码、解码方法以及编码装置和解码装置 | |
CN101620636B (zh) | 一种显示表格数据的方法和装置 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
CN110263043A (zh) | 数据存储方法、数据查询方法、装置及存储介质 | |
CN104021123A (zh) | 用于数据迁移的方法和系统 | |
Price et al. | HDFITS: Porting the FITS data model to HDF5 | |
KR20180088895A (ko) | 랜덤 문자열을 생성하기 위한 방법 및 장치 | |
US9602129B2 (en) | Compactly storing geodetic points | |
CN102999602A (zh) | 一种数据解析方法和数据解析系统 | |
Xu et al. | A Fixed Point Approach to the Stability of a General Mixed AQCQ‐Functional Equation in Non‐Archimedean Normed Spaces | |
CN113905093A (zh) | 序列化、反序列化方法、装置及电子设备 | |
CN103210590B (zh) | 压缩方法及设备 | |
Hoa et al. | On Maximal and Minimal Solutions for Set‐Valued Differential Equations with Feedback Control | |
CN107947897A (zh) | 用于网络传输的信息编码方法和装置 | |
CN103729523A (zh) | 一种面向参数化系统的自动验证方法 | |
CN108092670B (zh) | 编码方法和装置 | |
CN103051480A (zh) | 一种dn的存储方法及dn存储装置 | |
CN105793842B (zh) | 序列化消息之间的转换方法和装置 | |
CN103124273A (zh) | 基于用户行为分析的路径倒排表建立、匹配方法及系统 | |
Mishra et al. | Fast pattern matching in compressed text using wavelet tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121024 |