CN100579133C - 一种产生标识符的方法 - Google Patents
一种产生标识符的方法 Download PDFInfo
- Publication number
- CN100579133C CN100579133C CN200510112526A CN200510112526A CN100579133C CN 100579133 C CN100579133 C CN 100579133C CN 200510112526 A CN200510112526 A CN 200510112526A CN 200510112526 A CN200510112526 A CN 200510112526A CN 100579133 C CN100579133 C CN 100579133C
- Authority
- CN
- China
- Prior art keywords
- interval
- produce
- produces
- new
- usefulness
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种产生ID的方法,包括:A、配置ID的取值范围,根据ID的可用性划分ID的取值区间;B、对划分的取值区间进行编号,利用随机函数产生编号数据范围内的一个随机数,选择编号与产生的随机数相同的取值区间;判断所选择用于产生ID的取值区间内ID的个数,如果该取值区间内只有一个ID,则取该ID作为新产生的ID;如果该取值区间内有一个以上的ID,利用随机函数产生该取值区间中ID数目范围内的一个随机数,取该取值区间中与该随机数对应的ID,更新ID的取值区间。利用本发明,能够产生满足全部数字、唯一、随机和长度可配置要求的ID,大大提高了产生满足全部数字、唯一、随机和长度可配置要求ID的效率,并能够满足大数据量业务应用的要求。
Description
技术领域
本发明涉及通信领域的标识符产生技术,特别涉及一种产生标识符的方法。
背景技术
在通信技术领域中,标识符(ID)的应用非常广泛。例如电话卡、充值卡或银行卡等各种卡的卡号都是一个ID,用于唯一标识一张卡;电话会议接入码、网络会议接入码等也都是一个ID,用于唯一标识一个电话会议或网络会议。上述各种ID应满足以下要求:
1、ID为数字的组合,使用户能够在通信终端上输入。
2、ID具有唯一性,一个ID只能标识一个对象,不能与已有的ID重复。
3、ID具有随机性,每次产生的ID没有任何规律,任何人任何时候都不能通过已知的ID,推导出新产生的ID。
4、ID具有长度可配置性,用户可根据被标识对象数量的变化来配置ID的长度。
现有技术中,一般利用以下两种方式来产生满足上述要求的ID:一种是利用每位随机并组合的方式;另一种是利用系统当前时间戳与随机数组合的方式。
其中,利用每位随机并组合的方式产生ID的原理如下:如果要产生一个N位的ID,则对于N位中每一位分别产生[0,9]之间的随机数,将产生的随机数组合在一起形成一个N位的ID,然后判断已有的ID中是否包含有新产生的这个ID,如果有,则说明新产生的ID与已有的ID重复,需要再次产生一个ID,直至新产生的ID与已有的ID不重复为止。
利用系统当前时间戳与随机数组合的方式产生ID的原理如下:计算机编程语言可以提供获取系统当前时间戳的方法及产生随机数的随机函数,利用计算机编程语言提供的获取系统当前时间戳的方法获取系统的当前时间戳,利用计算机编程语言提供的产生随机数的随机函数产生一个一位或几位的随机数,然后将获取的时间戳设置在高位,将产生的随机数设置在低位,二者组合在一起形成一个ID。
这里,利用计算机编程语言提供的获取系统当前时间戳的方法所获取的系统当前时间戳,一般是从1970年1月1日0时0分0秒起到现在某一时刻所经过的秒数,该秒数在计算机中一般用4字节的整型数来存储。
对于第一种产生ID的方式而言,虽然产生的ID满足全部数字、唯一、随机和长度可配置的要求,但是已有ID的数量越多,已有ID中包含有新产生的ID的概率就越大,对于新产生的ID包含在已有ID的情况,又要重新生成ID,......,如此反复,产生ID的效率很低,无法满足一些对产生ID的效率要求高的场合。
对于第二种产生ID的方式而言,由于在现有的计算机系统中,时间戳一般使用四字节的整型数来表示,其长度已达到10个字符,如果在其后再加上一个一位或几位的随机数,将导致产生ID的位数过长,不能很好地满足用户根据被标识对象数量的变化来配置ID长度的要求。另外,由于利用随机函数产生的随机数是可能发生重复的,如果每秒钟允许产生多个ID,则产生的ID就可能发生重复,这样仍需要同第一种产生ID的方式一样,判断新产生的ID是否重复,所以第二种产生ID的方式限制了每秒钟只能产生一个ID,显然无法满足大数据量业务应用的要求。
发明内容
有鉴于此,本发明的主要目的在于提供一种产生ID的方法,以提高产生满足全部数字、唯一、随机和长度可配置要求ID的效率,并满足大数据量业务应用的要求。
为达到上述目的,本发明提供了一种产生ID的方法,应用于各种卡的卡号或会议接入码,用于唯一标识一张卡或会议,包括以下步骤:
A、配置ID的取值范围,根据配置ID的取值范围以及已用的ID,将配置的ID的取值范围划分为至少一个ID值连续的取值区间,其中,划分成的任意一个ID连续的取值区间中的ID与已用的ID不重复;
B、对划分的取值区间进行编号,利用随机函数产生编号数据范围内的一个随机数,选择编号与产生的随机数相同的取值区间;判断所选择用于产生ID的取值区间内ID的个数,如果该取值区间内只有一个ID,则取该ID作为新产生的ID;如果该取值区间内有一个以上的ID,利用随机函数产生该取值区间中ID数目范围内的一个随机数,取该取值区间中与该随机数对应的ID,更新ID的取值区间。
上述方案中,所述ID需产生多个,该方法进一步包括:根据配置ID的取值范围以及已用的ID,将配置的ID的取值范围划分为至少一个ID值连续的取值区间,更新ID的取值区间,其中,划分成的任意一个ID连续的取值区间中的ID与已用的ID不重复;在更新后的任意一个取值区间中任取一个ID作为新产生的ID。
上述方案中,产生所述已用的ID时选择用于产生ID的取值区间内只有一个ID;所述更新ID的取值区间为:删除该取值区间,并对剩余的取值区间重新编号。
上述方案中,产生所述已用的ID时选择用于产生ID的取值区间内有一个以上的ID,且将该取值区间的一个边界ID作为新产生的ID;所述更新ID的取值区间为:删除该取值区间中作为新产生ID的边界ID,更新该取值区间。
上述方案中,产生所述已用的ID时选择用于产生ID的取值区间内有一个以上的ID,且将该取值区间的一个非边界ID作为新产生的ID;所述更新ID的取值区间为:删除该取值区间中作为新产生ID的非边界ID,将该取值区间划分为两个取值区间,并对所有取值区间重新编号。
因此,本发明提供的这种产生ID的方法,通过配置ID的取值范围,根据ID的可用性划分ID的取值区间,并利用随机函数在所划分的任意一个取值区间中任取一个ID作为新产生的ID,能够产生满足全部数字、唯一、随机和长度可配置要求的ID。
利用本发明,由于ID的取值范围可以由用户根据实际需要来配置,设定ID的最大值和最小值,所以能够保证产生的ID为全部数字且长度可配置的ID。在需要产生多个ID时,由于每次产生ID后都要更新ID的取值区间,使每次都在未用ID的范围内产生ID,所以能够保证产生ID的唯一性。由于本发明是利用随机函数来随机选择产生ID的取值区间,并在该取值区间中利用随机函数来随机选择一个ID作为产生的ID,所以能够在最大程度上保证产生ID的随机性。因此,本发明能够产生满足全部数字、唯一、随机和长度可配置要求的ID。
由于每次都在未用ID的范围内产生ID,保证产生的ID满足唯一性要求,在产生ID时不必判断产生的ID是否会发生重复,所以大大提高了产生满足全部数字、唯一、随机和长度可配置要求ID的效率。
由于产生满足全部数字、唯一、随机和长度可配置要求的ID与计算机系统的当前时间戳无关,在单位时间内可以产生大量满足要求的ID,所以能够满足大数据量业务应用的要求。
附图说明
图1为本发明产生ID总体技术方案的实现流程图;
图2为本发明一个实施例中产生ID的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例,并参照附图,对本发明进一步详细说明。
本发明的核心内容是:通过配置ID的取值范围,根据ID的可用性划分ID的取值区间,并利用随机函数在所划分的任意一个取值区间中任取一个ID作为新产生的ID,能够产生满足全部数字、唯一、随机和长度可配置要求的ID。
如图1所示,图1为本发明产生ID总体技术方案的实现流程图,该方法包括以下步骤:
步骤101:配置ID的取值范围,根据ID的可用性划分ID的取值区间;
步骤102:在所划分的任意一个取值区间中任取一个ID作为新产生的ID。
在上述步骤101中,所述配置ID的取值范围是用户根据实际需要设定ID的最大值和最小值进行的。例如,如果用户根据实际需要希望ID的长度为5,则可以设定ID的最小值为10000,设定ID的最大值为99999,将ID的取值范围配置为[10000,99999]。
所述根据ID的可用性划分ID的取值区间,是在配置的ID的取值范围中根据所有已用的ID确定当前所有可用的ID,将当前所有可用的ID划分为ID值连续的至少一个取值区间。
例如,如果配置的ID的取值范围为[10000,99999],假设在该取值范围中没有已用的ID,所有的ID都是可用的ID,则将所有可用的ID划分为ID值连续的取值区间为[10000,99999]。假设在该取值范围中10010、11001、25001、33001、52002、68005和95608为全部已用的ID,为了保证产生的ID与已用的ID不发生重复,将ID的取值范围[10000,99999]划分为[10000,10009]、[10011,11000]、[11002,25000]、[25002,33000]、[33002,52001]、[52003,68004]、[68006,95607]和[95609,99999]几个ID值连续的取值区间。
在上述步骤102中,所述在所划分的任意一个取值区间中任取一个ID作为新产生的ID包括:先对所划分的所有取值区间进行编号,然后利用随机函数产生编号数目范围内的一个随机数,选择编号与产生的随机数相同的取值区间,判断该取值区间内ID的个数,如果该取值区间内只有一个ID,则取该ID作为新产生的ID;如果该取值区间内有一个以上的ID,则利用随机函数产生该取值区间中ID数目范围内的一个随机数,取该取值区间中与该随机数对应的ID作为新产生的ID。
利用上述产生ID的方法,可以产生一个满足全部数字、唯一、随机和长度可配置要求的ID。如果需要产生多个满足全部数字、唯一、随机和长度可配置要求的ID,该方法进一步包括:根据ID的可用性更新ID的取值区间,在更新后的任意一个取值区间中任取一个ID作为新产生的ID。其中,所述根据ID的可用性更新ID的取值区间包括以下几种情况:
情况1、如果步骤102中利用随机函数选择的取值区间内只有一个ID,则取该ID作为新产生的ID后,该ID就成为已用的ID,为了保证在下一次产生ID时不会产生与该ID重复的ID,需要将该取值区间直接删除,并对剩余的取值区间重新编号,实现对ID取值区间的更新。
情况2、如果步骤102中利用随机函数选择的取值区间内有一个以上的ID,则利用随机函数在该取值区间中任意选取一个ID作为新产生的ID后,选取的这个ID就成为已用的ID,为了保证在下一次产生ID时不会产生与该ID重复的ID,需要将取值区间中的这个ID删除,实现对ID取值区间的更新。此时又有两种情形:
情形a、如果在选择的取值区间中将取值区间的一个边界ID作为新产生的ID,则直接删除该取值区间中作为新产生ID的边界ID,即可实现对ID取值区间的更新;
情形b、如果在选择的取值区间中将取值区间的一个非边界ID作为新产生的ID,则删除该取值区间中作为新产生ID的非边界ID,同时将该取值区间划分为两个取值区间,并对所有的取值区间重新编号。
为了能够更加清楚地说明本发明提供的这种产生ID的方法,以下结合一个具体的实施例,并参照附图对此进行详细说明。
如图2所示,图2为本发明一个实施例中产生ID的方法流程图。在本实施例中需要产生多个ID,假设用户根据实际需要配置的ID的取值范围为[0,2147483648],在该取值范围内已用的ID为3、5、6、7、12、14和55,该方法包括以下步骤:
步骤201:为了保证产生的ID与已用的ID不发生重复,根据配置的ID的取值范围[0,2147483648],以及已用的ID 3、5、6、7、12、14和55,将ID的取值范围[0,2147483648]划分为[0,2]、[4,4]、[8,11]、[13,13]、[15,54]、[56,2147483648]等ID值连续的取值区间。
步骤202:对划分的取值区间[0,2]、[4,4]、[8,11]、[13,13]、[15,54]、[56,2147483648]进行编号,得到表1。
编号 | 开始区间 | 结束区间 |
0 | 0 | 2 |
1 | 4 | 4 |
2 | 8 | 11 |
3 | 13 | 13 |
4 | 15 | 54 |
5 | 56 | 2147483648 |
表1
步骤203:利用随机函数产生编号数目范围[0,5]内的一个随机数,选择编号与产生的随机数相同的取值区间。
步骤204:判断选择的用于产生ID的取值区间内ID的个数,如果所选择的取值区间内只有一个ID,则执行步骤205;如果所选择的取值区间内有一个以上的ID,则执行步骤206。
步骤205:取该取值区间内的ID作为新产生的ID,更新表1所述ID的取值区间,然后执行步骤207。
例如,如果利用随机函数产生编号数目范围[0,5]内的随机数为3,则选择编号为3的取值区间[13,13]作为用于产生ID的取值区间,由于该取值区间中只有一个ID 13,则将13作为新产生的ID;在产生该ID后,直接删除编号为3的取值区间,并对剩余的取值区间重新编号,更新后的取值区间如表2所示。
编号 | 开始区间 | 结束区间 |
0 | 0 | 2 |
1 | 4 | 4 |
2 | 8 | 11 |
3 | 15 | 54 |
4 | 56 | 2147483648 |
表2
步骤206:利用随机函数产生所选择的取值区间中ID数目范围内的一个随机数,取该取值区间中与该随机数对应的ID作为新产生的ID,并更新ID的取值区间。
例如,如果利用随机函数产生编号数目范围[0,5]内的随机数为4,则选择编号为4的取值区间[15,54]为产生ID的取值区间,由于该取值区间中有40个ID,则利用随机函数产生该取值区间中ID数目范围[0,39]内的一个随机数。
此时,如果利用随机函数产生该取值区间中ID数目范围[0,39]内的随机数为0,则将取该取值区间中与该随机数0对应的ID作为新产生的ID,这里由于与该随机数0对应的ID为15,即开始区间值15+随机数值0=15,所以将15作为新产生的ID;在产生该ID后,删除该取值区间[15,54]中作为新产生ID的边界ID 15,更新该取值区间为[16,54],更新后的取值区间如表3所示。
编号 | 开始区间 | 结束区间 |
0 | 0 | 2 |
1 | 4 | 4 |
2 | 8 | 11 |
3 | 13 | 13 |
4 | 16 | 54 |
5 | 56 | 2147483648 |
表3
如果利用随机函数产生该取值区间中ID数目范围[0,39]内的随机数为12,则将取该取值区间中与该随机数12对应的ID作为新产生的ID,这里由于与该随机数12对应的ID为27,即开始区间值15+随机数值12=27,所以将27作为新产生的ID;在产生该ID后,删除该取值区间[15,54]中作为新产生ID的非边界ID 27,将该取值区间[15,54]划分为两个取值区间[15,26]和[28,54],并对所有取值区间重新编号,更新后的取值区间如表4所示。
编号 | 开始区间 | 结束区间 |
0 | 0 | 2 |
1 | 4 | 4 |
2 | 8 | 11 |
3 | 13 | 13 |
4 | 15 | 26 |
5 | 56 | 2147483648 |
6 | 28 | 54 |
表4
步骤207:在更新后的ID的取值区间中,重复执行步骤203~206,产生下一个满足要求的ID,如此反复多次,可以产生多个满足要求的ID。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1、一种产生标识符的方法,应用于各种卡的卡号或会议接入码,用于唯一标识一张卡或会议,其特征在于,包括以下步骤:
A、配置标识符ID的取值范围,根据配置ID的取值范围以及已用的ID,将配置的ID的取值范围划分为至少一个ID值连续的取值区间,其中,划分成的任意一个ID连续的取值区间中的ID与已用的ID不重复;
B、对划分的取值区间进行编号,利用随机函数产生编号数据范围内的一个随机数,选择编号与产生的随机数相同的取值区间;判断所选择用于产生ID的取值区间内ID的个数,如果该取值区间内只有一个ID,则取该ID作为新产生的ID;如果该取值区间内有一个以上的ID,利用随机函数产生该取值区间中ID数目范围内的一个随机数,取该取值区间中与该随机数对应的ID,更新ID的取值区间。
2、根据权利要求1所述的方法,其特征在于,所述ID需产生多个,该方法进一步包括:
根据配置ID的取值范围以及已用的ID,将配置的ID的取值范围划分为至少一个ID值连续的取值区间,更新ID的取值区间,其中,划分成的任意一个ID连续的取值区间中的ID与已用的ID不重复;在更新后的任意一个取值区间中任取一个ID作为新产生的ID。
3、根据权利要求2所述的方法,其特征在于,产生所述已用的ID时选择用于产生ID的取值区间内只有一个ID;
所述更新ID的取值区间为:删除该取值区间,并对剩余的取值区间重新编号。
4、根据权利要求2所述的方法,其特征在于,产生所述已用的ID时选择用于产生ID的取值区间内有一个以上的ID,且将该取值区间的一个边界ID作为新产生的ID;
所述更新ID的取值区间为:删除该取值区间中作为新产生ID的边界ID,更新该取值区间。
5、根据权利要求2所述的方法,其特征在于,产生所述已用的ID时选择用于产生ID的取值区间内有一个以上的ID,且将该取值区间的一个非边界ID作为新产生的ID;
所述更新ID的取值区间为:删除该取值区间中作为新产生ID的非边界ID,将该取值区间划分为两个取值区间,并对所有取值区间重新编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200510112526A CN100579133C (zh) | 2005-09-30 | 2005-09-30 | 一种产生标识符的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200510112526A CN100579133C (zh) | 2005-09-30 | 2005-09-30 | 一种产生标识符的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1874357A CN1874357A (zh) | 2006-12-06 |
CN100579133C true CN100579133C (zh) | 2010-01-06 |
Family
ID=37484613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200510112526A Expired - Fee Related CN100579133C (zh) | 2005-09-30 | 2005-09-30 | 一种产生标识符的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100579133C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102842052B (zh) * | 2012-08-14 | 2015-10-21 | 江苏恒安方信科技有限公司 | 一种身份码生成方法 |
CN102929967B (zh) * | 2012-10-12 | 2015-10-14 | 深圳市华阳信通科技发展有限公司 | 海量随机数生成、存储和搜索的系统及方法 |
CN103810557A (zh) * | 2012-11-15 | 2014-05-21 | 航天信息股份有限公司 | 发票验证码的生成方法和装置 |
CN103838604B (zh) * | 2013-12-13 | 2017-01-11 | 广东星辉天拓互动娱乐有限公司 | 分布式全球唯一id生成方法 |
CN107767132B (zh) * | 2016-08-23 | 2022-01-14 | 百度在线网络技术(北京)有限公司 | 用于生成充值卡密码的方法和装置 |
CN106411955B (zh) * | 2016-12-01 | 2019-07-23 | 微鲸科技有限公司 | 一种基于模m同余类环的账号生成方法 |
CN109325015B (zh) * | 2018-08-31 | 2021-07-20 | 创新先进技术有限公司 | 一种领域模型的特征字段的提取方法及装置 |
CN115002078B (zh) * | 2022-05-11 | 2024-04-09 | 北京奇艺世纪科技有限公司 | 一种id生成方法及装置 |
CN117390610A (zh) * | 2023-12-13 | 2024-01-12 | 中国人民解放军国防科技大学 | 一种身份标识生成方法、系统及装置 |
-
2005
- 2005-09-30 CN CN200510112526A patent/CN100579133C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1874357A (zh) | 2006-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100579133C (zh) | 一种产生标识符的方法 | |
CN108959386B (zh) | 分布式全局唯一id生成方法、装置、设备和存储介质 | |
CN107862047B (zh) | 基于多个数据源的自然人数据处理方法和系统 | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
CN107147501A (zh) | 时间戳处理方法及装置 | |
CN110119292A (zh) | 系统运行参数查询方法、匹配方法、装置及节点设备 | |
CN103188810B (zh) | 指示位表下发方法和指示操作方法及设备和系统 | |
US20030236976A1 (en) | Efficient membership revocation by number | |
US10700934B2 (en) | Communication control device, communication control method, and computer program product | |
CN101119334A (zh) | 一种获取新词的方法、系统及设备 | |
CN110838072A (zh) | 一种基于社区发现的社交网络影响力最大化方法及系统 | |
CN109241056B (zh) | 一种用于分布式系统的数字id生成系统 | |
CN109672733B (zh) | 基于dag的区块链的账本同步方法及设备 | |
CN109241057B (zh) | 一种用于分布式系统的数字id生成方法 | |
CN100485664C (zh) | 一种多关键字自动状态机查找匹配方法 | |
CN111367916B (zh) | 一种数据存储方法及装置 | |
CN101466071B (zh) | 一种时频资源的分配方法和装置 | |
CN114756385B (zh) | 一种深度学习场景下的弹性分布式训练方法 | |
CN104717280A (zh) | 数据同步的标记方法和装置 | |
CN115470241A (zh) | 一种基于映射字典表的聚合数据更新方法及装置 | |
CN105634999A (zh) | 一种介质访问控制地址的老化方法及装置 | |
CN112506919A (zh) | 一种结构化的icd生成方法 | |
CN104111768A (zh) | 可交互窗口及自定义、引用、同步可交互窗口的方法和系统 | |
GB2205018A (en) | Dynamically controlling the content of a local receiver data base from a transmitted data base in an information retrieval communication network | |
US20170170958A1 (en) | Communication control device, communication control method, and computer program product |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100106 Termination date: 20150930 |
|
EXPY | Termination of patent right or utility model |