diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/UUID.java b/hutool-core/src/main/java/cn/hutool/core/lang/UUID.java index 44abcc3d3..0735769ab 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/UUID.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/UUID.java @@ -119,12 +119,14 @@ public class UUID implements java.io.Serializable, Comparable { public static UUID randomUUID(boolean isSecure) { final Random ng = isSecure ? Holder.numberGenerator : RandomUtil.getRandom(); - byte[] randomBytes = new byte[16]; + final byte[] randomBytes = new byte[16]; ng.nextBytes(randomBytes); + randomBytes[6] &= 0x0f; /* clear version */ randomBytes[6] |= 0x40; /* set to version 4 */ randomBytes[8] &= 0x3f; /* clear variant */ randomBytes[8] |= 0x80; /* set to IETF variant */ + return new UUID(randomBytes); } diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java b/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java index 8555a7dbc..e922795ad 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java @@ -16,9 +16,10 @@ import java.util.concurrent.ExecutorService; * ps: * //模拟1000个线程并发 * SyncFinisher sf = new SyncFinisher(1000); - * concurrencyTestUtil.run(() -> { + * sf.addWorker(() -> { * // 需要并发测试的业务代码 * }); + * sf.start() * * * diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/UUIDTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/UUIDTest.java new file mode 100644 index 000000000..6cae317a2 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/lang/UUIDTest.java @@ -0,0 +1,21 @@ +package cn.hutool.core.lang; + +import cn.hutool.core.collection.ConcurrentHashSet; +import cn.hutool.core.thread.ThreadUtil; +import org.junit.Assert; +import org.junit.Test; + +import java.util.Set; + +public class UUIDTest { + + /** + * 测试UUID是否存在重复问题 + */ + @Test + public void fastUUIDTest(){ + Set set = new ConcurrentHashSet<>(100); + ThreadUtil.concurrencyTest(100, ()-> set.add(UUID.fastUUID().toString())); + Assert.assertEquals(100, set.size()); + } +} diff --git a/hutool-core/src/test/java/cn/hutool/core/util/TypeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/TypeUtilTest.java index 94ef42954..6b7cd97ec 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/TypeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/TypeUtilTest.java @@ -56,4 +56,5 @@ public class TypeUtilTest { public void service(String string) { } } + } diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/symmetric/SymmetricCrypto.java b/hutool-crypto/src/main/java/cn/hutool/crypto/symmetric/SymmetricCrypto.java index 27261779d..fdc994ecb 100644 --- a/hutool-crypto/src/main/java/cn/hutool/crypto/symmetric/SymmetricCrypto.java +++ b/hutool-crypto/src/main/java/cn/hutool/crypto/symmetric/SymmetricCrypto.java @@ -204,7 +204,7 @@ public class SymmetricCrypto implements Serializable { } else { cipher.init(Cipher.ENCRYPT_MODE, secretKey, params); } - return cipher.doFinal(paddingDataWithZero(data, cipher.getBlockSize())); + return cipher.doFinal(paddingDataWithZero(data, cipher.getBlockSize())); } catch (Exception e) { throw new CryptoException(e); } finally {