Browse Source

修改约束条件

tags/v1.0.0
zhouzj 4 years ago
parent
commit
6ae25ac33a
8 changed files with 23 additions and 31 deletions
  1. +5
    -5
      C#/source/Yitter.IdGenTest/Program.cs
  2. +3
    -2
      C#/source/Yitter.IdGenerator/Contract/IdGeneratorOptions.cs
  3. +2
    -5
      C#/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs
  4. +2
    -6
      C#/source/Yitter.IdGenerator/DefaultIdGenerator.cs
  5. +1
    -1
      C#/source/Yitter.IdGenerator/Yitter.IdGenerator.csproj
  6. +3
    -2
      Java/source/src/main/java/com/yitter/contract/IdGeneratorOptions.java
  7. +3
    -6
      Java/source/src/main/java/com/yitter/core/SnowWorkerM1.java
  8. +4
    -4
      Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java

+ 5
- 5
C#/source/Yitter.IdGenTest/Program.cs View File

@@ -10,7 +10,7 @@ namespace Yitter.OrgSystem.TestA
{
// 测试参数(默认配置下,最佳性能是10W/s)
static int genIdCount = 5000; // 计算ID数量(如果要验证50W效率,请将TopOverCostCount设置为20000或适当增加SeqBitLength)
static int genIdCount = 50000; // 计算ID数量(如果要验证50W效率,请将TopOverCostCount设置为20000或适当增加SeqBitLength)
static short method = 1; // 1-漂移算法,2-传统算法
@@ -30,11 +30,11 @@ namespace Yitter.OrgSystem.TestA
Method = method,
WorkerId = 1,
TopOverCostCount = 2000,
WorkerIdBitLength = 1,
SeqBitLength = 2,
//TopOverCostCount = 2000,
//WorkerIdBitLength = 1,
//SeqBitLength = 2,
MinSeqNumber = 1,
//MinSeqNumber = 1,
// MaxSeqNumber = 200,


+ 3
- 2
C#/source/Yitter.IdGenerator/Contract/IdGeneratorOptions.cs View File

@@ -30,12 +30,13 @@ namespace Yitter.IdGenerator
/// <summary>
/// 机器码
/// 与 WorkerIdBitLength 有关系
/// (ushort类型,最大值65535,如果有更高要求,请修改数据类型,或联系作者)
/// </summary>
public virtual ushort WorkerId { get; set; } = 0;
/// <summary>
/// 机器码位长
/// 范围:2-21(要求:序列数位长+机器码位长不超过22)。
/// 范围:1-21(要求:序列数位长+机器码位长不超过22)。
/// 建议范围:6-12。
/// </summary>
public virtual byte WorkerIdBitLength { get; set; } = 6;//10;
@@ -55,7 +56,7 @@ namespace Yitter.IdGenerator
/// <summary>
/// 最小序列数(含)
/// 默认5,不小于1,不大于MaxSeqNumber-2
/// 默认5,不小于1,不大于MaxSeqNumber
/// </summary>
public virtual ushort MinSeqNumber { get; set; } = 5;


+ 2
- 5
C#/source/Yitter.IdGenerator/Core/SnowWorkerM1.cs View File

@@ -30,24 +30,21 @@ namespace Yitter.IdGenerator
/// <summary>
/// 机器码位长
/// (机器码+序列数<=22位)
/// </summary>
protected readonly byte WorkerIdBitLength = 0;
/// <summary>
/// 自增序列数位长
/// (机器码+序列数<=22位)
/// </summary>
protected readonly byte SeqBitLength = 0;
/// <summary>
/// 最大序列数(含此值)
/// 超过最大值,就会从MinSeqNumber开始
/// 最大序列数(含)
/// </summary>
protected readonly int MaxSeqNumber = 0;
/// <summary>
/// 最小序列数(含此值
/// 最小序列数(含)
/// </summary>
protected readonly ushort MinSeqNumber = 0;


+ 2
- 6
C#/source/Yitter.IdGenerator/DefaultIdGenerator.cs View File

@@ -57,19 +57,15 @@ namespace Yitter.IdGenerator
}
var maxSeqNumber = Math.Pow(2, options.SeqBitLength) - 1;
//if (options.MaxSeqNumber > maxSeqNumber)
//{
// options.MaxSeqNumber = (int)maxSeqNumber;
//}
if (options.MaxSeqNumber < 0 || options.MaxSeqNumber > maxSeqNumber)
{
throw new ApplicationException("MaxSeqNumber error. (range:[1, " + maxSeqNumber + "]");
}
var maxValue = maxSeqNumber;// maxSeqNumber - 2;
var maxValue = maxSeqNumber; // maxSeqNumber - 1;
if (options.MinSeqNumber < 1 || options.MinSeqNumber > maxValue)
{
throw new ApplicationException("MinSeqNumber error. (range:[5, " + maxValue + "]");
throw new ApplicationException("MinSeqNumber error. (range:[1, " + maxValue + "]");
}
switch (options.Method)


+ 1
- 1
C#/source/Yitter.IdGenerator/Yitter.IdGenerator.csproj View File

@@ -18,7 +18,7 @@
<Copyright>Yitter</Copyright>
<PackageProjectUrl>https://gitee.com/yitter/idgenerator</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<Version>1.0.6</Version>
<Version>1.0.7</Version>
<PackageReleaseNotes></PackageReleaseNotes>
</PropertyGroup>


+ 3
- 2
Java/source/src/main/java/com/yitter/contract/IdGeneratorOptions.java View File

@@ -25,12 +25,13 @@ public class IdGeneratorOptions {
/**
* 机器码,必须由外部系统设置
* 与 WorkerIdBitLength 有关系
* (short类型,最大值32766,如果有更高要求,请修改数据类型,或联系作者)
*/
public short WorkerId = 0;
/**
* 机器码位长
* 范围:2-21(要求:序列数位长+机器码位长不超过22)。
* 范围:1-21(要求:序列数位长+机器码位长不超过22)。
* 建议范围:6-12。
*/
public byte WorkerIdBitLength = 6;
@@ -50,7 +51,7 @@ public class IdGeneratorOptions {
/**
* 最小序列数(含)
* 默认5,不小于1,不大于MaxSeqNumber-1
* 默认5,不小于1,不大于MaxSeqNumber
*/
public short MinSeqNumber = 5;


+ 3
- 6
Java/source/src/main/java/com/yitter/core/SnowWorkerM1.java View File

@@ -23,24 +23,21 @@ public class SnowWorkerM1 implements ISnowWorker {
/**
* 机器码位长
* (机器码+序列数<=22位)
*/
protected final byte WorkerIdBitLength;
/**
* 自增序列数位长
* (机器码+序列数<=22位)
*/
protected final byte SeqBitLength;
/**
* 最大序列数(含此值)
* 超过最大值,就会从MinSeqNumber开始
* 最大序列数(含)
*/
protected final int MaxSeqNumber;
/**
* 最小序列数(含此值
* 最小序列数(含)
*/
protected final short MinSeqNumber;
@@ -64,7 +61,7 @@ public class SnowWorkerM1 implements ISnowWorker {
WorkerId = options.WorkerId;
WorkerIdBitLength = options.WorkerIdBitLength == 0 ? 6 : options.WorkerIdBitLength;
SeqBitLength = options.SeqBitLength == 0 ? 6 : options.SeqBitLength;
MaxSeqNumber = options.MaxSeqNumber > 0 ? options.MaxSeqNumber : (int) Math.pow(2, SeqBitLength);
MaxSeqNumber = options.MaxSeqNumber > 0 ? options.MaxSeqNumber : (int) Math.pow(2, SeqBitLength) - 1;
MinSeqNumber = options.MinSeqNumber;
TopOverCostCount = options.TopOverCostCount;
BaseTime = options.BaseTime != 0 ? options.BaseTime : 1582136402000L;


+ 4
- 4
Java/source/src/main/java/com/yitter/idgen/DefaultIdGenerator.java View File

@@ -30,7 +30,7 @@ public class DefaultIdGenerator implements IIdGenerator {
}
double maxWorkerIdNumber = Math.pow(2, options.WorkerIdBitLength) - 1;
if (options.WorkerId < 1 || options.WorkerId > maxWorkerIdNumber) {
if (options.WorkerId < 0 || options.WorkerId > maxWorkerIdNumber) {
throw new IdGeneratorException("WorkerId error. (range:[1, " + maxWorkerIdNumber + "]");
}
@@ -43,9 +43,9 @@ public class DefaultIdGenerator implements IIdGenerator {
throw new IdGeneratorException("MaxSeqNumber error. (range:[1, " + maxSeqNumber + "]");
}
double maxValue = maxSeqNumber - 2;
if (options.MinSeqNumber < 5 || options.MinSeqNumber > maxValue) {
throw new IdGeneratorException("MinSeqNumber error. (range:[5, " + maxValue + "]");
double maxValue = maxSeqNumber;
if (options.MinSeqNumber < 1 || options.MinSeqNumber > maxValue) {
throw new IdGeneratorException("MinSeqNumber error. (range:[1, " + maxValue + "]");
}
switch (options.Method) {


Loading…
Cancel
Save