发明内容
本发明实施例提供了一种流水号生成方法、装置、终端设备及计算机可读存储介质,能够有效缩短UUID的占用位数,以生成长度较短的流水号,从而可在降低流水号冲突概率的同时,满足不同场合的使用需求,提高UUID的适用性。
本发明实施例的第一方面,提供了一种流水号生成方法,包括:
在接收到流水号的生成请求时,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;
对所述UUID进行预设进制的转换,得到预设位数的新UUID;
为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。
进一步地,所述预设进制为36进制、62进制、64进制或者128进制;
相应地,所述对所述UUID进行预设进制的转换,包括:
将所述UUID的16进制数转换为36进制数、62进制数、64进制数或者128进制数。
优选地,所述对所述UUID进行预设进制的转换,得到预设位数的新UUID,包括:
将所述UUID拆分成两个或者两个以上的组成部分;
分别对各个组成部分进行预设进制的转换,并将转换后的组成部分按照拆分时的顺序进行组合,得到预设位数的新UUID。
可选地,所述预设位数为19位;
相应地,所述根据所述随机数和所述新UUID生成所述流水号,包括:
根据所述随机数和所述新UUID生成位数为20位的所述流水号。
进一步地,所述为所述生成请求产生一随机数,包括:
为所述生成请求产生一初始随机数;
对所述初始随机数进行预设进制的转换,得到所述随机数。
本发明实施例的第二方面,提供了一种流水号生成装置,包括:
识别码产生模块,用于在接收到流水号的生成请求时,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;
预设进制转换模块,用于对所述UUID进行预设进制的转换,得到预设位数的新UUID;
流水号生成模块,用于为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。
进一步地,所述预设进制为36进制、62进制、64进制或者128进制;
相应地,所述预设进制转换模块,具体用于将所述UUID的16进制数转换为36进制数、62进制数、64进制数或者128进制数。
优选地,所述预设进制转换模块,包括:
拆分单元,用于将所述UUID拆分成两个或者两个以上的组成部分;
转换单元,用于分别对各个组成部分进行预设进制的转换,并将转换后的组成部分按照拆分时的顺序进行组合,得到预设位数的新UUID。
本发明实施例的第三方面,提供了一种流水号生成终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如前述第一方面所述流水号生成方法的步骤。
本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面所述流水号生成方法的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,在接收到流水号的生成请求时,首先,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;其次,对所述UUID进行预设进制的转换,得到预设位数的新UUID;最后,为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。本发明实施例中,通过对所产生的UUID进行预设进制的转换,可得到预设位数小于32位的新UUID,以有效缩短UUID的占用位数,从而可生成长度较短的流水号,能在确保流水号冲突概率低的基础上满足不同场合的使用需求,提高UUID的适用性。
具体实施方式
本发明实施例提供了一种流水号生成方法、装置、终端设备及计算机可读存储介质,用于缩短所产生的UUID的占用位数,以生成长度较短的流水号,从而可在降低流水号冲突概率的同时,满足不同场合的使用需求,提高UUID的适用性。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供的流水号生成方法的应用环境包括客户端、网络和服务器,并且客户端通过网络与服务器通信连接,其中,客户端为移动终端、桌上型计算机、笔记本、掌上电脑或者智能穿戴设备等电子设备,网络为有线网络或者无线网络,服务器为本地服务器或者云端服务器等。
如图1所示,本发明实施例一提供了一种流水号生成方法,所述流水号生成方法,包括:
步骤S101、在接收到流水号的生成请求时,产生一通用唯一识别码UUID,所述UUID包含32位16进制数。
可以理解的是,当用户在客户端中提交相应的操作请求时,如提交交易请求或者提交身份认证请求时,所述客户端即发送生成与所述操作请求对应的流水号的生成请求至所述服务器,所述服务器在接收到所述生成请求后,即产生一个与所述操作请求对应的通用唯一识别码UUID,所产生的所述UUID包含32位16进制数,即所产生的所述UUID包含32个16进制数字,如所产生的所述UUID为xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx,其中,每一个x均是0至9或者a至f范围内的一个十六进制的数字。
步骤S102、对所述UUID进行预设进制的转换,得到预设位数的新UUID。
可以理解的是,本实施例中,在产生了包含32位16进制数的所述UUID后,所述服务器即对所述UUID进行预设进制的转换,即将所述UUID中的16进制数转换为预设进制数,从而降低占用位数,以得到预设位数小于32位的新UUID。
进一步地,本实施例中,所述预设进制为36进制、62进制、64进制或者128进制;相应地,所述对所述UUID进行预设进制的转换,包括:
将所述UUID的16进制数转换为36进制数、62进制数、64进制数或者128进制数。
可以理解的是,本实施例中,在产生了包含32位16进制数的所述UUID后,所述服务器即对所述UUID进行36进制、62进制、64进制或者128进制的转换,即将所述UUID中的16进制数转换为36进制数、62进制数、64进制数或者128进制数,从而降低占用位数,以得到预设位数明显小于32位的新UUID。本实施例中,所述服务器优选地对所产生的所述UUID进行62进制的转换,即将所产生的所述UUID的16进制数转换为62进制数,从而得到新UUID,也就是说,所述新UUID中的每一位数均为0至9或者a至z或者A至Z范围内的一个六十二进制的数字。
优选地,本实施例中,所述对所述UUID进行预设进制的转换,得到预设位数的新UUID,具体包括:步骤a、将所述UUID拆分成两个或者两个以上的组成部分;步骤b、分别对各个组成部分进行预设进制的转换,并将转换后的组成部分按照拆分时的顺序进行组合,得到预设位数的新UUID。
可以理解的是,本实施例中,在接收到流水号的生成请求时,所产生的UUID的形式可以为:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中,每一个x均是0至9或者a至f范围内的一个十六进制的数字,例如在某一具体应用中,所产生的UUID为:12345678-abcd-91ef-abcdef0123456789,而本实施例中,可将该UUID拆分成“12345678”、“abcd”、“91ef”以及“abcdef0123456789”四个组成部分,随之可分别对这四个组成部分进行预设进制的转换,如将“12345678”转换为36进制、62进制、64进制或者128进制,以得到第一个转换后的数据;将“abcd”转换为36进制、62进制、64进制或者128进制,以得到第二个转换后的数据;将“91ef”转换为36进制、62进制、64进制或者128进制,以得到第三个转换后的数据;将“abcdef0123456789”转换为36进制、62进制、64进制或者128进制,以得到第四个转换后的数据,最后将所得到的这四个转换后的数据按照拆分时的顺序,即按照第一个转换后的数据在首位,第四个转换后的数据在末位的顺序进行组合,从而得到所述新UUID。
需要说明的是,由同一UUID拆分而成的多个组成部分在进行预设进制的转换中,所采用的预设进制相同,如将多个组成部分均转换为62进制,或者将多个组成部分均转换为64进制。进一步地,上述拆分成四个组成部分仅作示意性解释,不应理解为对本实施的限制。
可选地,本实施例中,所述预设位数为19位,即本实施例中,进行预设进制转换后得到的新UUID的位数为19位,也就是说,本实施例中,通过对初始产生的16进制的UUID进行36进制、62进制、64进制或者128进制的转换以得到占用位数更小的新UUID,从而有效缩短UUID的长度,达到降低流水号长度的目的,以满足不同场合的使用需求。
需要说明的是,本实施例中,36进制、62进制、64进制和128进制仅做示意性解释,不应理解为对本发明实施例的限制,本发明实施例中当然也可转换为其他任何能达到减少UUID占用位数的进制数。
步骤S103、为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。
可以理解的是,本实施例中,在得到所述新UUID后,随之可为所述生成请求产生一随机数,并将所述随机数添加至所述新UUID的末位,以生成所述生成请求所需的流水号,其中,所述流水号的位数小于初始产生的UUID的位数,即所述流水号的位数小于32位。
本实施例中,所述新UUID是由初始产生的UUID缩短而来,因而由所述新UUID生成的流水号的冲突概率与UUID冲突的概率一样,极为低,从而可有效解决流水号冲突的问题。同时,因所述新UUID是由初始产生的UUID缩短而来,即其对初始产生的32位的UUID进行了有效缩减,减少了所述新UUID的长度,使得其可满足不同场合的使用需求,尤其是要求流水号长度小于32位的场合的使用需求。
进一步地,本实施例中,所述为所述生成请求产生一随机数,具体包括:步骤c、为所述生成请求产生一初始随机数;步骤d、对所述初始随机数进行预设进制的转换,得到所述随机数。
可以理解的是,本实施例中,可先为所述生成请求产生一初始随机数,其中,所述初始随机数可为二进制、八进制、十进制、十六进制等任何进制的数字,然后可对所述初始随机数进行36进制、62进制、64进制或者128进制的转换,从而得到进制与所述新UUID相同的随机数,如若所述新UUID为36进制的话,则将所述初始随机数转换为36进制的随机数;而若所述新UUID为62进制的话,则将所述初始随机数转换为62进制的随机数。
优选地,本实施例中,所述随机数所占用的位数为1位,所述新UUID所占用的预设位数为19位,因而,所述根据所述随机数和所述新UUID生成所述流水号,具体包括:根据所述随机数和所述新UUID生成位数为20位的所述流水号。即本实施例中,通过进制转换后,可根据位数为32位的初始UUID生成位数为20位的流水号,从而有效缩短流水号的报文长度,以使其可适用于长度要求较短的场合,且可在确保流水号冲突概率低的基础上满足不同场合的使用需求。
本实施例中,在接收到流水号的生成请求时,首先,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;其次,对所述UUID进行预设进制的转换,得到预设位数的新UUID;最后,为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。本实施例中,通过对所产生的UUID进行预设进制的转换,可得到预设位数的新UUID,以有效缩短UUID的位数,从而可生成长度较短的流水号,能在确保流水号冲突概率低的基础上满足不同场合的使用需求,提高UUID的适用性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上面主要描述了一种流水号生成方法,下面将对一种流水号生成装置进行详细描述。
如图2所示,本发明实施例二提供了一种流水号生成装置,所述流水号生成装置,包括:
识别码产生模块201,用于在接收到流水号的生成请求时,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;
预设进制转换模块202,用于对所述UUID进行预设进制的转换,得到预设位数的新UUID;
流水号生成模块203,用于为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。
进一步地,所述预设进制为36进制、62进制、64进制或者128进制;
相应地,所述预设进制转换模块202,具体用于将所述UUID的16进制数转换为36进制数、62进制数、64进制数或者128进制数。
优选地,所述预设进制转换模块202,包括:
拆分单元,用于将所述UUID拆分成两个或者两个以上的组成部分;
转换单元,用于分别对各个组成部分进行预设进制的转换,并将转换后的组成部分按照拆分时的顺序进行组合,得到预设位数的新UUID。
可选地,所述预设位数为19位;
相应地,所述流水号生成模块203,具体用于根据所述随机数和所述新UUID生成位数为20位的所述流水号。
进一步地,所述流水号生成模块203,包括:
初始随机数产生单元,用于为所述生成请求产生一初始随机数;
初始随机数转换单元,用于对所述初始随机数进行预设进制的转换,得到所述随机数。
图3是本发明实施例三提供的流水号生成终端设备的示意图。如图3所示,该实施例的流水号生成终端设备300包括:处理器301、存储器302以及存储在所述存储器302中并可在所述处理器301上运行的计算机程序303,例如流水号生成程序。所述处理器301执行所述计算机程序303时实现上述各个流水号生成方法实施例中的步骤,例如图1所示的步骤S101至步骤S103。或者,所述处理器301执行所述计算机程序303时实现上述各装置实施例中各模块/单元的功能,例如图2所示的模块201至模块203的功能。
示例性的,所述计算机程序303可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器302中,并由所述处理器301执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序303在所述流水号生成终端设备300中的执行过程。例如,所述计算机程序303可以被分割成识别码产生模块、预设进制转换模块、流水号生成模块,各模块具体功能如下:
识别码产生模块,用于在接收到流水号的生成请求时,产生一通用唯一识别码UUID,所述UUID包含32位16进制数;
预设进制转换模块,用于对所述UUID进行预设进制的转换,得到预设位数的新UUID;
流水号生成模块,用于为所述生成请求产生一随机数,并根据所述随机数和所述新UUID生成所述流水号,其中所述流水号为位数小于32位的流水号。
所述流水号生成终端设备300可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述流水号生成终端设备可包括,但不仅限于,处理器301、存储器302。本领域技术人员可以理解,图3仅仅是流水号生成终端设备300的示例,并不构成对流水号生成终端设备300的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述流水号生成终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器301可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器302可以是所述流水号生成终端设备300的内部存储单元,例如流水号生成终端设备300的硬盘或内存。所述存储器302也可以是所述流水号生成终端设备300的外部存储设备,例如所述流水号生成终端设备300上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器302还可以既包括所述流水号生成终端设备300的内部存储单元也包括外部存储设备。所述存储器302用于存储所述计算机程序以及所述流水号生成终端设备所需的其他程序和数据。所述存储器302还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、单元和/或方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。