一种标识号生成方法、生成装置、电子设备及存储介质转让专利

申请号 : CN201910779147.8

文献号 : CN110554732B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张骏杰宋忠良李阳幸子

申请人 : 北京奇艺世纪科技有限公司

摘要 :

本发明实施例提供了一种标识号生成方法、生成装置、电子设备及存储介质,其中方法包括:获取第一初始时间戳;基于第一初始时间戳,以及当前时刻与初始时刻之间的差值,确定待生成标识号的时间戳;在待生成标识号的时间戳小于历史时间戳的情况下,基于待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时钟回拨次数;基于所确定的待生成标识号的时间戳,待生成标识号的时钟回拨次数,待生成标识号的预设机器身份标识号ID,以及待生成标识号预先生成的序列号,生成待生成标识号。本发明实施例能够解决现有技术中在工作机器时钟回拨的情况下,生成的标识号重复的问题。

权利要求 :

1.一种标识号生成方法,其特征在于,所述方法包括:获取第一初始时间戳,并确定所述第一初始时间戳对应的初始时刻,所述第一初始时间戳为预设的初始标识号中的时间戳;

基于所述第一初始时间戳,以及当前时刻与所述初始时刻之间的差值,确定待生成标识号的时间戳;所述当前时刻为接收针对所述标识号的生成指令的时刻;

在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回拨次数;所述历史生成标识号为所述待生成标识号的前一已生成标识号;所述历史时间戳为所述待生成标识号的历史生成标识号对应的时间戳;

基于所确定的所述待生成标识号的时间戳,所述待生成标识号的时钟回拨次数,所述待生成标识号的预设机器身份标识号ID,以及所述待生成标识号预先生成的序列号,生成所述待生成标识号;已生成的标识号中,用于表示所述时钟回拨次数的第一号段位于用于表示所述时间戳的第二号段之前。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次数。

3.根据权利要求1或2所述的方法,其特征在于,所述在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回拨次数之前,所述方法还包括:判断所述待生成标识号的时间戳与所述历史时间戳之间的大小。

4.根据权利要求1所述的方法,其特征在于,所述基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回拨次数的步骤,包括:

将所述历史生成标识号的时钟回拨次数加一,得到所述待生成标识号的时钟回拨次数;

所述方法还包括:

将所述待生成标识号的时间戳更新为预设的第二初始时间戳;

将所述待生成标识号的序列号设置为预设的第二初始序列号。

5.根据权利要求2所述的方法,其特征在于,所述在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次数的步骤之后,所述方法还包括:在所述待生成标识号的时间戳大于所述历史时间戳的情况下,将所述待生成标识号的序列号设置为预设的第三初始序列号;

在所述待生成标识号的时间戳等于所述历史时间戳的情况下,将所述历史生成标识号的序列号与第二预设数值之和,确定为所述待生成标识号的序列号。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述待生成标识号的时间戳对应的时刻达到预设时刻时,将所述待生成标识号的时钟回拨次数与第三预设数值之和,确定为所述待生成标识号的新的时钟回拨次数;

将所述待生成标识号的时间戳更新为预设的第三初始时间戳。

7.根据权利要求1所述的方法,其特征在于,所述获取第一初始时间戳之前,所述方法还包括:

根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号;所述初始时钟回拨次数为所述初始时刻对应的时钟回拨次数,所述第一初始序列号为所述初始时刻对应的序列号。

8.根据权利要求1所述的方法,其特征在于,已生成的标识号中,用于表示所述时间戳的第二号段位于用于表示所述序列号的第三号段之前。

9.一种标识号生成装置,其特征在于,所述装置包括:处理模块,用于获取第一初始时间戳,并确定所述第一初始时间戳对应的初始时刻,所述第一初始时间戳为预设的初始标识号中的时间戳;

第一确定模块,用于基于所述第一初始时间戳,以及当前时刻与所述初始时刻之间的差值,确定待生成标识号的时间戳;所述当前时刻为接收针对所述标识号的生成指令的时刻;

第二确定模块,用于在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回拨次数;所述历史生成标识号为所述待生成标识号的前一已生成标识号;

所述历史时间戳为所述待生成标识号的历史生成标识号对应的时间戳;

生成模块,用于基于所确定的所述待生成标识号的时间戳,所述待生成标识号的时钟回拨次数,所述待生成标识号的预设机器ID,以及所述待生成标识号预先生成的序列号,生成所述待生成标识号;已生成的标识号中,用于表示所述时钟回拨次数的第一号段位于用于表示所述时间戳的第二号段之前。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:第三确定模块,用于在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次数。

11.根据权利要求9或10所述的装置,其特征在于,所述装置还包括:判断模块,用于判断所述待生成标识号的时间戳与所述历史时间戳之间的大小。

12.根据权利要求9所述的装置,其特征在于,所述第二确定模块具体用于:将所述历史生成标识号的时钟回拨次数加一,得到所述待生成标识号的时钟回拨次数;

所述装置还包括:

第一更新模块,用于将所述待生成标识号的时间戳更新为预设的第二初始时间戳;

第一设置模块,用于将所述待生成标识号的序列号设置为预设的第二初始序列号。

13.根据权利要求10所述的装置,其特征在于,所述装置还包括:第二设置模块,用于在所述待生成标识号的时间戳大于所述历史时间戳的情况下,将所述待生成标识号的序列号设置为预设的第三初始序列号;

第四确定模块,用于在所述待生成标识号的时间戳等于所述历史时间戳的情况下,将所述历史生成标识号的序列号与第二预设数值之和,确定为所述待生成标识号的序列号。

14.根据权利要求9所述的装置,其特征在于,所述装置还包括:第五确定模块,用于在所述待生成标识号的时间戳对应的时刻达到预设时刻时,将所述待生成标识号的时钟回拨次数与第三预设数值之和,确定为所述待生成标识号的新的时钟回拨次数;

第二更新模块,用于将所述待生成标识号的时间戳更新为预设的第三初始时间戳。

15.根据权利要求9所述的装置,其特征在于,所述装置还包括:组成模块,用于根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号;所述初始时钟回拨次数为所述初始时刻对应的时钟回拨次数,所述第一初始序列号为所述初始时刻对应的序列号。

16.根据权利要求9所述的装置,其特征在于,已生成的标识号中,用于表示所述时间戳的第二号段位于用于表示所述序列号的第三号段之前。

17.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现权利要求1‑8任一所述的方法步骤。

18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1‑8任一所述的方法步骤。

说明书 :

一种标识号生成方法、生成装置、电子设备及存储介质

技术领域

[0001] 本发明涉及计算机科学技术领域,特别是涉及一种标识号生成方法、生成装置、电子设备及存储介质。

背景技术

[0002] 现代互联网数据日渐增长,往往需要对大量的数据进行标识,且这些标识中不能出现相同的两个标识,例如,现在通常采用标识号对大量的数据进行标识,且这些标识号要
求在同一业务场景下全局唯一。在生成标识号的诸多算法中,由Twitter公司提出的
snowflake算法生成的标识号的位数较少,能够有效节省存储空间和减少资源占用;同时生
成的标识号呈递增趋势,而且可以通过标识号追溯来源机器。此外,snowflake算法不需要
借助第三方,其自身便可生成标识号,因此不存在因第三方组件发生故障而导致生成标识
号的过程中出现故障的情况,也不存在因与第三方组件交互的过程中产生额外的网络消耗
的情况,因此,snowflake算法在生成标识号中使用最为广泛。
[0003] 现有技术中,如图1所示,采用snowflake算法生成的标识号通常由64位二进制数组成,其中包括:1位二进制数表示符号位、41位二进制数表示时间戳,10位二进制数表示工
作机器ID,12位二进制数表示序列号。时间戳基于工作机器的本机时钟生成,在同一时间戳
对应的时刻下会生成多个标识号,因此这些标识号需由不同的序列号区分,且不同的序列
号随时间增加呈递增趋势。
[0004] 发明人在实现本发明的过程中发现,现有技术至少存在如下问题:由于时间戳基于工作机器的本机时钟生成,因此当工作机器出现时钟回拨的情况时,即工作机器的时钟
从当前时刻回退到之前的某一个时刻,例如,回退到当前时刻一小时之前的时刻等,在这种
情况下,生成的标识号的时间戳也会随之回退,如果仍按照回退后的时间戳生成的标识号,
则可能出现所生成的标识号与时钟回退之前在该时刻生成的标识号相同的情况,造成出现
标识号重复的问题。

发明内容

[0005] 本发明实施例的目的在于提供一种标识号生成方法、生成装置、电子设备及存储介质,用以解决现有技术中在工作机器时钟回拨的情况下,生成的标识号重复的问题。具体
技术方案如下:
[0006] 第一方面,本发明实施例提供了一种标识号生成方法,所述方法包括:
[0007] 获取第一初始时间戳,并确定所述第一初始时间戳对应的初始时刻,所述第一初始时间戳为预设的初始标识号中的时间戳;
[0008] 基于所述第一初始时间戳,以及所述当前时刻与所述初始时刻之间的差值,确定待生成标识号的时间戳;所述当前时刻为接收针对所述标识号的生成指令的时刻;
[0009] 在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回
拨次数;所述历史生成标识号为所述待生成标识号的前一已生成标识号;所述历史时间戳
为所述待生成标识号的历史生成标识号对应的时间戳;
[0010] 基于所确定的所述待生成标识号的时间戳,所述待生成标识号的时钟回拨次数,所述待生成标识号的预设机器ID,以及所述待生成标识号预先生成的序列号,生成所述待
生成标识号。
[0011] 可选地,所述方法还包括:
[0012] 在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次数。
[0013] 可选地,所述在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标
识号的时钟回拨次数之前,所述方法还包括:
[0014] 判断所述待生成标识号的时间戳与所述历史时间戳之间的大小。
[0015] 可选地,所述基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待生成标识号的时钟回拨次数的步骤,包括:
[0016] 将所述历史生成标识号的时钟回拨次数加一,得到所述待生成标识号的时钟回拨次数;
[0017] 所述方法还包括:
[0018] 将所述待生成标识号的时间戳更新为预设的第二初始时间戳;
[0019] 将所述待生成标识号的序列号设置为预设的第二初始序列号。
[0020] 可选地,所述在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次数的步
骤之后,所述方法还包括:
[0021] 在所述待生成标识号的时间戳大于所述历史时间戳的情况下,将所述待生成标识号的序列号设置为预设的第三初始序列号;
[0022] 在所述待生成标识号的时间戳等于所述历史时间戳的情况下,将所述历史生成标识号的序列号与第二预设数值之和,确定为所述待生成标识号的序列号。
[0023] 可选地,所述方法还包括:
[0024] 在所述待生成标识号的时间戳对应的时刻达到预设时刻时,将所述待生成标识号的时钟回拨次数与第三预设数值之和,确定为所述待生成标识号的新的时钟回拨次数;
[0025] 将所述待生成标识号的时间戳更新为预设的第三初始时间戳。
[0026] 可选地,所述获取第一初始时间戳之前,所述方法还包括:
[0027] 根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号;所述初始时钟回拨次数为所述初始时
刻对应的时钟回拨次数,所述第一初始序列号为所述初始时刻对应的序列号。
[0028] 可选地,已生成的标识号中,用于表示所述时钟回拨次数的第一号段位于用于表示所述时间戳的第二号段之前,用于表示所述时间戳的第二号段位于用于表示所述序列号
的第三号段之前。
[0029] 第二方面,本发明实施例提供了一种标识号生成装置,所述装置包括:
[0030] 处理模块,用于获取第一初始时间戳,并确定所述第一初始时间戳对应的初始时刻,所述第一初始时间戳为预设的初始标识号中的时间戳;
[0031] 第一确定模块,用于基于所述第一初始时间戳,以及所述当前时刻与所述初始时刻之间的差值,确定待生成标识号的时间戳;所述当前时刻为接收针对所述标识号的生成
指令的时刻;
[0032] 第二确定模块,用于在所述待生成标识号的时间戳小于历史时间戳的情况下,基于所述待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定所述待
生成标识号的时钟回拨次数;所述历史生成标识号为所述待生成标识号的前一已生成标识
号;所述历史时间戳为所述待生成标识号的历史生成标识号对应的时间戳;
[0033] 生成模块,用于基于所确定的所述待生成标识号的时间戳,所述待生成标识号的时钟回拨次数,所述待生成标识号的预设机器ID,以及所述待生成标识号预先生成的序列
号,生成所述待生成标识号。
[0034] 可选地,所述装置还包括:
[0035] 第三确定模块,用于在所述待生成标识号的时间戳大于或等于所述历史时间戳的情况下,将所述历史生成标识号的时钟回拨次数确定为所述待生成标识号的时钟回拨次
数。
[0036] 可选地,所述装置还包括:
[0037] 判断模块,用于判断所述待生成标识号的时间戳与所述历史时间戳之间的大小。
[0038] 可选地,所述第二确定模块具体用于:
[0039] 将所述历史生成标识号的时钟回拨次数加一,得到所述待生成标识号的时钟回拨次数;
[0040] 所述装置还包括:
[0041] 第一更新模块,用于将所述待生成标识号的时间戳更新为预设的第二初始时间戳;
[0042] 第一设置模块,用于将所述待生成标识号的序列号设置为预设的第二初始序列号。
[0043] 可选地,所述装置还包括:
[0044] 第二设置模块,用于在所述待生成标识号的时间戳大于所述历史时间戳的情况下,将所述待生成标识号的序列号设置为预设的第三初始序列号;
[0045] 第四确定模块,用于在所述待生成标识号的时间戳等于所述历史时间戳的情况下,将所述历史生成标识号的序列号与第二预设数值之和,确定为所述待生成标识号的序
列号。
[0046] 可选地,所述装置还包括:
[0047] 第五确定模块,用于在所述待生成标识号的时间戳对应的时刻达到预设时刻时,将所述待生成标识号的时钟回拨次数与第三预设数值之和,确定为所述待生成标识号的新
的时钟回拨次数;
[0048] 第二更新模块,用于将所述待生成标识号的时间戳更新为预设的第三初始时间戳。
[0049] 可选地,所述装置还包括:
[0050] 组成模块,用于根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号;所述初始时钟回拨次
数为所述初始时刻对应的时钟回拨次数,所述第一初始序列号为所述初始时刻对应的序列
号。
[0051] 可选地,已生成的标识号中,用于表示所述时钟回拨次数的第一号段位于用于表示所述时间戳的第二号段之前,用于表示所述时间戳的第二号段位于用于表示所述序列号
的第三号段之前。
[0052] 第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的
通信;所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理
器被所述机器可执行指令促使:实现本发明实施例第一方面提供的标识号生成方法的方法
步骤。
[0053] 第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一标识号生成方
法的方法步骤。
[0054] 本发明实施例有益效果:
[0055] 本发明实施例提供的一种标识号生成方法、生成装置、电子设备及存储介质,由于待生成标识号的时间戳基于第一初始时间戳以及当前时刻与初始时刻之间的差值确定,因
此当工作机器发生时钟回拨的情况后,所生成的标识号的时间戳小于发生时钟回拨之前所
生成的标识号的时间戳,当工作机器检测到待生成标识号的时间戳小于历史时间戳时,能
够根据待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成
标识号的时钟回拨次数,因此机器发生时钟回拨后生成的标识号的时钟回拨次数,与机器
发生时钟回拨前申城的标识号的时钟回拨次数不同,进而使得工作机器发生时钟回拨后所
生成的标识号,与工作机器发生时钟回拨前所生成的标识号不同,从而避免出现标识号重
复的问题。
[0056] 当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

[0057] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0058] 图1为现有技术中snowflake算法生成的标识号的结构示意图;
[0059] 图2为本发明实施例提供的标识号生成方法的第一种流程示意图;
[0060] 图3a为本发明实施例提供的在第一种情况下生成标识号的示意图;
[0061] 图3b为本发明实施例提供的在第二种情况下生成标识号的示意图;
[0062] 图3c为本发明实施例提供的在第三种情况下生成标识号的示意图;
[0063] 图4为本发明实施例提供的标识号生成方法的第二种流程示意图;
[0064] 图5为本发明实施例提供的标识号生成方法的第三种流程示意图;
[0065] 图6为本发明实施例提供的标识号生成方法的第四种流程示意图;
[0066] 图7为本发明实施例提供的标识号生成方法的第五种流程示意图;
[0067] 图8为本发明实施例提供的标识号生成方法的第六种流程示意图;
[0068] 图9为本发明实施例提供的标识号生成方法的第七种流程示意图;
[0069] 图10为本发明实施例中标识号的结构示意图;
[0070] 图11为本发明实施例提供的标识号生成装置的第一种结构示意图;
[0071] 图12为本发明实施例提供的标识号生成装置的第二种结构示意图;
[0072] 图13为本发明实施例提供的标识号生成装置的第三种结构示意图;
[0073] 图14为本发明实施例提供的标识号生成装置的第四种结构示意图;
[0074] 图15为本发明实施例提供的标识号生成装置的第五种结构示意图;
[0075] 图16为本发明实施例提供的标识号生成装置的第六种结构示意图;
[0076] 图17为本发明实施例提供的标识号生成装置的第七种结构示意图;
[0077] 图18为本发明实施例提供的电子设备的一种结构示意图。

具体实施方式

[0078] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0079] 如图1所示,现有的snowflake算法生成的标识号通常为64位二进制序列,其中:1位二进制数表示符号位,41位二进制数表示时间戳,10位二进制数表示机器ID,12位二进制
数表示序列号。由于现有的snowflake算法生成的标识号的时间戳的最小计数单位可以为
41 10
毫秒,因此其可以表示的时间范围为2 /(3600*24*365*1000)≈69.7年;可以部署到2 =
12
1024台工作机器中,在一毫秒内同一个工作机器,可以容纳2 =4096个不同的标识号。表示
工作机器ID的二进制数的位数和表示序列号的二进制数的位数之和,决定了系统的并发能
力,即,现有的snowflake算法能够支持1024*4096=4194304个并发。
[0080] 时间戳基于工作机器的本机时钟生成,即时间戳与本机时钟相对应,当工作机器出现时钟回拨的情况时,即工作机器从当前时刻回拨到之前的某一个时刻,例如,本机时钟
从十三点回拨到十二点,假设在时钟回拨之前,仅有十二点和十二点半分别生成一个标识
号,时钟回拨前十二点生成的标识号中的时间戳与十二点对应,时钟回拨前十二点半生成
的标识号的时间戳与十二点半对应。在生成标识号之前,通常先生成时间戳,并将该时间戳
与前一时刻生成的标识号的时间戳相比较,如果不相同时,则序列号从0开始计数,由于时
钟回拨后十二点生成的时间戳与十二点对应,小于时钟回拨前十二点半生成标识号的时间
戳,则时钟回拨后十二点生成的标识号的序列号从0开始计数,因此,可能出现时钟回拨后
在十二点生成的标识号与时钟回拨前在十二点生成的标识号相同的情况,即出现标识号重
复的问题。
[0081] 有鉴于此,本发明实施例提供的标识号生成方法,在待生成的标识号中增加时钟回拨次数。在待生成标识号的时间戳小于待生成标识号的前一已生成标识号的历史时间戳
的情况下,表明工作机器发生时钟回拨,则将历史生成标识号中的时钟回拨次数增加第一
预设数值,得到待生成标识号的时钟回拨次数。因此,发生时钟回拨后生成的标识号中的时
钟回拨次数,与时钟回拨前生成的标识号中的时钟回拨次数不同,即,发生时钟回拨后生成
的标识号与时钟回拨前生成的标识号不同,因此,能够避免出现标识号重复的问题。
[0082] 如图2所示,本发明实施例提供了一种标识号生成方法,该过程可以包括以下步骤:
[0083] S110,获取第一初始时间戳,并确定第一初始时间戳对应的初始时刻。
[0084] 本发明实施例提供的标识生成方法所生成的标识号可以为64位二进制序列。
[0085] 第一初始时间戳为预设的初始标识号中的时间戳,该第一初始时间戳可以为预设的时间戳,其通常为0。第一初始时间戳和初始时刻具有一一对应的关系,初始时刻为用户
根据需求预设的一个时刻,例如,用户通过相应的设置使工作机器从a1时刻开始生成标识
号,则该a1时刻即为初始时刻,即,a1时刻所对应的初始时间戳为0。
[0086] 时间戳的最小计数单位可以为毫秒或者纳秒,例如,当时间戳的最小计数单位为毫秒时,如果两个标识号中的时间戳相差一,则表明两个时间戳分别所对应的标识号的生
成时刻,相差一毫秒。因此,前述的a1时刻例如可以为12点第一毫秒。
[0087] S120,基于第一初始时间戳,以及当前时刻与初始时刻之间的差值,确定待生成标识号的时间戳。
[0088] 在本发明实施例中,当前时刻为接收针对标识号的生成指令的时刻,工作机器在接收到针对标识号的生成指令后,即刻生成待生成标识号的时间戳。该时间戳可以将第一
初始时间戳,与当前时刻与初始时刻之间的差值相加得到,例如,初始时刻的a1时刻,当前
时刻为b0时刻,而第一初始时间戳通常为0,因此,待生成标识号的时间戳为b0‑a1。当时间
戳的最小计数单位为毫秒时,需要计算b0与a1之间相差多少毫秒,例如,当a1为12点的第一
毫秒,b0为12点第二毫秒,则待生成标识号的时间戳即为1。在计算出差值后将该相差的毫
秒数转换为二进制数,即可得到待生成标识号的时间戳。需要说明的是,初始时刻以及当前
时刻均为生成标识号的工作机器的本机时刻。
[0089] 参见图2,S130,在待生成标识号的时间戳小于历史时间戳的情况下,基于待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时钟
回拨次数。
[0090] 在本发明实施例中,历史时间戳可以指,待生成标识号的历史生成标识号对应的时间戳,该历史生成标识号可以指,待生成标识号的前一已生成标识号。
[0091] 如图3a所示,时间轴的指向表示较晚的时刻,即b0时刻晚于b1时刻。假设本机时钟从c1时刻回拨到a1时刻,在时钟回拨之前的b0时刻生成一个标识号,在时钟回拨之前的b0
时刻至时钟回拨之后的b1时刻之间没有生成其它标识号,当时钟回拨后b1时刻将要生成的
标识号为待生成标识号时,b0时刻所生成的标识号即为历史生成标识号,由于待生成标识
号的时间戳与b1时刻对应,历史生成标识号的时间戳与b0时刻对应,因此待生成标识的时
间戳小于历史生成标识号的时间戳,表明工作机器发生过时钟回拨并能够检测到时钟回
拨,该种情况下,可以将b0时刻生成的历史生成标识号的时钟回拨次数增加第一预设数值,
得到b1时刻生成的时钟回拨次数。
[0092] 需要说明的是,第一预设数值可以设置为大于0的整数,例如可以设置为1。这样一来,发生时钟回拨后,工作机器所生成的标识号的时钟回拨次数,大于工作机器发生时钟回
拨前所生成的标识号的时钟回拨次数。
[0093] 作为本发明一种可选的实施方式,也可以将第一预设数值设置为小于0的整数,例如,可以设置为‑1,这样一来,发生时钟回拨后,工作机器所生成的标识号的时钟回拨次数,
小于工作机器发生时钟回拨前所生成的标识号的时钟回拨次数。
[0094] 参见图2,S140,基于所确定的待生成标识号的时间戳,待生成标识号的时钟回拨次数,待生成标识号的预设机器ID,以及待生成标识号预先生成的序列号,生成待生成标识
号。
[0095] 机器ID在标识号中所占的位数可以为10位,可以部署到210=1024台工作机器中,因此可以预设不同工作机器与不同机器ID之间的对应关系,由此可以确定生成标识号的该
工作机器对应的机器ID;可以通过预设的规则预先生成待生成标识号的序列号。将预设的
符号位、待生成标识号的时间戳、待生成标识号的时钟回拨次数、待生成标识号的预设机器
ID,以及待生成标识号预先生成的序列号组成待生成标识号。
[0096] 作为本发明实施例一种可选的实施方式,在图2所示实施例流程的基础上,如图4所示,本发明实施例提供的方法还可以包括:
[0097] S310,在待生成标识号的时间戳大于或等于历史时间戳的情况下,将历史生成标识号的时钟回拨次数确定为待生成标识号的时钟回拨次数。
[0098] 如果待生成标识号的时间戳大于或等于历史时间戳,表明工作机器可能出现以下三种情况:第一种情况,例如图3b,本机时钟发生过时钟回拨,但是并未检测到,即工作机器
在时钟回拨之前的某一时刻,例如b0时刻,生成标识号,在时钟回拨后相同的时刻(b0时刻)
再次生成标识号,而在时钟回拨后的b0时刻与时钟回拨之前的b0时刻之间没有生成标识
号;第二种情况,例如图3c,本机时钟发生过时钟回拨,但是并未检测到,即在时钟回拨之前
的某一时刻,例如b0时刻,生成标识号,在时钟回拨后晚于b0时刻的b2时刻再次生成标识
号,而在时钟回拨之前的b0时刻至时钟回拨之后的b2时刻之间没有生成标识号;第三种情
况,工作机器的本机时钟没有发生过时钟回拨。
[0099] 不论出现以上三种情况中的哪一种情况,均可以将历史生成标识号的时钟回拨次数确定为待生成标识号的时钟回拨次数,即,当历史生成标识号的时钟回拨次数为1时,则
将待生成标识号的时钟回拨次数确定为1。这样一来,可以最大化利用时钟回拨次数的资
源,避免资源的浪费。
[0100] 作为本发明实施例一种可选的实施方式,在图2所示实施例流程步骤S130之前,如图5所示,本发明实施例提供的方法还可以包括:
[0101] S220,判断待生成标识号的时间戳与历史时间戳之间的大小。
[0102] 由于标识号的时间戳与工作机器的本机时钟相对应,因此通过判断待生成标识号的时间戳与历史时间戳之间的大小,即可以判断工作机器是否发生时钟回拨。例如,工作机
器的时钟从十三点回拨至十二点,则工作机器在时钟回拨后,十二点所生成的标识号的时
间戳与十二点对应,工作机器在十三点生成的标识号的时间戳与十三点对应,因此,回拨至
十二点对应的时间戳小于十三点对应的时间戳,表明工作机器发生过时钟回拨。
[0103] 作为本发明实施例一种可选的实施方式,基于待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时钟回拨次数的步骤,可以包括:
[0104] 将历史生成标识号的时钟回拨次数加一,得到待生成标识号的时钟回拨次数。
[0105] 为了使得标识号中用于表示时钟回拨次数的第一号段中的二进制序列可以得到最大化的利用,避免标识号中资源的浪费,可以将历史生成标识号的时钟回拨次数加一,得
到待生成标识号的时钟回拨次数。
[0106] 在图2所示实施例流程的基础上,如图6所示,在待生成标识号的时间戳小于历史时间戳的情况下,本发明实施例提供的方法还可以包括:
[0107] S230,将待生成标识号的时间戳更新为预设的第二初始时间戳。
[0108] 当工作机器发生时钟回拨后,将历史生成标识号的时钟回拨次数加上第一预设数值后,得到待生成标识号的时钟回拨次数之后,还可以将待生成标识号的时间戳更新为第
二初始时间戳,该第二初始时间戳可以与第一初始时间戳相同,即为0。由于工作机器发生
时钟回拨后,生成的待生成标识号的时钟回拨次数大于历史生成标识号的时钟回拨次数,
因此,待生成标识号大于历史生成标识号。用于表示时间戳的第二号段位于用于表示时钟
回拨次数的第一号段之后,因此,待生成标识号的时间戳与历史生成标识号的时间戳之间
的大小关系,并不影响待生成标识号与历史生成标识号之间的大小关系。因此将待生成标
识号的时间戳更新为0,在不影响不同标识号之间的大小关系的情况下,即在不影响多个时
刻生成的不同标识号呈递增趋势的情况下,能够避免资源的浪费。
[0109] S240,将待生成标识号的序列号设置为预设的第二初始序列号。
[0110] 第二初始序列号可以和第一初始序列号相同,即将第二初始序列号设置为0。将待生成标识号的序列号设置为预设的第二初始序列号所能达到的有益效果,与将待生成标识
号的时间戳更新为第二初始时间戳所能达到的有益效果相同,本发明实施例此处不再赘
述。
[0111] 作为本发明实施例一种可选的实施方式,在图4所示实施例流程步骤S310之后,如图7所示,本发明实施例提供的方法还可以包括:
[0112] S320,在待生成标识号的时间戳大于历史时间戳的情况下,将待生成标识号的序列号设置为预设的第三初始序列号。
[0113] 在本发明实施例中,第三初始序列号可以和第一初始序列号相同,即将第三初始序列号设置为0。
[0114] 例如,如图3c所示,b2时刻所生成标识号为待生成标识号时,b0时刻所生成的标识号即为历史生成标识号,历史时间戳为该历史生成标识号的时间戳,由于b2时刻晚于b0时
刻,因此b2时刻所生成的历史生成标识号的历史时间戳,大于,b0时刻将要生成的待生成标
识号的时间戳,在该种情况下,在将历史生成标识号的时钟回拨次数确定为待生成标识号
的时钟回拨次数的同时,还可以将待生成标识号的序列号设置为0,这样一来,可以使工作
机器在新的时间戳下生成的标识号再次从0开始计算序列号,因此可以最大化利用序列号
的资源,避免资源的浪费,并且由于新的时间戳大于历史生成标识号的历史时间戳,因此待
生成标识号依然大于历史生成标识号。
[0115] S330,在待生成标识号的时间戳等于历史时间戳的情况下,将历史生成标识号的序列号与第二预设数值之和,确定为待生成标识号的序列号。
[0116] 如图3b所示,时钟回拨后的b0时刻将要生成的标识号为待生成标识号,则时钟回拨前的b0时刻生成的标识号即为历史生成标识号,由于这两个标识号均是在b0时刻生成
的,因此历史生成标识号的时间戳与待生成标识号的时间戳相同,在该种情况下,可以将历
史生成标识号的序列号与第二预设数值相加,得到待生成标识号的序列号,此处的第二预
设数值可以为1。由于待生成标识号的时钟回拨次数与历史生成标识号的时钟回拨次数相
同,且两者的时间戳也相同,而待生成标识号的序列号大于历史生成标识号的序列号,因
此,待生成标识号大于历史生成标识号,也满足多个标识号呈递增趋势的要求。
[0117] 作为本发明实施例一种可选的实施方式,在图2所示实施例流程的基础上,如图8所示,本发明实施例提供的方法还可以包括:
[0118] S410,在待生成标识号的时间戳对应的时刻达到预设时刻时,将待生成标识号的时钟回拨次数与第三预设数值之和,确定为待生成标识号的新的时钟回拨次数。
[0119] 在本发明实施例中,预设时刻可以指,待生成标识号的时间戳满位时对应的时刻,即待生成标识号的时间戳的二进制数均为1,无法再进位时对应的时刻。该种情况表明,在
时间戳所能表示的时间范围内均没有发生时钟回拨,或者发生如图4所示实施例中步骤
S310中所列的第一种情况和第二种情况。此时,则可以将待生成标识号的时钟回拨次数增
加第三预设数值,得到待生成标识号的新的时钟回拨次数。此处的第三预设数值可以为1。
[0120] S420,将待生成标识号的时间戳更新为预设的第三初始时间戳。
[0121] 在本发明实施例中,第三初始时间戳可以和第一初始时间戳相同,即将第三初始时间戳设置为0。由于待生成标识号的时钟回拨次数大于历史生成标识号的时钟回拨次数,
因此待生成标识号大于历史生成标识号,因此可以将待生成标识号的时间戳更新为0,并建
立当前时刻与该时间戳的对应关系,其后生成标识号的时间戳可以基于当前时刻与其对应
的时间戳进行计算确定。在此基础上,还可以将待生成标识号的序列号设置为0。通过上述
S410~420的步骤,使得待生成标识号的时间戳达到预设的时刻时,还可以通过本发明实施
例的标识号生成方法继续生成标识号,由于所生成标识号的时钟回拨次数,与待生成标识
号的时间戳达到预设的时刻之前,所生成的标识号的时钟回拨次数不同,因此,在能够避免
出现标识号重复的问题的基础上,可以进一步增加本发明实施例提供的标识号生成方法所
生成标识号的总数量。
[0122] 需要说明的是,由于本发明实施例提供的标识号生成方法所生成的标识号可以为64位二进制序列,在使用中,可以根据实际需求选择每个号段的二进制数的位数,示例性
的,可以将表示符号位的号段、表示时钟回拨次数的号段、表示时间戳的号段、表示机器ID
的号段,以及表示序列号的号段分别设置为1位、10位、31位、10位以及12位二进制数。因此,
31
当时间戳的最小计数单位为毫秒时,时间戳可以表示的时间范围为2 /(3600*24*1000)≈
24.86天。假设工作机器在生成标识号的过程中,均没有发生时钟回拨,每当待生成标识号
的时间戳达到预设的时刻时,并且当序列号达到预设的数量时,可以通过将待生成标识号
的时钟回拨次数加一,并将时间戳和序列号分别设置为0,则时间戳所能表示的时间范围为
10
24.86*2 /365≈69.7年,在该种情况下,本发明实施例提供的生成标识号的方法所能生成
的标识号的总数量,与现有的snowflake算法所能生成后的标识号的总数量相同。此处需要
说明的是,序列号达到预设的数量可以指,表示序列号的号段的二进制数满位,即该二进制
数每一位的数字均为1。
[0123] 作为本发明实施例一种可选的实施方式,在图2所示实施例的步骤S110之前,如图9所示,本发明实施例提供的标识号生成方法还可以包括:
[0124] S210,根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号。
[0125] 在本发明实施例中,初始时钟回拨次数为初始时刻对应的时钟回拨次数,第一初始序列号为初始时刻对应的序列号。
[0126] 由于本发明实施例中的标识号为带符号长整型,是编程语言中的一种常见的整数类型,通常最高位表示该符号位,符号位为0表示该数为正数,符号位为1表示该数为负数,
因此,可以将预设的符号位设置为0,而且该预设的符号位位于标识号的最高位。
[0127] 时钟回拨次数用于标识生成标识号的工作机器的时钟是否被回拨,可以将初始时钟回拨次数设置为0。
[0128] 机器ID在标识号中所占的位数可以为10位,可以部署到210=1024台工作机器中,因此可以预设不同工作机器与不同机器ID之间的对应关系。
[0129] 在同一个时间戳对应的时刻下,例如在在本发明实施例中同一毫秒的时刻下,会生成多个标识号,这些标识号需由不同的序列号区分,且不同的序列号随时间增加呈递增
趋势,因此可以将第一初始序列号设置为0。
[0130] 可以根据预设的规则将符号位、时钟回拨次数、第一初始时间戳、机器ID和第一初始序列号组成初始标识号,它们在初始标识号中的对应的号段的位置,本发明实施例不做
限定,示例性的,通常为了保证工作机器所生成的标识号呈递增趋势,可以将表示序列号的
第三号段设置在表示时间戳的第二号段之后。
[0131] 作为本发明一种可选的实施方式,如图10所示,在已生成标识号中,用于表示时钟回拨次数的第一号段位于用于表示时间戳的第二号段之前,用于表示时间戳的第二号段位
于用于表示序列号的第三号段之前。将用于表示时钟回拨次数的第一号段设置在用于表示
时间戳的第二号段之前,使得同一工作机器采用本发明实施例提供的方法,生成的标识号
可以基于长整型判断标识号的大小。即,在判断同一工作机器生成的标识号的过程中,符号
位都相同,因此可以直接判断时钟回拨次数,时钟回拨次数越大,则表明该标识号也越大,
当时钟回拨次数相同时,表明在生成这两个标识号的时间段内,工作机器没有发生时钟回
拨,则较大的时间戳对应的标识号较大。
[0132] 本发明实施例提供的本发明实施例提供的一种标识号生成方法,由于待生成标识号的时间戳基于第一初始时间戳以及当前时刻与初始时刻之间的差值确定,因此当工作机
器发生时钟回拨的情况后,所生成的标识号的时间戳小于发生时钟回拨之前所生成的标识
号的时间戳,当工作机器检测到待生成标识号的时间戳小于历史时间戳时,能够根据待生
成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时
钟回拨次数,因此机器发生时钟回拨后生成的标识号的时钟回拨次数,与机器发生时钟回
拨前申城的标识号的时钟回拨次数不同,进而使得工作机器发生时钟回拨后所生成的标识
号,与工作机器发生时钟回拨前所生成的标识号不同,从而避免出现标识号重复的问题。
[0133] 本发明实施例提供了一种标识号生成装置的一种具体实施例,与图2所示流程相对应,参考图11,图11为本发明实施例的一种标识号生成装置的一种结构示意图,包括:
[0134] 处理模块510,用于获取第一初始时间戳,并确定第一初始时间戳对应的初始时刻,第一初始时间戳为预设的初始标识号中的时间戳。
[0135] 第一确定模块520,用于基于第一初始时间戳,以及当前时刻与初始时刻之间的差值,确定待生成标识号的时间戳;当前时刻为接收针对标识号的生成指令的时刻。
[0136] 第二确定模块530,用于在待生成标识号的时间戳小于历史时间戳的情况下,基于待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号
的时钟回拨次数;历史生成标识号为待生成标识号的前一已生成标识号;历史时间戳为待
生成标识号的历史生成标识号对应的时间戳。
[0137] 生成模块540,用于基于所确定的待生成标识号的时间戳,待生成标识号的时钟回拨次数,待生成标识号的预设机器ID,以及待生成标识号预先生成的序列号,生成待生成标
识号。
[0138] 作为本发明实施例一种可选的实施方式,在图11所示装置结构的基础上,如图12所示,本发明实施例提供的装置还可以包括:
[0139] 第三确定模块610,用于在待生成标识号的时间戳大于或等于历史时间戳的情况下,将历史生成标识号的时钟回拨次数确定为待生成标识号的时钟回拨次数。
[0140] 作为本发明实施例一种可选的实施方式,在图11所示装置结构的基础上,如图13所示,本发明实施例提供的装置还可以包括:
[0141] 判断模块620,用于判断待生成标识号的时间戳与历史时间戳之间的大小。
[0142] 作为本发明实施例一种可选的实施方式,上述第二确定模块530具体用于:
[0143] 将历史生成标识号的时钟回拨次数加一,得到待生成标识号的时钟回拨次数。
[0144] 在图11所示装置结构的基础上,如图14所示,本发明实施例提供的装置还可以包括:
[0145] 第一更新模块630,用于将待生成标识号的时间戳更新为预设的第二初始时间戳。
[0146] 第一设置模块640,用于将待生成标识号的序列号设置为预设的第二初始序列号。
[0147] 作为本发明实施例一种可选的实施方式,在图12所示装置结构的基础上,如图15所示,本发明实施例提供的装置还可以包括:
[0148] 第二设置模块650,用于在待生成标识号的时间戳大于历史时间戳的情况下,将待生成标识号的序列号设置为预设的第三初始序列号。
[0149] 第四确定模块660,用于在待生成标识号的时间戳等于历史时间戳的情况下,将历史生成标识号的序列号与第二预设数值之和,确定为待生成标识号的序列号。
[0150] 作为本发明实施例一种可选的实施方式,在图11所示装置结构的基础上,如图16所示,本发明实施例提供的装置还可以包括:
[0151] 第五确定模块670,用于在待生成标识号的时间戳对应的时刻达到预设时刻时,将待生成标识号的时钟回拨次数与第三预设数值之和,确定为待生成标识号的新的时钟回拨
次数。
[0152] 第二更新模块680,用于将待生成标识号的时间戳更新为预设的第三初始时间戳。
[0153] 作为本发明实施例一种可选的实施方式,在图11所示装置结构的基础上,如图17所示,本发明实施例提供的装置还可以包括:
[0154] 组成模块690,用于根据预设的符号位,预设的初始时钟回拨次数,预设的第一初始时间戳,预设的机器ID,以及预设的第一初始序列号,组成初始标识号;初始时钟回拨次
数为初始时刻对应的时钟回拨次数,第一初始序列号为初始时刻对应的序列号。
[0155] 作为本发明实施例一种可选的实施方式,已生成的标识号中,用于表示时钟回拨次数的第一号段位于用于表示时间戳的第二号段之前,用于表示所述时间戳的第二号段位
于用于表示所述序列号的第三号段之前。
[0156] 本发明实施例提供的本发明实施例提供的一种标识号生成装置,由于待生成标识号的时间戳基于第一初始时间戳以及当前时刻与初始时刻之间的差值确定,因此当工作机
器发生时钟回拨的情况后,所生成的标识号的时间戳小于发生时钟回拨之前所生成的标识
号的时间戳,当工作机器检测到待生成标识号的时间戳小于历史时间戳时,能够根据待生
成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时
钟回拨次数,因此机器发生时钟回拨后生成的标识号的时钟回拨次数,与机器发生时钟回
拨前申城的标识号的时钟回拨次数不同,进而使得工作机器发生时钟回拨后所生成的标识
号,与工作机器发生时钟回拨前所生成的标识号不同,从而避免出现标识号重复的问题。
[0157] 本发明实施例还提供了一种电子设备,如图18所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线
704完成相互间的通信。
[0158] 存储器703,用于存放计算机程序。
[0159] 处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
[0160] 获取第一初始时间戳,并确定第一初始时间戳对应的初始时刻,第一初始时间戳为预设的初始标识号中的时间戳。
[0161] 基于第一初始时间戳,以及当前时刻与初始时刻之间的差值,确定待生成标识号的时间戳;当前时刻为接收针对标识号的生成指令的时刻。
[0162] 在待生成标识号的时间戳小于历史时间戳的情况下,基于待生成标识号的历史生成标识号的时钟回拨次数与第一预设数值之和,确定待生成标识号的时钟回拨次数;历史
生成标识号为待生成标识号的前一已生成标识号;历史时间戳为待生成标识号的历史生成
标识号对应的时间戳。
[0163] 基于所确定的待生成标识号的时间戳,待生成标识号的时钟回拨次数,待生成标识号的预设机器ID,以及待生成标识号预先生成的序列号,生成待生成标识号。
[0164] 本发明实施例提供的一种电子设备,由于待生成标识号的时间戳基于第一初始时间戳以及当前时刻与初始时刻之间的差值确定,因此当工作机器发生时钟回拨的情况后,
所生成的标识号的时间戳小于发生时钟回拨之前所生成的标识号的时间戳,当工作机器检
测到待生成标识号的时间戳小于历史时间戳时,能够根据待生成标识号的历史生成标识号
的时钟回拨次数与第一预设数值之和,确定待生成标识号的时钟回拨次数,因此机器发生
时钟回拨后生成的标识号的时钟回拨次数,与机器发生时钟回拨前申城的标识号的时钟回
拨次数不同,进而使得工作机器发生时钟回拨后所生成的标识号,与工作机器发生时钟回
拨前所生成的标识号不同,从而避免出现标识号重复的问题。
[0165] 上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry  Standard 
Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便
于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0166] 通信接口用于上述电子设备与其他设备之间的通信。
[0167] 存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non‑Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可
以是至少一个位于远离前述处理器的存储装置。
[0168] 上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal 
Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现
场可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立
门或者晶体管逻辑器件、分立硬件组件。
[0169] 在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一标识号生
成方法的步骤。
[0170] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序
产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或
部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质
中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机
指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字
用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或
数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者
是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以
是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘
Solid State Disk(SSD))等。
[0171] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0172] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围
内。