Skip to content

making/timeflake4j

Repository files navigation

Timeflake4j

MIT License Maven Central Javadocs Actions Status

Java implementation of Timeflake.

Timeflake is a 128-bit, roughly-ordered, URL-safe UUID. Inspired by Twitter's Snowflake, Instagram's ID and Firebase's PushID.

How to use

<dependency> <groupId>am.ik.timeflake</groupId> <artifactId>timeflake4j</artifactId> <version>1.4.0</version> </dependency>

Example

Generate a snowflake

final Timeflake timeflake = Timeflake.generate(); System.out.println(timeflake.value()); // 1948067690345842174618850429941262698 (java.math.BigInteger) System.out.println(timeflake.toUuid()); // 01772f27-10f3-091a-ea3f-28e7f6f7296a (java.util.UUID) System.out.println(timeflake.toInstant()); // 2021-01-23T12:10:25.395Z (java.time.Instant) System.out.println(timeflake.base62()); // 2lSUuPgi2bGXfZde730O2 (String)

TheadLocalRandom is used to generate a random number by default. You can change Random instance as follows:

final Timeflake timeflake = Timeflake.generate(new SecureRandom());

Create a snowflake

from an UUID instance

final Timeflake timeflake = Timeflake.valueOf(UUID.fromString("01772f27-10f3-091a-ea3f-28e7f6f7296a")); System.out.println(timeflake.value()); // 1948067690345842174618850429941262698

from a base62 encoded string

final Timeflake timeflake = Timeflake.valueOf("2lSUuPgi2bGXfZde730O2"); System.out.println(timeflake.value()); // 1948067690345842174618850429941262698

from a big integer value

final Timeflake timeflake = Timeflake.valueOf(new BigInteger("1948067690345842174618850429941262698")); System.out.println(timeflake.value()); // 1948067690345842174618850429941262698

from a 48-bit timestamp and 80-bit random part

final Instant timestamp = Instant.now(); final BigInteger random = new BigInteger(80, ThreadLocalRandom.current()); final Timeflake timeflake = Timeflake.create(timestamp, random);

Note on security

See the original warning.

Note on privacy

See the original warning.

Required

  • Java 8+

License

Licensed under the MIT License

About

Java implementation of Timeflake

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •