อะไรคือวิธีที่ดีที่สุดในการสร้าง GUID ใน Java
อะไรคือวิธีที่ดีที่สุดในการสร้าง GUID ใน Java
คำตอบ:
ดูที่คลาส UUID ที่มาพร้อมกับ Java 5 และใหม่กว่า
ตัวอย่างเช่น:
java.util.UUID.randomUUID();
UUID.randomUUID
วิธีการที่จะกลับมาซ้ำ แต่นี้ไม่ได้ทั้งหมดเป็นความกังวลที่มีเหตุผล การใช้งาน Oracle / OpenJDK ใช้ตัวสร้างตัวเลขสุ่มแบบเข้ารหัสลับที่แข็งแกร่ง เมื่อพิจารณาแล้วและกำหนดช่วงทางดาราศาสตร์ที่กำหนดโดยบิตจำนวนมากใน UUID คุณสามารถสร้างค่าดังกล่าวได้หลายล้านค่าในแอปของคุณและยังคงหลับสบาย การใช้หนึ่งในตัวแปรอื่น ๆ ช่วยลดความเป็นไปได้ของการชนได้ใกล้เคียงกับศูนย์มากขึ้นเนื่องจากการใช้ "space and time", [1] ที่อยู่ MAC หรือชื่อและ [2] วันที่ - เวลาปัจจุบันเป็นข้อ จำกัด
while
จนกว่าคุณจะได้รับที่ไม่ได้อยู่ในรายการของคุณ: p
ขึ้นอยู่กับUUID ที่คุณต้องการ
UUID
คลาสJava มาตรฐานสร้างUUIDs เวอร์ชัน 4 (สุ่ม) ( อัปเดต - เวอร์ชัน 3 (ชื่อ) สามารถสร้าง UUID ได้) นอกจากนี้ยังสามารถจัดการตัวแปรอื่น ๆ ได้แม้ว่าจะไม่สามารถสร้างได้ (ในกรณีนี้ "จับ" หมายถึงการสร้างUUID
อินสแตนซ์จากlong
, byte[]
หรือString
การแสดงและให้ accessors เหมาะสมบาง.)
การนำJava UUID Generator (JUG)ไปใช้เพื่อสนับสนุน UUID ประเภท "ทั้ง 3 'อย่างเป็นทางการ' ตามที่กำหนดโดยRFC-4122 " ... แม้ว่า RFC จะกำหนด 4 ประเภทและกล่าวถึงประเภทที่ 5
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทและตัวแปร UUID มีบทสรุปที่ดีในWikipediaและรายละเอียดเต็มไปด้วยเลือดอยู่ในRFC 4122และข้อกำหนดอื่น ๆ
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
การใช้งาน สำหรับประเภท 4 public static UUID randomUUID()
การใช้งาน Type 1 ไม่สามารถใช้ได้กับคลาส JDK
clockSequence()
เพียงเพื่อขยายคำตอบของ Mark Byers ด้วยตัวอย่าง:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
คำตอบอื่น ๆ ที่ถูกต้องโดยเฉพาะอย่างยิ่งนี้โดยสตีเฟ่นซี
การสร้างค่าUUIDภายใน Java ถูก จำกัด ไว้ที่เวอร์ชัน 4 (สุ่ม)เนื่องจากปัญหาด้านความปลอดภัย
หากคุณต้องการรุ่นอื่นของ UUIDs หนึ่งถนนคือให้แอป Java ของคุณเข้าถึงภายนอกJVMเพื่อสร้าง UUIDs โดยโทรไปที่:
uuidgen
พบใน Mac OS X, BSD และ Linuxuuid-ossp
ขยายมักจะมาพร้อมกับPostgres ส่วนขยายนั้นสามารถสร้างค่าเวอร์ชัน 1, 3 และ 4 และยังมีรูปแบบที่แตกต่างกันสองแบบ:
uuid_generate_v1mc()
- สร้าง UUID รุ่นที่ 1 แต่ใช้ที่อยู่ MAC แบบหลายผู้รับแบบสุ่มแทนที่อยู่ MAC ที่แท้จริงของคอมพิวเตอร์uuid_generate_v5(namespace uuid, name text)
- สร้าง UUID รุ่น 5 ซึ่งทำงานเหมือน UUID รุ่น 3 ยกเว้น SHA-1 จะใช้เป็นวิธีการแปลงแป้นพิมพ์