概述 CacheUtil是缓存创建的快捷工具类。用于快速创建不同的缓存对象。 使用 //新建FIFOCache Cache<String,String> fifoCache = CacheUtil.newFIFOCache(3); 同样其它类型的Cache也可以调用newXXX的方法创建。
介绍 Hutool-log做为一个日志门面,为了兼容各大日志框架,一个用于自动创建日志对象的日志工厂类必不可少。 LogFactory类用于灵活的创建日志对象,通过static方法创建我们需要的日志,主要功能如下: LogFactory.get 自动识别引入的日志框架,从而创建对应日志框架的门面Log对象(此方法创建一次后,下次再次get会根据传入类名缓存Log对象,对于每个类,Log对象都是单例
由来 在日常开发中,网络连接这块儿必不可少。日常用到的一些功能,隐藏掉部分IP地址、绝对相对路径的转换等等。 介绍 NetUtil 工具中主要的方法包括: longToIpv4 根据long值获取ip v4地址 ipv4ToLong 根据ip地址计算出long型的数据 isUsableLocalPort 检测本地端口可用性 isValidPort 是否为有效的端口 isInnerIP 判定是否为内
介绍 针对awt中图片处理进行封装,这些封装包括:缩放、裁剪、转为黑白、加水印等操作。 方法介绍 scale 缩放图片 提供两种重载方法:其中一个是按照长宽缩放,另一种是按照比例缩放。 ImgUtil.scale( FileUtil.file("d:/face.jpg"), FileUtil.file("d:/face_result.jpg"), 0.5f//缩放比例
由来 并发在Java中算是一个比较难理解和容易出问题的部分,而并发的核心在线程。好在从JDK1.5开始Java提供了concurrent包可以很好的帮我们处理大部分并发、异步等问题。 不过,ExecutorService和Executors等众多概念依旧让我们使用这个包变得比较麻烦,如何才能隐藏这些概念?又如何用一个方法解决问题?ThreadUtil便为此而生。 原理 Hutool使用Global
介绍 针对异常封装,例如包装为RuntimeException。 方法 getMessage 获得完整消息,包括异常名 wrap 包装一个异常为指定类型异常 wrapRuntime 使用运行时异常包装编译异常 getCausedBy 获取由指定异常类引起的异常 isCausedBy 判断是否由指定异常类引起 stacktraceToString 堆栈转为完整字符串 其它方法见API文档: http
介绍 在JDK提供的比较器中,对于null的比较没有考虑,Hutool封装了相关比较,可选null是按照最大值还是最小值对待。 // 当isNullGreater为true时,null始终最大,此处返回的compare > 0 int compare = CompareUtil.compare(null, "a", true); // 当isNullGreater为false时,null始终最小
介绍 封装了注解获取等方法的工具类。 使用 方法介绍 注解获取相关方法: getAnnotations 获取指定类、方法、字段、构造等上的注解列表 getAnnotation 获取指定类型注解 getAnnotationValue 获取指定注解属性的值 例子: 我们定义一个注解: // Retention注解决定MyAnnotation注解的生命周期 @Retention(RetentionPol
介绍 List在集合中中使用最为频繁,因此新版本的Hutool中针对List单独封装了工具方法。 使用 过滤列表 List<String> a = ListUtil.toLinkedList("1", "2", "3"); // 结果: [edit1, edit2, edit3] List<String> filter = ListUtil.filter(a, str -> "edit" + st
介绍 这个工具主要增加了对数组、集合类的操作。 1. join 方法 将集合转换为字符串,这个方法还是挺常用,是StrUtil.split的反方法。这个方法的参数支持各种类型对象的集合,最后连接每个对象时候调用其toString()方法。栗子如下: String[] col= new String[]{"a","b","c","d","e"}; List<String> colList = Col
为什么会有这个类 平常我们使用单例不外乎两种方式: 在对象里加个静态方法getInstance()来获取。此方式可以参考 【转】线程安全的单例模式 这篇博客,可分为饿汉和饱汉模式。 通过Spring这类容器统一管理对象,用的时候去对象池中拿。Spring也可以通过配置决定懒汉或者饿汉模式 说实话我更倾向于第二种,但是Spring更注重的是注入,而不是拿,于是我想做Singleton这个类,维护一个
由来 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能。就比如说我要匹配一段文本中的某些部分,我们需要这样做: String content = "ZZZaaabbbccc中文1234"; Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); Matcher matc
介绍 引用工具类,主要针对Reference 工具化封装 主要封装包括: SoftReference 软引用,在GC报告内存不足时会被GC回收 WeakReference 弱引用,在GC时发现弱引用会回收其对象 PhantomReference 虚引用,在GC时发现虚引用对象,会将PhantomReference插入ReferenceQueue。此时对象未被真正回收,要等到ReferenceQue
由来 在Java中,对文件、文件夹打包,压缩是一件比较繁琐的事情,我们常常引入Zip4j进行此类操作。但是很多时候,JDK中的zip包就可满足我们大部分需求。ZipUtil就是针对java.util.zip做工具化封装,使压缩解压操作可以一个方法搞定,并且自动处理文件和目录的问题,不再需要用户判断,压缩后的文件也会自动创建文件,自动创建父目录,大大简化的压缩解压的复杂度。 方法 Zip 压缩 Zi
说明 RandomUtil主要针对JDK中Random对象做封装,严格来说,Java产生的随机数都是伪随机数,因此Hutool封装后产生的随机结果也是伪随机结果。不过这种随机结果对于大多数情况已经够用。 使用 RandomUtil.randomInt 获得指定范围内的随机数 RandomUtil.randomBytes 随机bytes RandomUtil.randomEle 随机获得列表中的元素