欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java常用工具類庫——Hutool的使用簡介

 更新時(shí)間:2021年04月12日 11:09:50   作者:碼農(nóng)翻身  
這篇文章主要介紹了Java常用工具類庫——Hutool的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下

前言

Hutool 是一個(gè)小而全的 Java 工具類庫,通過靜態(tài)方法封裝,降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語言般的優(yōu)雅,讓 Java 語言也可以“甜甜的”。
Hutool 中的工具方法來自于每個(gè)用戶的精雕細(xì)琢,它涵蓋了 Java 開發(fā)底層代碼中的方方面面,它既是大型項(xiàng)目開發(fā)中解決小問題的利器,也是小型項(xiàng)目中的效率擔(dān)當(dāng);
Hutool 是項(xiàng)目中“util”包友好的替代,它節(jié)省了開發(fā)人員對(duì)項(xiàng)目中公用類和公用工具方法的封裝時(shí)間,使開發(fā)專注于業(yè)務(wù),同時(shí)可以最大限度的避免封裝不完善帶來的 bug。

上述是 Hutool 的官方介紹,它的官方文檔已經(jīng)介紹的很詳細(xì)了,因此下面我只簡單介紹幾個(gè)常用的 API 操作,更多的功能我們可以詳細(xì)閱讀文檔。

官方文檔地址:https://www.hutool.cn/docs/#/

HuTool 中的一些常用工具類

我們引入這個(gè)工具類很簡單,直接在 Mavan 項(xiàng)目中引入 dependency 即可,如果是初學(xué)者,去 Maven Repository 下載 jar 包也可以使用。

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.5</version>
</dependency>

通過 Hutool,可以減少代碼搜索成本,避免網(wǎng)絡(luò)上參差不齊的代碼出現(xiàn)導(dǎo)致的bug。

日期相關(guān) API

我們知道,Java 中關(guān)于日期的 API 使用一直很繁瑣,從 Date 到 Calendar,對(duì)開發(fā)者都不是那么友好,還容易出 BUG,那么 Hutool 首先就對(duì)日期下手了,提供了針對(duì) JDK 中 Date 和 Calendar 對(duì)象的封裝。

比如要對(duì)當(dāng)前的 Date 日期進(jìn)行格式化,一般使用 SimpleDateFormat(yyyy-MM-dd HH:mm:ss) 這種方式,但 SimpleDateFormat 這個(gè)類是線程不安全的,而 Hutool 提供了一個(gè) FastDateFormat 類,提供線程安全的針對(duì) Date 對(duì)象的格式化和日期字符串解析支持。此對(duì)象在實(shí)際使用中并不需要感知,相關(guān)操作已經(jīng)封裝在 DateUtil 和 DateTime 的相關(guān)方法中。

還有其它的日期 API 如下:

  • DateUtil 針對(duì)日期時(shí)間操作提供一系列靜態(tài)方法
  • DateTim 提供類似于 Joda-Time 中日期時(shí)間對(duì)象的封裝,繼承自 Date 類,并提供更加豐富的對(duì)象方法。
  • DateBetween 計(jì)算兩個(gè)時(shí)間間隔的類,除了通過構(gòu)造新對(duì)象使用外,相關(guān)操作也已封裝在 DateUtil 和 DateTime 的相關(guān)方法中。
  • TimeInterval 一個(gè)簡單的計(jì)時(shí)器類,常用于計(jì)算某段代碼的執(zhí)行時(shí)間,提供包括毫秒、秒、分、時(shí)、天、周等各種單位的花費(fèi)時(shí)長計(jì)算,對(duì)象的靜態(tài)構(gòu)造已封裝在 DateUtil 中。
  • DatePattern 提供常用的日期格式化模式,包括 String 類型和 FastDateFormat 兩種類型。

隨機(jī)工具

隨機(jī)工具應(yīng)該是我們開發(fā)中用的較多的類庫,Hutool 也封裝了常用的 API。

  • RandomUtil.randomInt 獲得指定范圍內(nèi)的隨機(jī)數(shù)
  • RandomUtil.randomBytes 隨機(jī) bytes
  • RandomUtil.randomEl 隨機(jī)獲得列表中的元素
  • RandomUtil.randomEleSet 隨機(jī)獲得列表中的一定量的不重復(fù)元素,返回 Set
  • RandomUtil.randomString 獲得一個(gè)隨機(jī)的字符串(只包含數(shù)字和字符)
  • RandomUtil.randomNumbers 獲得一個(gè)只包含數(shù)字的字符串
  • RandomUtil.randomUUID 隨機(jī) UUID
  • RandomUtil.weightRandom 權(quán)重隨機(jī)生成器,傳入帶權(quán)重的對(duì)象,然后根據(jù)權(quán)重隨機(jī)獲取對(duì)象

圖片工具

針對(duì) awt 中圖片處理進(jìn)行封裝,這些封裝包括:縮放、裁剪、轉(zhuǎn)為黑白、加水印等操作。

彩色轉(zhuǎn)換成黑白

//黑白轉(zhuǎn)換
ImgUtil.gray(FileUtil.file("d:/logo.png"), FileUtil.file("d:/result.png"));

添加文字水印

ImgUtil.pressText(//
    FileUtil.file("e:/pic/face.jpg"), //
    FileUtil.file("e:/pic/test2_result.png"), //
    "版權(quán)所有", Color.WHITE, //文字
    new Font("黑體", Font.BOLD, 100), //字體
    0, //x坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移
    0, //y坐標(biāo)修正值。 默認(rèn)在中間,偏移量相對(duì)于中間偏移
    0.8f//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個(gè)浮點(diǎn)數(shù)字
);

加密解密工具

加密一般分為三種:

  1. 對(duì)稱加密(symmetric),例如:AES、DES等
  2. 非對(duì)稱加密(asymmetric),例如:RSA、DSA等
  3. 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

Hutool 對(duì)上述加密都提供了對(duì)應(yīng)的封裝方法。

布隆過濾器

布隆過濾器可以用于檢索一個(gè)元素是否在一個(gè)集合中。它的優(yōu)點(diǎn)是空間效率和查詢時(shí)間都遠(yuǎn)遠(yuǎn)超過一般的算法,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難。一般用于解決 NoSQL 的緩存穿透問題。

// 初始化
BitMapBloomFilter filter = new BitMapBloomFilter(10);
filter.add("123");
filter.add("abc");
filter.add("ddd");

// 查找
filter.contains("abc")

郵件工具

在 Java中 發(fā)送郵件主要品依靠 javax.mail 包,原生 API 使用比較繁瑣,Hutool 在支持郵件發(fā)送的基礎(chǔ)上,仍然依賴于 javax.mail 包。

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

郵件服務(wù)器的完整配置:

# 郵件服務(wù)器的SMTP地址,可選,默認(rèn)為smtp.<發(fā)件人郵箱后綴>
host = smtp.yeah.net
# 郵件服務(wù)器的SMTP端口,可選,默認(rèn)25
port = 25
# 發(fā)件人(必須正確,否則發(fā)送失?。?
from = hutool@yeah.net
# 用戶名,默認(rèn)為發(fā)件人郵箱前綴
user = hutool
# 密碼(注意,某些郵箱需要為SMTP服務(wù)單獨(dú)設(shè)置授權(quán)碼,詳情查看相關(guān)幫助)
pass = q1w2e3

發(fā)送郵件:

  • 發(fā)送普通文本郵件,最后一個(gè)參數(shù)可選是否添加多個(gè)附件:
//普通文本
MailUtil.send("hutool@foxmail.com", "測(cè)試", "郵件來自Hutool測(cè)試", false);
  • 發(fā)送 HTML 格式的郵件并附帶附件,最后一個(gè)參數(shù)可選是否添加多個(gè)附件:
//帶HTML格式的郵件
MailUtil.send("hutool@foxmail.com", "測(cè)試", "<h1>郵件來自Hutool測(cè)試</h1>", true, FileUtil.file("d:/aaa.xml"));
  • 群發(fā)郵件,可選 HTML 或普通文本,可選多個(gè)附件:
//群發(fā)
ArrayList<String> tos = CollUtil.newArrayList(
    "person1@bbb.com", 
    "person2@bbb.com", 
    "person3@bbb.com", 
    "person4@bbb.com");

MailUtil.send(tos, "測(cè)試", "郵件來自Hutool群發(fā)測(cè)試", false);

HTML 工具

比如清除富文本編輯器中的 HTML 文本的指定標(biāo)簽,或者只保留普通文本。

HtmlUtil.cleanHtmlTag

清除所有 HTM L標(biāo)簽,但是保留標(biāo)簽內(nèi)的內(nèi)容。

String str = "pre<div class=\"test_div\">\r\n\t\tdfdsfdsfdsf\r\n</div><div class=\"test_div\">BBBB</div>";

// 結(jié)果為:pre\r\n\t\tdfdsfdsfdsf\r\nBBBB
String result = HtmlUtil.cleanHtmlTag(str);

HtmlUtil.removeHtmlTag

清除指定HTML標(biāo)簽和被標(biāo)簽包圍的內(nèi)容

String str = "pre<img src=\"xxx/dfdsfds/test.jpg\">";

// 結(jié)果為:pre
String result = HtmlUtil.removeHtmlTag(str, "img");

過濾 HTML 文本,防止 XSS 攻擊

這個(gè)作用就不必多說,防止用戶在輸入文本中寫入 HTML 標(biāo)簽對(duì)后臺(tái)造成攻擊。

String html = "<alert></alert>";

// 結(jié)果為:""
String filter = HtmlUtil.filter(html);

JSON 工具

由于有開源并且一直在維護(hù)的 Fastjson 工具在先,所以這里就不再細(xì)說 Hutool 中的 JSON 工具,使用方法基本類似。

寫在最后

上面只是簡單的介紹了 Hutool 的典型常用工具,實(shí)際上 Hutool 基本覆蓋了我們?nèi)粘F胀ㄩ_發(fā)場(chǎng)景涉及的大部分工具類,有興趣的可以自行查閱文檔,介紹的很全,如果使用中遇到了 BUG,也歡迎及時(shí)向作者反饋哦🙋 。

以上就是Java常用工具類庫——Hutool的使用簡介的詳細(xì)內(nèi)容,更多關(guān)于Java 工具類庫Hutool的使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解JAVA中使用FTPClient工具類上傳下載

    詳解JAVA中使用FTPClient工具類上傳下載

    這篇文章主要介紹了JAVA中使用FTPClient工具類上傳下載的相關(guān)資料,java 使用FTP服務(wù)器上傳文件、下載文件,需要的朋友可以參考下
    2017-08-08
  • Spring?Cloud?中自定義外部化擴(kuò)展機(jī)制原理及實(shí)戰(zhàn)記錄

    Spring?Cloud?中自定義外部化擴(kuò)展機(jī)制原理及實(shí)戰(zhàn)記錄

    這篇文章主要介紹了Spring?Cloud?中自定義外部化擴(kuò)展機(jī)制原理及實(shí)戰(zhàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • java中json-diff簡單使用及對(duì)象是否一致詳解

    java中json-diff簡單使用及對(duì)象是否一致詳解

    這篇文章主要為大家介紹了java中json-diff簡單使用及對(duì)象是否一致對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 圖解Java排序算法之歸并排序

    圖解Java排序算法之歸并排序

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之歸并排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java?synchronized輕量級(jí)鎖實(shí)現(xiàn)過程淺析

    Java?synchronized輕量級(jí)鎖實(shí)現(xiàn)過程淺析

    這篇文章主要介紹了Java synchronized輕量級(jí)鎖實(shí)現(xiàn)過程,synchronized是Java里的一個(gè)關(guān)鍵字,起到的一個(gè)效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時(shí)禁止指令重排序和保證內(nèi)存的可見性
    2023-02-02
  • 靈活控制任務(wù)執(zhí)行時(shí)間的Cron表達(dá)式范例

    靈活控制任務(wù)執(zhí)行時(shí)間的Cron表達(dá)式范例

    這篇文章主要為大家介紹了靈活控制任務(wù)執(zhí)行時(shí)間的Cron表達(dá)式范例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java中左移和右移問題圖文詳解

    Java中左移和右移問題圖文詳解

    左移和右移并不常用,在一些特殊情況下才會(huì)使用,比如加解密時(shí),會(huì)大量用到,這篇文章主要給大家介紹了關(guān)于Java中左移和右移問題的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • java Runnable接口創(chuàng)建線程

    java Runnable接口創(chuàng)建線程

    這篇文章主要介紹了java Runnable接口創(chuàng)建線程的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • SpringBoot 指標(biāo)監(jiān)控actuator的專題

    SpringBoot 指標(biāo)監(jiān)控actuator的專題

    未來每一個(gè)微服務(wù)在云上部署以后,我們都需要對(duì)其進(jìn)行監(jiān)控、追蹤、審計(jì)、控制等。SpringBoot就抽取了Actuator場(chǎng)景,使得我們每個(gè)微服務(wù)快速引用即可獲得生產(chǎn)級(jí)別的應(yīng)用監(jiān)控、審計(jì)等功能,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Springboot 項(xiàng)目讀取Resources目錄下的文件(推薦)

    Springboot 項(xiàng)目讀取Resources目錄下的文件(推薦)

    這篇文章主要介紹了Springboot 項(xiàng)目讀取Resources目錄下的文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論