java生成16位唯一值做主鍵
僅限一臺伺服器
關於多個表主鍵的生成,在不建議擴充套件主鍵長度的前提下,通過對時間戳加鎖來解決主鍵重複問題
import org.apache.commons.lang.StringUtils; import com.fto.sql.UniqueTimestamp; public class Test { public static UniqueTimestamp UT = new UniqueTimestamp(); public static String generateId() { synchronized (UT) { return StringUtils.leftPad(Long.toHexString(UT.getUniqueTimestamp()).toUpperCase(), 16, '0'); } } public static void main(String[] args) { for (int i = 0; i < 100; i++) { new Thread(new Runnable() { @Override public void run() { System.out.println(generateId()); } }).start(); } } }
從100個執行緒同時執行的結果來看,沒有重複,但是目前還有幾個疑問:
1.會不會出現兩次執行時間差小於時間戳最小單位?
2.雖然可能解決了問題,但是效率是否降低影響整體?
3.回到問題,除了此方法,是否可以生成16位唯一值?
相關推薦
java生成16位唯一值做主鍵
僅限一臺伺服器關於多個表主鍵的生成,在不建議擴充套件主鍵長度的前提下,通過對時間戳加鎖來解決主鍵重複問題import org.apache.commons.lang.StringUtils; import com.fto.sql.UniqueTimestamp; publ
java通過UUID生成16位唯一訂單號
import java.util.UUID; public class T { public static String getOrderIdByUUId() { int machineId = 1;//最大支援1-9個叢集機器部署
java 利用ID生成六位唯一驗證碼
package com.hqjl.componentconfig.util; import java.util.Random; /** * @author chunying */ public class ShareCodeUtil { /** * 邀請碼生成器,演算法原理: * 1)
java利用UUID生成16位的字串
廢話不說 直接上程式碼 /** * 獲取16位隨機字串 * @return String */ public static String getUUID() { String uuid= UUID.randomUUID().toString(); char[]
Java 生成16/32位 MD5
注意!網上廣為流傳的MD5計算的版本,與標準MD5計算結果不同(原因可能是編碼方式的不同)。請注意甄別。 以下程式碼是經過測試的正確版本。 private static final char HEX
C# Guid 16位 唯一
mar sta bsp guide string gui ram 序列 guid public static class GuidExtentions { /// <summary> /// 根據GUID獲取1
隨機生成16位顏色
顏色 creat return eat ret += mat turn 隨機 createRandomColor() { let color = Math.floor((Math.random() * 256 * 256 * 256)).toString(16) w
Java 生成四位隨機驗證碼
驗證碼在平時用到的很多,簡單記錄一下生成四位隨機驗證碼的核心程式碼: 生成四位驗證碼(數字與字母混合) String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; StringBuilder sb=new StringBuilder(4);
生成16位的key(筆記)
public static void main(String[] args) { String keyStr = "root"; byte[] keys; try { keys = keyStr.getBytes("UTF-8");
java生成UUID通用唯一識別碼 (Universally Unique Identifier)
UUID含義是通用唯一識別碼 (Universally Unique Identifier),這 是一個軟體建構的標準,也是被開源軟體基金會 (Open Software Foundation, OSF) 的組織在分散式計算環境 (Distributed Computing
Java生成6位隨機數驗證碼
第一種方法:/** * //生成6位隨機數,測試多次後有產生5位隨機數的bug */ public static int randomCode() { StringBuilder str = new StringBuilder(); Random random = new Ran
java生成4位不重複字元(包含大寫字母、小寫字母、數字)
需要生成4位不重複的字元作為唯一引數,要求只能使用大寫字母、小寫字母和數字的組合。大寫字母26個、小寫字母26個、10個數字共62個字元。不重複排列個數:62*62*62*62=14776336個。 /** * * @author wzp * 2016-3-18
學以致用——Java原始碼——16位以內任意整數的逆序數的輸出(Reversing Digits)
這道題其實並不簡單,涉及: 1. 整數位數的計算 2. 整數各個位數的值的計算 3. 整數的構成 遺留問題:Java long資料型別最大支援Long.MAX_VALUE = 9223372036854775807(共19位),但經過測試,本程式僅支援16位以內的計算,超過後會發
生成16位密碼
package com.grcaeup; import java.util.Random; /** * 隨機生成8位密碼 工具類 * */ public class RandomPasswordUtils { private
C/C++ int 高16位賦值,低16位賦值 //int 高16位取值,低16位取值
因工作的關係,我需要對一個int型別的變數的低16位和高16位分別賦值, 百度了一下,沒找到相關文章,還是自己動手實現吧! 程式碼如下: #include "stdafx.h" #include <stdio.h> int main(int argc, c
java生成六位驗證碼
import java.util.Random; public class random { public static String getrandom(){ String code = ""; Random random = new Random(); for (i
java中16位或32位MD5加密
import java.security.MessageDigest; /** * @Description:MD5加解密工具 * @author:liuyc * @time:2016年5月23日 上午11:11:16 */ public class MD5Hel
AE中獲取資料表中某欄位唯一值
{ 9 // 得到IFeatureCursor遊標 10 IFeatureCursor pCursor = pFeatureClass.Search( null , false );11 12 // coClass物件例項生成 13
Java 生成N位隨機數的方法
最近專案中有一個需求:在自增的id後加上N位隨機數,提高安全性,自己寫了一個簡單的實現方式。 思路: 通過JDK 的Math.random()函式生成一個[0,1]範圍內的隨機數,將這個隨機數乘以 9
java生成6位隨機數的5種方法
1. 用math.random()實現,比較麻煩的一種方式,思路是:math.random()生成的是[0.0, 1.0)的偽隨機數,如果 當前值是0.9...,則直接*1000000返回,其他情況可能生成0.8...,0.03...,0.0003...,這些情況都*100