2018-polar-race
2018-polar-race copied to clipboard
RangePartitioner.partition的计算逻辑
public class RangePartitioner implements Partitioner {
public RangePartitioner(int numberOfPartition) { checkArgument(numberOfPartition == 1024, "partition number only support 1024 now"); }
/**
- // TODO assume partition number is 1024 */ @Override public int partition(byte[] key) { int result = ((0x03 & (key[0] >>> 6))) << 8; int subResult = ((0x3F & key[0]) << 2); int lastResult = 0x03 & (key[1] >>> 6); return result + subResult + lastResult; } }
RangePartitioner.partition,这个方法的逻辑是啥意思,没弄懂,求指教
取出byte数组视角的最后十个bit,做求mod。因为一个byte是8个bit,所以补了前面的2个bit,不过这个方法写的不太好。
取出byte数组视角的最后十个bit,做求mod。因为一个byte是8个bit,所以补了前面的2个bit,不过这个方法写的不太好。
好的,只是没有看懂,好奇你怎么想到的^_^