第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用MySQL生成隨機(jī)且唯一的8個(gè)字符串

使用MySQL生成隨機(jī)且唯一的8個(gè)字符串

HUWWW 2019-09-20 16:35:58
我正在開發(fā)一款涉及車輛的游戲。我有一個(gè)名為“車輛”的MySQL表,其中包含有關(guān)車輛的數(shù)據(jù),包括存儲(chǔ)車輛牌照的“板”欄?,F(xiàn)在這里出現(xiàn)了我遇到問題的部分。我需要在創(chuàng)建新車輛之前找到未使用的車牌 - 它應(yīng)該是一個(gè)字母數(shù)字8字符隨機(jī)字符串。我是如何實(shí)現(xiàn)這一點(diǎn)的是在Lua中使用while循環(huán),這是我正在編程的語(yǔ)言,用于生成字符串并查詢DB以查看它是否被使用。然而,隨著車輛數(shù)量的增加,我預(yù)計(jì)現(xiàn)在這種情況會(huì)變得更加低效。因此,我決定嘗試使用MySQL查詢解決此問題。我需要的查詢應(yīng)該只生成一個(gè)8字符的字母數(shù)字字符串,該字符串不在表中。我再次想到了生成和檢查循環(huán)方法,但我并沒有將這個(gè)問題局限于那個(gè)問題,以防萬(wàn)一更有效。我已經(jīng)能夠通過(guò)定義一個(gè)包含所有允許的字符的字符串并隨機(jī)地對(duì)其進(jìn)行子字符串來(lái)生成字符串,僅此而已。任何幫助表示贊賞。
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

正如我在評(píng)論中所說(shuō),我不會(huì)為碰撞的可能性而煩惱。只需生成一個(gè)隨機(jī)字符串并檢查它是否存在。如果是這樣,請(qǐng)?jiān)僭囈淮危且呀?jīng)分配了大量的印版,否則你不應(yīng)該多做幾次。


另一種在pure(My)SQL中生成8個(gè)字符長(zhǎng)的偽隨機(jī)字符串的解決方案:


SELECT LEFT(UUID(), 8);

您可以嘗試以下(偽代碼):


DO 

    SELECT LEFT(UUID(), 8) INTO @plate;

    INSERT INTO plates (@plate);

WHILE there_is_a_unique_constraint_violation

-- @plate is your newly assigned plate number

由于這篇文章引起了意想不到的關(guān)注,讓我強(qiáng)調(diào)一下ADTC的評(píng)論:上面的代碼非常愚蠢并產(chǎn)生連續(xù)的數(shù)字。


對(duì)于稍微不那么愚蠢的隨機(jī)性嘗試這樣的事情:


SELECT LEFT(MD5(RAND()), 8)

對(duì)于真正的(密碼安全的)隨機(jī)性,使用RANDOM_BYTES()而不是RAND()(但我會(huì)考慮將此邏輯移至應(yīng)用層)。


查看完整回答
反對(duì) 回復(fù) 2019-09-20
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

如何計(jì)算連續(xù)整數(shù)的MD5(或其他)哈希值,然后取前8個(gè)字符。



MD5(1) = c4ca4238a0b923820dcc509a6f75849b => c4ca4238

MD5(2) = c81e728d9d4c2f636f067f89cc14862c => c81e728d

MD5(3) = eccbc87e4b5ce2fe28308fd9f2a7baf3 => eccbc87e

等等


警告:我不知道你可以在碰撞之前分配多少(但它將是一個(gè)已知的恒定值)。


編輯:現(xiàn)在這是一個(gè)古老的答案,但我再次看到它的時(shí)間在我的手上,所以,從觀察......


所有數(shù)字的機(jī)會(huì)= 2.35%


所有字母的機(jī)會(huì)= 0.05%


MD5(82945)=“7b763dcb ...”時(shí)的第一次碰撞(與MD5(25302)相同的結(jié)果)


查看完整回答
反對(duì) 回復(fù) 2019-09-20
  • 3 回答
  • 0 關(guān)注
  • 2275 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)