<p align="center">
<a href="http://hutool.cn/"><img src="http://www.hutool.cn/images/logo.jpg" width="400"></a>
</p>
<p align="center">
<strong>A set of tools that keep Java sweet.</strong>
</p>
<p align="center">
<a href="http://search.maven.org/#artifactdetails%7Ccn.hutool%7Chutool-all%7C4.1.11%7Cjar">
<img src="https://img.shields.io/badge/version-4.1.11-blue.svg" >
</a>
<a href="http://www.apache.org/licenses/LICENSE-2.0.html">
<img src="http://img.shields.io/:license-apache-blue.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/JDK-1.7+-green.svg" >
</a>
<a>
<a href='https://gitee.com/loolly/hutool/stargazers'><img src='https://gitee.com/loolly/hutool/badge/star.svg?theme=dark' alt='star'></img></a>
</a>
</p>
<p align="center">
-- 主页:<a href="http://hutool.cn">http://hutool.cn/</a> --
</p>
<p align="center">
-- QQ群②:<a href="http://shang.qq.com/wpa/qunwpa?idkey=717c8e1444c2f3538ea37d792a19a23837cfc201e0d0de783e353b87009252eb">871141901</a> --
</p>
-------------------------------------------------------------------------------
## 简介
Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
Hutool是Hu + tool的自造词,前者致敬我的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。
-------------------------------------------------------------------------------
## 包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
- hutool-aop JDK动态代理封装,提供非IOC下的切面支持
- hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
- hutool-cache 缓存
- hutool-core 核心,包括Bean操作、日期、各种Util等
- hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
- hutool-crypto 加密解密模块
- hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
- hutool-dfa 基于DFA模型的多关键字查找
- hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码等)
- hutool-http 基于HttpUrlConnection的Http客户端封装
- hutool-log 自动识别日志实现的日志门面
- hutool-script 脚本执行封装,例如Javascript
- hutool-setting 功能更强大的Setting配置文件和Properties封装
- hutool-system 系统参数调用封装(JVM信息等)
- hutool-json JSON实现
- hutool-captcha 图片验证码实现
-------------------------------------------------------------------------------
## 文档
[中文文档](http://hutool.mydoc.io/)
[参考API](https://apidoc.gitee.com/loolly/hutool/)
-------------------------------------------------------------------------------
## 安装
### Maven
在项目的pom.xml的dependencies中加入以下内容:
```xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.11</version>
</dependency>
```
### Gradle
```
compile 'cn.hutool:hutool-all:4.1.11'
```
### 非Maven项目
点击已下任一链接,下载`hutool-all-X.X.X.jar`即可:
- [Maven中央库1](http://repo1.maven.org/maven2/cn/hutool/hutool-all/4.1.11/)
- [Maven中央库2](http://repo2.maven.org/maven2/cn/hutool/hutool-all/4.1.11/)
-------------------------------------------------------------------------------
## 版本变更
- [Release版本变更说明](https://gitee.com/loolly/hutool/blob/v4-master/CHANGELOG.md)
- [SNAPSHOT版本变更说明](https://gitee.com/loolly/hutool/blob/v4-dev/CHANGELOG.md)
-------------------------------------------------------------------------------
## 添砖加瓦
### 提供bug反馈或建议
- [码云Gitee](https://gitee.com/loolly/hutool/issues)
- [Github](https://github.com/looly/hutool/issues)
### 遵照的原则
Hutool欢迎任何人为Hutool添砖加瓦,贡献代码,不过作者是一个强迫症患者,为了照顾病人,需要提交的pr(pull request)符合一些规范,规范如下:
1. 注释完备,尤其每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,如果愿意,也可以加上你的大名。
2. Hutool的缩进按照Eclipse(不要跟我说IDEA多好用,作者非常懒,学不会)默认(tab)缩进,所以请遵守(不要和我争执空格与tab的问题,这是一个病人的习惯)。
3. 新加的方法不要使用第三方库的方法,Hutool遵循无依赖原则(除非在extra模块中加方法工具)。
4. 请pull request到`v4-dev`分支。Hutool在4.x版本后使用了新的分支:`v4-master`是主分支,表示已经发布中央库的版本,这个分支不允许pr,也不允许修改。`v4-dev`分支是开发分支,Hutool的下个版本或者SNAPSHOT版本在这个分支上开发,你可以pr到这个分支。
### 贡献代码的步骤
1. 在Gitee或者Github上fork项目到自己的repo
2. 把fork过去的项目也就是你的项目clone到你的本地
3. 修改代码(记得一定要修改v4-dev分支)
4. commit后push到自己的库(v4-dev分支)
5. 登录Gitee或Github在你首页可以看到一个 pull request 按钮,点击它,填写一些说明信息,然后提交即可。
6. 等待作者合并
-------------------------------------------------------------------------------
## 捐赠
如果你觉得Hutool不错,可以捐赠请作者吃包辣条~,在此表示感谢^_^。
点击以下链接,将页面拉到最下方点击“捐赠”即可。
[前往捐赠](https://gitee.com/loolly/hutool)
[4.0K] /data/pocs/16333dde37383de747e69d5a938063f6db59cf9a
├── [4.0K] bin
│ ├── [ 169] check_dependency_updates.sh
│ ├── [ 60] commit.sh
│ ├── [ 60] deploy.sh
│ ├── [ 87] install.sh
│ ├── [ 38] javadoc.sh
│ ├── [ 405] logo.sh
│ ├── [ 212] push_dev.sh
│ ├── [ 314] push_master.sh
│ └── [ 46] update_version.sh
├── [ 32K] CHANGELOG.md
├── [4.0K] docs
│ ├── [4.0K] css
│ │ ├── [ 70K] animate.css
│ │ ├── [146K] bootstrap.css
│ │ ├── [ 37K] icomoon.css
│ │ ├── [7.6K] magnific-popup.css
│ │ ├── [ 12K] simple-line-icons.css
│ │ ├── [ 27K] style.css
│ │ └── [ 680] zenburn.min.css
│ ├── [4.2K] favicon.ico
│ ├── [4.0K] fonts
│ │ ├── [4.0K] bootstrap
│ │ │ ├── [ 20K] glyphicons-halflings-regular.eot
│ │ │ ├── [106K] glyphicons-halflings-regular.svg
│ │ │ ├── [ 44K] glyphicons-halflings-regular.ttf
│ │ │ ├── [ 23K] glyphicons-halflings-regular.woff
│ │ │ └── [ 18K] glyphicons-halflings-regular.woff2
│ │ ├── [4.0K] icomoon
│ │ │ ├── [4.0K] icomoon
│ │ │ │ ├── [4.0K] demo-files
│ │ │ │ │ ├── [1.9K] demo.css
│ │ │ │ │ └── [ 900] demo.js
│ │ │ │ ├── [473K] demo.html
│ │ │ │ ├── [4.0K] fonts
│ │ │ │ │ ├── [196K] icomoon.eot
│ │ │ │ │ ├── [637K] icomoon.svg
│ │ │ │ │ ├── [196K] icomoon.ttf
│ │ │ │ │ └── [196K] icomoon.woff
│ │ │ │ ├── [ 686] Read Me.txt
│ │ │ │ ├── [857K] selection.json
│ │ │ │ └── [ 37K] style.css
│ │ │ ├── [196K] icomoon.eot
│ │ │ ├── [637K] icomoon.svg
│ │ │ ├── [196K] icomoon.ttf
│ │ │ └── [196K] icomoon.woff
│ │ └── [4.0K] simple-line-icons
│ │ ├── [ 52K] Simple-Line-Icons.eot
│ │ ├── [193K] Simple-Line-Icons.svg
│ │ ├── [ 52K] Simple-Line-Icons.ttf
│ │ ├── [ 52K] Simple-Line-Icons.woff
│ │ └── [ 26K] Simple-Line-Icons.woff2
│ ├── [4.0K] images
│ │ ├── [ 55K] code_example.png
│ │ ├── [4.0K] friends
│ │ │ ├── [ 22K] act.png
│ │ │ ├── [4.1K] beetl.png
│ │ │ ├── [ 22K] flyfun.png
│ │ │ ├── [3.5K] jbolt.png
│ │ │ ├── [2.9K] oschina.gif
│ │ │ ├── [ 22K] publiccms.png
│ │ │ └── [2.7K] tio.png
│ │ ├── [205K] hero_bg.jpg
│ │ ├── [ 25K] hutool.png
│ │ ├── [3.5K] jbolt.png
│ │ ├── [ 30K] logo.jpg
│ │ ├── [5.9K] logo_small.jpg
│ │ ├── [ 15K] Preloader_2.gif
│ │ └── [4.0K] team
│ │ ├── [ 52K] chinaboy.jpg
│ │ ├── [ 45K] me.jpg
│ │ ├── [ 46K] puhuihui.jpg
│ │ ├── [ 40K] shenshanmanong.jpg
│ │ └── [ 46K] wangwang.jpg
│ ├── [ 18K] index.html
│ ├── [4.0K] js
│ │ ├── [ 36K] bootstrap.min.js
│ │ ├── [ 44K] highlight.min.js
│ │ ├── [7.9K] jquery.easing.1.3.js
│ │ ├── [ 20K] jquery.magnific-popup.min.js
│ │ ├── [ 82K] jquery.min.js
│ │ ├── [ 12K] jquery.stellar.min.js
│ │ ├── [8.6K] jquery.waypoints.min.js
│ │ ├── [ 575] magnific-popup-options.js
│ │ ├── [6.5K] main.js
│ │ ├── [ 15K] modernizr-2.6.2.min.js
│ │ ├── [116K] moment.js
│ │ └── [4.3K] respond.min.js
│ ├── [4.0K] movies
│ │ └── [ 26M] hutool-example1.mp4
│ └── [4.0K] resources
│ ├── [4.0K] bin
│ │ └── [6.5K] app.sh
│ ├── [4.0K] config
│ │ ├── [3.4K] beetl-example.properties
│ │ ├── [ 293] cron-example.setting
│ │ ├── [1.7K] db-example.setting
│ │ ├── [1.1K] druid-example.setting
│ │ ├── [ 402] example.set
│ │ ├── [ 837] example.setting
│ │ ├── [ 225] group-set-example.set
│ │ ├── [1.1K] mongo-example.setting
│ │ └── [1.5K] velocity-example.vm
│ ├── [ 22K] hutool.jpg
│ ├── [ 25K] hutool.png
│ └── [100K] hutool.psd
├── [4.0K] hutool-all
│ ├── [3.9K] pom.xml
│ └── [4.0K] src
│ └── [4.0K] main
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ ├── [1.3K] Hutool.java
│ └── [ 678] package-info.java
├── [4.0K] hutool-aop
│ ├── [1.0K] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] aop
│ │ ├── [4.0K] aspects
│ │ │ ├── [ 981] Aspect.java
│ │ │ ├── [ 120] package-info.java
│ │ │ ├── [ 703] SimpleAspect.java
│ │ │ └── [ 706] TimeIntervalAspect.java
│ │ ├── [4.0K] interceptor
│ │ │ ├── [1.5K] CglibInterceptor.java
│ │ │ ├── [1.5K] JdkInterceptor.java
│ │ │ └── [ 97] package-info.java
│ │ ├── [ 118] package-info.java
│ │ ├── [4.0K] proxy
│ │ │ ├── [ 580] CglibProxyFactory.java
│ │ │ ├── [ 524] JdkProxyFactory.java
│ │ │ ├── [ 82] package-info.java
│ │ │ └── [1.4K] ProxyFactory.java
│ │ └── [2.7K] ProxyUtil.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] aop
│ └── [4.0K] test
│ └── [ 992] AopTest.java
├── [4.0K] hutool-bloomFilter
│ ├── [ 783] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] bloomfilter
│ │ ├── [4.0K] bitMap
│ │ │ ├── [ 227] BitMap.java
│ │ │ ├── [ 925] IntMap.java
│ │ │ ├── [ 885] LongMap.java
│ │ │ └── [ 91] package-info.java
│ │ ├── [1.6K] BitMapBloomFilter.java
│ │ ├── [3.5K] BitSetBloomFilter.java
│ │ ├── [1.1K] BloomFilter.java
│ │ ├── [ 857] BloomFilterUtil.java
│ │ ├── [4.0K] filter
│ │ │ ├── [1.3K] AbstractFilter.java
│ │ │ ├── [ 488] DefaultFilter.java
│ │ │ ├── [ 380] ELFFilter.java
│ │ │ ├── [ 371] FNVFilter.java
│ │ │ ├── [ 497] HfFilter.java
│ │ │ ├── [ 462] HfIpFilter.java
│ │ │ ├── [ 498] JSFilter.java
│ │ │ ├── [ 113] package-info.java
│ │ │ ├── [ 378] PJWFilter.java
│ │ │ ├── [ 374] RSFilter.java
│ │ │ ├── [ 382] SDBMFilter.java
│ │ │ └── [ 388] TianlFilter.java
│ │ └── [ 124] package-info.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] bloomfilter
│ └── [ 436] BitMapBloomFilterTest.java
├── [4.0K] hutool-cache
│ ├── [ 768] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] cache
│ │ ├── [3.1K] Cache.java
│ │ ├── [3.2K] CacheUtil.java
│ │ ├── [4.0K] file
│ │ │ ├── [3.0K] AbstractFileCache.java
│ │ │ ├── [1.4K] LFUFileCache.java
│ │ │ ├── [1.4K] LRUFileCache.java
│ │ │ └── [ 104] package-info.java
│ │ ├── [1.9K] GlobalPruneTimer.java
│ │ ├── [4.0K] impl
│ │ │ ├── [5.7K] AbstractCache.java
│ │ │ ├── [1.5K] CacheObjIterator.java
│ │ │ ├── [1.4K] CacheObj.java
│ │ │ ├── [ 912] CacheValuesIterator.java
│ │ │ ├── [1.8K] FIFOCache.java
│ │ │ ├── [2.4K] LFUCache.java
│ │ │ ├── [2.3K] LRUCache.java
│ │ │ ├── [1.2K] NoCache.java
│ │ │ ├── [ 95] package-info.java
│ │ │ ├── [1.9K] TimedCache.java
│ │ │ └── [ 596] WeakCache.java
│ │ └── [ 141] package-info.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] cache
│ └── [4.0K] test
│ ├── [1.7K] CacheConcurrentTest.java
│ ├── [3.4K] CacheTest.java
│ └── [ 362] FileCacheTest.java
├── [4.0K] hutool-captcha
│ ├── [ 779] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] captcha
│ │ ├── [4.5K] AbstractCaptcha.java
│ │ ├── [2.3K] CaptchaUtil.java
│ │ ├── [2.8K] CircleCaptcha.java
│ │ ├── [4.0K] generator
│ │ │ ├── [ 343] CodeGenerator.java
│ │ │ ├── [ 118] package-info.java
│ │ │ └── [1.1K] RandomGenerator.java
│ │ ├── [ 796] ICaptcha.java
│ │ ├── [2.8K] LineCaptcha.java
│ │ ├── [ 89] package-info.java
│ │ └── [4.9K] ShearCaptcha.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] captcha
│ ├── [2.0K] CaptchaTest.java
│ └── [ 218] CaptchaUtilTest.java
├── [4.0K] hutool-core
│ ├── [ 577] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] core
│ │ ├── [4.0K] annotation
│ │ │ ├── [6.7K] AnnotationUtil.java
│ │ │ ├── [3.8K] CombinationAnnotationElement.java
│ │ │ └── [ 127] package-info.java
│ │ ├── [4.0K] bean
│ │ │ ├── [ 771] BeanDescCache.java
│ │ │ ├── [ 12K] BeanDesc.java
│ │ │ ├── [ 828] BeanException.java
│ │ │ ├── [1.3K] BeanInfoCache.java
│ │ │ ├── [9.3K] BeanPath.java
│ │ │ ├── [1.5K] BeanResolver.java
│ │ │ ├── [ 21K] BeanUtil.java
│ │ │ ├── [4.0K] copier
│ │ │ │ ├── [5.4K] BeanCopier.java
│ │ │ │ ├── [5.0K] CopyOptions.java
│ │ │ │ ├── [ 117] package-info.java
│ │ │ │ ├── [4.0K] provider
│ │ │ │ │ ├── [1.8K] BeanValueProvider.java
│ │ │ │ │ ├── [1.3K] MapValueProvider.java
│ │ │ │ │ └── [ 114] package-info.java
│ │ │ │ └── [1.2K] ValueProvider.java
│ │ │ ├── [4.7K] DynaBean.java
│ │ │ └── [ 162] package-info.java
│ │ ├── [4.0K] clone
│ │ │ ├── [ 290] Cloneable.java
│ │ │ ├── [ 878] CloneRuntimeException.java
│ │ │ ├── [ 411] CloneSupport.java
│ │ │ └── [ 83] package-info.java
│ │ ├── [4.0K] codec
│ │ │ ├── [5.4K] Base32.java
│ │ │ ├── [5.8K] Base64Decoder.java
│ │ │ ├── [7.0K] Base64Encoder.java
│ │ │ ├── [8.4K] Base64.java
│ │ │ ├── [3.1K] BCD.java
│ │ │ └── [ 97] package-info.java
│ │ ├── [4.0K] collection
│ │ │ ├── [2.7K] ArrayIter.java
│ │ │ ├── [2.2K] BoundedPriorityQueue.java
│ │ │ ├── [ 228] CollectionUtil.java
│ │ │ ├── [ 67K] CollUtil.java
│ │ │ ├── [2.8K] ConcurrentHashSet.java
│ │ │ ├── [1.8K] CopiedIter.java
│ │ │ ├── [ 804] EnumerationIter.java
│ │ │ ├── [ 649] IteratorEnumeration.java
│ │ │ ├── [ 14K] IterUtil.java
│ │ │ ├── [3.8K] LineIter.java
│ │ │ └── [ 167] package-info.java
│ │ ├── [4.0K] comparator
│ │ │ ├── [1.3K] ComparableComparator.java
│ │ │ ├── [8.1K] ComparatorChain.java
│ │ │ ├── [ 871] ComparatorException.java
│ │ │ ├── [1.7K] FieldComparator.java
│ │ │ ├── [ 873] IndexedComparator.java
│ │ │ ├── [ 122] package-info.java
│ │ │ ├── [ 541] PinyinComparator.java
│ │ │ ├── [1.8K] PropertyComparator.java
│ │ │ ├── [1.2K] ReverseComparator.java
│ │ │ └── [2.7K] VersionComparator.java
│ │ ├── [4.0K] convert
│ │ │ ├── [3.1K] AbstractConverter.java
│ │ │ ├── [2.0K] BasicType.java
│ │ │ ├── [ 562] Converter.java
│ │ │ ├── [ 13K] ConverterRegistry.java
│ │ │ ├── [ 850] ConvertException.java
│ │ │ ├── [ 25K] Convert.java
│ │ │ ├── [4.0K] impl
│ │ │ │ ├── [4.7K] ArrayConverter.java
│ │ │ │ ├── [ 694] AtomicBooleanConverter.java
│ │ │ │ ├── [ 932] AtomicReferenceConverter.java
│ │ │ │ ├── [1.6K] BeanConverter.java
│ │ │ │ ├── [ 489] BooleanConverter.java
│ │ │ │ ├── [ 510] ByteArrayConverter.java
│ │ │ │ ├── [1.1K] CalendarConverter.java
│ │ │ │ ├── [ 707] CastConverter.java
│ │ │ │ ├── [ 588] CharacterConverter.java
│ │ │ │ ├── [ 421] CharsetConverter.java
│ │ │ │ ├── [ 535] ClassConverter.java
│ │ │ │ ├── [2.2K] CollectionConverter.java
│ │ │ │ ├── [ 405] CurrencyConverter.java
│ │ │ │ ├── [2.1K] DateConverter.java
│ │ │ │ ├── [ 684] EnumConverter.java
│ │ │ │ ├── [ 687] GenericEnumConverter.java
│ │ │ │ ├── [2.4K] MapConverter.java
│ │ │ │ ├── [5.8K] NumberConverter.java
│ │ │ │ ├── [ 198] package-info.java
│ │ │ │ ├── [ 769] PathConverter.java
│ │ │ │ ├── [4.1K] PrimitiveConverter.java
│ │ │ │ ├── [1.5K] ReferenceConverter.java
│ │ │ │ ├── [ 317] StringConverter.java
│ │ │ │ ├── [ 374] TimeZoneConverter.java
│ │ │ │ ├── [ 614] URIConverter.java
│ │ │ │ ├── [ 622] URLConverter.java
│ │ │ │ └── [ 388] UUIDConverter.java
│ │ │ ├── [5.2K] NumberChineseFormater.java
│ │ │ ├── [4.3K] NumberWordFormater.java
│ │ │ └── [ 206] package-info.java
│ │ ├── [4.0K] date
│ │ │ ├── [4.2K] BetweenFormater.java
│ │ │ ├── [4.2K] DateBetween.java
│ │ │ ├── [ 832] DateException.java
│ │ │ ├── [2.6K] DateField.java
│ │ │ ├── [4.0K] DatePattern.java
│ │ │ ├── [1.5K] DateRange.java
│ │ │ ├── [ 22K] DateTime.java
│ │ │ ├── [ 655] DateUnit.java
│ │ │ ├── [ 41K] DateUtil.java
│ │ │ ├── [4.0K] format
│ │ │ │ ├── [1.8K] AbstractDateBasic.java
│ │ │ │ ├── [ 561] DateBasic.java
│ │ │ │ ├── [2.6K] DateParser.java
│ │ │ │ ├── [2.1K] DatePrinter.java
│ │ │ │ ├── [ 13K] FastDateFormat.java
│ │ │ │ ├── [ 25K] FastDateParser.java
│ │ │ │ ├── [ 32K] FastDatePrinter.java
│ │ │ │ ├── [8.6K] FormatCache.java
│ │ │ │ └── [ 137] package-info.java
│ │ │ ├── [2.5K] Month.java
│ │ │ ├── [ 152] package-info.java
│ │ │ ├── [ 946] Quarter.java
│ │ │ ├── [1.1K] Season.java
│ │ │ ├── [2.3K] SystemClock.java
│ │ │ ├── [2.5K] TimeInterval.java
│ │ │ └── [2.7K] Week.java
│ │ ├── [4.0K] exceptions
│ │ │ ├── [ 842] DependencyException.java
│ │ │ ├── [5.5K] ExceptionUtil.java
│ │ │ ├── [ 793] NotInitedException.java
│ │ │ ├── [ 134] package-info.java
│ │ │ ├── [1.1K] StatefulException.java
│ │ │ ├── [ 789] UtilException.java
│ │ │ └── [ 955] ValidateException.java
│ │ ├── [4.0K] getter
│ │ │ ├── [1.9K] ArrayTypeGetter.java
│ │ │ ├── [2.3K] BasicTypeGetter.java
│ │ │ ├── [2.1K] GroupedTypeGetter.java
│ │ │ ├── [2.0K] ListTypeGetter.java
│ │ │ ├── [2.8K] OptArrayTypeGetter.java
│ │ │ ├── [4.2K] OptBasicTypeGetter.java
│ │ │ ├── [2.3K] OptNullBasicTypeFromObjectGetter.java
│ │ │ ├── [2.3K] OptNullBasicTypeFromStringGetter.java
│ │ │ ├── [3.6K] OptNullBasicTypeGetter.java
│ │ │ └── [ 108] package-info.java
│ │ ├── [4.0K] img
│ │ │ ├── [ 13K] Img.java
│ │ │ └── [ 102] package-info.java
│ │ ├── [4.0K] io
│ │ │ ├── [3.3K] BOMInputStream.java
│ │ │ ├── [5.0K] BufferUtil.java
│ │ │ ├── [2.3K] FastByteArrayOutputStream.java
│ │ │ ├── [5.8K] FastByteBuffer.java
│ │ │ ├── [4.0K] file
│ │ │ │ ├── [2.2K] FileAppender.java
│ │ │ │ ├── [9.3K] FileCopier.java
│ │ │ │ ├── [7.3K] FileReader.java
│ │ │ │ ├── [1.7K] FileWrapper.java
│ │ │ │ ├── [ 10K] FileWriter.java
│ │ │ │ ├── [ 660] LineSeparator.java
│ │ │ │ └── [ 163] package-info.java
│ │ │ ├── [6.6K] FileTypeUtil.java
│ │ │ ├── [ 91K] FileUtil.java
│ │ │ ├── [1.2K] IORuntimeException.java
│ │ │ ├── [ 30K] IoUtil.java
│ │ │ ├── [ 235] LineHandler.java
│ │ │ ├── [1.0K] NullOutputStream.java
│ │ │ ├── [ 216] package-info.java
│ │ │ ├── [4.0K] resource
│ │ │ │ ├── [1.6K] BytesResource.java
│ │ │ │ ├── [3.7K] ClassPathResource.java
│ │ │ │ ├── [1.1K] FileResource.java
│ │ │ │ ├── [1.7K] InputStreamResource.java
│ │ │ │ ├── [1.2K] MultiFileResource.java
│ │ │ │ ├── [2.6K] MultiResource.java
│ │ │ │ ├── [1.3K] NoResourceException.java
│ │ │ │ ├── [ 164] package-info.java
│ │ │ │ ├── [1.7K] Resource.java
│ │ │ │ ├── [4.6K] ResourceUtil.java
│ │ │ │ ├── [1.8K] StringResource.java
│ │ │ │ ├── [2.6K] UrlResource.java
│ │ │ │ └── [ 408] WebAppResource.java
│ │ │ ├── [ 341] StreamProgress.java
│ │ │ └── [4.0K] watch
│ │ │ ├── [ 149] package-info.java
│ │ │ ├── [ 263] SimpleWatcher.java
│ │ │ ├── [1016] Watcher.java
│ │ │ ├── [4.0K] watchers
│ │ │ │ ├── [3.6K] DelayWatcher.java
│ │ │ │ ├── [ 677] IgnoreWatcher.java
│ │ │ │ ├── [ 155] package-info.java
│ │ │ │ └── [1.8K] WatcherChain.java
│ │ │ ├── [ 836] WatchException.java
│ │ │ ├── [ 14K] WatchMonitor.java
│ │ │ └── [7.5K] WatchUtil.java
│ │ ├── [4.0K] lang
│ │ │ ├── [ 23K] Assert.java
│ │ │ ├── [ 255] Builder.java
│ │ │ ├── [4.0K] caller
│ │ │ │ ├── [1.0K] Caller.java
│ │ │ │ ├── [1.8K] CallerUtil.java
│ │ │ │ ├── [ 191] package-info.java
│ │ │ │ ├── [ 724] ReflectionCaller.java
│ │ │ │ ├── [ 884] SecurityManagerCaller.java
│ │ │ │ └── [1.4K] StackTraceCaller.java
│ │ │ ├── [ 346] Chain.java
│ │ │ ├── [9.6K] ClassScaner.java
│ │ │ ├── [3.0K] ConsistentHash.java
│ │ │ ├── [3.7K] Console.java
│ │ │ ├── [4.0K] copier
│ │ │ │ ├── [ 226] Copier.java
│ │ │ │ ├── [ 173] package-info.java
│ │ │ │ └── [1.8K] SrcToDestCopier.java
│ │ │ ├── [9.0K] Dict.java
│ │ │ ├── [ 540] Editor.java
│ │ │ ├── [ 236] Filter.java
│ │ │ ├── [ 704] Func.java
│ │ │ ├── [1.1K] Holder.java
│ │ │ ├── [3.4K] JarClassLoader.java
│ │ │ ├── [4.0K] loader
│ │ │ │ ├── [1.4K] AtomicLoader.java
│ │ │ │ ├── [1.2K] LazyLoader.java
│ │ │ │ ├── [ 497] Loader.java
│ │ │ │ └── [ 140] package-info.java
│ │ │ ├── [1013] LocalPortGenerater.java
│ │ │ ├── [ 269] Matcher.java
│ │ │ ├── [4.0K] mutable
│ │ │ │ ├── [2.1K] MutableBool.java
│ │ │ │ ├── [3.9K] MutableByte.java
│ │ │ │ ├── [3.9K] MutableDouble.java
│ │ │ │ ├── [3.9K] MutableFloat.java
│ │ │ │ ├── [3.8K] MutableInt.java
│ │ │ │ ├── [ 307] Mutable.java
│ │ │ │ ├── [3.8K] MutableLong.java
│ │ │ │ ├── [1.4K] MutableObj.java
│ │ │ │ ├── [3.9K] MutableShort.java
│ │ │ │ └── [ 163] package-info.java
│ │ │ ├── [4.4K] ObjectId.java
│ │ │ ├── [ 183] package-info.java
│ │ │ ├── [ 780] Pair.java
│ │ │ ├── [5.9K] PatternPool.java
│ │ │ ├── [4.4K] Range.java
│ │ │ ├── [ 442] Replacer.java
│ │ │ ├── [1.6K] SimpleCache.java
│ │ │ ├── [2.0K] Singleton.java
│ │ │ ├── [3.5K] Snowflake.java
│ │ │ ├── [1.6K] SyncFinisher.java
│ │ │ ├── [1.2K] Tuple.java
│ │ │ ├── [ 13K] UUID.java
│ │ │ ├── [ 22K] Validator.java
│ │ │ ├── [ 544] VoidFunc.java
│ │ │ └── [5.1K] WeightRandom.java
│ │ ├── [4.0K] map
│ │ │ ├── [1.3K] CamelCaseLinkedMap.java
│ │ │ ├── [1.3K] CamelCaseMap.java
│ │ │ ├── [1.5K] CaseInsensitiveLinkedMap.java
│ │ │ ├── [1.5K] CaseInsensitiveMap.java
│ │ │ ├── [1.9K] CustomKeyLinkedMap.java
│ │ │ ├── [1.8K] CustomKeyMap.java
│ │ │ ├── [2.3K] MapBuilder.java
│ │ │ ├── [2.1K] MapProxy.java
│ │ │ ├── [ 21K] MapUtil.java
│ │ │ └── [ 130] package-info.java
│ │ ├── [4.0K] math
│ │ │ ├── [3.0K] Arrangement.java
│ │ │ ├── [2.6K] Combination.java
│ │ │ ├── [2.0K] MathUtil.java
│ │ │ └── [ 144] package-info.java
│ │ ├── [ 101] package-info.java
│ │ ├── [4.0K] text
│ │ │ ├── [ 615] ASCIIStrCache.java
│ │ │ ├── [4.0K] csv
│ │ │ │ ├── [1016] CsvConfig.java
│ │ │ │ ├── [1.2K] CsvData.java
│ │ │ │ ├── [7.1K] CsvParser.java
│ │ │ │ ├── [1.5K] CsvReadConfig.java
│ │ │ │ ├── [4.3K] CsvReader.java
│ │ │ │ ├── [5.1K] CsvRow.java
│ │ │ │ ├── [2.9K] CsvUtil.java
│ │ │ │ ├── [1.2K] CsvWriteConfig.java
│ │ │ │ ├── [7.7K] CsvWriter.java
│ │ │ │ └── [ 123] package-info.java
│ │ │ ├── [4.0K] escape
│ │ │ │ ├── [ 20K] Html4Escape.java
│ │ │ │ ├── [ 848] Html4Unescape.java
│ │ │ │ ├── [ 562] InternalEscapeUtil.java
│ │ │ │ ├── [1.4K] NumericEntityUnescaper.java
│ │ │ │ └── [ 113] package-info.java
│ │ │ ├── [ 139] package-info.java
│ │ │ ├── [4.0K] replacer
│ │ │ │ ├── [1.7K] LookupReplacer.java
│ │ │ │ ├── [ 109] package-info.java
│ │ │ │ ├── [1.2K] ReplacerChain.java
│ │ │ │ └── [1.2K] StrReplacer.java
│ │ │ ├── [ 12K] StrBuilder.java
│ │ │ ├── [2.8K] StrFormatter.java
│ │ │ ├── [ 17K] StrSpliter.java
│ │ │ ├── [3.8K] TextSimilarity.java
│ │ │ └── [2.2K] UnicodeUtil.java
│ │ ├── [4.0K] thread
│ │ │ ├── [5.0K] ExecutorBuilder.java
│ │ │ ├── [2.2K] GlobalThreadPool.java
│ │ │ ├── [2.5K] NamedThreadFactory.java
│ │ │ ├── [ 124] package-info.java
│ │ │ ├── [4.0K] ThreadFactoryBuilder.java
│ │ │ ├── [4.0K] threadlocal
│ │ │ │ ├── [ 520] NamedInheritableThreadLocal.java
│ │ │ │ ├── [ 476] NamedThreadLocal.java
│ │ │ │ └── [ 107] package-info.java
│ │ │ └── [ 12K] ThreadUtil.java
│ │ └── [4.0K] util
│ │ ├── [ 88K] ArrayUtil.java
│ │ ├── [4.2K] CharsetUtil.java
│ │ ├── [8.5K] CharUtil.java
│ │ ├── [9.2K] ClassLoaderUtil.java
│ │ ├── [ 30K] ClassUtil.java
│ │ ├── [3.8K] ClipboardUtil.java
│ │ ├── [2.4K] EnumUtil.java
│ │ ├── [3.3K] EscapeUtil.java
│ │ ├── [8.3K] HashUtil.java
│ │ ├── [9.8K] HexUtil.java
│ │ ├── [ 18K] IdcardUtil.java
│ │ ├── [ 49K] ImageUtil.java
│ │ ├── [6.8K] ModifierUtil.java
│ │ ├── [ 14K] NetUtil.java
│ │ ├── [ 56K] NumberUtil.java
│ │ ├── [ 11K] ObjectUtil.java
│ │ ├── [ 156] package-info.java
│ │ ├── [2.8K] PageUtil.java
│ │ ├── [ 10K] PinyinUtil.java
│ │ ├── [ 12K] RandomUtil.java
│ │ ├── [2.1K] ReferenceUtil.java
│ │ ├── [ 20K] ReflectUtil.java
│ │ ├── [ 20K] ReUtil.java
│ │ ├── [6.2K] RuntimeUtil.java
│ │ ├── [105K] StrUtil.java
│ │ ├── [6.7K] TypeUtil.java
│ │ ├── [ 13K] URLUtil.java
│ │ ├── [ 24K] XmlUtil.java
│ │ └── [ 26K] ZipUtil.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] core
│ │ ├── [4.0K] bean
│ │ │ ├── [3.2K] BeanDescTest.java
│ │ │ ├── [3.0K] BeanPathTest.java
│ │ │ ├── [6.6K] BeanUtilTest.java
│ │ │ └── [1.3K] DynaBeanTest.java
│ │ ├── [4.0K] clone
│ │ │ └── [2.6K] CloneTest.java
│ │ ├── [4.0K] codec
│ │ │ ├── [ 481] Base32Test.java
│ │ │ ├── [ 891] Base64Test.java
│ │ │ └── [ 376] BCDTest.java
│ │ ├── [4.0K] collection
│ │ │ ├── [ 10K] CollUtilTest.java
│ │ │ ├── [2.1K] IterUtilTest.java
│ │ │ └── [ 715] MapProxyTest.java
│ │ ├── [4.0K] comparator
│ │ │ └── [1.2K] VersionComparatorTest.java
│ │ ├── [4.0K] convert
│ │ │ ├── [1.1K] ConverterRegistryTest.java
│ │ │ ├── [2.6K] ConvertOtherTest.java
│ │ │ ├── [3.4K] ConvertTest.java
│ │ │ ├── [3.7K] ConvertToArrayTest.java
│ │ │ ├── [1.4K] ConvertToBeanTest.java
│ │ │ ├── [1.8K] ConvertToCollectionTest.java
│ │ │ ├── [ 593] ConvertToSBCAndDBCTest.java
│ │ │ ├── [1.2K] MapConvertTest.java
│ │ │ ├── [2.7K] NumberChineseFormaterTest.java
│ │ │ └── [ 492] NumberWordFormatTest.java
│ │ ├── [4.0K] date
│ │ │ ├── [ 943] BetweenFormaterTest.java
│ │ │ ├── [1.7K] DateBetweenTest.java
│ │ │ ├── [2.7K] DateTimeTest.java
│ │ │ ├── [ 13K] DateUtilTest.java
│ │ │ └── [ 525] TimeZoneTest.java
│ │ ├── [4.0K] exceptions
│ │ │ └── [ 663] ExceptionUtilTest.java
│ │ ├── [4.0K] io
│ │ │ ├── [1.6K] BufferUtilTest.java
│ │ │ ├── [1.8K] ClassPathResourceTest.java
│ │ │ ├── [ 861] FileCopierTest.java
│ │ │ ├── [ 402] FileReaderTest.java
│ │ │ ├── [ 852] FileTypeUtilTest.java
│ │ │ ├── [8.6K] FileUtilTest.java
│ │ │ └── [1.4K] WatchMonitorTest.java
│ │ ├── [4.0K] lang
│ │ │ ├── [ 294] AssertTest.java
│ │ │ ├── [ 822] CallerTest.java
│ │ │ ├── [ 359] ClassScanerTest.java
│ │ │ ├── [ 898] ConsoleTest.java
│ │ │ ├── [ 439] DictTest.java
│ │ │ ├── [ 564] ObjectIdTest.java
│ │ │ ├── [ 939] RangeTest.java
│ │ │ ├── [ 788] SnowflakeTest.java
│ │ │ ├── [ 641] StrFormatterTest.java
│ │ │ ├── [1.2K] StrSpliterTest.java
│ │ │ ├── [4.0K] test
│ │ │ │ └── [4.0K] bean
│ │ │ │ ├── [1.4K] ExamInfoDict.java
│ │ │ │ ├── [2.0K] UserInfoDict.java
│ │ │ │ └── [ 953] UserInfoRedundCount.java
│ │ │ ├── [ 634] TextSimilarityTest.java
│ │ │ ├── [3.1K] ValidatorTest.java
│ │ │ └── [ 508] WeightRandomTest.java
│ │ ├── [4.0K] map
│ │ │ └── [2.5K] MapUtilTest.java
│ │ ├── [4.0K] math
│ │ │ ├── [1.8K] ArrangementTest.java
│ │ │ └── [1.7K] CombinationTest.java
│ │ ├── [4.0K] text
│ │ │ ├── [4.0K] csv
│ │ │ │ ├── [1.3K] CsvParserTest.java
│ │ │ │ ├── [ 530] CsvReaderTest.java
│ │ │ │ └── [ 836] CsvUtilTest.java
│ │ │ ├── [2.3K] StrBuilderTest.java
│ │ │ └── [ 974] UnicodeUtilTest.java
│ │ └── [4.0K] util
│ │ ├── [5.9K] ArrayUtilTest.java
│ │ ├── [ 568] CharUtilTest.java
│ │ ├── [3.1K] ClassUtilTest.java
│ │ ├── [ 399] ClipboardUtilTest.java
│ │ ├── [1.2K] EnumUtilTest.java
│ │ ├── [ 446] EscapeUtilTest.java
│ │ ├── [ 752] HexUtilTest.java
│ │ ├── [1.7K] IdcardUtilTest.java
│ │ ├── [1.9K] ImageUtilTest.java
│ │ ├── [1011] NetUtilTest.java
│ │ ├── [5.4K] NumberUtilTest.java
│ │ ├── [ 788] PageUtilTest.java
│ │ ├── [1.5K] PinyinUtilTest.java
│ │ ├── [1.6K] RandomUtilTest.java
│ │ ├── [1.3K] ReflectUtilTest.java
│ │ ├── [4.2K] ReUtilTest.java
│ │ ├── [ 510] RuntimeUtilTest.java
│ │ ├── [ 10K] StrUtilTest.java
│ │ ├── [1.1K] TypeUtilTest.java
│ │ ├── [1.1K] URLUtilTest.java
│ │ ├── [3.5K] XmlUtilTest.java
│ │ └── [1005] ZipUtilTest.java
│ └── [4.0K] resources
│ ├── [ 22K] hutool.jpg
│ ├── [ 37] test.csv
│ ├── [ 130] test.properties
│ └── [ 245] test.xml
├── [4.0K] hutool-cron
│ ├── [ 932] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] cron
│ │ ├── [ 669] CronException.java
│ │ ├── [1.9K] CronTimer.java
│ │ ├── [4.5K] CronUtil.java
│ │ ├── [4.0K] listener
│ │ │ ├── [ 119] package-info.java
│ │ │ ├── [ 495] SimpleTaskListener.java
│ │ │ ├── [ 721] TaskListener.java
│ │ │ └── [2.1K] TaskListenerManager.java
│ │ ├── [ 268] package-info.java
│ │ ├── [4.0K] pattern
│ │ │ ├── [ 12K] CronPattern.java
│ │ │ ├── [4.0K] matcher
│ │ │ │ ├── [ 396] AlwaysTrueValueMatcher.java
│ │ │ │ ├── [ 819] BoolArrayValueMatcher.java
│ │ │ │ ├── [1.2K] DayOfMonthValueMatcher.java
│ │ │ │ ├── [ 126] package-info.java
│ │ │ │ ├── [5.1K] ValueMatcherBuilder.java
│ │ │ │ ├── [ 250] ValueMatcher.java
│ │ │ │ └── [ 484] YearValueMatcher.java
│ │ │ ├── [ 123] package-info.java
│ │ │ └── [4.0K] parser
│ │ │ ├── [ 546] DayOfMonthValueParser.java
│ │ │ ├── [1.2K] DayOfWeekValueParser.java
│ │ │ ├── [ 209] HourValueParser.java
│ │ │ ├── [ 213] MinuteValueParser.java
│ │ │ ├── [ 951] MonthValueParser.java
│ │ │ ├── [ 125] package-info.java
│ │ │ ├── [ 153] SecondValueParser.java
│ │ │ ├── [ 992] SimpleValueParser.java
│ │ │ ├── [ 688] ValueParser.java
│ │ │ └── [ 211] YearValueParser.java
│ │ ├── [10.0K] Scheduler.java
│ │ ├── [4.0K] task
│ │ │ ├── [2.1K] InvokeTask.java
│ │ │ ├── [ 153] package-info.java
│ │ │ ├── [ 326] RunnableTask.java
│ │ │ └── [ 226] Task.java
│ │ ├── [ 844] TaskExecutor.java
│ │ ├── [1.8K] TaskExecutorManager.java
│ │ ├── [ 685] TaskLauncher.java
│ │ ├── [1.6K] TaskLauncherManager.java
│ │ └── [4.7K] TaskTable.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] cron
│ │ ├── [4.0K] demo
│ │ │ ├── [1.7K] CronTest.java
│ │ │ ├── [ 323] JobMainTest.java
│ │ │ ├── [ 458] TestJob2.java
│ │ │ └── [ 731] TestJob.java
│ │ └── [4.0K] test
│ │ └── [3.4K] CronTest.java
│ └── [4.0K] resources
│ └── [4.0K] config
│ └── [1.1K] cron.setting
├── [4.0K] hutool-crypto
│ ├── [ 775] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] crypto
│ │ ├── [4.0K] asymmetric
│ │ │ ├── [ 613] AsymmetricAlgorithm.java
│ │ │ ├── [ 14K] AsymmetricCrypto.java
│ │ │ ├── [6.3K] BaseAsymmetric.java
│ │ │ ├── [ 143] KeyType.java
│ │ │ ├── [ 117] package-info.java
│ │ │ ├── [6.0K] RSA.java
│ │ │ ├── [1.3K] SignAlgorithm.java
│ │ │ └── [6.6K] Sign.java
│ │ ├── [ 835] CryptoException.java
│ │ ├── [4.0K] digest
│ │ │ ├── [ 26K] BCrypt.java
│ │ │ ├── [ 651] DigestAlgorithm.java
│ │ │ ├── [5.2K] Digester.java
│ │ │ ├── [9.5K] DigestUtil.java
│ │ │ ├── [ 506] HmacAlgorithm.java
│ │ │ ├── [6.8K] HMac.java
│ │ │ └── [ 120] package-info.java
│ │ ├── [ 523] Mode.java
│ │ ├── [ 393] package-info.java
│ │ ├── [ 363] Padding.java
│ │ ├── [ 28K] SecureUtil.java
│ │ └── [4.0K] symmetric
│ │ ├── [4.4K] AES.java
│ │ ├── [4.3K] DESede.java
│ │ ├── [4.1K] DES.java
│ │ ├── [ 131] package-info.java
│ │ ├── [ 999] SymmetricAlgorithm.java
│ │ └── [ 11K] SymmetricCrypto.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] crypto
│ └── [4.0K] test
│ ├── [1.5K] DigestTest.java
│ ├── [1.6K] HmacTest.java
│ ├── [5.2K] RSATest.java
│ ├── [3.6K] SignTest.java
│ └── [5.0K] SymmetricTest.java
├── [4.0K] hutool-db
│ ├── [3.3K] pom.xml
│ ├── [4.0K] src
│ │ ├── [4.0K] main
│ │ │ └── [4.0K] java
│ │ │ └── [4.0K] cn
│ │ │ └── [4.0K] hutool
│ │ │ └── [4.0K] db
│ │ │ ├── [ 26K] AbstractDb.java
│ │ │ ├── [5.4K] ActiveEntity.java
│ │ │ ├── [ 10K] DaoTemplate.java
│ │ │ ├── [5.6K] Db.java
│ │ │ ├── [ 855] DbRuntimeException.java
│ │ │ ├── [6.5K] DbUtil.java
│ │ │ ├── [4.0K] dialect
│ │ │ │ ├── [5.9K] DialectFactory.java
│ │ │ │ ├── [3.2K] Dialect.java
│ │ │ │ ├── [ 183] DialectName.java
│ │ │ │ ├── [1.9K] DriverUtil.java
│ │ │ │ ├── [4.0K] impl
│ │ │ │ │ ├── [4.9K] AnsiSqlDialect.java
│ │ │ │ │ ├── [ 678] H2Dialect.java
│ │ │ │ │ ├── [ 593] MysqlDialect.java
│ │ │ │ │ ├── [ 852] OracleDialect.java
│ │ │ │ │ ├── [ 167] package-info.java
│ │ │ │ │ ├── [ 364] PostgresqlDialect.java
│ │ │ │ │ ├── [ 359] Sqlite3Dialect.java
│ │ │ │ │ └── [1010] SqlServer2012Dialect.java
│ │ │ │ └── [ 143] package-info.java
│ │ │ ├── [4.0K] ds
│ │ │ │ ├── [4.0K] c3p0
│ │ │ │ │ ├── [2.9K] C3p0DSFactory.java
│ │ │ │ │ └── [ 81] package-info.java
│ │ │ │ ├── [4.0K] dbcp
│ │ │ │ │ ├── [2.8K] DbcpDSFactory.java
│ │ │ │ │ └── [ 81] package-info.java
│ │ │ │ ├── [4.0K] druid
│ │ │ │ │ ├── [3.4K] DruidDSFactory.java
│ │ │ │ │ └── [ 83] package-info.java
│ │ │ │ ├── [7.5K] DSFactory.java
│ │ │ │ ├── [2.3K] GlobalDSFactory.java
│ │ │ │ ├── [4.0K] hikari
│ │ │ │ │ ├── [3.0K] HikariDSFactory.java
│ │ │ │ │ └── [ 85] package-info.java
│ │ │ │ ├── [4.0K] jndi
│ │ │ │ │ ├── [2.0K] JndiDSFactory.java
│ │ │ │ │ └── [ 81] package-info.java
│ │ │ │ ├── [ 120] package-info.java
│ │ │ │ ├── [4.0K] pooled
│ │ │ │ │ ├── [7.4K] ConnectionWraper.java
│ │ │ │ │ ├── [2.7K] DbConfig.java
│ │ │ │ │ ├── [2.1K] DbSetting.java
│ │ │ │ │ ├── [ 106] package-info.java
│ │ │ │ │ ├── [1.3K] PooledConnection.java
│ │ │ │ │ ├── [4.4K] PooledDataSource.java
│ │ │ │ │ └── [2.1K] PooledDSFactory.java
│ │ │ │ ├── [4.0K] simple
│ │ │ │ │ ├── [1.4K] AbstractDataSource.java
│ │ │ │ │ ├── [ 105] package-info.java
│ │ │ │ │ ├── [4.8K] SimpleDataSource.java
│ │ │ │ │ └── [1.9K] SimpleDSFactory.java
│ │ │ │ └── [4.0K] tomcat
│ │ │ │ ├── [ 90] package-info.java
│ │ │ │ └── [3.4K] TomcatDSFactory.java
│ │ │ ├── [9.3K] Entity.java
│ │ │ ├── [4.0K] handler
│ │ │ │ ├── [ 980] BeanHandler.java
│ │ │ │ ├── [ 979] BeanListHandler.java
│ │ │ │ ├── [ 703] EntityHandler.java
│ │ │ │ ├── [ 636] EntityListHandler.java
│ │ │ │ ├── [ 679] EntitySetHandler.java
│ │ │ │ ├── [8.2K] HandleHelper.java
│ │ │ │ ├── [ 559] NumberHandler.java
│ │ │ │ ├── [ 192] package-info.java
│ │ │ │ ├── [1.0K] PageResultHandler.java
│ │ │ │ ├── [ 607] RsHandler.java
│ │ │ │ └── [ 564] StringHandler.java
│ │ │ ├── [4.0K] meta
│ │ │ │ ├── [2.8K] Column.java
│ │ │ │ ├── [5.1K] MetaUtil.java
│ │ │ │ ├── [ 161] package-info.java
│ │ │ │ ├── [1.8K] Table.java
│ │ │ │ └── [ 601] TableType.java
│ │ │ ├── [4.0K] nosql
│ │ │ │ ├── [4.0K] mongo
│ │ │ │ │ ├── [ 11K] MongoDS.java
│ │ │ │ │ ├── [2.9K] MongoFactory.java
│ │ │ │ │ └── [ 106] package-info.java
│ │ │ │ ├── [ 131] package-info.java
│ │ │ │ └── [4.0K] redis
│ │ │ │ ├── [ 115] package-info.java
│ │ │ │ └── [4.1K] RedisDS.java
│ │ │ ├── [ 366] package-info.java
│ │ │ ├── [3.3K] Page.java
│ │ │ ├── [2.9K] PageResult.java
│ │ │ ├── [7.3K] Session.java
│ │ │ ├── [4.0K] sql
│ │ │ │ ├── [8.8K] Condition.java
│ │ │ │ ├── [ 833] Direction.java
│ │ │ │ ├── [ 710] LogicalOperator.java
│ │ │ │ ├── [3.2K] NamedSql.java
│ │ │ │ ├── [1.6K] Order.java
│ │ │ │ ├── [ 100] package-info.java
│ │ │ │ ├── [3.8K] Query.java
│ │ │ │ ├── [ 18K] SqlBuilder.java
│ │ │ │ ├── [7.7K] SqlExecutor.java
│ │ │ │ ├── [8.1K] SqlFormatter.java
│ │ │ │ ├── [1.4K] SqlLog.java
│ │ │ │ ├── [4.8K] SqlUtil.java
│ │ │ │ ├── [ 14K] StatementWrapper.java
│ │ │ │ └── [5.4K] Wrapper.java
│ │ │ ├── [ 19K] SqlConnRunner.java
│ │ │ ├── [3.5K] SqlRunner.java
│ │ │ ├── [5.8K] StatementUtil.java
│ │ │ ├── [2.6K] ThreadLocalConnection.java
│ │ │ └── [4.0K] transaction
│ │ │ ├── [ 99] package-info.java
│ │ │ ├── [1.2K] TransactionLevel.java
│ │ │ └── [ 579] TxFunc.java
│ │ └── [4.0K] test
│ │ ├── [4.0K] java
│ │ │ └── [4.0K] cn
│ │ │ └── [4.0K] hutool
│ │ │ └── [4.0K] db
│ │ │ └── [4.0K] test
│ │ │ ├── [1.2K] ConcurentTest.java
│ │ │ ├── [5.3K] CRUDTest.java
│ │ │ ├── [1.3K] DbTest.java
│ │ │ ├── [2.5K] DsTest.java
│ │ │ ├── [1.2K] EntityTest.java
│ │ │ ├── [1.8K] FindBeanTest.java
│ │ │ ├── [ 756] MetaTest.java
│ │ │ ├── [ 911] MySQLTest.java
│ │ │ ├── [1.4K] NamedSqlTest.java
│ │ │ ├── [ 915] OracleTest.java
│ │ │ ├── [4.0K] pojo
│ │ │ │ └── [1023] User.java
│ │ │ ├── [ 964] SessionTest.java
│ │ │ ├── [1.1K] SqlTest.java
│ │ │ └── [ 747] UpdateTest.java
│ │ └── [4.0K] resources
│ │ ├── [4.0K] config
│ │ │ ├── [1.0K] db.setting
│ │ │ ├── [4.0K] example
│ │ │ │ ├── [3.4K] db-example-c3p0.setting
│ │ │ │ ├── [3.8K] db-example-dbcp.setting
│ │ │ │ ├── [3.5K] db-example-druid.setting
│ │ │ │ ├── [2.1K] db-example-hikari.setting
│ │ │ │ ├── [3.8K] db-example-tomcat.setting
│ │ │ │ └── [1.1K] mongo-example.setting
│ │ │ └── [2.4K] redis.setting
│ │ └── [ 449] logback.xml
│ └── [ 24K] test.db
├── [4.0K] hutool-dfa
│ ├── [ 943] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] dfa
│ │ ├── [ 439] package-info.java
│ │ ├── [4.6K] SensitiveUtil.java
│ │ ├── [3.0K] StopChar.java
│ │ └── [6.7K] WordTree.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] dfa
│ └── [4.0K] test
│ └── [4.1K] DfaTest.java
├── [4.0K] hutool-extra
│ ├── [3.7K] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] extra
│ │ ├── [4.0K] ftp
│ │ │ ├── [ 823] FtpException.java
│ │ │ ├── [7.6K] Ftp.java
│ │ │ └── [ 112] package-info.java
│ │ ├── [4.0K] mail
│ │ │ ├── [ 935] GlobalMailAccount.java
│ │ │ ├── [2.9K] InternalMailUtil.java
│ │ │ ├── [ 13K] MailAccount.java
│ │ │ ├── [ 830] MailException.java
│ │ │ ├── [8.2K] Mail.java
│ │ │ ├── [7.5K] MailUtil.java
│ │ │ ├── [ 125] package-info.java
│ │ │ └── [ 647] UserPassAuthenticator.java
│ │ ├── [ 287] package-info.java
│ │ ├── [4.0K] qrcode
│ │ │ ├── [3.2K] BufferedImageLuminanceSource.java
│ │ │ ├── [ 127] package-info.java
│ │ │ ├── [ 846] QrCodeException.java
│ │ │ ├── [8.5K] QrCodeUtil.java
│ │ │ └── [3.5K] QrConfig.java
│ │ ├── [4.0K] servlet
│ │ │ ├── [4.0K] multipart
│ │ │ │ ├── [6.5K] MultipartFormData.java
│ │ │ │ ├── [4.7K] MultipartRequestInputStream.java
│ │ │ │ ├── [ 118] package-info.java
│ │ │ │ ├── [4.4K] UploadFileHeader.java
│ │ │ │ ├── [6.7K] UploadFile.java
│ │ │ │ └── [3.9K] UploadSetting.java
│ │ │ ├── [ 173] package-info.java
│ │ │ └── [ 17K] ServletUtil.java
│ │ ├── [4.0K] ssh
│ │ │ ├── [2.4K] Connector.java
│ │ │ ├── [ 869] JschRuntimeException.java
│ │ │ ├── [1.2K] JschSessionPool.java
│ │ │ ├── [7.8K] JschUtil.java
│ │ │ ├── [ 137] package-info.java
│ │ │ └── [ 10K] Sftp.java
│ │ └── [4.0K] template
│ │ ├── [ 847] AbstractTemplate.java
│ │ ├── [4.0K] engine
│ │ │ ├── [4.0K] beetl
│ │ │ │ ├── [3.2K] BeetlEngine.java
│ │ │ │ ├── [1.3K] BeetlTemplate.java
│ │ │ │ ├── [8.6K] BeetlUtil.java
│ │ │ │ └── [ 99] package-info.java
│ │ │ ├── [2.2K] EngineFactory.java
│ │ │ ├── [4.0K] enjoy
│ │ │ │ ├── [2.2K] EnjoyEngine.java
│ │ │ │ ├── [1.3K] EnjoyTemplate.java
│ │ │ │ └── [ 123] package-info.java
│ │ │ ├── [4.0K] freemarker
│ │ │ │ ├── [2.5K] FreemarkerEngine.java
│ │ │ │ ├── [1.7K] FreemarkerTemplate.java
│ │ │ │ └── [ 109] package-info.java
│ │ │ ├── [ 109] package-info.java
│ │ │ ├── [4.0K] rythm
│ │ │ │ ├── [ 99] package-info.java
│ │ │ │ ├── [1.7K] RythmEngine.java
│ │ │ │ └── [1.3K] RythmTemplate.java
│ │ │ ├── [4.0K] thymeleaf
│ │ │ │ ├── [ 107] package-info.java
│ │ │ │ ├── [3.1K] ThymeleafEngine.java
│ │ │ │ └── [1.9K] ThymeleafTemplate.java
│ │ │ └── [4.0K] velocity
│ │ │ ├── [ 105] package-info.java
│ │ │ ├── [ 914] StringResourceLoader.java
│ │ │ ├── [2.7K] VelocityEngine.java
│ │ │ ├── [2.1K] VelocityTemplate.java
│ │ │ └── [ 10K] VelocityUtil.java
│ │ ├── [ 401] Engine.java
│ │ ├── [ 159] package-info.java
│ │ ├── [4.1K] TemplateConfig.java
│ │ ├── [ 860] TemplateException.java
│ │ ├── [1.2K] Template.java
│ │ └── [ 770] TemplateUtil.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] extra
│ │ ├── [4.0K] mail
│ │ │ ├── [ 426] MailAccountTest.java
│ │ │ └── [1.5K] MailTest.java
│ │ ├── [4.0K] qrcode
│ │ │ └── [ 874] QrCodeUtilTest.java
│ │ ├── [4.0K] ssh
│ │ │ └── [ 640] JschUtilTest.java
│ │ └── [4.0K] template
│ │ ├── [1.0K] BeetlUtilTest.java
│ │ └── [3.4K] TemplateUtilTest.java
│ └── [4.0K] resources
│ ├── [3.3K] beetl.properties
│ ├── [4.0K] config
│ │ └── [1.5K] mail.setting
│ ├── [4.0K] example
│ │ ├── [3.4K] beetl-example.properties
│ │ ├── [1.5K] mail-example.setting
│ │ └── [1.5K] velocity-example.vm
│ └── [4.0K] templates
│ ├── [ 13] beetl_test.btl
│ ├── [ 13] freemarker_test.ftl
│ ├── [ 30] rythm_test.tmpl
│ └── [ 11] velocity_test.vtl
├── [4.0K] hutool-http
│ ├── [1.2K] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] http
│ │ ├── [2.1K] ContentType.java
│ │ ├── [4.9K] GlobalHeaders.java
│ │ ├── [3.3K] Header.java
│ │ ├── [ 18K] HTMLFilter.java
│ │ ├── [5.7K] HtmlUtil.java
│ │ ├── [6.7K] HttpBase.java
│ │ ├── [ 15K] HttpConnection.java
│ │ ├── [ 759] HttpException.java
│ │ ├── [ 28K] HttpRequest.java
│ │ ├── [ 12K] HttpResponse.java
│ │ ├── [4.0K] HttpStatus.java
│ │ ├── [ 28K] HttpUtil.java
│ │ ├── [ 169] Method.java
│ │ ├── [ 219] package-info.java
│ │ ├── [4.0K] ssl
│ │ │ ├── [ 920] AndroidSupportSSLFactory.java
│ │ │ ├── [2.5K] CustomProtocolsSSLFactory.java
│ │ │ ├── [ 614] DefaultTrustManager.java
│ │ │ ├── [ 78] package-info.java
│ │ │ ├── [3.2K] SSLSocketFactoryBuilder.java
│ │ │ └── [ 352] TrustAnyHostnameVerifier.java
│ │ ├── [3.9K] Status.java
│ │ └── [4.0K] webservice
│ │ ├── [ 107] package-info.java
│ │ └── [3.8K] SoapRequest.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] http
│ ├── [4.0K] test
│ │ ├── [1.4K] DownloadTest.java
│ │ ├── [2.4K] HtmlUtilTest.java
│ │ ├── [2.5K] HttpRequestTest.java
│ │ ├── [7.8K] HttpUtilTest.java
│ │ ├── [1.4K] RestTest.java
│ │ └── [1.2K] UploadTest.java
│ └── [4.0K] webservice
│ └── [ 578] SoapRequestTest.java
├── [4.0K] hutool-json
│ ├── [ 771] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] json
│ │ ├── [ 11K] InternalJSONUtil.java
│ │ ├── [ 16K] JSONArray.java
│ │ ├── [ 777] JSONException.java
│ │ ├── [2.9K] JSONGetter.java
│ │ ├── [4.7K] JSON.java
│ │ ├── [1.5K] JSONNull.java
│ │ ├── [ 734] JSONObjectIter.java
│ │ ├── [ 22K] JSONObject.java
│ │ ├── [3.5K] JSONStrFormater.java
│ │ ├── [ 393] JSONString.java
│ │ ├── [ 896] JSONSupport.java
│ │ ├── [10.0K] JSONTokener.java
│ │ ├── [ 19K] JSONUtil.java
│ │ ├── [ 107] package-info.java
│ │ ├── [9.5K] XML.java
│ │ └── [7.2K] XMLTokener.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] json
│ │ ├── [2.7K] JSONArrayTest.java
│ │ ├── [3.8K] JSONConvertTest.java
│ │ ├── [8.6K] JSONObjectTest.java
│ │ ├── [ 953] JSONStrFormaterTest.java
│ │ ├── [4.1K] JSONUtilTest.java
│ │ ├── [1.2K] ParseBeanTest.java
│ │ └── [4.0K] test
│ │ └── [4.0K] bean
│ │ ├── [ 292] ADT.java
│ │ ├── [ 204] Data.java
│ │ ├── [1.4K] ExamInfoDict.java
│ │ ├── [1.3K] Exam.java
│ │ ├── [ 972] JsonRootBean.java
│ │ ├── [ 20K] PerfectEvaluationProductResVo.java
│ │ ├── [ 245] Price.java
│ │ ├── [1.4K] ProductResBase.java
│ │ ├── [2.2K] ResultVO.java
│ │ ├── [ 349] Seq.java
│ │ ├── [ 755] UserA.java
│ │ ├── [ 463] UserB.java
│ │ ├── [ 462] UserC.java
│ │ ├── [2.0K] UserInfoDict.java
│ │ ├── [ 910] UserInfoRedundCount.java
│ │ └── [ 271] UserWithMap.java
│ └── [4.0K] resources
│ ├── [2.6K] evaluation.json
│ └── [6.1K] exam_test.json
├── [4.0K] hutool-log
│ ├── [2.2K] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] log
│ │ ├── [ 269] AbstractLocationAwareLog.java
│ │ ├── [1.3K] AbstractLog.java
│ │ ├── [4.0K] dialect
│ │ │ ├── [4.0K] commons
│ │ │ │ ├── [4.4K] ApacheCommonsLog4JLog.java
│ │ │ │ ├── [1008] ApacheCommonsLogFactory.java
│ │ │ │ ├── [4.6K] ApacheCommonsLog.java
│ │ │ │ └── [ 126] package-info.java
│ │ │ ├── [4.0K] console
│ │ │ │ ├── [ 492] ConsoleLogFactory.java
│ │ │ │ ├── [4.1K] ConsoleLog.java
│ │ │ │ └── [ 110] package-info.java
│ │ │ ├── [4.0K] jdk
│ │ │ │ ├── [1.5K] JdkLogFactory.java
│ │ │ │ ├── [5.9K] JdkLog.java
│ │ │ │ └── [ 102] package-info.java
│ │ │ ├── [4.0K] log4j
│ │ │ │ ├── [ 558] Log4jLogFactory.java
│ │ │ │ ├── [4.2K] Log4jLog.java
│ │ │ │ └── [ 98] package-info.java
│ │ │ ├── [4.0K] log4j2
│ │ │ │ ├── [ 577] Log4j2LogFactory.java
│ │ │ │ ├── [6.0K] Log4j2Log.java
│ │ │ │ └── [ 100] package-info.java
│ │ │ ├── [ 105] package-info.java
│ │ │ ├── [4.0K] slf4j
│ │ │ │ ├── [ 98] package-info.java
│ │ │ │ ├── [1.7K] Slf4jLogFactory.java
│ │ │ │ └── [7.4K] Slf4jLog.java
│ │ │ └── [4.0K] tinylog
│ │ │ ├── [ 102] package-info.java
│ │ │ ├── [ 558] TinyLogFactory.java
│ │ │ └── [5.0K] TinyLog.java
│ │ ├── [2.0K] GlobalLogFactory.java
│ │ ├── [4.0K] level
│ │ │ ├── [ 680] DebugLog.java
│ │ │ ├── [ 680] ErrorLog.java
│ │ │ ├── [ 670] InfoLog.java
│ │ │ ├── [ 445] Level.java
│ │ │ ├── [ 121] package-info.java
│ │ │ ├── [ 680] TraceLog.java
│ │ │ └── [ 670] WarnLog.java
│ │ ├── [ 767] LocationAwareLog.java
│ │ ├── [6.0K] LogFactory.java
│ │ ├── [1.0K] Log.java
│ │ ├── [ 241] package-info.java
│ │ └── [8.0K] StaticLog.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] log
│ │ └── [4.0K] test
│ │ ├── [ 818] ConsoleLogTest.java
│ │ ├── [3.0K] CustomLogTest.java
│ │ ├── [ 582] LogTest.java
│ │ └── [ 266] StaticLogTest.java
│ └── [4.0K] resources
│ ├── [3.3K] log4j2.xml
│ ├── [ 267] log4j.properties
│ ├── [ 449] logback.xml
│ ├── [2.3K] logging.properties
│ └── [ 684] tinylog.properties
├── [4.0K] hutool-poi
│ ├── [1.5K] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] poi
│ │ ├── [4.0K] excel
│ │ │ ├── [4.0K] cell
│ │ │ │ ├── [ 391] CellEditor.java
│ │ │ │ ├── [9.2K] CellUtil.java
│ │ │ │ ├── [ 301] CellValue.java
│ │ │ │ ├── [ 362] FormulaCellValue.java
│ │ │ │ └── [ 116] package-info.java
│ │ │ ├── [4.0K] editors
│ │ │ │ ├── [ 482] NumericToIntEditor.java
│ │ │ │ ├── [ 109] package-info.java
│ │ │ │ └── [ 467] TrimEditor.java
│ │ │ ├── [6.4K] ExcelBase.java
│ │ │ ├── [4.1K] ExcelPicUtil.java
│ │ │ ├── [ 14K] ExcelReader.java
│ │ │ ├── [ 15K] ExcelUtil.java
│ │ │ ├── [ 24K] ExcelWriter.java
│ │ │ ├── [ 120] package-info.java
│ │ │ ├── [2.0K] RowUtil.java
│ │ │ ├── [4.0K] sax
│ │ │ │ ├── [ 864] AbstractExcelSaxReader.java
│ │ │ │ ├── [1.3K] CellDataType.java
│ │ │ │ ├── [9.6K] Excel03SaxReader.java
│ │ │ │ ├── [ 11K] Excel07SaxReader.java
│ │ │ │ ├── [1.7K] ExcelSaxReader.java
│ │ │ │ ├── [4.3K] ExcelSaxUtil.java
│ │ │ │ ├── [4.0K] handler
│ │ │ │ │ ├── [ 124] package-info.java
│ │ │ │ │ └── [ 390] RowHandler.java
│ │ │ │ └── [ 109] package-info.java
│ │ │ ├── [4.0K] style
│ │ │ │ ├── [ 157] Align.java
│ │ │ │ ├── [ 117] package-info.java
│ │ │ │ └── [5.2K] StyleUtil.java
│ │ │ ├── [5.0K] StyleSet.java
│ │ │ └── [3.1K] WorkbookUtil.java
│ │ ├── [4.0K] exceptions
│ │ │ ├── [ 90] package-info.java
│ │ │ └── [ 825] POIException.java
│ │ ├── [ 335] package-info.java
│ │ └── [1.2K] PoiChecker.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] poi
│ │ └── [4.0K] test
│ │ ├── [ 387] CellUtilTest.java
│ │ ├── [5.3K] ExcelReadTest.java
│ │ ├── [2.5K] ExcelSaxReadTest.java
│ │ └── [7.4K] ExcelWriteTest.java
│ └── [4.0K] resources
│ ├── [ 24K] aaa.xls
│ ├── [ 11K] aaa.xlsx
│ ├── [8.8K] alias.xlsx
│ ├── [9.8K] blankAndDateTest.xlsx
│ └── [ 22K] priceIndex.xls
├── [4.0K] hutool-script
│ ├── [ 781] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] script
│ │ ├── [4.1K] FullSupportScriptEngine.java
│ │ ├── [3.4K] JavaScriptEngine.java
│ │ ├── [ 150] package-info.java
│ │ ├── [3.6K] ScriptRuntimeException.java
│ │ └── [2.8K] ScriptUtil.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] script
│ └── [4.0K] test
│ └── [ 633] ScriptUtilTest.java
├── [4.0K] hutool-setting
│ ├── [ 937] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] setting
│ │ ├── [7.2K] AbsSetting.java
│ │ ├── [4.0K] dialect
│ │ │ ├── [ 130] package-info.java
│ │ │ └── [ 13K] Props.java
│ │ ├── [5.3K] GroupedMap.java
│ │ ├── [8.3K] GroupedSet.java
│ │ ├── [ 214] package-info.java
│ │ ├── [4.0K] profile
│ │ │ ├── [ 967] GlobalProfile.java
│ │ │ ├── [ 130] package-info.java
│ │ │ └── [3.9K] Profile.java
│ │ ├── [ 15K] Setting.java
│ │ ├── [6.3K] SettingLoader.java
│ │ ├── [ 809] SettingRuntimeException.java
│ │ └── [1.2K] SettingUtil.java
│ └── [4.0K] test
│ ├── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] setting
│ │ └── [4.0K] test
│ │ ├── [1.0K] PropsTest.java
│ │ ├── [1.6K] SettingTest.java
│ │ └── [ 327] SettingUtilTest.java
│ └── [4.0K] resources
│ ├── [4.0K] example
│ │ ├── [ 402] example.set
│ │ ├── [ 837] example.setting
│ │ └── [ 225] group-set-example.set
│ ├── [ 641] test.properties
│ └── [ 651] test.setting
├── [ 650] hutool.sh
├── [4.0K] hutool-system
│ ├── [ 788] pom.xml
│ └── [4.0K] src
│ ├── [4.0K] main
│ │ └── [4.0K] java
│ │ └── [4.0K] cn
│ │ └── [4.0K] hutool
│ │ └── [4.0K] system
│ │ ├── [1.4K] HostInfo.java
│ │ ├── [8.5K] JavaInfo.java
│ │ ├── [6.9K] JavaRuntimeInfo.java
│ │ ├── [2.1K] JavaSpecInfo.java
│ │ ├── [2.5K] JvmInfo.java
│ │ ├── [2.1K] JvmSpecInfo.java
│ │ ├── [ 12K] OsInfo.java
│ │ ├── [ 160] package-info.java
│ │ ├── [1.6K] RuntimeInfo.java
│ │ ├── [ 12K] SystemUtil.java
│ │ └── [3.5K] UserInfo.java
│ └── [4.0K] test
│ └── [4.0K] java
│ └── [4.0K] cn
│ └── [4.0K] hutool
│ └── [4.0K] system
│ └── [ 349] SystemUtilTest.java
├── [ 11K] LICENSE.txt
├── [4.6K] pom.xml
└── [6.1K] README.md
383 directories, 1040 files