完成单元测试 #11

Merged
ZhouXY108 merged 25 commits from :1.x.x into 1.x.x 2025-01-01 20:47:38 +08:00
3 changed files with 32 additions and 8 deletions
Showing only changes of commit 1b2978fb06 - Show all commits

View File

@ -21,9 +21,17 @@ import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import com.google.common.annotations.Beta; /**
* ID 生成器
@Beta *
* <p>
* 生成 UUID 修改版雪花IDSeata 版本
* </p>
*
* @see UUID
* @see IdWorker
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108}">ZhouXY</a>
*/
public class IdGenerator { public class IdGenerator {
// ===== UUID ===== // ===== UUID =====

View File

@ -24,7 +24,26 @@ import java.util.concurrent.atomic.AtomicLong;
import xyz.zhouxy.plusone.commons.exception.system.NoAvailableMacFoundException; import xyz.zhouxy.plusone.commons.exception.system.NoAvailableMacFoundException;
/**
* Seata 提供的修改版雪花ID
* <p>
* 大体思路为
* <ol>
* <li>每个机器线程安全地生成序列前面加上机器的id这样就不会与其它机器的id相冲突</li>
* <li>时间戳作为序列的预留位它更像是应用启动时最开始的序列的一部分在一个时间戳里生成 4096 id 之后直接生成下一个时间戳的 id</li>
* </ol>
* </p>
* <p>
* 详情见以下介绍
* <ul>
* <li><a href="https://seata.apache.org/zh-cn/blog/seata-analysis-UUID-generator/">Seata基于改良版雪花算法的分布式UUID生成器分析</a></li>
* <li><a href="https://seata.apache.org/zh-cn/blog/seata-snowflake-explain">关于新版雪花算法的答疑</a></li>
* <li><a href="https://juejin.cn/post/7264387737276203065">在开源项目中看到一个改良版的雪花算法现在它是你的了</a></li>
* <li><a href="https://juejin.cn/post/7265516484029743138">关于若干读者阅读改良版雪花算法后提出的几个共性问题的回复</a></li>
* </ul>
* </p>
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108}">ZhouXY</a>
*/
public class IdWorker { public class IdWorker {
/** /**

View File

@ -18,12 +18,9 @@ package xyz.zhouxy.plusone.commons.util;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.google.common.annotations.Beta;
/** /**
* Twitter_Snowflake * Twitter 版雪花算法
*/ */
@Beta
public class SnowflakeIdGenerator { public class SnowflakeIdGenerator {
// ==============================Fields=========================================== // ==============================Fields===========================================