專利名稱:一種產(chǎn)生標(biāo)識(shí)符的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域的標(biāo)識(shí)符產(chǎn)生技術(shù),特別涉及一種產(chǎn)生標(biāo)識(shí)符的方法。
背景技術(shù):
在通信技術(shù)領(lǐng)域中,標(biāo)識(shí)符(ID)的應(yīng)用非常廣泛。例如電話卡、充值卡或銀行卡等各種卡的卡號(hào)都是一個(gè)ID,用于唯一標(biāo)識(shí)一張卡;電話會(huì)議接入碼、網(wǎng)絡(luò)會(huì)議接入碼等也都是一個(gè)ID,用于唯一標(biāo)識(shí)一個(gè)電話會(huì)議或網(wǎng)絡(luò)會(huì)議。上述各種ID應(yīng)滿足以下要求1、ID為數(shù)字的組合,使用戶能夠在通信終端上輸入。
2、ID具有唯一性,一個(gè)ID只能標(biāo)識(shí)一個(gè)對(duì)象,不能與已有的ID重復(fù)。
3、ID具有隨機(jī)性,每次產(chǎn)生的ID沒(méi)有任何規(guī)律,任何人任何時(shí)候都不能通過(guò)已知的ID,推導(dǎo)出新產(chǎn)生的ID。
4、ID具有長(zhǎng)度可配置性,用戶可根據(jù)被標(biāo)識(shí)對(duì)象數(shù)量的變化來(lái)配置ID的長(zhǎng)度。
現(xiàn)有技術(shù)中,一般利用以下兩種方式來(lái)產(chǎn)生滿足上述要求的ID一種是利用每位隨機(jī)并組合的方式;另一種是利用系統(tǒng)當(dāng)前時(shí)間戳與隨機(jī)數(shù)組合的方式。
其中,利用每位隨機(jī)并組合的方式產(chǎn)生ID的原理如下如果要產(chǎn)生一個(gè)N位的ID,則對(duì)于N位中每一位分別產(chǎn)生
之間的隨機(jī)數(shù),將產(chǎn)生的隨機(jī)數(shù)組合在一起形成一個(gè)N位的ID,然后判斷已有的ID中是否包含有新產(chǎn)生的這個(gè)ID,如果有,則說(shuō)明新產(chǎn)生的ID與已有的ID重復(fù),需要再次產(chǎn)生一個(gè)ID,直至新產(chǎn)生的ID與已有的ID不重復(fù)為止。
利用系統(tǒng)當(dāng)前時(shí)間戳與隨機(jī)數(shù)組合的方式產(chǎn)生ID的原理如下計(jì)算機(jī)編程語(yǔ)言可以提供獲取系統(tǒng)當(dāng)前時(shí)間戳的方法及產(chǎn)生隨機(jī)數(shù)的隨機(jī)函數(shù),利用計(jì)算機(jī)編程語(yǔ)言提供的獲取系統(tǒng)當(dāng)前時(shí)間戳的方法獲取系統(tǒng)的當(dāng)前時(shí)間戳,利用計(jì)算機(jī)編程語(yǔ)言提供的產(chǎn)生隨機(jī)數(shù)的隨機(jī)函數(shù)產(chǎn)生一個(gè)一位或幾位的隨機(jī)數(shù),然后將獲取的時(shí)間戳設(shè)置在高位,將產(chǎn)生的隨機(jī)數(shù)設(shè)置在低位,二者組合在一起形成一個(gè)ID。
這里,利用計(jì)算機(jī)編程語(yǔ)言提供的獲取系統(tǒng)當(dāng)前時(shí)間戳的方法所獲取的系統(tǒng)當(dāng)前時(shí)間戳,一般是從1970年1月1日0時(shí)0分0秒起到現(xiàn)在某一時(shí)刻所經(jīng)過(guò)的秒數(shù),該秒數(shù)在計(jì)算機(jī)中一般用4字節(jié)的整型數(shù)來(lái)存儲(chǔ)。
對(duì)于第一種產(chǎn)生ID的方式而言,雖然產(chǎn)生的ID滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置的要求,但是已有ID的數(shù)量越多,已有ID中包含有新產(chǎn)生的ID的概率就越大,對(duì)于新產(chǎn)生的ID包含在已有ID的情況,又要重新生成ID,……,如此反復(fù),產(chǎn)生ID的效率很低,無(wú)法滿足一些對(duì)產(chǎn)生ID的效率要求高的場(chǎng)合。
對(duì)于第二種產(chǎn)生ID的方式而言,由于在現(xiàn)有的計(jì)算機(jī)系統(tǒng)中,時(shí)間戳一般使用四字節(jié)的整型數(shù)來(lái)表示,其長(zhǎng)度已達(dá)到10個(gè)字符,如果在其后再加上一個(gè)一位或幾位的隨機(jī)數(shù),將導(dǎo)致產(chǎn)生ID的位數(shù)過(guò)長(zhǎng),不能很好地滿足用戶根據(jù)被標(biāo)識(shí)對(duì)象數(shù)量的變化來(lái)配置ID長(zhǎng)度的要求。另外,由于利用隨機(jī)函數(shù)產(chǎn)生的隨機(jī)數(shù)是可能發(fā)生重復(fù)的,如果每秒鐘允許產(chǎn)生多個(gè)ID,則產(chǎn)生的ID就可能發(fā)生重復(fù),這樣仍需要同第一種產(chǎn)生ID的方式一樣,判斷新產(chǎn)生的ID是否重復(fù),所以第二種產(chǎn)生ID的方式限制了每秒鐘只能產(chǎn)生一個(gè)ID,顯然無(wú)法滿足大數(shù)據(jù)量業(yè)務(wù)應(yīng)用的要求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種產(chǎn)生ID的方法,以提高產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求ID的效率,并滿足大數(shù)據(jù)量業(yè)務(wù)應(yīng)用的要求。
為達(dá)到上述目的,本發(fā)明提供了一種產(chǎn)生ID的方法,包括以下步驟A、配置ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間;
B、在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。
上述方案中,步驟A中所述的根據(jù)ID的可用性劃分ID的取值區(qū)間為在配置的ID的取值范圍中根據(jù)所有已用的ID確定當(dāng)前所有可用的ID,將當(dāng)前所有可用的ID劃分為ID值連續(xù)的至少一個(gè)取值區(qū)間。
上述方案中,所述的步驟B包括B1、對(duì)所劃分的所有取值區(qū)間進(jìn)行編號(hào);B2、利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),選擇編號(hào)與產(chǎn)生的隨機(jī)數(shù)相同的取值區(qū)間,判斷所選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)ID的個(gè)數(shù),如果該取值區(qū)間內(nèi)只有一個(gè)ID,則取該ID作為新產(chǎn)生的ID;如果該取值區(qū)間內(nèi)有一個(gè)以上的ID,則執(zhí)行步驟B3;B3、利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),取該取值區(qū)間中與該隨機(jī)數(shù)對(duì)應(yīng)的ID作為新產(chǎn)生的ID。
上述方案中,所述ID需產(chǎn)生多個(gè),該方法進(jìn)一步包括根據(jù)ID的可用性更新ID的取值區(qū)間,在更新后的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。
上述方案中,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)只有一個(gè)ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間,并對(duì)剩余的取值區(qū)間重新編號(hào)。
上述方案中,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)有一個(gè)以上的ID,且將該取值區(qū)間的一個(gè)邊界ID作為新產(chǎn)生的ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間中作為新產(chǎn)生ID的邊界ID,更新該取值區(qū)間。
上述方案中,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)有一個(gè)以上的ID,且將該取值區(qū)間的一個(gè)非邊界ID作為新產(chǎn)生的ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間中作為新產(chǎn)生ID的非邊界ID,將該取值區(qū)間劃分為兩個(gè)取值區(qū)間,并對(duì)所有取值區(qū)間重新編號(hào)。
因此,本發(fā)明提供的這種產(chǎn)生ID的方法,通過(guò)配置ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間,并利用隨機(jī)函數(shù)在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID,能夠產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID。
利用本發(fā)明,由于ID的取值范圍可以由用戶根據(jù)實(shí)際需要來(lái)配置,設(shè)定ID的最大值和最小值,所以能夠保證產(chǎn)生的ID為全部數(shù)字且長(zhǎng)度可配置的ID。在需要產(chǎn)生多個(gè)ID時(shí),由于每次產(chǎn)生ID后都要更新ID的取值區(qū)間,使每次都在未用ID的范圍內(nèi)產(chǎn)生ID,所以能夠保證產(chǎn)生ID的唯一性。由于本發(fā)明是利用隨機(jī)函數(shù)來(lái)隨機(jī)選擇產(chǎn)生ID的取值區(qū)間,并在該取值區(qū)間中利用隨機(jī)函數(shù)來(lái)隨機(jī)選擇一個(gè)ID作為產(chǎn)生的ID,所以能夠在最大程度上保證產(chǎn)生ID的隨機(jī)性。因此,本發(fā)明能夠產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID。
由于每次都在未用ID的范圍內(nèi)產(chǎn)生ID,保證產(chǎn)生的ID滿足唯一性要求,在產(chǎn)生ID時(shí)不必判斷產(chǎn)生的ID是否會(huì)發(fā)生重復(fù),所以大大提高了產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求ID的效率。
由于產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID與計(jì)算機(jī)系統(tǒng)的當(dāng)前時(shí)間戳無(wú)關(guān),在單位時(shí)間內(nèi)可以產(chǎn)生大量滿足要求的ID,所以能夠滿足大數(shù)據(jù)量業(yè)務(wù)應(yīng)用的要求。
圖1為本發(fā)明產(chǎn)生ID總體技術(shù)方案的實(shí)現(xiàn)流程圖;圖2為本發(fā)明一個(gè)實(shí)施例中產(chǎn)生ID的方法流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下舉實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明的核心內(nèi)容是通過(guò)配置ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間,并利用隨機(jī)函數(shù)在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID,能夠產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID。
如圖1所示,圖1為本發(fā)明產(chǎn)生ID總體技術(shù)方案的實(shí)現(xiàn)流程圖,該方法包括以下步驟步驟101配置ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間;步驟102在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。
在上述步驟101中,所述配置ID的取值范圍是用戶根據(jù)實(shí)際需要設(shè)定ID的最大值和最小值進(jìn)行的。例如,如果用戶根據(jù)實(shí)際需要希望ID的長(zhǎng)度為5,則可以設(shè)定ID的最小值為10000,設(shè)定ID的最大值為99999,將ID的取值范圍配置為[10000,99999]。
所述根據(jù)ID的可用性劃分ID的取值區(qū)間,是在配置的ID的取值范圍中根據(jù)所有已用的ID確定當(dāng)前所有可用的ID,將當(dāng)前所有可用的ID劃分為ID值連續(xù)的至少一個(gè)取值區(qū)間。
例如,如果配置的ID的取值范圍為[10000,99999],假設(shè)在該取值范圍中沒(méi)有已用的ID,所有的ID都是可用的ID,則將所有可用的ID劃分為ID值連續(xù)的取值區(qū)間為[10000,99999]。假設(shè)在該取值范圍中10010、11001、25001、33001、52002、68005和95608為全部已用的ID,為了保證產(chǎn)生的ID與已用的ID不發(fā)生重復(fù),將ID的取值范圍[10000,99999]劃分為[10000,10009]、[10011,11000]、[11002,25000]、[25002,33000]、[33002,52001]、[52003,68004]、[68006,95607]和[95609,99999]幾個(gè)ID值連續(xù)的取值區(qū)間。
在上述步驟102中,所述在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID包括先對(duì)所劃分的所有取值區(qū)間進(jìn)行編號(hào),然后利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),選擇編號(hào)與產(chǎn)生的隨機(jī)數(shù)相同的取值區(qū)間,判斷該取值區(qū)間內(nèi)ID的個(gè)數(shù),如果該取值區(qū)間內(nèi)只有一個(gè)ID,則取該ID作為新產(chǎn)生的ID;如果該取值區(qū)間內(nèi)有一個(gè)以上的ID,則利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),取該取值區(qū)間中與該隨機(jī)數(shù)對(duì)應(yīng)的ID作為新產(chǎn)生的ID。
利用上述產(chǎn)生ID的方法,可以產(chǎn)生一個(gè)滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID。如果需要產(chǎn)生多個(gè)滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID,該方法進(jìn)一步包括根據(jù)ID的可用性更新ID的取值區(qū)間,在更新后的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。其中,所述根據(jù)ID的可用性更新ID的取值區(qū)間包括以下幾種情況情況1、如果步驟102中利用隨機(jī)函數(shù)選擇的取值區(qū)間內(nèi)只有一個(gè)ID,則取該ID作為新產(chǎn)生的ID后,該ID就成為已用的ID,為了保證在下一次產(chǎn)生ID時(shí)不會(huì)產(chǎn)生與該ID重復(fù)的ID,需要將該取值區(qū)間直接刪除,并對(duì)剩余的取值區(qū)間重新編號(hào),實(shí)現(xiàn)對(duì)ID取值區(qū)間的更新。
情況2、如果步驟102中利用隨機(jī)函數(shù)選擇的取值區(qū)間內(nèi)有一個(gè)以上的ID,則利用隨機(jī)函數(shù)在該取值區(qū)間中任意選取一個(gè)ID作為新產(chǎn)生的ID后,選取的這個(gè)ID就成為已用的ID,為了保證在下一次產(chǎn)生ID時(shí)不會(huì)產(chǎn)生與該ID重復(fù)的ID,需要將取值區(qū)間中的這個(gè)ID刪除,實(shí)現(xiàn)對(duì)ID取值區(qū)間的更新。此時(shí)又有兩種情形情形a、如果在選擇的取值區(qū)間中將取值區(qū)間的一個(gè)邊界ID作為新產(chǎn)生的ID,則直接刪除該取值區(qū)間中作為新產(chǎn)生ID的邊界ID,即可實(shí)現(xiàn)對(duì)ID取值區(qū)間的更新;情形b、如果在選擇的取值區(qū)間中將取值區(qū)間的一個(gè)非邊界ID作為新產(chǎn)生的ID,則刪除該取值區(qū)間中作為新產(chǎn)生ID的非邊界ID,同時(shí)將該取值區(qū)間劃分為兩個(gè)取值區(qū)間,并對(duì)所有的取值區(qū)間重新編號(hào)。
為了能夠更加清楚地說(shuō)明本發(fā)明提供的這種產(chǎn)生ID的方法,以下結(jié)合一個(gè)具體的實(shí)施例,并參照附圖對(duì)此進(jìn)行詳細(xì)說(shuō)明。
如圖2所示,圖2為本發(fā)明一個(gè)實(shí)施例中產(chǎn)生ID的方法流程圖。在本實(shí)施例中需要產(chǎn)生多個(gè)ID,假設(shè)用戶根據(jù)實(shí)際需要配置的ID的取值范圍為
,在該取值范圍內(nèi)已用的ID為3、5、6、7、12、14和55,該方法包括以下步驟步驟201為了保證產(chǎn)生的ID與已用的ID不發(fā)生重復(fù),根據(jù)配置的ID的取值范圍
,以及已用的ID 3、5、6、7、12、14和55,將ID的取值范圍
劃分為
、[4,4]、[8,11]、[13,13]、[15,54]、[56,2147483648]等ID值連續(xù)的取值區(qū)間。
步驟202對(duì)劃分的取值區(qū)間
、[4,4]、[8,11]、[13,13]、[15,54]、[56,2147483648]進(jìn)行編號(hào),得到表1。
表1步驟203利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍
內(nèi)的一個(gè)隨機(jī)數(shù),選擇編號(hào)與產(chǎn)生的隨機(jī)數(shù)相同的取值區(qū)間。
步驟204判斷選擇的用于產(chǎn)生ID的取值區(qū)間內(nèi)ID的個(gè)數(shù),如果所選擇的取值區(qū)間內(nèi)只有一個(gè)ID,則執(zhí)行步驟205;如果所選擇的取值區(qū)間內(nèi)有一個(gè)以上的ID,則執(zhí)行步驟206。
步驟205取該取值區(qū)間內(nèi)的ID作為新產(chǎn)生的ID,更新表1所述ID的取值區(qū)間,然后執(zhí)行步驟207。
例如,如果利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍
內(nèi)的隨機(jī)數(shù)為3,則選擇編號(hào)為3的取值區(qū)間[13,13]作為用于產(chǎn)生ID的取值區(qū)間,由于該取值區(qū)間中只有一個(gè)ID 13,則將13作為新產(chǎn)生的ID;在產(chǎn)生該ID后,直接刪除編號(hào)為3的取值區(qū)間,并對(duì)剩余的取值區(qū)間重新編號(hào),更新后的取值區(qū)間如表2所示。
表2
步驟206利用隨機(jī)函數(shù)產(chǎn)生所選擇的取值區(qū)間中ID數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),取該取值區(qū)間中與該隨機(jī)數(shù)對(duì)應(yīng)的ID作為新產(chǎn)生的ID,并更新ID的取值區(qū)間。
例如,如果利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍
內(nèi)的隨機(jī)數(shù)為4,則選擇編號(hào)為4的取值區(qū)間[15,54]為產(chǎn)生ID的取值區(qū)間,由于該取值區(qū)間中有40個(gè)ID,則利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍
內(nèi)的一個(gè)隨機(jī)數(shù)。
此時(shí),如果利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍
內(nèi)的隨機(jī)數(shù)為0,則將取該取值區(qū)間中與該隨機(jī)數(shù)0對(duì)應(yīng)的ID作為新產(chǎn)生的ID,這里由于與該隨機(jī)數(shù)0對(duì)應(yīng)的ID為15,即開(kāi)始區(qū)間值15+隨機(jī)數(shù)值0=15,所以將15作為新產(chǎn)生的ID;在產(chǎn)生該ID后,刪除該取值區(qū)間[15,54]中作為新產(chǎn)生ID的邊界ID 15,更新該取值區(qū)間為[16,54],更新后的取值區(qū)間如表3所示。
表3如果利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍
內(nèi)的隨機(jī)數(shù)為12,則將取該取值區(qū)間中與該隨機(jī)數(shù)12對(duì)應(yīng)的ID作為新產(chǎn)生的ID,這里由于與該隨機(jī)數(shù)12對(duì)應(yīng)的ID為27,即開(kāi)始區(qū)間值15+隨機(jī)數(shù)值12=27,所以將27作為新產(chǎn)生的ID;在產(chǎn)生該ID后,刪除該取值區(qū)間[15,54]中作為新產(chǎn)生ID的非邊界ID 27,將該取值區(qū)間[15,54]劃分為兩個(gè)取值區(qū)間[15,26]和[28,54],并對(duì)所有取值區(qū)間重新編號(hào),更新后的取值區(qū)間如表4所示。
表4步驟207在更新后的ID的取值區(qū)間中,重復(fù)執(zhí)行步驟203~206,產(chǎn)生下一個(gè)滿足要求的ID,如此反復(fù)多次,可以產(chǎn)生多個(gè)滿足要求的ID。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種產(chǎn)生標(biāo)識(shí)符的方法,其特征在于,包括以下步驟A、配置標(biāo)識(shí)符ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間;B、在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中所述的根據(jù)ID的可用性劃分ID的取值區(qū)間為在配置的ID的取值范圍中根據(jù)所有已用的ID確定當(dāng)前所有可用的ID,將當(dāng)前所有可用的ID劃分為ID值連續(xù)的至少一個(gè)取值區(qū)間。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟B包括B1、對(duì)所劃分的所有取值區(qū)間進(jìn)行編號(hào);B2、利用隨機(jī)函數(shù)產(chǎn)生編號(hào)數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),選擇編號(hào)與產(chǎn)生的隨機(jī)數(shù)相同的取值區(qū)間,判斷所選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)ID的個(gè)數(shù),如果該取值區(qū)間內(nèi)只有一個(gè)ID,則取該ID作為新產(chǎn)生的ID;如果該取值區(qū)間內(nèi)有一個(gè)以上的ID,則執(zhí)行步驟B3;B3、利用隨機(jī)函數(shù)產(chǎn)生該取值區(qū)間中ID數(shù)目范圍內(nèi)的一個(gè)隨機(jī)數(shù),取該取值區(qū)間中與該隨機(jī)數(shù)對(duì)應(yīng)的ID作為新產(chǎn)生的ID。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述ID需產(chǎn)生多個(gè),該方法進(jìn)一步包括根據(jù)ID的可用性更新ID的取值區(qū)間,在更新后的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)只有一個(gè)ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間,并對(duì)剩余的取值區(qū)間重新編號(hào)。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)有一個(gè)以上的ID,且將該取值區(qū)間的一個(gè)邊界ID作為新產(chǎn)生的ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間中作為新產(chǎn)生ID的邊界ID,更新該取值區(qū)間。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述產(chǎn)生上一個(gè)ID時(shí)選擇用于產(chǎn)生ID的取值區(qū)間內(nèi)有一個(gè)以上的ID,且將該取值區(qū)間的一個(gè)非邊界ID作為新產(chǎn)生的ID;所述更新ID的取值區(qū)間為刪除該取值區(qū)間中作為新產(chǎn)生ID的非邊界ID,將該取值區(qū)間劃分為兩個(gè)取值區(qū)間,并對(duì)所有取值區(qū)間重新編號(hào)。
全文摘要
本發(fā)明公開(kāi)了一種產(chǎn)生ID的方法,包括以下步驟A.配置ID的取值范圍,根據(jù)ID的可用性劃分ID的取值區(qū)間;B.在所劃分的任意一個(gè)取值區(qū)間中任取一個(gè)ID作為新產(chǎn)生的ID。利用本發(fā)明,能夠產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求的ID,大大提高了產(chǎn)生滿足全部數(shù)字、唯一、隨機(jī)和長(zhǎng)度可配置要求ID的效率,并能夠滿足大數(shù)據(jù)量業(yè)務(wù)應(yīng)用的要求。
文檔編號(hào)H04L29/12GK1874357SQ20051011252
公開(kāi)日2006年12月6日 申請(qǐng)日期2005年9月30日 優(yōu)先權(quán)日2005年9月30日
發(fā)明者李陽(yáng)林 申請(qǐng)人:華為技術(shù)有限公司