Skip to content

Instantly share code, notes, and snippets.

@efenderbosch
Created August 27, 2013 20:25
Show Gist options
  • Save efenderbosch/6358694 to your computer and use it in GitHub Desktop.
Save efenderbosch/6358694 to your computer and use it in GitHub Desktop.
db id shard
import org.apache.commons.lang.StringUtils;
public class Test {
public static void main(String[] args) throws Exception {
long time = Long.MAX_VALUE;
long shiftedTime = time << 23;
System.out.println("years " + Math.pow(2, 41) / 1000.0 / 60.0 / 60.0 / 24.0 / 365.0);
System.out.println("1234567890123456789012345678901234567890123456789012345678901234");
System.out.println(StringUtils.leftPad(Long.toBinaryString(shiftedTime), 64, "0"));
long shard = 1023;
long shiftedShard = shard << 13;
System.out.println(StringUtils.leftPad(Long.toBinaryString(shiftedShard), 64, "0"));
long seq = 8191;
System.out.println(StringUtils.leftPad(Long.toBinaryString(seq), 64, "0"));
long result = shiftedTime | shiftedShard | seq;
System.out.println(StringUtils.leftPad(Long.toBinaryString(result), 64, "0"));
}
}
years 69.73057000101473
1234567890123456789012345678901234567890123456789012345678901234
1111111111111111111111111111111111111111100000000000000000000000
0000000000000000000000000000000000000000011111111110000000000000
0000000000000000000000000000000000000000000000000001111111111111
1111111111111111111111111111111111111111111111111111111111111111
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment