From 67f1dd7ec20553e8b4f94825f4659000d0a255dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=BA=B7=E6=98=8E?= <154518484@qq.com> Date: Thu, 11 Oct 2018 13:06:59 +0800 Subject: [PATCH 1/4] optimise. --- docs/SnowflakeTutorial_zh_CN.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/SnowflakeTutorial_zh_CN.md b/docs/SnowflakeTutorial_zh_CN.md index 9c06a6c..b318e9d 100644 --- a/docs/SnowflakeTutorial_zh_CN.md +++ b/docs/SnowflakeTutorial_zh_CN.md @@ -89,7 +89,18 @@ for (int i = 0; i < 20; i++) { 2017-09-15 17:35:04.894, #1, @(2,5) => id: 225912364284006401, hex: 03229A192F845001, bin: 0000001100100010100110100001100100101111100001000101000000000001 ``` -从输出结果看出,由于``System.out.println``IO操作比较耗时,导致前后两次生成ID的时间间隔偶尔会超过1毫秒。超过1毫秒的,序号字段会是``#0``;没超过1毫秒的,序号字段会累加。 +从输出结果看出,由于``System.out.println``IO操作比较耗时,导致前后两次生成ID的时间间隔偶尔会超过1毫秒。超过1毫秒的,序号字段会是``#0``;没超过1毫秒的,序号字段会累加。对应如下源码: +```java +/** + * the unique and incrementing sequence number scoped in only one + * period/unit (here is ONE millisecond). its value will be increased by 1 + * in the same specified period and then reset to 0 for next period. + *

+ * max: 2^12-1 range: [0,4095] + */ +private long sequence = 0L; +``` + ### 源代码解析 From 3458bb27ece3a62fa13b4ae2da5d30fbb6c42830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=BA=B7=E6=98=8E?= <154518484@qq.com> Date: Thu, 11 Oct 2018 14:22:51 +0800 Subject: [PATCH 2/4] optimise. --- CNAME | 1 - _config.yml | 1 - logo.jpg | Bin 0 -> 47710 bytes pom.xml | 140 +++++++++++++++++----------------------------------- 4 files changed, 45 insertions(+), 97 deletions(-) delete mode 100644 CNAME delete mode 100644 _config.yml create mode 100644 logo.jpg diff --git a/CNAME b/CNAME deleted file mode 100644 index e49db3f..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -snowflake.downgoon.xyz \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c50ff38..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-merlot \ No newline at end of file diff --git a/logo.jpg b/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..572f3e5891dc649a7dcdc01e9bb7dad74ebdf223 GIT binary patch literal 47710 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�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

`e>(Q*(|Y>=PCP>z3!utx4NlV_%JuHqKc? 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 IuA1rp*+2*M-~a#s literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 79dc59f..a216c51 100644 --- a/pom.xml +++ b/pom.xml @@ -2,11 +2,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - xyz.downgoon + com.moonsinfo snowflake - 1.0.0-SNAPSHOT - jar + 1.0 + pom + snowflake java edition of Twitter Snowflake: a network service for generating unique ID numbers at high scale with some simple guarantees http://snowflake.downgoon.xyz/ @@ -17,146 +18,70 @@ - - scm:git:git@github.com:downgoon/snowflake.git - scm:git:git@github.com:downgoon/snowflake.git - http://github.com/downgoon/snowflake - - - - - downgoon - downgoon - downgoon@qq.com - - - UTF-8 - junit junit 4.4 test - - - - - - - ossrh - - true - - - - ossrh - Central Public Snapshots - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - Central Public Releases - https://oss.sonatype.org/service/local/staging/deploy/maven2 - - - - - - mysite - - false - - - - mysiterh - Nexus Snapshot Repository - http://maven.intra.mysite.com/nexus/content/repositories/snapshots/ - - - mysiterh - Nexus Release Repository - http://maven.intra.mysite.com/nexus/content/repositories/releases/ - - - - - - + org.apache.maven.plugins maven-compiler-plugin - 2.3.2 - 1.7 - 1.7 - ${project.build.sourceEncoding} - true - true + 1.8 + 1.8 - - - - org.apache.maven.plugins - maven-eclipse-plugin - 2.9 - - true - true - - - - - - + org.apache.maven.plugins maven-source-plugin - 2.2.1 - attach-sources + package jar-no-fork - - + org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 2.10.4 - attach-javadocs + package jar + + UTF-8 + UTF-8 + UTF-8 + -Xdoclint:none + - - + org.apache.maven.plugins maven-gpg-plugin - 1.5 - sign-artifacts verify sign @@ -164,7 +89,6 @@ - org.apache.maven.plugins @@ -183,4 +107,30 @@ + + + + Ethan Yao + http://www.moonsinfo.com + 154518484@qq.com + + + + + scm:git:git@github.com:iTriumph/snowflake.git + scm:git:git@github.com:iTriumph/snowflake.git + http://github.com/iTriumph/snowflake + + + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + From 951834629ebe00a7621594cd5dd5b0f180d57ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=BA=B7=E6=98=8E?= <154518484@qq.com> Date: Fri, 12 Oct 2018 13:05:12 +0800 Subject: [PATCH 3/4] optimise. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a216c51..b0521ae 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.moonsinfo snowflake - 1.0 + 1.1 pom snowflake From 4cff78a86a2870f8538e3d6a894ea46864e60c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=BA=B7=E6=98=8E?= <154518484@qq.com> Date: Fri, 12 Oct 2018 15:34:43 +0800 Subject: [PATCH 4/4] optimise. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b0521ae..0941b35 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.moonsinfo snowflake 1.1 - pom + jar snowflake java edition of Twitter Snowflake: a network service for generating unique ID numbers at high scale with some simple guarantees