diff --git a/plusone-basic/plusone-basic-common/src/main/java/xyz/zhouxy/plusone/util/RandomUtil.java b/plusone-basic/plusone-basic-common/src/main/java/xyz/zhouxy/plusone/util/RandomUtil.java new file mode 100644 index 0000000..df9253d --- /dev/null +++ b/plusone-basic/plusone-basic-common/src/main/java/xyz/zhouxy/plusone/util/RandomUtil.java @@ -0,0 +1,18 @@ +package xyz.zhouxy.plusone.util; + +import java.util.concurrent.ThreadLocalRandom; + +public final class RandomUtil { + private RandomUtil() { + throw new IllegalStateException("Utility class"); + } + + public static String randomStr(char[] sourceCharacters, int length) { + ThreadLocalRandom random = ThreadLocalRandom.current(); + char[] result = new char[length]; + for (int i = 0; i < length; i++) { + result[i] = sourceCharacters[random.nextInt(sourceCharacters.length)]; + } + return String.valueOf(result); + } +} diff --git a/plusone-basic/plusone-basic-common/src/test/java/xyz/zhouxy/plusone/util/RandomUtilTests.java b/plusone-basic/plusone-basic-common/src/test/java/xyz/zhouxy/plusone/util/RandomUtilTests.java new file mode 100644 index 0000000..ad3399b --- /dev/null +++ b/plusone-basic/plusone-basic-common/src/test/java/xyz/zhouxy/plusone/util/RandomUtilTests.java @@ -0,0 +1,23 @@ +package xyz.zhouxy.plusone.util; + +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +class RandomUtilTests { + + @Test + void testRandom() { + String[] s = new String[20]; + for (int i = 0; i < 20; i++) { + s[i] = RandomUtil.randomStr( + "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM~`!@#$%^&*()_-+={[\\|/:;\"',.<>?]}" + .toCharArray(), + 28); + } + log.info("{}", Arrays.toString(s)); + } +}