| @@ -8,22 +8,23 @@ JDK 1.8+ | |||||
| <dependency> | <dependency> | ||||
| <groupId>com.github.yitter</groupId> | <groupId>com.github.yitter</groupId> | ||||
| <artifactId>yitter-idgenerator</artifactId> | <artifactId>yitter-idgenerator</artifactId> | ||||
| <version>1.0.2</version> | |||||
| <version>1.0.3</version> | |||||
| </dependency> | </dependency> | ||||
| ``` | ``` | ||||
| ## 调用示例 | ## 调用示例 | ||||
| ``` | ``` | ||||
| // 全局初始化设置WorkerId,默认最大2^16-1。(初始化过程全局只需一次,且必须最先设置) | |||||
| // 全局初始化设置WorkerId,默认最大2^16-1,可通过调整 WorkerIdBitLength 增加最大值 | |||||
| IdGeneratorOptions options = new IdGeneratorOptions(); | IdGeneratorOptions options = new IdGeneratorOptions(); | ||||
| options.WorkerId = 1; | options.WorkerId = 1; | ||||
| YitIdHelper.setIdGenerator(options); | YitIdHelper.setIdGenerator(options); | ||||
| // 以上初始化过程全局只需一次,且必须最先设置 | |||||
| // 初始化以后,就可以在需要的地方调用方法生成ID。 | |||||
| // 初始化以后,即可在需要生成ID的地方,调用以下方法。 | |||||
| long newId = YitIdHelper.nextId(); | long newId = YitIdHelper.nextId(); | ||||
| ``` | ``` | ||||
| 如果基于DI框架集成,可以参考 YitIdHelper 去管理 IdGenerator 对象,必须使用**单例**模式。 | |||||
| 如果基于DI框架集成,可以参考 YitIdHelper 去管理 IdGenerator 对象,须使用**单例**模式。 | |||||
| ## options 默认值及说明 | ## options 默认值及说明 | ||||
| @@ -6,7 +6,7 @@ | |||||
| <groupId>com.github.yitter</groupId> | <groupId>com.github.yitter</groupId> | ||||
| <artifactId>yitter-idgenerator</artifactId> | <artifactId>yitter-idgenerator</artifactId> | ||||
| <version>1.0.3-SNAPSHOT</version> | |||||
| <version>1.0.4-SNAPSHOT</version> | |||||
| <packaging>jar</packaging> | <packaging>jar</packaging> | ||||
| <name>yitter-idgenerator</name> | <name>yitter-idgenerator</name> | ||||
| @@ -51,7 +51,7 @@ public class IdGeneratorOptions { | |||||
| /** | /** | ||||
| * 最小序列数(含) | * 最小序列数(含) | ||||
| * 默认5,不小于1,不大于MaxSeqNumber | |||||
| * 默认5,不小于5,不大于MaxSeqNumber | |||||
| */ | */ | ||||
| public short MinSeqNumber = 5; | public short MinSeqNumber = 5; | ||||
| @@ -63,7 +63,7 @@ public class SnowWorkerM1 implements ISnowWorker { | |||||
| WorkerId = options.WorkerId; | WorkerId = options.WorkerId; | ||||
| WorkerIdBitLength = options.WorkerIdBitLength == 0 ? 6 : options.WorkerIdBitLength; | WorkerIdBitLength = options.WorkerIdBitLength == 0 ? 6 : options.WorkerIdBitLength; | ||||
| SeqBitLength = options.SeqBitLength == 0 ? 6 : options.SeqBitLength; | SeqBitLength = options.SeqBitLength == 0 ? 6 : options.SeqBitLength; | ||||
| MaxSeqNumber = options.MaxSeqNumber > 0 ? options.MaxSeqNumber : (int) Math.pow(2, SeqBitLength) - 1; | |||||
| MaxSeqNumber = options.MaxSeqNumber > 0 ? options.MaxSeqNumber : (1 << SeqBitLength) - 1; | |||||
| MinSeqNumber = options.MinSeqNumber; | MinSeqNumber = options.MinSeqNumber; | ||||
| TopOverCostCount = options.TopOverCostCount; | TopOverCostCount = options.TopOverCostCount; | ||||
| BaseTime = options.BaseTime != 0 ? options.BaseTime : 1582136402000L; | BaseTime = options.BaseTime != 0 ? options.BaseTime : 1582136402000L; | ||||
| @@ -47,17 +47,15 @@ public class DefaultIdGenerator implements IIdGenerator { | |||||
| } | } | ||||
| int maxValue = maxSeqNumber; | int maxValue = maxSeqNumber; | ||||
| if (options.MinSeqNumber < 1 || options.MinSeqNumber > maxValue) { | |||||
| throw new IdGeneratorException("MinSeqNumber error. (range:[1, " + maxValue + "]"); | |||||
| if (options.MinSeqNumber < 5 || options.MinSeqNumber > maxValue) { | |||||
| throw new IdGeneratorException("MinSeqNumber error. (range:[5, " + maxValue + "]"); | |||||
| } | } | ||||
| switch (options.Method) { | switch (options.Method) { | ||||
| case 1: | |||||
| _SnowWorker = new SnowWorkerM1(options); | |||||
| break; | |||||
| case 2: | case 2: | ||||
| _SnowWorker = new SnowWorkerM2(options); | _SnowWorker = new SnowWorkerM2(options); | ||||
| break; | break; | ||||
| case 1: | |||||
| default: | default: | ||||
| _SnowWorker = new SnowWorkerM1(options); | _SnowWorker = new SnowWorkerM1(options); | ||||
| break; | break; | ||||