AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

效率工具:Hutool 嘎嘎香,開炫了!

來源: 責編: 時間:2023-12-13 17:02:57 293觀看
導讀在日常開發中,我們會使用很多工具類來提升項目開發的速度,而國內用的比較多的 Hutool 框架,就是其中之一。先來看官方對于 Hutool 的定義:Hutool 是一個小而全的 Java 工具類庫,通過靜態方法封裝,降低相關 API 的學習成本,提

在日常開發中,我們會使用很多工具類來提升項目開發的速度,而國內用的比較多的 Hutool 框架,就是其中之一。YhZ28資訊網——每日最新資訊28at.com

先來看官方對于 Hutool 的定義:YhZ28資訊網——每日最新資訊28at.com

Hutool 是一個小而全的 Java 工具類庫,通過靜態方法封裝,降低相關 API 的學習成本,提高工作效率,使 Java 擁有函數式語言般的優雅,讓 Java 語言也可以“甜甜的”。YhZ28資訊網——每日最新資訊28at.com

Hutool 中的工具方法來自每個用戶的精雕細琢,它涵蓋了 Java 開發底層代碼中的方方面面,它既是大型項目開發中解決小問題的利器,也是小型項目中的效率擔當;YhZ28資訊網——每日最新資訊28at.com

Hutool 是項目中“util”包友好的替代,它節省了開發人員對項目中公用類和公用工具方法的封裝時間,使開發專注于業務,同時可以最大限度的避免封裝不完善帶來的 bug。YhZ28資訊網——每日最新資訊28at.com

Hutool 官方文檔:https://doc.hutool.cn/YhZ28資訊網——每日最新資訊28at.com

1.包含模塊

Hutool 包含以下模塊:YhZ28資訊網——每日最新資訊28at.com

模塊YhZ28資訊網——每日最新資訊28at.com

介紹YhZ28資訊網——每日最新資訊28at.com

hutool-aopYhZ28資訊網——每日最新資訊28at.com

JDK 動態代理封裝,提供非 IOC 下的切面支持。YhZ28資訊網——每日最新資訊28at.com

hutool-bloomFilterYhZ28資訊網——每日最新資訊28at.com

布隆過濾,提供一些 Hash 算法的布隆過濾。YhZ28資訊網——每日最新資訊28at.com

hutool-cacheYhZ28資訊網——每日最新資訊28at.com

簡單緩存實現。YhZ28資訊網——每日最新資訊28at.com

hutool-coreYhZ28資訊網——每日最新資訊28at.com

核心,包括 Bean 操作、日期、各種Util等。YhZ28資訊網——每日最新資訊28at.com

hutool-cronYhZ28資訊網——每日最新資訊28at.com

定時任務模塊,提供類 Crontab 表達式的定時任務。YhZ28資訊網——每日最新資訊28at.com

hutool-cryptoYhZ28資訊網——每日最新資訊28at.com

加密解密模塊,提供對稱、非對稱和摘要算法封裝。YhZ28資訊網——每日最新資訊28at.com

hutool-dbYhZ28資訊網——每日最新資訊28at.com

JDBC 封裝后的數據操作,基于 ActiveRecord思想。YhZ28資訊網——每日最新資訊28at.com

hutool-dfaYhZ28資訊網——每日最新資訊28at.com

基于 DFA 模型的多關鍵字查找。YhZ28資訊網——每日最新資訊28at.com

hutool-extraYhZ28資訊網——每日最新資訊28at.com

擴展模塊,對第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)。YhZ28資訊網——每日最新資訊28at.com

hutool-httpYhZ28資訊網——每日最新資訊28at.com

基于 HttpUrlConnection 的 Http 客戶端封裝。YhZ28資訊網——每日最新資訊28at.com

hutool-logYhZ28資訊網——每日最新資訊28at.com

自動識別日志實現的日志門面。YhZ28資訊網——每日最新資訊28at.com

hutool-scriptYhZ28資訊網——每日最新資訊28at.com

腳本執行封裝,例如 Javascript。YhZ28資訊網——每日最新資訊28at.com

hutool-settingYhZ28資訊網——每日最新資訊28at.com

功能更強大的 Setting 配置文件和 Properties 封裝。YhZ28資訊網——每日最新資訊28at.com

hutool-systemYhZ28資訊網——每日最新資訊28at.com

系統參數調用封裝(JVM 信息等)。YhZ28資訊網——每日最新資訊28at.com

hutool-jsonYhZ28資訊網——每日最新資訊28at.com

JSON 實現。YhZ28資訊網——每日最新資訊28at.com

hutool-captchaYhZ28資訊網——每日最新資訊28at.com

圖片驗證碼實現。YhZ28資訊網——每日最新資訊28at.com

hutool-poiYhZ28資訊網——每日最新資訊28at.com

針對 POI 中 Excel 和 Word 的封裝。YhZ28資訊網——每日最新資訊28at.com

hutool-socketYhZ28資訊網——每日最新資訊28at.com

基于 Java 的 NIO 和 AIO 的 Socket 封裝。YhZ28資訊網——每日最新資訊28at.com

hutool-jwtYhZ28資訊網——每日最新資訊28at.com

JSON Web Token(JWT)封裝實現。YhZ28資訊網——每日最新資訊28at.com

2.引入框架

首先,在項目的 pom.xml 的 dependencies 中加入以下內容:YhZ28資訊網——每日最新資訊28at.com

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

3.常見使用場景

3.1 HTTP 請求類

在 Java 中,Apache 的 HttpClient 用的比較多,但是由于此包較為龐大,API 又比較難用,因此并不適用很多場景,而 Hutool 的 Hutool-http 針對 JDK 的 HttpUrlConnection 做一層封裝,簡化了 HTTPS 請求、文件上傳、Cookie 記憶等操作,使 Http 請求變得無比簡單。YhZ28資訊網——每日最新資訊28at.com

具體使用,例如發送一個 GET 請求:YhZ28資訊網——每日最新資訊28at.com

// GET請求String content = HttpUtil.get(url);

發送一個 POST 請求:YhZ28資訊網——每日最新資訊28at.com

// POST 請求HashMap<String, Object> param = new HashMap<>();paramMap.put("city", "西安");String result1 = HttpUtil.post("www.javacn.site", param);

3.2 生成 N 位隨機驗證碼

例如,生成手機驗證碼(4 位或 6 位),使用 Hutool 的這個功能就再也合適不過了,具體實現代碼如下:YhZ28資訊網——每日最新資訊28at.com

// 生成 4 位隨機驗證碼String verificationCode = RandomUtil.randomStringUpper(4);

3.3 拼音工具

Hutool 封裝了拼音的門面,用于兼容以下拼音庫:YhZ28資訊網——每日最新資訊28at.com

  1. TinyPinyin
  2. JPinyin
  3. Pinyin4j

和其它門面模塊類似,采用 SPI 方式識別所用的庫。例如你想用 Pinyin4j,只需引入 jar,Hutool 即可自動識別。YhZ28資訊網——每日最新資訊28at.com

以下為 Hutool 支持的拼音庫的 pom 坐標,你可以選擇任意一個引入項目中,如果引入多個,Hutool 會按照以上順序選擇第一個使用。YhZ28資訊網——每日最新資訊28at.com

TinyPinyin 依賴:YhZ28資訊網——每日最新資訊28at.com

<dependency>  <groupId>io.github.biezhi</groupId>  <artifactId>TinyPinyin</artifactId>  <version>2.0.3.RELEASE</version></dependency>

JPinyin 依賴:YhZ28資訊網——每日最新資訊28at.com

<dependency>  <groupId>com.belerweb</groupId>  <artifactId>pinyin4j</artifactId>  <version>2.5.1</version></dependency>

Pinyin4j 依賴:YhZ28資訊網——每日最新資訊28at.com

<dependency>  <groupId>com.github.stuxuhai</groupId>  <artifactId>jpinyin</artifactId>  <version>1.1.8</version></dependency>

① 獲取全部拼音

// 輸出結果:ni haoString pinyin = PinyinUtil.getPinyin("你好", " ");

這里定義的分隔符為空格,你也可以按照需求自定義分隔符,亦或者使用 "" 代表無分隔符。YhZ28資訊網——每日最新資訊28at.com

② 獲取拼音首字母

// 輸出結果:h, s, d, y, gString result = PinyinUtil.getFirstLetter("H是第一個", ", ");

③ 自定義拼音庫(拼音引擎)

Pinyin4jEngine engine = new Pinyin4jEngine();// 輸出結果:ni hao hString pinyin = engine.getPinyin("你好h", " ");

3.4 計時器

Hutool 通過封裝 TimeInterval 實現計時器功能,即可以計算方法或過程執行的時間。YhZ28資訊網——每日最新資訊28at.com

具體使用如下:YhZ28資訊網——每日最新資訊28at.com

TimeInterval timer = DateUtil.timer();// todo:執行具體業務timer.interval();  // 花費毫秒數timer.intervalRestart();// 返回花費時間,并重置開始時間timer.intervalMinute(); // 花費分鐘數

也可以實現分組計時:YhZ28資訊網——每日最新資訊28at.com

final TimeInterval timer = new TimeInterval();// 分組 1timer.start("1");ThreadUtil.sleep(1000);// 分組 2timer.start("2");ThreadUtil.sleep(2000);// 打印時間Console.log("Timer 1 took {} ms", timer.intervalMs("1"));Console.log("Timer 2 took {} ms", timer.intervalMs("2"));

3.5 數字工具

NumberUtil 數字工具針對數學運算做工具性封裝。YhZ28資訊網——每日最新資訊28at.com

我最喜歡使用它的保留小時和數字格式化,下面一起來看吧。YhZ28資訊網——每日最新資訊28at.com

① 保留小數

保留小數的方法主要有兩種:YhZ28資訊網——每日最新資訊28at.com

  • NumberUtil.round 方法主要封裝 BigDecimal 中的方法來保留小數,返回 BigDecimal,這個方法更加靈活,可以選擇四舍五入或者全部舍棄等模式。
  • NumberUtil.roundStr 方法主要封裝 String.format 方法,舍棄方式采用四舍五入。

具體實現如下。YhZ28資訊網——每日最新資訊28at.com

NumberUtil.round 方法使用:YhZ28資訊網——每日最新資訊28at.com

double te1=123456.123456;double te2=123456.128456;Console.log(round(te1,4)); // 結果:123456.1235Console.log(round(te2,4)); // 結果:123456.1285

NumberUtil.roundStr 方法使用:YhZ28資訊網——每日最新資訊28at.com

double te1=123456.123456;double te2=123456.128456;Console.log(roundStr(te1,2));//結果:123456.12Console.log(roundStr(te2,2));//結果:123456.13

② 時間格式化

針對 DecimalFormat.format 進行簡單封裝。按照固定格式對 double 或 long 類型的數字做格式化操作,具體實現如下:YhZ28資訊網——每日最新資訊28at.com

long c = 299792458; // 光速String format = NumberUtil.decimalFormat(",###", c); // 299,792,458

格式中主要以 # 和 0 兩種占位符號來指定數字長度。0 表示如果位數不足則以 0 填充,# 表示只要有可能就把數字拉上這個位置。YhZ28資訊網——每日最新資訊28at.com

  • 0 -> 取一位整數。
  • 0.00 -> 取一位整數和兩位小數。
  • 00.000 -> 取兩位整數和三位小數。
  • # -> 取所有整數部分。
  • #.##% -> 以百分比方式計數,并取兩位小數。
  • #.#####E0 -> 顯示為科學計數法,并取五位小數。
  • ,### -> 每三位以逗號進行分隔,例如:299,792,458。
  • 光速大小為每秒,###米 -> 將格式嵌入文本。

③ 校驗數字

  • NumberUtil.isNumber:是否為數字。
  • NumberUtil.isInteger:是否為整數。
  • NumberUtil.isDouble:是否為浮點數。
  • NumberUtil.isPrimes:是否為質數。

④ 隨機數

  • NumberUtil.generateRandomNumber 生成不重復隨機數 根據給定的最小數字和最大數字,以及隨機數的個數,產生指定的不重復的數組。
  • NumberUtil.generateBySet 生成不重復隨機數 根據給定的最小數字和最大數字,以及隨機數的個數,產生指定的不重復的數組。

3.6 數據脫敏

在數據處理或清洗中,可能涉及到很多隱私信息的脫敏工作,因此Hutool針對常用的信息封裝了一些脫敏方法。YhZ28資訊網——每日最新資訊28at.com

現階段支持的脫敏數據類型包括:YhZ28資訊網——每日最新資訊28at.com

  1. 用戶 id
  2. 中文姓名
  3. 身份證號
  4. 座機號
  5. 手機號
  6. 地址
  7. 電子郵件
  8. 密碼
  9. 中國大陸車牌,包含普通車輛、新能源車輛
  10. 銀行卡

整體來說,所謂脫敏就是隱藏掉信息中的一部分關鍵信息,用*代替,自定義隱藏可以使用 StrUtil.hide 方法完成。YhZ28資訊網——每日最新資訊28at.com

我們以身份證號碼為例:YhZ28資訊網——每日最新資訊28at.com

// 5***************1XDesensitizedUtil.idCardNum("51343620000320711X", 1, 2);

對于約定俗成的脫敏,我們可以不用指定隱藏位數,比如手機號:YhZ28資訊網——每日最新資訊28at.com

// 180****1999DesensitizedUtil.mobilePhone("18049531999");

當然還有一些簡單粗暴的脫敏,比如密碼,只保留了位數信息:YhZ28資訊網——每日最新資訊28at.com

// **********DesensitizedUtil.password("1234567890");

3.7 郵件發送工具

在 Java 中發送郵件主要依靠 javax.mail 包,但是由于使用比較繁瑣,因此 Hutool 針對其做了封裝  MailUtil,它的使用主要需要兩步:YhZ28資訊網——每日最新資訊28at.com

  1. 添加 Java Mail 依賴(因為 MailUtil 是對它的封裝)。
  2. 編寫郵件發送代碼。

① 添加依賴

<dependency>    <groupId>com.sun.mail</groupId>    <artifactId>javax.mail</artifactId>    <version>1.6.2</version></dependency>

② 編寫發送代碼

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

3.8 布隆過濾器

布隆過濾器(英語:Bloom Filter)是 1970 年由布隆提出的。它實際上是一個很長的二進制向量和一系列隨機映射函數。布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。YhZ28資訊網——每日最新資訊28at.com

布隆過濾器的原理是,當一個元素被加入集合時,通過 K 個散列函數將這個元素映射成一個位數組中的 K 個點,把它們置為 1。檢索時,我們只要看看這些點是不是都是 1 就(大約)知道集合中有沒有它了:如果這些點有任何一個 0,則被檢元素一定不在;如果都是 1,則被檢元素很可能在。這就是布隆過濾器的基本思想。參考:https://www.cnblogs.com/z941030/p/9218356.htmlYhZ28資訊網——每日最新資訊28at.com

布隆過濾器的具體使用如下:YhZ28資訊網——每日最新資訊28at.com

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

小結

不是代碼寫不起,而是 Hutool 更有性價比。正如官方描述的那樣,使用 Hutool 會有種甜甜的感覺,磨刀不誤砍柴工,Hutool 用上之后代碼嘎嘎香,快去試試吧~YhZ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-44415-0.html效率工具:Hutool 嘎嘎香,開炫了!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 手把手教你IDEA進行遠程Debug調試的來龍去脈

下一篇: 12月TIOBE編程語言:PHP穩居第七位,繼續前行!

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。近期
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 聯想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發布會前給出了機型的所有參數。聯想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top