Update README.md
追求更快更全的 Java 工具类。
工具类使用请查看文档、javadoc。
和 Hutool 的性能对比测试请查看 jmh.comparison。
<dependency> <groupId>top.csaf</groupId> <artifactId>ZUtil</artifactId> <version>2.0.0-alpha11</version> </dependency>
// groovy implementation 'top.csaf:ZUtil:2.0.0-alpha11' // kotlin implementation("top.csaf:ZUtil:2.0.0-alpha11")
工具包中已使用 slf4j-api 和 slf4j-simple,和 spring-boot-starter-web 同时使用时会冲突,需要手动排除。
<!-- 方式一:ZUtil 排除 slf4j --> <dependency> <groupId>top.csaf</groupId> <artifactId>ZUtil</artifactId> <version>2.0.0-alpha11</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> </exclusion> </exclusions> </dependency> <!-- 方式二:spring-boot-starter-web 排除 Logback --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>
参考:Excluding transitive dependencies - Gradle User Manual
// groovy dependencies { // 方式一:ZUtil 排除 slf4j implementation('top.csaf:ZUtil:2.0.0-alpha11') { exclude group: 'org.slf4j', module: 'slf4j-api' exclude group: 'org.slf4j', module: 'slf4j-simple' } // 方式二:spring-boot-starter-web 排除 Logback implementation('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' } } // kotlin dependencies { // 方式一:ZUtil 排除 slf4j implementation("top.csaf:ZUtil:2.0.0-alpha11") { exclude(group = "org.slf4j", module = "slf4j-api") exclude(group = "org.slf4j", module = "slf4j-simple") } // 方式二:spring-boot-starter-web 排除 Logback implementation("org.springframework.boot:spring-boot-starter-web") { exclude(group = "org.springframework.boot", module = "spring-boot-starter-logging") } }
// Benchmark Mode Cnt Score Error Units // ToPinyinTest.toPinyinByHutool thrpt 5 2.880 ± 0.160 ops/us // ToPinyinTest.toPinyinByZUtil thrpt 5 4.577 ± 0.133 ops/us // ToPinyinTest.toPinyinByHutool avgt 5 0.356 ± 0.012 us/op // ToPinyinTest.toPinyinByZUtil avgt 5 0.216 ± 0.006 us/op // ToPinyinTest.toPinyinByHutool sample 175058 0.435 ± 0.008 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.00 sample 0.300 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.50 sample 0.400 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.90 sample 0.500 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.95 sample 0.500 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.99 sample 0.900 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.999 sample 1.600 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p0.9999 sample 40.900 us/op // ToPinyinTest.toPinyinByHutool:toPinyinByHutool·p1.00 sample 277.504 us/op // ToPinyinTest.toPinyinByZUtil sample 162384 0.393 ± 0.008 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.00 sample 0.200 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.50 sample 0.300 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.90 sample 0.500 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.95 sample 0.600 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.99 sample 1.000 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.999 sample 2.500 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p0.9999 sample 45.425 us/op // ToPinyinTest.toPinyinByZUtil:toPinyinByZUtil·p1.00 sample 170.496 us/op // ToPinyinTest.toPinyinByHutool ss 5 30.880 ± 37.754 us/op // ToPinyinTest.toPinyinByZUtil ss 5 23.060 ± 16.885 us/op
Mode 即为org.openjdk.jmh.annotations.Mode,分为:
org.openjdk.jmh.annotations.Mode
福利:JetBrains 全系列许可证。
org.junit.jupiter.api.Assertions
/** {@link NanoIdUtil#randomNanoId(int, char[], java.util.Random) } */ assertThrows(NullPointerException.class, () -> NanoIdUtils.randomNanoId(0, (char[]) null, NanoIdUtils.DEFAULT_ID_GENERATOR)); assertThrows(NullPointerException.class, () -> NanoIdUtils.randomNanoId(0, new char[0], null)); assertThrows(IllegalArgumentException.class, () -> NanoIdUtils.randomNanoId(0, new char[0], NanoIdUtils.DEFAULT_ID_GENERATOR)); assertThrows(IllegalArgumentException.class, () -> NanoIdUtils.randomNanoId(1, new char[0], NanoIdUtils.DEFAULT_ID_GENERATOR)); assertThrows(IllegalArgumentException.class, () -> NanoIdUtils.randomNanoId(1, new char[256], NanoIdUtils.DEFAULT_ID_GENERATOR)); assertDoesNotThrow(() -> NanoIdUtils.randomNanoId(NanoIdUtils.DEFAULT_SIZE, NanoIdUtils.DEFAULT_ALPHABET, NanoIdUtils.DEFAULT_ID_GENERATOR));
mvn test -Dtest=要测试的类名
target
jacoco.exec
mvn jacoco:report
target/site
lombok.NonNull
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
ZUtil
追求更快更全的 Java 工具类。
工具类使用请查看文档、javadoc。
和 Hutool 的性能对比测试请查看 jmh.comparison。
特性
Stargazers over time
说明
安装
Maven
Gradle
安装注意
工具包中已使用 slf4j-api 和 slf4j-simple,和 spring-boot-starter-web 同时使用时会冲突,需要手动排除。
Maven
Gradle
参考:Excluding transitive dependencies - Gradle User Manual
JMH 性能对比测试结果解释
Mode 即为
org.openjdk.jmh.annotations.Mode
,分为:参与开发
福利:JetBrains 全系列许可证。
org.junit.jupiter.api.Assertions
进行代码覆盖率测试: ```java …… import top.csaf.id.NanoIdUtil; import static org.junit.jupiter.api.Assertions.*;mvn test -Dtest=要测试的类名
进行测试,测试后会在target
下生成jacoco.exec
。mvn jacoco:report
生成代码覆盖率测试报告,在target/site
目录下。lombok.NonNull
的参数校验可以忽略。