CN109117116A - 基于自增序列的随机提货码生成方法 - Google Patents
基于自增序列的随机提货码生成方法 Download PDFInfo
- Publication number
- CN109117116A CN109117116A CN201710492899.7A CN201710492899A CN109117116A CN 109117116 A CN109117116 A CN 109117116A CN 201710492899 A CN201710492899 A CN 201710492899A CN 109117116 A CN109117116 A CN 109117116A
- Authority
- CN
- China
- Prior art keywords
- code
- random
- client
- delivery
- cargo
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
Abstract
本发明公开了一种基于自增序列的随机提货码生成方法,至少包括以下步骤:客户端以及服务端分别配置随机码获取应用程序接口;所述的客户端将通用的随机码获取jar包集成在所述客户端的应用侧并设置本地缓存区;所述服务端根据随机码的配置信息,生成缓存的随机序列数,并将其转换层对应的随机序列数,并更新递增数;所述客户端向服务端发出获取随机提货码的请求,并查找本地缓存区,在本地缓存区具有随机码时,直接获得随机提货码;若本地缓存区随机码用尽,则调用所述服务端应用程序端口,在服务端生成与配置的缓存数量相当的随机码,所述客户端获取生成的随机码并保存在所述客户端的本地缓存,按照需求获取随机提货码。
Description
技术领域
本发明涉及密码生成的技术领域,尤其涉及一种基于自增序列的随机提货码生成方法。
背景技术
随着互联网时代的来临,尤其是O2O服务越来越多,商家利用此服务推出各种各样优惠活动,比较常见的方式为商家会发出一个优惠码,用户收到优惠码后,可以拿着这个优惠码去商家消费,商家通过对优惠码的确认,完成双方交易。另外比较普遍的就是各种优惠券,用户在消费过程中也只需要拿一个优惠券码就可以去商家消费,商家对优惠券码确认后,便会向用户提供相应的服务或者折扣。综上,这些优惠码或者优惠券都具有随机有特定的生成规则,但是通过普通的生成方式无法保证唯一性和随机性,而且生成规则的种类繁多,其中一种是通过时间加随机数进行生成,但是由于生成规则由时间显示,因此到一定时间就无法生成,而且没有持久化到数据库中不知道其消费的进度;另外一种,使用全局的随机数生成器,每次生成数据,都需要和已有数据判断是否重复,所以此方案的缺点在于生成数的效率低,需要的存储空间大。
发明内容
本发明目的是解决现有随机码生成存在的技术问题并且能够知悉串码消费的进度,提供一种基于自增序列的随机提货码生成方法。
本发明解决技术问题采用如下技术方案:一种基于自增序列的随机提货码生成方法,至少包括以下步骤:
客户端以及服务端分别配置随机码获取应用程序接口;
所述的客户端将通用的随机码获取jar包集成在所述客户端的应用侧并设置本地缓存区;
所述服务端根据随机码的配置信息,生成缓存的随机序列数,并将其转换层对应的随机序列数,并更新递增数;
所述客户端向服务端发出获取随机提货码的请求,并查找本地缓存区,在本地缓存区具有随机码时,直接获得随机提货码;若本地缓存区随机码用尽,则调用所述服务端应用程序端口,在服务端生成与配置的缓存数量相当的随机码,所述客户端获取生成的随机码并保存在所述客户端的本地缓存,按照需求获取随机提货码。
其中,所述的服务端通过redis进行加锁处理。
其中,所述的随机提货码至少包括物流提货码、串码以及券码的标识。
其中,所述的随机提货码至少包括以下配置:
是否含有前缀位,如果含有前缀位,前缀位的使用规则,通过配置前缀位的使用顺序实现对前缀位的顺序使用;
随机码标识的递增序列的起始值、最大值、以及每次递增值;
随机码标识的最下长度,如果生成的随机数的长度不足,会进行补零操作;
随机码标识是否可以循环使用,如果可以会在用完这个批次之后,重复使用;
随机码标识的缓存值。
本发明具有如下有益效果:
本发明的方法解决了现有技术中存在的问题,保证了提货码的使用效率并且具有广泛的通用率。
附图说明
图1为发明所述的基于自增序列的随机提货码生成方法的流程图。
具体实施方式
下面结合实施例及附图对本发明的技术方案作进一步阐述。
本发明提出一种基于自增序列的随机提货码生成方法,至少包括以下步骤:
客户端以及服务端分别配置随机码获取应用程序接口;
所述的客户端将通用的随机码获取jar包集成在所述客户端的应用侧并设置本地缓存区;
所述服务端根据随机码的配置信息,生成缓存的随机序列数,并将其转换层对应的随机序列数,并更新递增数;
所述客户端向服务端发出获取随机提货码的请求,并查找本地缓存区,在本地缓存区具有随机码时,直接获得随机提货码;若本地缓存区随机码用尽,则调用所述服务端应用程序端口,在服务端生成与配置的缓存数量相当的随机码,所述客户端获取生成的随机码并保存在所述客户端的本地缓存,按照需求获取随机提货码。
在本发明中,所述的服务端通过redis进行加锁处理。所述的随机提货码至少包括物流提货码、串码以及券码的标识。所述的随机提货码至少包括以下配置:
是否含有前缀位,如果含有前缀位,前缀位的使用规则,通过配置前缀位的使用顺序实现对前缀位的顺序使用;
随机码标识的递增序列的起始值、最大值、以及每次递增值;
随机码标识的最下长度,如果生成的随机数的长度不足,会进行补零操作;
随机码标识是否可以循环使用,如果可以会在用完这个批次之后,重复使用;
随机码标识的缓存值。
本发明中的方法采取基于自增序列的有序数通过混淆函数(一一映射)来产生随机数,类似于函数,可以将随机数的生成分为三部分,定义域,函数,值域。从理论上讲,随机数的生成可以理解为使用函数完成对定义域到值域的转换。由于函数的一一映射具有传递性,只要保障每次使用的函数是一一映射,那么就可以使用多个一一映射来完成从有序数列(定义域)到随机数域(值域)的转换。从计算机实践中出发,最常用而且比较实用的一一映射有循环移位,异或。
对于本发明的方法,通过一系列的位移、翻转、替换操作算法、形成一个唯一的且随机的码,而且生成规则可以灵活配置、包括起始的最小值、最大值、递增数、最小长度、是否循环、是否有前缀位以及多个前缀位的情况下的使用规则配置,在系统架构方面分为服务端和客户端,客户端有缓存,保证了使用效率。下面对具体算法进行说明:
新的10位提货码规则:1位预留位+9位随机序列(1位预留位是为了避免和以前的提货码冲突,若现在线上有8台机器,生成的提货码有1*********,2*********,3*********,4*********,5*********,7*********,8*********,9*********,即0和6开头的提货码是未占用的,所以新的规则下就先以0开头生成提供码,这样可以保证与现有的8种数字开关的提货码不重复,等到0开头的提货码用完(大约5亿多),前面8种提货码应该就可以不提供用户查询了,9位随机序列可以提供2^29=5,3687,0912个提货码)
所以新的规则下提货码的容量是10(预留位)*2^29=53,6870,9120,足以满足业务需求算法概要(9位随机序列的生成),对于不同的N个整数,进行一系列的循环移位,位反转,异或等操作,可以生成与之一一对应的N个新整数,这N个新整数也是唯一并且不重复的,这个过程是可逆的,这个过程实现的就是把原来有序的自增序列生成对应的看起来无规律的随机序列。
比如下面是1到9对应的一个例子:
生成这个序列之后,表面上看起来是随机了,右侧的“随机序列”在二进制的情况下看,其实是能看出有一定规律的,所以我们需要进一步加工下,把这个整数看作是一个字符串(如果位数不够9位,用0补齐9位),对这个字符串作一些换位处理,这个例子中对字符串进行了1和3,2和5,4和7位的换位处理,结果如下
最右侧的一列便是对外提供的提货码了(前面加上预留位)
而有关具体算法的原理为现有技术的内容,在此不再进行赘述。
参考图1所示的功能架构图,以本发明方法中的客户端和服务端的交互流程说明,其中客户端提供封装了获取随机码的简单API,应用侧只需要把客户端jar包集成到应用中,并调用客户端的获取随机码的客户端就可以获取到一个随机码。客户端在取随机码的时候首先从本地缓存中进行缓存,默认是缓存100个(这个缓存数据可以在服务端进行配置),如果本地缓存中的已经用完,会调用服务端接口,通过服务端获取,一次获取的数量为服务器端配置的缓存数量,并把获取的随机码保存到本地缓存,供后续请求使用。
服务端提供了通用的获取随机码的接口,供客户端调用,为了保证客户端调用的时候保证不重复,服务端采用了通过redis进行加锁的方式,对于同一个串码标识的获取,首先判断redis有没有这个锁,如果有锁等待,直到锁释放,如果没有锁立即调用服务端逻辑进行处理并返回。Redis加锁为现有技术的内容,因此其原理不再进行赘述。
本实施例中,服务端维护了一些列的随机码标识,例如物流提货码、串码、券码等,每个随机码包含以下配置:
1.是否含有前缀位;
2.如果含有前缀位,前缀位的使用规则,通过配置前缀位的使用顺序实现对前缀位的顺序使用;
3.随机码标识的递增序列的起始值、最大值、每次递增值;
4.随机码标识的最下长度,如果生成的随机数的长度不够,会进行补零操作;
5.随机码标识是否可以循环使用,如果可以会在用完这个批次之后,重复使用;
6.随机码标识的缓存值,即一次获取的值。
客户端在请求获取的时候,服务端会根据随机码的配置信息,首先生成缓存数的随机序列数,并根据算法(具体算法请参看算法说明)转换成对应的随机序列数,同时更新递增数,以便记录递增数消费到什么进度。
综上所述,本发明的方法解决了现有技术中存在的问题,保证了提货码的使用效率并且具有广泛的通用率。
以上实施例的先后顺序仅为便于描述,不代表实施例的优劣。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种基于自增序列的随机提货码生成方法,其特征在于,至少包括以下步骤:
客户端以及服务端分别配置随机码获取应用程序接口;
所述的客户端将通用的随机码获取jar包集成在所述客户端的应用侧并设置本地缓存区;
所述服务端根据随机码的配置信息,生成缓存的随机序列数,并将其转换层对应的随机序列数,并更新递增数;
所述客户端向服务端发出获取随机提货码的请求,并查找本地缓存区,在本地缓存区具有随机码时,直接获得随机提货码;若本地缓存区随机码用尽,则调用所述服务端应用程序端口,在服务端生成与配置的缓存数量相当的随机码,所述客户端获取生成的随机码并保存在所述客户端的本地缓存,按照需求获取随机提货码。
2.根据权利要求1所述的基于自增序列的随机提货码生成方法,其特征在于,所述的服务端通过redis进行加锁处理。
3.根据权利要求1所述的基于自增序列的随机提货码生成方法,其特征在于,所述的随机提货码至少包括物流提货码、串码以及券码的标识。
4.根据权利要求1所述的基于自增序列的随机提货码生成方法,其特征在于,所述的随机提货码至少包括以下配置:
是否含有前缀位,如果含有前缀位,前缀位的使用规则,通过配置前缀位的使用顺序实现对前缀位的顺序使用;
随机码标识的递增序列的起始值、最大值、以及每次递增值;
随机码标识的最下长度,如果生成的随机数的长度不足,会进行补零操作;
随机码标识是否可以循环使用,如果可以会在用完这个批次之后,重复使用;
随机码标识的缓存值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710492899.7A CN109117116A (zh) | 2017-06-26 | 2017-06-26 | 基于自增序列的随机提货码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710492899.7A CN109117116A (zh) | 2017-06-26 | 2017-06-26 | 基于自增序列的随机提货码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109117116A true CN109117116A (zh) | 2019-01-01 |
Family
ID=64733847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710492899.7A Pending CN109117116A (zh) | 2017-06-26 | 2017-06-26 | 基于自增序列的随机提货码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109117116A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110675199A (zh) * | 2019-10-08 | 2020-01-10 | 四川长虹电器股份有限公司 | 一种基于hash算法生成不重复优惠码的方法 |
CN112016948A (zh) * | 2019-05-31 | 2020-12-01 | 口碑(上海)信息技术有限公司 | 电子券码的生成方法、装置及存储介质、电子装置 |
CN112331326A (zh) * | 2020-11-05 | 2021-02-05 | 重庆火后草科技有限公司 | 基础健康监测系统中压力传感器模块的识别码的分配方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999848A (zh) * | 2011-09-08 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 发布电子优惠券的方法及设备 |
CN105373927A (zh) * | 2014-08-26 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 电子券的券码生成方法、装置及服务器 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
-
2017
- 2017-06-26 CN CN201710492899.7A patent/CN109117116A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999848A (zh) * | 2011-09-08 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 发布电子优惠券的方法及设备 |
CN105373927A (zh) * | 2014-08-26 | 2016-03-02 | 腾讯科技(深圳)有限公司 | 电子券的券码生成方法、装置及服务器 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112016948A (zh) * | 2019-05-31 | 2020-12-01 | 口碑(上海)信息技术有限公司 | 电子券码的生成方法、装置及存储介质、电子装置 |
CN112016948B (zh) * | 2019-05-31 | 2024-01-23 | 口碑(上海)信息技术有限公司 | 电子券码的生成方法、装置及存储介质、电子装置 |
CN110675199A (zh) * | 2019-10-08 | 2020-01-10 | 四川长虹电器股份有限公司 | 一种基于hash算法生成不重复优惠码的方法 |
CN112331326A (zh) * | 2020-11-05 | 2021-02-05 | 重庆火后草科技有限公司 | 基础健康监测系统中压力传感器模块的识别码的分配方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7159183B2 (ja) | 暗号プロトコルで使用する行列を共有するデバイス及び方法 | |
Shi et al. | Oblivious RAM with O ((log N) 3) worst-case cost | |
CN109117116A (zh) | 基于自增序列的随机提货码生成方法 | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN102656580B (zh) | 结构化数据的方法、预编译的异常列表引擎和网络设备 | |
CN103177000B (zh) | Ip地址或者手机号码的分组方法和归属地的查询方法 | |
CN105373927B (zh) | 电子券的券码生成方法、装置及服务器 | |
CN106797446B (zh) | 基于存储器的历史搜索 | |
US8112626B1 (en) | Method and apparatus to provide public key authentication with low complexity devices | |
CN101140592A (zh) | 关键字存储、查找方法和设备 | |
JP6362805B1 (ja) | ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード | |
CN107844267A (zh) | 缓冲区分配和存储器管理 | |
US9141824B2 (en) | Dynamic database update in multi-server private information retrieval scheme | |
CN111008201A (zh) | 并行修改和读取状态树的方法和装置 | |
CN105446897A (zh) | 高速缓存哈希 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
CN111538594A (zh) | 基于分布式系统的订单id生成方法、装置、设备及介质 | |
CN108875006A (zh) | 确定ip地址所属地区的方法及装置 | |
TW583542B (en) | NUMA page selection using coloring | |
CN103905201B (zh) | 主应用与多个从属应用的交互方法及装置 | |
CN114218582A (zh) | 一种数据库的数据加密方法及终端 | |
CN106844529A (zh) | 缓存数据更新方法、装置和系统 | |
CN106341497A (zh) | 数字id生成方法及装置 | |
CN103077198A (zh) | 一种操作系统及其文件缓存定位方法 | |
US8386447B2 (en) | Allocating and managing random identifiers using a shared index set across products |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190101 |