實際的業務場景中需要生成4位不重複的字串,這個場景比較特殊,不具有普遍性,正常場景的唯一單號都不會只有4位。
最先想到的是隨機生成4位字串,字元包括數字、大小寫字母一共62位,基本可以滿足使用要求,但是越到後面,重複的概率就會越大。想要保證不重複,可以加入時間戳,機器id等,類似雪花演算法的思路,但是長度都比較長,將其對映為4位長度的字串有點困難。
只能換乙個思路,通過遞增的方式來保證唯一性,遞增可以借助資料庫實現。同時將10進製轉換為62進製可以滿足4位長度的限制。這樣10進製的最大值為 14776335,基本滿足我們現在的業務場景。
public class uniquestrutils
stringbuilder sb = new stringbuilder();
int remainder = 0;
while (num > scale - 1)
string value = sb.reverse().tostring();
return stringutils.leftpad(value, 4, '0');
}public static long convert10(string str)
return num;
}}
生成不重複12位隨機字串
1.生成乙個12位隨機不重複純數字字串 public static string couponcode return first string.format 010d rnd 2.生成乙個以自定義字串開頭的不重複隨機字串 public static string couponcode string ...
PHP生成6位的不重複的字串(類似 UUID)
我們要考慮到 1 不重複。2 安全性。不建議使用啥敏感的資料作為訂單生成規則 例如 使用者uid,訂單自增order id等 以為會暴露 一些敏感資訊 3 不能使用大規模隨機碼。why?首先問你 程式語言中的隨機能做到真隨機嗎?我可以不自信的告訴你至少php做不到,所以可能導致第乙個 不重複 原則發...
最長不重複字串
一直以為這個方法是對的,後來發現這種方法是錯誤的,不能處理巢狀的情況,如 adercijckega 稍後再修正!最近面試遇到這題,再網上參考了一些blog,自己歸納出方法並用c 實現。問題 求出字串中最長不重複的字串,如 abccdefgchi 最長不重複字串為defgchi.分析 1.定義乙個二維...