Files
zihluwang 5b7c24fb0d docs: add onixbyte-toolbox documentation
Add English and Chinese docs for the OnixByte Toolbox monorepo covering
all six modules: common-toolbox, crypto-toolbox, math-toolbox, tuple,
identity-generator, and version-catalogue.
2026-05-23 09:21:37 +08:00

210 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: OnixByte Toolbox API
---
## 包结构概览
所有模块均在 `com.onixbyte` group ID 下发布。每个模块有自己独立的基础包:
| 模块 | Maven Artifact | 基础包 |
|---|---|---|
| Common Toolbox | `common-toolbox` | `com.onixbyte.common` |
| Crypto Toolbox | `crypto-toolbox` | `com.onixbyte.crypto` |
| Math Toolbox | `math-toolbox` | `com.onixbyte.math` |
| Tuple | `tuple` | `com.onixbyte.tuple` |
| Identity Generator | `identity-generator` | `com.onixbyte.identitygenerator` |
---
## Common Toolbox
### 适配器
`ObjectMapAdapter` — 对象与 Map 之间的转换器。适用于需要键值表示的场景,如序列化或数据转换。
```java
import com.onixbyte.common.adapter.ObjectMapAdapter;
```
### 工具类
| 类 | 描述 |
|---|---|
| `AesUtil` | AES 对称加密/解密,支持密钥生成 |
| `Base64Util` | Base64 编解码,支持多种字符集 |
| `BoolUtil` | 布尔值解析与转换工具 |
| `BranchUtil` | 条件分支辅助,支持函数式链式调用 |
| `CollectionUtil` | 集合操作 — 分组、分区、合并 |
| `HashUtil` | 哈希工具,支持 MD5、SHA-1、SHA-256、SHA-512 |
| `MapUtil` | Map 构建、合并和转换辅助 |
| `RangeUtil` | 数值范围操作,支持边界处理 |
**AesUtil 示例:**
```java
var key = AesUtil.generateKey();
var encrypted = AesUtil.encrypt("hello world", key);
var decrypted = AesUtil.decrypt(encrypted, key);
```
**HashUtil 示例:**
```java
var md5 = HashUtil.md5("hello world");
var sha256 = HashUtil.sha256("hello world");
var fileSha = HashUtil.sha256(new File("data.bin"));
```
**CollectionUtil 示例:**
```java
var partitioned = CollectionUtil.partition(list, 100);
var grouped = CollectionUtil.groupBy(users, User::getDepartment);
```
---
## Crypto Toolbox
提供了加载 PEM 格式密钥的简洁抽象。支持 RSA 和 ECDSA 算法。
### 密钥加载器
| 类 | 描述 |
|---|---|
| `RSAPrivateKeyLoader` | 从 PEM 字符串加载 RSA 私钥 |
| `RSAPublicKeyLoader` | 从 PEM 字符串加载 RSA 公钥 |
| `ECPrivateKeyLoader` | 从 PEM 字符串加载 ECDSA 私钥 |
| `ECPublicKeyLoader` | 从 PEM 字符串加载 ECDSA 公钥 |
所有密钥加载器实现 `PrivateKeyLoader``PublicKeyLoader` 接口。
**RSA 示例:**
```java
var privateKey = new RSAPrivateKeyLoader().load(pemString);
var publicKey = new RSAPublicKeyLoader().load(pemString);
```
**ECDSA 示例:**
```java
var ecPrivateKey = new ECPrivateKeyLoader().load(pemString);
var ecPublicKey = new ECPublicKeyLoader().load(pemString);
```
### 工具类
`CryptoUtil` — 提供便捷的数字签名生成和验证方法,以及通用密码学辅助功能。
### 异常
| 类 | 描述 |
|---|---|
| `KeyLoadingException` | PEM 格式密钥解析失败时抛出 |
---
## Math Toolbox
用于处理数值数据集的统计计算工具。
### 核心类
| 类 | 描述 |
|---|---|
| `Calculator` | 统计计算器 — 均值、中位数、方差、标准差、总和、最小值、最大值 |
| `PercentileCalculator` | 百分位数计算器,支持可配置的插值策略 |
**Calculator 示例:**
```java
var stats = new Calculator(Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0));
double mean = stats.getMean();
double median = stats.getMedian();
double stdDev = stats.getStandardDeviation();
```
**PercentileCalculator 示例:**
```java
var calculator = new PercentileCalculator(data);
double p95 = calculator.calculate(95);
double p99 = calculator.calculate(99);
```
### 数据模型
| 类 | 描述 |
|---|---|
| `QuartileBounds` | 包含 Q1、中位数(Q2)、Q3 值及 IQR 和须线边界 |
---
## Tuple
轻量级泛型元组类型,适用于需要返回多个值但无需定义专用类的场景。
### 类
| 类 | 类型参数 | 可变性 |
|---|---|---|
| `Tuple<A, B>` | 两个元素 | 可变 |
| `ImmutableTuple<A, B>` | 两个元素 | 不可变 |
| `Triple<A, B, C>` | 三个元素 | 可变 |
| `ImmutableTriple<A, B, C>` | 三个元素 | 不可变 |
**示例:**
```java
var pair = Tuple.of("key", 42);
var triple = Triple.of("id", "name", 100);
var immutable = ImmutableTuple.of("constant", true);
// 访问器
String first = pair.getFirst();
Integer second = pair.getSecond();
// 三元组访问器
String a = triple.getFirst();
String b = triple.getSecond();
Integer c = triple.getThird();
```
---
## Identity Generator
生成适用于数据库主键或分布式 ID 的唯一标识符。
### 接口
`IdentityGenerator<T>` — 生成类型为 `T` 的标识符。
### 实现
| 类 | 描述 |
|---|---|
| `SequentialUuidGenerator` | 生成时间排序的顺序 UUID(优化数据库索引性能) |
| `SnowflakeIdentityGenerator` | 雪花算法分布式唯一 ID 生成 |
**顺序 UUID**
```java
var generator = new SequentialUuidGenerator();
UUID id = generator.nextId(); // 时间排序 UUID,对 B-tree 友好
```
**雪花:**
```java
var generator = new SnowflakeIdentityGenerator(workerId, datacenterId);
long id = generator.nextId(); // 64 位雪花 ID
```
### 异常
| 类 | 描述 |
|---|---|
| `TimingException` | 系统时钟回拨时抛出,保证 ID 唯一性不受影响 |