获取单号的方法、装置及系统
技术领域
本发明涉及计算机软件应用技术,尤其是通过计算机软件获取单号的方法、装置及系统。
背景技术
随着业务模式的多样化,如银行交易,物流运输,产品销售等,在其应用场景中针对每一笔交易均需要唯一的单号,以便对各类型的业务进行管理。目前唯一单号普遍采用自增方式或雪花算法生成,自增方式是定制一个最大号机制的数据表,在不超过最大号的基础上,基于当前的单号每次增加1后作为一个新的单号,同时将该单号存入最大数据表中,这种自增方式生成的单号存在订单规则和数量可预测,用户可以根据订单号计算出服务端的业务量,存在泄露业务信息的风险;而通过雪花算法生成的单号虽然能避免上述问题,但单号长度过长,对存储和查询造成不利影响,并且单号规则也无任何意义。
发明内容
为了解决现有技术中的问题,本发明提供一种适用于不同业务场景的获取单号的方法、装置及系统,通过所述获取单号的方法、装置及系统获得的单号,可以避免对单号业务量的预测,进而也有效的避免了泄露业务信息问题的发生。
为了实现所述目的,本发明提供一种获取单号的方法,其特征在于,包括:
解析用户输入的单号规则配置;
根据解析的单号规则配置生成单号;
当接收到单号获取请求时,发送单号;
其中,所述单号规则配置至少包括批次号段和随机数段。
优选的,所述单号规则配置还包括前缀、后缀、自定义段中的一个或多个。
优选的,当所述单号规则配置包括前缀、后缀、自定义段时,单号规则配置的顺序依次为前缀、批次号段、自定义段、随机数段和后缀。
优选的,所述的获取单号方法中,
每一批次号段至少与两个随机数对应,且每一批次号段对应的随机数的个数也是随机的。
优选的,当当前批次号段对应的剩余随机数的个数少于预设数量时,触发生成下一批次号段对应的随机数。
优选的,所述获取单号的方法中,
所述随机数段采用bit二维数组方式存储。
本发明还提供一种获取单号的装置,其特征在于,包括:
规则解析单元,用于解析用户输入的单号规则配置;
单号生成单元,用于根据解析的单号规则配置生成单号;
单号发送单元,用于当接收到单号获取请求时,发送单号;
其中,所述单号规则配置至少包括批次号段和随机数段。
优选的,所述获取单号的装置,还包括:
触发器,用于当当前批次号段对应的剩余随机数的个数少于预设数量时,触发生成下一批次号段对应的随机数。
优选的,所述获取单号的装置,还包括:
存储器,用于以bit二维数组方式存储所述随机数段。
本发明还提供一种获取单号的系统,包括:用户端和获取单号的装置,
所述用户端,用于输入单号规则配置,发送单号获取请求至所述获取单号的装置;
所述获取单号的装置,用于解析用户端输入的单号规则配置并根据解析的单号规则配置生成单号,当接收到单号获取请求时,向所述用户端发送单号;
其中,所述单号规则配置至少包括批次号段和随机数段。
本发明的获取单号的方法、装置及系统,可以使用户自行定义单号规则和长度,便于其根据不同的业务场景配置不同的单号;进一步地,本发明的获取单号的方法、装置及系统在结合自增方式生成批次号段和随机算法生成随机数段生成足够数量的不重复的单号的同时,也有效的避免了业务信息泄露的问题。
附图说明
图1为本发明实施例的获取单号的方法的流程示意图;
图2为本发明实施例的用户端操作界面的示意图;
图3为本发明实施例的单号规则配置的示意图;
图4为本发明实施例的bit二维数组存储方式示意图;
图5为本发明实施例的获取单号的装置的结构示意图;
图6为本发明实施例的获取单号的系统的结构示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点及功效。虽然本发明的描述将结合较佳实施例一起介绍,但这并不代表此发明的特征仅限于该实施方式。恰恰相反,结合实施方式作发明介绍的目的是为了覆盖本发明的权利要求而有可能延伸出的其它选择或改造。为了提供对本发明的深度了解,以下描述中将包含许多具体的细节。本发明也可以不使用这些细节实施。此外,为了避免混乱或模糊本发明的重点,有些具体细节将在描述中被省略。
目前单号的生成普遍采用自增方式或者雪花算法的方式,采用自增方式生成单号存在单号的规则和数量可预测,用户可以根据单号计算出服务端的业务量,存在泄露商业信息的风险;而采用雪花算法生成的单号虽然能避免上述问题,但单号长度过长,且需要即时生成,对单号的存储和查询不利,并且单号规则无意义。
为了解决现有技术中的问题,本发明提供保密性强、且便于存储和查询的获取单号的方法、装置及系统。以下结合附图详细说明本发明的技术方案。
图1为本发明实施例的获取单号的方法的流程示意图。如图1所示,获取单号的方法,包括:
S10,解析用户输入的单号规则配置;
S20,根据解析的单号规则配置生成单号;
S30,当接收到单号获取请求时,发送单号;
其中,所述单号规则配置至少包括批次号段和随机数段。
执行S10,解析用户输入的单号规则配置。用户通过对用户端的操作输入单号规则配置,所述用户端可以是便携式智能终端或指定的终端,所述用户端包括操作界面,用户通过操作界面设定单号规则配置,图2为本发明实施例的用户端操作界面的示意图。如图2所示,操作界面包括但不限于:单号名称(名称)、编码、当前批次初始值(当前值)、单号格式规则配置(格式)、是否生成有序单号(排序)等输入项。其中,所述单号规则配置是通过“格式”栏的编辑实现。
本实施例中,所述单号规则配置至少包括批次号段和随机数段。本实施例中,用户设置的批次号段可以采用自增方式生成,随机数段可以采用随机算法生成。
具体地,实际应用中批次号可以是1~3位的数字,用户可以根据自己的需求指定。本实施例中,自增方式是定制一个最大号机制的数据表,在最大号的基础上,基于当前的单号每次增加1后作为一个新的单号。本领域技术人员可知的,所述批次号段也可以采用自减方式生成,在此不做限制。
实际应用中,随机数可以通过随机数发生器生成,随机数发生器通过C语言、C++、C#、Java、Matlab、PHP、C51等程序语言和软件中具有的随机数生成函数生成随机数,同样地,用户也可以根据自己的需求指定随机数的位数。
本实施例中,所述单号规则配置还可以包括前缀、后缀、自定义段中的一个或多个。
当所述单号规则配置包括前缀、后缀、自定义段时,单号规则配置的顺序依次可以为前缀、批次号段、自定义段、随机数段和后缀。其中前缀、自定义段、后缀也是用户自行指定的值,具体地,可以用于表示单号的时间,单号的类型,机房标识等内容。关于单号的格式规则配置也可以采用其他的顺序,在此不做限定。
图3为本发明实施例的单号规则配置的示意图。如图3所示,当用户输入的单号规则配置为P[%07d]01%02d s时,可以解析出其中P为前缀,[%07d]为批次号段([]为截取符号),01为自定义段,%02d为随机数段,s为后缀。通过这样的设置,可以使用户自行定义单号规则和长度,便于根据不同的业务场景配置不同的单号。
执行S20,根据解析的单号规则配置生成单号。
本实施例中,在生成单号时,每一批次号段至少对应两个随机数,且每一批次号段对应的随机数的个数也是随机的。如上所述,批次号采用自增的方式,当前批次号对应的随机数使用完毕后批次号自动加1,形成新的批次号,为了增加单号的不可预测性,每个批次号对应的随机数数量是不固定的,随机数发生器根据用户配置的随机数长度计算出一个小于此长度表示的最大值的不固定的数值作为此次批次号对应的随机数数量。这样,在随机数段生成足够数量的不重复的单号的同时,也有效的避免了业务信息泄露的问题。
进一步地,本实施例中,当当前批次号对应的剩余随机数的个数少于预设数量时,触发生成下一批次号对应的随机数。随机数可以采用预加载的方式,当上一个批次号对应的随机数即将使用完毕之前预先生成下一个批次号对应的随机数;具体的过程可以为,point指向当前正在使用的segment(数据空间),正在使用segment为_segment1,当segment1中的随机数即将获取完毕,剩余不足一定比例时会自动触发下一个segment_2预先生成下一批随机数;当segment1完全使用完毕时point会切换指向到segment2;再次获取单号时会从segment2中获取,依次递进。前述当上一个批次随机数即将使用完毕之前预先生成下一批的随机数,是指当前批次对应的随机数剩余N个时(N为大于等于1的自然数)或当剩余的数量百分比低于指定阈值时,预先生成下一批的随机数。用户获取单号时,可以从当前segment中取出一个随机数并结合当前批次号、单号规则一起生成完整的单号。
本实施例中,所述随机数段可以采用bit二维数组方式来存储。图4为本发明实施例的bit二维数组存储方式示意图。本实施例中,为了降低大量随机数对内存的占用,随机数采用bit二维数组方式进行存储,每个随机数占用1个bit位,用bit位在二维数组中的索引代表随机数的值。将生成的随机数对应bit数组索引的值标记为1,如图4中,灰色标记块为bit二维数组中存储随机数的位置。本实施例中每行bit数组长度为64,可根据位移运算快速计算出某个数值对应的bit二维数组索引。
基于相同的发明构思,本发明还提供一种获取单号的装置。图5为根据本发明实施例的获取单号的装置的结构示意图,如图5所示,所述装置包括:
规则解析单元21,用于解析用户输入的单号规则配置;
单号生成单元22,用于根据解析的单号规则配置生成单号;
单号发送单元23,用于当接收到单号获取请求时,发送单号;
其中,所述单号规则配置至少包括批次号段和随机数段。
进一步地,所述获取单号的装置,还包括:触发器,用于当当前批次号段对应的剩余随机数个数少于预设数量时,触发生成下一批次号段对应的随机数。
进一步地,所述获取单号的装置,还包括:存储器,用于以bit二维数组方式存储所述随机数段。
本实施例的获取单号的装置的实施请参见上述的获取单号的方法的实施,此处不再赘述。
基于相同的发明构思,本发明还提供一种获取单号的系统。图6为本发明实施例的获取单号的系统的结构示意图,如图6所示,所述系统包括:用户端10和获取单号的装置20;用户端10用于输入单号规则配置,发送单号获取请求至所述获取单号的装置20;获取单号的装置20用于解析用户端输入的单号规则配置并根据解析的单号规则配置生成单号,当接收到单号获取请求时,向用户端发送单号,其中,所述单号规则配置至少包括批次号段和随机数段。
本实施例中,所述用户端10可以是便携式智能终端或指定的终端,所述用户端10和获取单号的装置20通过Restful接口连接。所述用户端10包括操作界面,用户通过操作界面设定单号规则配置及向获取单号的装置发出单号请求。所述获取单号的装置20,包括:规则解析单元21,用于解析用户输入的单号规则配置;单号生成单元22,用于根据解析的单号规则配置生成单号;单号发送单元23,用于当接收到单号获取请求时,发送单号。
本发明上述实施例中的获取单号的方法、装置及系统,可以使用户自行定义单号规则和长度,便于其根据不同的业务场景配置不同的单号;进一步地,本发明的获取单号的方法、装置及系统在结合自增方式生成批次号段和随机算法生成随机数段生成足够数量的不重复的单号的同时,也有效的避免了业务信息泄露的问题;进一步地,本发明的获取单号的方法、装置及系统采用bit二维数组方式存储随机数,降低了大量随机数对内存的占用。
基于相同的技术构思,本发明实施例提供了一种计算机设备,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器能够执行上述的获取单号的方法。
基于相同的技术构思,本发明实施例提供了一种计算机可读存储介质,当所述存储介质中的指令由设备内的处理器执行时,使得所述设备能够执行上述的获取单号的方法。
可选地,存储器,用于存储程序;存储器,可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-access memory,缩写:RAM),如静态随机存取存储器(英文:static random-access memory,缩写:SRAM),双倍数据率同步动态随机存取存储器(英文:Double Data Rate Synchronous Dynamic Random Access Memory,缩写:DDR SDRAM)等;存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory)。存储器用于存储计算机程序(如实现上述方法的应用程序、功能模块等)、计算机指令等,上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
处理器,用于执行存储器存储的计算机程序,以实现上述实施例涉及的方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。
处理器和存储器可以是独立结构,也可以是集成在一起的集成结构。当处理器和存储器是独立结构时,存储器、处理器可以通过总线耦合连接。
需要说明的是,本发明提供的方法中的步骤,可以利用系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照方法的技术方案实现系统的组成,即,方法中的实施例可理解为构建系统的优选例,在此不予赘述。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明的实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:水利工程测量中的编码转换及数据处理方法