Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

generate UUID of long type

Please give me sample code to generate UUID of long type in java without using timestamp.

Thanks

like image 619
Mohamed Saligh Avatar asked Dec 25 '10 08:12

Mohamed Saligh


People also ask

Is UUID A long?

A UUID represents a 128-bit value.It will not fit in a long (which is 64 bits) and certainly not in an integer (which is 32 bits).

Can UUID have capital letters?

Are UUIDs Case-sensitive? No, UUIDs are written in base 16 which uses numbers 0-9 and characters a-f. There is no distinction between upper and lowercase letters.


2 Answers

A real UUID is 128 bits. A long is 64 bits.

This is not just pedantry. UUID stands for Universal Unique IDentifier.

The "universal uniqueness" of the established UUID schemes are based on:

  • encoding a MAC address and a timestamp,
  • encoding a hash of a DNS name and a timestamp, or
  • using a 122 bit random number ... which is large enough that the probability of a collision is very very small.

With 64 bits, there are simply not enough bits for "universal uniqueness". For instance, the birthday paradox means that if we had a number of computers generating random 64 bit numbers, the probability of a potentially detectable collision would be large enough to be of concern.

Now if you just want a UID (not a UUID), then any 64-bit sequence generator will do the job, provided that you take steps to guard against the sequence repeating. (If the sequence repeats, then the IDs are not unique in time; i.e. over time a given ID may denote different entities.)

like image 88
Stephen C Avatar answered Oct 04 '22 07:10

Stephen C


Have you looked at java.util.UUID?

like image 45
Raghuram Avatar answered Oct 04 '22 05:10

Raghuram