具体实施方式
为了解决现有技术中因各UUID为随机数导致各UUID被同时压缩时的压缩率较低的问题,在本申请实施例中,发送端在发送各数据之前生成与每个数据对应的UUID时,可根据可压缩字段和非可压缩字段生成UUID,其中,各UUID的非可压缩字段不相同,各UUID的可压缩字段相同。由于各UUID的非可压缩字段不相同,因此,可有效保证每个UUID的唯一性,而且,由于各UUID的可压缩字段相同,因此,各UUID的可压缩字段可被压缩为一个字段,这样就可大大降低压缩各UUID的压缩率,从而可减少压缩后的各UUID在传输过程中占用的网络资源,进而可有效提高数据的传输速率。
为使本申请的目的、技术方案和优点更加清楚,以下将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下将具体说明本申请实施例提供的数据传输方法。
参见图1,为本申请实施例提供的数据传输方法的流程示意图,包括:
S101、发送端确定待发送的各数据。
在本申请实施例中,发送端确定待发送的各数据的方法具体为:发送端确定同一终端在同一时刻(如,同一秒内)的操作所形成的各数据,作为确定的待发送的各数据。
本申请实施例中所述的发送端可以是终端,也可以是服务器。当发送端为终端时,即为终端要将待发送的数据同步到服务器中,相反的,当发送端为服务器时,即为服务器要将待发送的数据同步到终端中。
下面以终端将数据同步到服务器为例说明。
假设终端需要将用户在当前时刻录入通讯录的操作所形成的数据同步到服务器中,则终端确定在同一秒内录入的各数据为待发送的各数据。
S102、生成与每个数据对应的UUID。
终端确定了待发送的各数据后,可生成各数据对应的UUID。具体的,终端可在确定待发送的各数据的同时,生成各数据对应的UUID。
在本申请实施例中,发送端在生成UUID时,可获取预设的可压缩字段和非可压缩字段,并生成由可压缩字段和非可压缩字段构成的UUID。其中,各UUID的可压缩字段相同,各UUID的非可压缩字段互不相同。
其中,一个UUID中的可压缩字段可以为任何能够与其他终端生成的UUID中的可压缩字段区分的字符串。
由于发送端确定的数据为用户在同一终端且在同一时刻的操作所形成的数据,因此,本申请实施例提供的UUID中的可压缩字段可以包括:设备标识字符串、时间戳字符串、用于标识发送端类型的类型标识字符串中的至少一个。这样,对于确定的在同一终端且在同一时刻生成的各数据来说,发送端类型的类型标识字符串是相同的,各数据的设备标识和时间戳也都是相同的,从而由设备标识字符串和/或时间戳字符串所构成的可压缩字段必定相同。
非可压缩字段可以为任何能够保证唯一性的字符串。由于通过随机数算法多次生成的随机数仅有极低的概率是相同的,而且待发送的各数据的内容凭证不同,编号也不同。因此,本申请实施例提供的UUID中的非可压缩字段可包括:随机数字符串、UUID对应的数据的内容凭证(biz)字符串,和UUID对应的数据的编号(serial)字符串中的至少一个。
由此可见,为通过步骤S101确定出的待发送的各数据生成的各UUID中,每个UUID中都包含用于区别其他UUID的非可压缩字段,可有效保证每个UUID的唯一性,且每个UUID中都包含相同的可压缩字段,可有效提高各UUID的相似度。
S103、对各UUID进行压缩处理。
由于通过步骤S102生成的各UUID相似度较高,因此,通过步骤S103对步骤各UUID进行压缩处理,可以有效提高压缩各UUID的压缩率。
具体的,由于压缩处理的基本原理为:对重复的字段用一个字段替代,因此,对各UUID进行压缩处理时,各UUID对应的可压缩字段可被压缩为一个字段,从而可有效提高压缩各UUID的压缩率,进而可降低压缩后的各UUID的数据量,这样,可减少压缩后的各UUID在网络传输过程中占用的网络资源,从而可有效提高包含有UUID的数据的传输速率。
在本申请实施例中,对各UUID进行压缩处理时,可使用gzip压缩方法对各UUID进行压缩处理。相应的,接收端也可使用gzip压缩方法对各UUID进行解压缩处理,这里不再赘述。
S104、将包括压缩处理后的UUID的数据传输至接收端。
本申请实施例提供的上述数据传输方法,为待发送的各数据生成的UUID包括可压缩字段和非可压缩字段,各UUID的可压缩字段相同,各UUID的非可压缩字段互不相同;对各UUID进行压缩处理时,由于各UUID的可压缩字段相同,则各UUID的压缩率较高,这样,包括压缩处理后的UUID的数据在传输的过程中就会占用较少的网络资源,从而可有效提高包含有UUID的数据的传输速率。
上述本申请实施例提供的一个UUID中的可压缩字段可包括:设备标识字符串、时间戳字符串、用于标识发送端类型的类型标识字符串中的至少一个。
其中,该设备标识字符串可以为任何能够唯一标识一个终端的字符串,例如,终端中某一设备的标识信息字符串,或通过第三方为终端提供的设备唯一性标识字符串。
时间戳字符串可以为一般时间戳字符串或特殊时间戳字符串。其中,一般时间戳字符串为根据当前时刻设定的字符串,例如,假设当前时刻的时间为2014年05月08日12时30分30秒,则可以将表示当前时刻的各数字按照先后顺序构成的字符串作为一般时间戳字符串。
特殊时间戳字符串为从设定时间开始计时到当前时刻的总秒数。如果将设定时间设定为世界上第一个软件诞生的时间,则该特殊时间戳字符串可称为绝对时间戳字符串。如果将设定时间设定为其他时间,则该特殊时间戳字符串可称为相对时间戳字符串。例如,世界上第一个软件诞生的时间为1970年1月1日(00:00:00),则绝对时间戳字符串为1970年1月1日(00:00:00)至当前时刻的总秒数。
如果一个UUID中的时间戳字符串采用绝对时间戳字符串,则由于第一个软件诞生的时间至当前时刻的总秒数的位数过长,以至于远远大于UUID中的时间戳字符串的实际需求位数的长度,因此就会增加UUID的数据量,从而会增加UUID在网络传输过程中占用的网络资源。因此,优选的,本申请实施例提供的UUID中的时间戳字符串可采用相对时间戳字符串或一般时间戳字符串,这样就可以按照实际需求减少时间戳字符串的长度。
发送端类型的类型标识字符串为能够唯一标识发送端类型的字符串,本申请实施例中所述的发送端类型包括但不限于终端类型、服务器类型等。该类型标识字符串可以为“0”、“1”等数字类型的字符串。例如,当发送端为终端时,可设定终端的类型标识字符串为“0”,当发送端为服务器时,可设定服务器的类型标识字符串为“1”。
上述本申请实施例所述的一个UUID中的非可压缩字段可包括:UUID对应的数据的内容凭证字符串,和UUID对应的数据的编号字符串、随机数字符串中的至少一个。
针对UUID对应的数据的内容凭证字符串,可选的,通过第五版本的信息摘要算法(Message-DigestAlgorithm5,MD5)分别对待发送的各数据进行计算,得到与每一数据对应的摘要,截取摘要中设定位置和设定长度的数据作为非可压缩字段中的内容凭证字符串,例如,截取摘要中最后X位作为非可压缩字段中的内容凭证字符串。其中,X为任意正整数,如X为6。
根据如上所述的UUID中包含的各字段,在本申请实施例中,UUID的其中一种生成方式为:
根据可压缩字段中的设备标识字符串、相对时间戳字符串和发送端类型的类型标识字符串,以及非可压缩字段中的随机数字符串、UUID对应的数据的内容凭证字符串、UUID对应的数据的编号字符串生成UUID。
其中,可压缩字段和非可压缩字段的先后顺序不限,可压缩字段中的各字符串的先后顺序不限,非可压缩字段中的各字符串的先后顺序不限。
例如:可压缩字段位于非可压缩字段之前。可压缩字段中,设备标识字符串位于相对时间戳字符串之前,相对时间戳字符串位于发送端类型的类型标识字符串之前。非压缩字段中,串随机数字符串位于UUID对应的数据的内容凭证字符串之前,数据的内容凭证字符串位于数据的编号字符串之前,如表1所示。
表1
由上述表1可见,表1中的前三个字符串为UUID中的可压缩字段,后三个字符串为该UUID中的非可压缩字段。
需要说明的是,某些应用场景中,用户需要根据某个数据对应的UUID中的设备标识字符串,获知该数据是由哪一个终端提供的。因此,优选的,UUID中的终端的设备标识字符串可位于所有字符串之前(如表1所示),这样可以方便用户获知UUID中的设备标识字符串。
本申请实施例提供的UUID,为了增强用户对UUID的可读性,UUID中的各字段之间可以设置连接符,或者还可以在可压缩字段中的任意相邻的两个字符串之间,或者在非可压缩字段中的任意相邻的两个字符串之间设置连接符。例如,连接符可以为“-”。
在本申请实施例中,UUID中的各字符串可以为任意进制数,如2进制数、16进制数或64进制数。为了减少UUID的数据量,从而减少UUID在网络传输中占用的网络资源,本申请实施例通过将UUID中的各字符串转换为较高进制的进制数来降低UUID的数据量,以进一步减少UUID在网络传输中占用的网络资源。如,将各字符串转换为64进制数。
但是,由于UUID中的设备标识字符串进行了进制数转换后,进制数转换后的设备标识字符串是无法被用户识别的,而用户需要根据某个数据对应的UUID中的设备标识字符串,获知该数据是由哪一个终端提供的,因此,在本申请实施例中,UUID中的设备标识字符串可不进行进制数的转换,即保持原始的设备标识字符串,以保证用户能够识别。
也就是说,步骤S103对各UUID进行压缩处理之前,该方法还包括:将所述可压缩字段中的时间戳字符串作为初始时间戳字符串,将所述初始时间戳字符串转换为64进制数作为当前的时间戳字符串;
将所述非可压缩字段中的各字符串作为初始非可压缩字段,将初始非可压缩字段中的各字符串转换为64进制数作为当前的非可压缩字段。
具体的,将除设备标识之外的所有字符串首先转换为2进制数,然后将2进制数的字符串中的每六位映射到“0~9”,“a~z”,“A~Z”,“-”,“_”这64个字符上的其中一个,相对于2进制数、16进制数、32进制数表示的字符串,使用64进制数表示的字符串的长度要短得多。
假设相对时间戳的长度为28位(bit);终端的类型标识字符串的长度为1bit、随机数字符串为7bit、UUID对应的数据的内容凭证字符串为6bit、UUID对应的数据的编号字符串为12bit。
由于除设备标识字符串之外的其他字符串为长度为54bit,因此,可以将该54bit转化为64进制数,转化后的字符由转换前的54个减少为9个。
例如:假设某一时刻基于上述表1生成了n个UUID,分别为:
2088902337135548-jQqAdf-Bd2;
2088902337135548-jQqADD-87O;
…
2088902337135548-jQqA9j-uP2。
以第一个UUID为例说明,其中,“-”表示字符串连接符,“2088902337135548”为可压缩字段中的终端的设备标识,“jQqA”为由可压缩字段中的相对时间戳的前24bit转化而成的四个64进制字符,“df”和“Bd2”为非可压缩字段中的字符串转化而成的五个64进制字符。由此可见,UUID中除字符串“2088902337135548”以外的54个2进制数的字符均被转换为64进制数的字符,大大降低了每个UUID的数据量。另外,每个UUID中的“2088902337135548”字符串相同,“jQqA”这四个字符也相同,非可压缩字符段中的五个字符不同,因此,各UUID中的可压缩字段可被压缩为一个“2088902337135548”字符串和一个“jQqA”字符串,各UUID中的非可压缩字符段则需要保留,这样就大大减少了UUID在网络中传输时的数据量,有效提高了数据传输速度。
上述是以终端向服务器发送数据为例说明,当服务器向终端发送数据时,服务器可通过步骤S101确定待发送的各数据,该待发送的各数据可以为服务器获取的某个线上用户在某一时刻的大量操作数据。服务器确定待发送的各数据后,通过步骤S102生成与每一数据对应的UUID,其中,与步骤S102中所述的UUID的生成方式类似,这里不再赘述,需要说明的是,UUID中的设备标识为服务器预先获取的终端的设备标识。其中,服务器在首次与终端进行通信时,就可获取终端的设备标识。服务器在确定各数据和UUID后,通过步骤S103对各UUID进行压缩,并将包括压缩后的UUID的数据发送给终端。由于服务器生成的UUID的结构与上述终端生成的UUID的结构类似,则服务器对各UUID压缩后的数据量大大降低,这样,包括压缩处理后的UUID的数据在传输的过程中就会占用较少的网络资源,从而可有效提高包含有UUID的数据的传输速率。
以上为本申请实施例提供的数据传输方法,基于同样的思路,本申请实施例还提供了一种数据传输装置,如图2所示,包括:
待发送数据确定模块11,用于确定待发送的各数据;
UUID生成模块12,用于生成与每一数据对应的UUID,其中,所述UUID包括:可压缩字段和非可压缩字段,各UUID的可压缩字段相同,各UUID的非可压缩字段互不相同;
压缩模块13,用于同时对各UUID进行压缩处理;
发送模块14,用于将包括压缩处理后的UUID的数据传输至接收端。
可选的,可压缩字段包括:设备标识字符串、时间戳字符串、用于标识所述发送端类型的类型标识字符串中的至少一个;
其中,所述设备标识字符串包括所述发送端的设备标识字符串或接收端的设备标识字符串。
可选的,所述非可压缩字段包括下述字符串中的至少一个:
随机数字符串;
所述UUID对应的数据的内容凭证字符串;
所述UUID对应的数据的编号字符串。
可选的,所述装置还包括:数据进制转换单元,用于将所述可压缩字段中的时间戳字符串作为初始时间戳字符串,将所述初始时间戳字符串转换为64进制数作为当前的时间戳字符串;以及
将所述非可压缩字段中的各字符串作为初始非可压缩字段,将初始非可压缩字段中的各字符串转换为64进制数作为当前的非可压缩字段。
可选的,压缩模块13具体用于,使用gzip压缩方法对各UUID进行压缩处理。
综上所述,本申请实施例提供的一种数据传输方法,待发送的各数据中包括与每一数据对应的UUID,其中,所述UUID包括:可压缩字段和非可压缩字段,各UUID的可压缩字段相同,各UUID的非可压缩字段互不相同;对各UUID进行压缩处理时,由于各UUID的可压缩字段相同,则各UUID的压缩率较高,这样,包括压缩处理后的UUID的数据在传输的过程中就会占用较少的网络资源,从而可有效提高包含有UUID的数据的传输速率。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。