文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一个非常好用的Jar,可以帮你省去整合Utils的时间

2024-12-03 01:01

关注

本文转载自微信公众号「Java极客技术」,作者鸭血粉丝。转载本文请联系Java极客技术公众号。

前段时间,阿粉在公司做功能的时候,出现了一个比较别致的需求,需要在页面上显示辛丑年x月x日,于是阿粉就在想,这个天干地支这玩意是不是有人做过封装,能不能整合到Utils里面,以后都一起使用吧,于是就在 Google 上开始搜索有关的内容,结果不搜不知道,一搜吓一跳,直接出现了一个完整的封装好的 Jar 可以直接使用,于是阿粉就把这个 Jar 包的依赖加入到了自己的项目中,而且去源码中扒拉了一下,感觉里面东西真心不错,于是决定分享给大家一下。

Hutool

一个封装了很多功能的 Jar ,阿粉要不是因为需求,估计可能很久不都不一定知道他,我们先来看看阿粉的需求是什么样子的。

[[413933]]

阿粉之前的需求是让在后端返回一个所谓农历的干支纪年,而这个东西就不是那么容易了呀,要自己去找一些Utils的话,大家可以看一下。

需要我们去专门弄这个么Utils,然后去计算干支纪年,这是不是有点麻烦了,而我们的 Hutool 这个 Jar 就非常的简单了,

  1. ChineseDate chineseDate = new ChineseDate(date); 
  2. String cyclical = chineseDate.getCyclical(); 

上面的代码是获取干支纪年,比如他还有获取节日和生效的:

  1.  
  2.  public String getFestivals() { 
  3.   return StrUtil.join(",", LunarFestival.getFestivals(this.year, this.monthday)); 
  4.  } 
  5.  
  6.   
  7.  public String getChineseZodiac() { 
  8.   return Zodiac.getChineseZodiac(this.year); 
  9.  } 

如果你只是认为这个 Jar 只能给你提供这一种帮助那就大错特错了,他内部可是封装了很多很多的方法的。

而且是可以选择引入包,如果你想用 hutool 的所有的 Jar 就可以引入所有的依赖:

  1.  
  2.     cn.hutool 
  3.     hutool-all 
  4.     5.5.2 
  5.  

 

如果说你只想用其中的某一项功能的时候,那么你就可以挑选其他的 Jar 依赖引入,比如:

  1.  
  2.     cn.hutool 
  3.     hutool-core 
  4.     5.6.5 
  5.  

 

我们就看看 hutool 都有哪些比较牛掰的 Jar 。

我们挑几个可以比较常用,而且比较放心的,相对于公司的系统来说,肯定很多人会说,这种 Jar 会不会不安全呢?毕竟互联网时代,安全性要求是非常重要的,既然我们不用那些涉及到一些安全的用例的话,基础的我们还是可以拿过来使用的,不是么?

比如说我们最经典的转型,相信大家肯定使用过 HttpServletRequest ,也就是 HttpServletRequest 获取的Parameter ,然后再转型成我们所需要的类型就像下面:

  1. HttpServletRequest.getParameter(""

然后我们就得先转换成 String ,然后再去转换成我们想要的类型。

而在 Hutool 里面,就有一个类提供给我们使用,Convert 类。

转换为字符串:

  1. 转换为字符串: 
  2.  long[] b = {1,2,3,4,5}; 
  3.  String bStr = Convert.toStr(b); 
  4.  System.out.println(bStr); 

Convert.convert(Class, Object)方法可以将任意类型转换为指定类型,Hutool中预定义了许多类型转换,例如转换为URI、URL、Calendar等等,这些类型的转换都依托于ConverterRegistry类。

在源码里面也是有注释的,我们肯定去扒拉一下看看源码不是么?

  1.  
  2.  public static  T convert(Class type, Object value) throws ConvertException{ 
  3.   return convert((Type)type, value); 
  4.  } 
  5.   
  6.   
  7.      public static  T convert(TypeReference reference, Object value) throws ConvertException{ 
  8.       return convert(reference.getType(), value, null); 
  9.      } 

不得不说,这玩意还真好用,而且你如果在百度上去搜索关于这方面的东西,有些时候还会发现,有人会把里面的源码给拆出来,自己封装成 Utils ,这种可能是觉得引入外面的 Jar 不是很靠谱,于是就把 Jar 里面的方法什么的都给重新封装了一下,作为自己用。

上面这部分阿粉接了个图,发现公司的某个项目中就是直接把 Conver 这个类直接拷贝了一份,然后当做了自己的类进行调用,不得不说,佩服!

提供的算法

Hutool 不光提供了一些基础工具类的使用,同时还提供了一些算法,比如说:HashUtil

  1. public static int additiveHash(String keyint prime) { 
  2.   int hash, i; 
  3.   for (hash = key.length(), i = 0; i < key.length(); i++) { 
  4.    hash += key.charAt(i); 
  5.   } 
  6.   return hash % prime; 
  7.  } 
  1. public static int rotatingHash(String keyint prime) { 
  2.     int hash, i; 
  3.     for (hash = key.length(), i = 0; i < key.length(); ++i) { 
  4.         hash = (hash << 4) ^ (hash >> 28) ^ key.charAt(i); 
  5.     } 
  6.  
  7.     // 使用:hash = (hash ^ (hash>>10) ^ (hash>>20)) & mask; 
  8.     // 替代:hash %= prime; 
  9.     // return (hash ^ (hash>>10) ^ (hash>>20)); 
  10.     return hash % prime; 
  1. public static int oneByOneHash(String key) { 
  2.     int hash, i; 
  3.     for (hash = 0, i = 0; i < key.length(); ++i) { 
  4.         hash += key.charAt(i); 
  5.         hash += (hash << 10); 
  6.         hash ^= (hash >> 6); 
  7.     } 
  8.     hash += (hash << 3); 
  9.     hash ^= (hash >> 11); 
  10.     hash += (hash << 15); 
  11.     // return (hash & M_MASK); 
  12.     return hash; 

工具类中融合了各种hash算法,不单单是这么几种,还有好多,像:RS算法hash、JS算法、DEK算法、DJB算法。。。

总之,都是比较不错的呀,至少比我们去百度上面搜索的这种靠谱呀。

而且还包括了加密解密,SecureUtil 其中有对称加密-SymmetricCrypto,也有非对称加密-AsymmetricCrypto。

非常多的内容值得大家去挖掘,如果想看官方文档,阿粉也放给大家,大家可以去看看!

Hutool官方文档(https://hutool.cn/docs/)

总结

 

作为一名开发人员,保证开发效率才是第一位的,善于使用工具,对你的开发进度是非常有帮助的,你学会了么?

 

来源:Java极客技术内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯