自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)非常好用的Jar,可以幫你省去整合Utils的時(shí)間

開發(fā) 開發(fā)工具
一個(gè)封裝了很多功能的 Jar ,阿粉要不是因?yàn)樾枨螅烙?jì)可能很久不都不一定知道他,我們先來(lái)看看阿粉的需求是什么樣子的。

[[413932]]

本文轉(zhuǎn)載自微信公眾號(hào)「Java極客技術(shù)」,作者鴨血粉絲。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java極客技術(shù)公眾號(hào)。

前段時(shí)間,阿粉在公司做功能的時(shí)候,出現(xiàn)了一個(gè)比較別致的需求,需要在頁(yè)面上顯示辛丑年x月x日,于是阿粉就在想,這個(gè)天干地支這玩意是不是有人做過(guò)封裝,能不能整合到Utils里面,以后都一起使用吧,于是就在 Google 上開始搜索有關(guān)的內(nèi)容,結(jié)果不搜不知道,一搜嚇一跳,直接出現(xiàn)了一個(gè)完整的封裝好的 Jar 可以直接使用,于是阿粉就把這個(gè) Jar 包的依賴加入到了自己的項(xiàng)目中,而且去源碼中扒拉了一下,感覺里面東西真心不錯(cuò),于是決定分享給大家一下。

Hutool

一個(gè)封裝了很多功能的 Jar ,阿粉要不是因?yàn)樾枨?,估?jì)可能很久不都不一定知道他,我們先來(lái)看看阿粉的需求是什么樣子的。

[[413933]]

阿粉之前的需求是讓在后端返回一個(gè)所謂農(nóng)歷的干支紀(jì)年,而這個(gè)東西就不是那么容易了呀,要自己去找一些Utils的話,大家可以看一下。

需要我們?nèi)iT弄這個(gè)么Utils,然后去計(jì)算干支紀(jì)年,這是不是有點(diǎn)麻煩了,而我們的 Hutool 這個(gè) Jar 就非常的簡(jiǎn)單了,

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

上面的代碼是獲取干支紀(jì)年,比如他還有獲取節(jié)日和生效的:

  1. /** 
  2.   * 獲得節(jié)日 
  3.   * 
  4.   * @return 獲得農(nóng)歷節(jié)日 
  5.   */ 
  6.  public String getFestivals() { 
  7.   return StrUtil.join(",", LunarFestival.getFestivals(this.year, this.monthday)); 
  8.  } 
  9.  
  10.  /** 
  11.   * 獲得年份生肖 
  12.   * 
  13.   * @return 獲得年份生肖 
  14.   */ 
  15.  public String getChineseZodiac() { 
  16.   return Zodiac.getChineseZodiac(this.year); 
  17.  } 

如果你只是認(rèn)為這個(gè) Jar 只能給你提供這一種幫助那就大錯(cuò)特錯(cuò)了,他內(nèi)部可是封裝了很多很多的方法的。

而且是可以選擇引入包,如果你想用 hutool 的所有的 Jar 就可以引入所有的依賴:

  1. <dependency> 
  2.     <groupId>cn.hutool</groupId> 
  3.     <artifactId>hutool-all</artifactId> 
  4.     <version>5.5.2</version> 
  5. </dependency> 

 

如果說(shuō)你只想用其中的某一項(xiàng)功能的時(shí)候,那么你就可以挑選其他的 Jar 依賴引入,比如:

  1. <dependency> 
  2.     <groupId>cn.hutool</groupId> 
  3.     <artifactId>hutool-core</artifactId> 
  4.     <version>5.6.5</version> 
  5. </dependency> 

 

我們就看看 hutool 都有哪些比較牛掰的 Jar 。

  • hutool-aop JDK動(dòng)態(tài)代理封裝,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆過(guò)濾,提供一些Hash算法的布隆過(guò)濾
  • hutool-cache 簡(jiǎn)單緩存實(shí)現(xiàn)
  • hutool-core 核心,包括Bean操作、日期、各種Util等
  • hutool-cron 定時(shí)任務(wù)模塊,提供類Crontab表達(dá)式的定時(shí)任務(wù)
  • hutool-crypto 加密解密模塊,提供對(duì)稱、非對(duì)稱和摘要算法封裝
  • hutool-db JDBC封裝后的數(shù)據(jù)操作,基于ActiveRecord思想
  • hutool-extra 擴(kuò)展模塊,對(duì)第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)
  • hutool-http 基于HttpUrlConnection的Http客戶端封裝
  • hutool-log 自動(dòng)識(shí)別日志實(shí)現(xiàn)的日志門面
  • hutool-setting 功能更強(qiáng)大的Setting配置文件和Properties封裝
  • hutool-script 腳本執(zhí)行封裝,例如Javascript
  • hutool-system 系統(tǒng)參數(shù)調(diào)用封裝(JVM信息等)
  • hutool-json JSON實(shí)現(xiàn)
  • hutool-captcha 圖片驗(yàn)證碼實(shí)現(xiàn)
  • hutool-poi 針對(duì)POI中Excel和Word的封裝
  • hutool-socket 基于Java的NIO和AIO的Socket封裝

我們挑幾個(gè)可以比較常用,而且比較放心的,相對(duì)于公司的系統(tǒng)來(lái)說(shuō),肯定很多人會(huì)說(shuō),這種 Jar 會(huì)不會(huì)不安全呢?畢竟互聯(lián)網(wǎng)時(shí)代,安全性要求是非常重要的,既然我們不用那些涉及到一些安全的用例的話,基礎(chǔ)的我們還是可以拿過(guò)來(lái)使用的,不是么?

比如說(shuō)我們最經(jīng)典的轉(zhuǎn)型,相信大家肯定使用過(guò) HttpServletRequest ,也就是 HttpServletRequest 獲取的Parameter ,然后再轉(zhuǎn)型成我們所需要的類型就像下面:

  1. HttpServletRequest.getParameter(""

然后我們就得先轉(zhuǎn)換成 String ,然后再去轉(zhuǎn)換成我們想要的類型。

而在 Hutool 里面,就有一個(gè)類提供給我們使用,Convert 類。

轉(zhuǎn)換為字符串:

  1. 轉(zhuǎn)換為字符串: 
  2.  long[] b = {1,2,3,4,5}; 
  3.  String bStr = Convert.toStr(b); 
  4.  System.out.println(bStr); 

Convert.convert(Class, Object)方法可以將任意類型轉(zhuǎn)換為指定類型,Hutool中預(yù)定義了許多類型轉(zhuǎn)換,例如轉(zhuǎn)換為URI、URL、Calendar等等,這些類型的轉(zhuǎn)換都依托于ConverterRegistry類。

在源碼里面也是有注釋的,我們肯定去扒拉一下看看源碼不是么?

  1. /** 
  2.   * 轉(zhuǎn)換值為指定類型 
  3.   *  
  4.   * @param <T> 目標(biāo)類型 
  5.   * @param type 類型 
  6.   * @param value 值 
  7.   * @return 轉(zhuǎn)換后的值 
  8.   * @since 4.0.0 
  9.   * @throws ConvertException 轉(zhuǎn)換器不存在 
  10.   */ 
  11.  public static <T> T convert(Class<T> type, Object value) throws ConvertException{ 
  12.   return convert((Type)type, value); 
  13.  } 
  14.   
  15.  /** 
  16.       * 轉(zhuǎn)換值為指定類型 
  17.       *  
  18.       * @param <T> 目標(biāo)類型 
  19.       * @param reference 類型參考,用于持有轉(zhuǎn)換后的泛型類型 
  20.       * @param value 值 
  21.       * @return 轉(zhuǎn)換后的值 
  22.       * @throws ConvertException 轉(zhuǎn)換器不存在 
  23.       */ 
  24.      public static <T> T convert(TypeReference<T> reference, Object value) throws ConvertException{ 
  25.       return convert(reference.getType(), value, null); 
  26.      } 

不得不說(shuō),這玩意還真好用,而且你如果在百度上去搜索關(guān)于這方面的東西,有些時(shí)候還會(huì)發(fā)現(xiàn),有人會(huì)把里面的源碼給拆出來(lái),自己封裝成 Utils ,這種可能是覺得引入外面的 Jar 不是很靠譜,于是就把 Jar 里面的方法什么的都給重新封裝了一下,作為自己用。

上面這部分阿粉接了個(gè)圖,發(fā)現(xiàn)公司的某個(gè)項(xiàng)目中就是直接把 Conver 這個(gè)類直接拷貝了一份,然后當(dāng)做了自己的類進(jìn)行調(diào)用,不得不說(shuō),佩服!

提供的算法

Hutool 不光提供了一些基礎(chǔ)工具類的使用,同時(shí)還提供了一些算法,比如說(shuō):HashUtil

  • additiveHash 加法hash
  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.  } 
  • 旋轉(zhuǎn)hash
  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; 
  • 一次一個(gè)hash
  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算法。。。

總之,都是比較不錯(cuò)的呀,至少比我們?nèi)グ俣壬厦嫠阉鞯倪@種靠譜呀。

而且還包括了加密解密,SecureUtil 其中有對(duì)稱加密-SymmetricCrypto,也有非對(duì)稱加密-AsymmetricCrypto。

非常多的內(nèi)容值得大家去挖掘,如果想看官方文檔,阿粉也放給大家,大家可以去看看!

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

總結(jié)

 

作為一名開發(fā)人員,保證開發(fā)效率才是第一位的,善于使用工具,對(duì)你的開發(fā)進(jìn)度是非常有幫助的,你學(xué)會(huì)了么?

 

責(zé)任編輯:武曉燕 來(lái)源: Java極客技術(shù)
相關(guān)推薦

2015-08-10 11:21:47

在線資源游戲開發(fā)

2021-08-29 07:48:16

Golang開發(fā)

2022-07-10 00:01:43

漏洞工具安全

2023-08-23 15:57:41

開發(fā)工具Java

2024-05-09 07:34:38

SQL Server數(shù)據(jù)庫(kù)管理工具

2019-10-08 15:33:59

開源技術(shù) 工具

2022-03-11 13:07:54

Java工具框架

2022-05-11 09:54:48

Flagsmith開源

2022-02-10 09:55:25

工具語(yǔ)法開源

2021-01-04 20:48:19

TypeScriptJS前端

2023-09-13 13:32:04

數(shù)據(jù)庫(kù)開源

2023-11-23 07:17:44

PixPin圖像標(biāo)注工具

2023-10-10 14:54:31

插件開發(fā)

2015-09-01 16:42:55

新聞客戶端百度數(shù)據(jù)源碼

2019-04-28 11:01:05

云安全云計(jì)算CASB

2023-03-09 17:54:04

2014-05-23 10:37:37

聊天程序PHP聊天程序

2020-09-29 15:08:47

Go UI框架開發(fā)

2024-07-02 11:29:28

Typer庫(kù)Python命令

2021-03-15 09:27:05

Redis優(yōu)化技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)