2018-polar-race icon indicating copy to clipboard operation
2018-polar-race copied to clipboard

RangePartitioner.partition的计算逻辑

Open yaoyuanyy opened this issue 4 years ago • 2 comments

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,这个方法的逻辑是啥意思,没弄懂,求指教

yaoyuanyy avatar Nov 08 '21 11:11 yaoyuanyy

取出byte数组视角的最后十个bit,做求mod。因为一个byte是8个bit,所以补了前面的2个bit,不过这个方法写的不太好。

neoremind avatar Dec 15 '21 16:12 neoremind

取出byte数组视角的最后十个bit,做求mod。因为一个byte是8个bit,所以补了前面的2个bit,不过这个方法写的不太好。

好的,只是没有看懂,好奇你怎么想到的^_^

yaoyuanyy avatar Dec 24 '21 10:12 yaoyuanyy