-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
取年月日時(shí)分秒,生產(chǎn)ID。
使用GUID,世界上的任何兩臺(tái)計(jì)算機(jī)都不會(huì)生成重復(fù)的 GUID 值,代碼如下:
如何生成唯一id(如何生成唯一編碼)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于如何生成唯一id的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com,如需咨詢相關(guān)業(yè)務(wù)請(qǐng)撥打175-8598-2043,或微信:1454722008
本文目錄:
一、delphi如何生成一個(gè)唯一的ID號(hào)
var
AGuid: TGUID;
sGUID: string;
begin
sGUID := CreateClassID;
ShowMessage(sGUID); // 兩邊帶大括號(hào)的Guid
Delete(sGUID, 1, 1);
Delete(sGUID, Length(sGUID), 1);
ShowMessage(sGUID); // 去掉大括號(hào)的Guid,占36位中間有減號(hào)
sGUID:= StringReplace(sGUID, '-', '', [rfReplaceAll]);
ShowMessage(sGUID); // 去掉減號(hào)的Guid,占32位
end;
二、JMeter中如何構(gòu)造一個(gè)唯一ID
我也是新手,不過(guò)考慮到唯一ID,可以簡(jiǎn)單的使用計(jì)數(shù)器,將計(jì)數(shù)器得到的值組裝成唯一ID ,
參數(shù)看你怎么配置了。格式的長(zhǎng)度就是產(chǎn)生的長(zhǎng)度是多少。比如這里產(chǎn)生的第一個(gè)就是000000001,
第二個(gè)線程就是 000000002
第三個(gè)就是 000000003
。。。 。。。
第十個(gè)就是 000000010 注意長(zhǎng)度,你可以在格式里面
如果格式填入ABCD132333000(如果沒(méi)有后面的000,產(chǎn)生的效果不一樣喲
如果格式填入ABCD132333000(如果沒(méi)有后面的000,產(chǎn)生的效果不一樣喲。會(huì)在ABCD132333后面直接寫 ABCD1323331,ABCD1323332,ABCD1323333) 那么產(chǎn)生的第一個(gè)就是 ABCD132333001 第一百個(gè)就是 ABCD132333100。 這樣也不會(huì)重復(fù),網(wǎng)上說(shuō)的其他辦法都太復(fù)雜了。希望這種能幫助你。 要使用這個(gè)唯一碼 直接用${jishu} 就可以在一個(gè)線程組 一直使用這個(gè)值了
三、Rust實(shí)現(xiàn)雪花算法生成唯一ID方案
發(fā)現(xiàn)一類的網(wǎng)站資源ID很短不知道如何實(shí)現(xiàn)
如 https://www.jianshu.com/p/4a8939c48cd4
這個(gè) 12位的
然后就考慮到雪花法但生成結(jié)果是:6887650413378670482 近20位數(shù)字,就考慮是否有其它處理方式
主要目的是想把雪花算法生成的值變得更短
如 6887650413378670482 轉(zhuǎn)換成更短小的格式 16 或12位數(shù)字字符串
經(jīng)過(guò)多方查找現(xiàn)定使用雪花算法生成ID再轉(zhuǎn)為36進(jìn)制的13位小寫字母加數(shù)字格式
若有更好的實(shí)現(xiàn)方式,歡迎評(píng)論指導(dǎo)。
四、如何在高并發(fā)分布式系統(tǒng)中生成全局唯一Id
我了解的方案如下……………………………………………………………………
1、 使用數(shù)據(jù)庫(kù)自增Id
優(yōu)勢(shì):編碼簡(jiǎn)單,無(wú)需考慮記錄唯一標(biāo)識(shí)的問(wèn)題。
缺陷:
1) 在大表做水平分表時(shí),就不能使用自增Id,因?yàn)镮nsert的記錄插入到哪個(gè)分表依分表規(guī)則判定決定,若是自增Id,各個(gè)分表中Id就會(huì)重復(fù),在做查詢、刪除時(shí)就會(huì)有異常。
2) 在對(duì)表進(jìn)行高并發(fā)單記錄插入時(shí)需要加入事物機(jī)制,否則會(huì)出現(xiàn)Id重復(fù)的問(wèn)題。
3) 在業(yè)務(wù)上操作父、子表(即關(guān)聯(lián)表)插入時(shí),需要在插入數(shù)據(jù)庫(kù)之前獲取max(id)用于標(biāo)識(shí)父表和子表關(guān)系,若存在并發(fā)獲取max(id)的情況,max(id)會(huì)同時(shí)被別的線程獲取到。
4) 等等。
結(jié)論:適合小應(yīng)用,無(wú)需分表,沒(méi)有高并發(fā)性能要求。
2、 單獨(dú)開(kāi)一個(gè)數(shù)據(jù)庫(kù),獲取全局唯一的自增序列號(hào)或各表的MaxId
1) 使用自增序列號(hào)表
專門一個(gè)數(shù)據(jù)庫(kù),生成序列號(hào)。開(kāi)啟事物,每次操作插入時(shí),先將數(shù)據(jù)插入到序列表并返回自增序列號(hào)用于做為唯一Id進(jìn)行業(yè)務(wù)數(shù)據(jù)插入。
注意:需要定期清理序列表的數(shù)據(jù)以保證獲取序列號(hào)的效率;插入序列表記錄時(shí)要開(kāi)啟事物。
使用此方案的問(wèn)題是:每次的查詢序列號(hào)是一個(gè)性能損耗;如果這個(gè)序列號(hào)列暴了,那就杯具了,你不知道哪個(gè)表使用了哪個(gè)序列,所以就必須換另一種唯一Id方式如GUID。
2) 使用MaxId表存儲(chǔ)各表的MaxId值
專門一個(gè)數(shù)據(jù)庫(kù),記錄各個(gè)表的MaxId值,建一個(gè)存儲(chǔ)過(guò)程來(lái)取Id,邏輯大致為:開(kāi)啟事物,對(duì)于在表中不存在記錄,直接返回一個(gè)默認(rèn)值為1的鍵值,同時(shí)插入該條記錄到table_key表中。而對(duì)于已存在的記錄,key值直接在原來(lái)的key基礎(chǔ)上加1更新到MaxId表中并返回key。
使用此方案的問(wèn)題是:每次的查詢MaxId是一個(gè)性能損耗;不過(guò)不會(huì)像自增序列表那么容易列暴掉,因?yàn)槭菙[表進(jìn)行劃分的。
詳細(xì)可參考:《使用MaxId表存儲(chǔ)各表的MaxId值,以獲取全局唯一Id》
我截取此文中的sql語(yǔ)法如下:
第一步:創(chuàng)建表
create table table_key
(
table_name varchar(50)not null primary key,
key_value int not null
)
第二步:創(chuàng)建存儲(chǔ)過(guò)程來(lái)取自增ID
create procedure up_get_table_key
(
@table_name varchar(50),
@key_value int output
)
as
begin
begin tran
declare @key int
--initialize the key with 1
set @key=1
--whether the specified table is exist
if not exists(selecttable_name from table_key wheretable_name=@table_name)
begin
insert into table_keyvalues(@table_name,@key) --default key vlaue:1
end
-- step increase
else
begin
select @key=key_valuefrom table_key with (nolock) where table_name=@table_name
set @key=@key+1
--update the key value by table name
update table_key setkey_value=@key where table_name=@table_name
end
--set ouput value
set @key_value=@key
--commit tran
commit tran
if @@error>0
rollback tran
end
轉(zhuǎn)載僅供參考,版權(quán)屬于原作者。
以上就是關(guān)于如何生成唯一id相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
如何做宣傳推廣營(yíng)銷(如何做宣傳推廣營(yíng)銷抖音)
如何打造個(gè)人形象(如何打造個(gè)人形象500字)
廣告業(yè)務(wù)員如何開(kāi)發(fā)客戶(廣告公司怎么找客戶資源)
學(xué)工業(yè)設(shè)計(jì)的就業(yè)方向(學(xué)工業(yè)設(shè)計(jì)的就業(yè)方向及前景)
猜你喜歡
能打開(kāi)各種網(wǎng)站的瀏覽器網(wǎng)頁(yè)版(可以打開(kāi)各種網(wǎng)站的瀏覽器)
如何注冊(cè)自己的工作室(注冊(cè)個(gè)人工作室流程及費(fèi)用)
申請(qǐng)第二個(gè)微信號(hào)(申請(qǐng)第二個(gè)微信號(hào)不用手機(jī)號(hào)可以嗎)
制作logo免費(fèi)軟件(免費(fèi)設(shè)計(jì)logo在線制作)
賺錢的游戲軟件無(wú)門檻無(wú)廣告(免費(fèi)賺錢無(wú)門檻的游戲)
問(wèn)大家
如何做一名有商業(yè)頭腦的UI設(shè)計(jì)師?
抖音如何開(kāi)通海外直播權(quán)限?抖音怎么開(kāi)通海外直播權(quán)限?
如何開(kāi)通抖音海外直播白名單?抖音海外直播權(quán)限解決辦法
東城奠基儀式辦公會(huì)議場(chǎng)地出租如何選擇不被騙?在座的老鐵們?cè)诰€等
抖音海外直播權(quán)限解決方法,抖音如何開(kāi)通國(guó)外直播權(quán)限辦法
抖音國(guó)外如何開(kāi)通直播?抖音海外直播權(quán)限開(kāi)通方法?
抖音如何在法國(guó)直播?抖音怎么在法國(guó)直播?
抖音代運(yùn)營(yíng)有哪些套路?該如何選擇一個(gè)好的抖音代運(yùn)營(yíng)公司?
抖音海外如何直播?抖音海外直播權(quán)限怎么開(kāi)通?
抖音如何開(kāi)通韓國(guó)直播權(quán)限?抖音怎么開(kāi)通韓國(guó)直播權(quán)限
濟(jì)南白領(lǐng)同城相親平臺(tái),要真實(shí)正規(guī)的單身找對(duì)象交友平臺(tái)在哪里?