1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用了這個(gè) Java 小工具,我廢了

        共 3553字,需瀏覽 8分鐘

         ·

        2021-10-09 02:17

        我們?cè)陂_(kāi)發(fā)時(shí),經(jīng)常需要重復(fù)編寫(xiě)很多和業(yè)務(wù)無(wú)關(guān)的代碼,比如獲取指定日期對(duì)象、獲取本機(jī) IP 地址、校驗(yàn)身份證號(hào)、數(shù)據(jù)加密等。

        通常我們會(huì)把這些代碼獨(dú)立出來(lái),放到 util 包下,作為 工具類(lèi) 供其他代碼調(diào)用。

        相信每位 Java 開(kāi)發(fā)者都自己寫(xiě)(粘貼)過(guò)工具類(lèi),寫(xiě)的項(xiàng)目多了,日積月累,可能有的同學(xué)已經(jīng)有了自己的工具類(lèi)庫(kù)。但是,當(dāng)需要用到新的工具類(lèi)時(shí),你會(huì)怎么做呢?

        比如老板讓我做一個(gè) MD5 加密的工具,可是我根本沒(méi)有學(xué)過(guò)加密算法!

        于是我打開(kāi)某度搜索引擎,搜索 “Java MD5加密算法實(shí)現(xiàn)”,打開(kāi)了某篇博客(可能還要登錄),再?gòu)?fù)制粘貼,再去掉一些無(wú)用的注釋?zhuān)俾约有薷模玫焦ぞ哳?lèi),放到自己的 util 目錄下。

        這一套操作下來(lái),十幾分鐘可能就過(guò)去了。而這個(gè)代碼和我們的業(yè)務(wù)是完全無(wú)關(guān)的,就可能會(huì)耽誤一些項(xiàng)目的開(kāi)發(fā)時(shí)間!

        我們都喜歡白 piao,那么有沒(méi)有現(xiàn)成的 util 工具包給我們用呢?來(lái)了來(lái)了,Hutool 工具庫(kù)!

        Hutool 是什么?

        Hutool 是一個(gè)開(kāi)源的 Java 工具包類(lèi)庫(kù),對(duì)文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML 等 JDK 方法進(jìn)行封裝,組成各種 Util 工具類(lèi)。

        Hutool 官網(wǎng):https://hutool.cn/
        GitHub 地址:https://github.com/looly/hutool

        為什么用 Hutool?

        Java 語(yǔ)言雖然自帶了很多的工具類(lèi),但是相對(duì)于 Scala 等高級(jí)語(yǔ)言來(lái)說(shuō),封裝的工具還不夠豐富和完善,遠(yuǎn)遠(yuǎn)不能滿(mǎn)足我們的需求。

        因此,出現(xiàn)了各種各樣的第三方類(lèi)庫(kù),比如知名的 guava、apache-common-utils,雖然這些類(lèi)庫(kù)的實(shí)現(xiàn)很優(yōu)秀,但作為工具類(lèi)庫(kù)來(lái)說(shuō),工具的種類(lèi)還不夠多,通常我們還要搭配其他第三方類(lèi)庫(kù)使用(比如操作 Excel 的庫(kù) POI)。

        而 Hutool 是一個(gè)小而全的 Java 工具類(lèi)庫(kù),有各種各樣的工具,基本可以滿(mǎn)足我們所有的業(yè)務(wù)訴求。

        這也是為啥類(lèi)庫(kù)取名 Hutool,Hutool 諧音“糊涂”,寓意追求 “萬(wàn)事都作糊涂觀,無(wú)所謂失,無(wú)所謂得” 的境界。

        Hutool 通過(guò)靜態(tài)方法封裝,能夠降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓 Java 語(yǔ)言也可以“甜甜的”。

        有的同學(xué)可能會(huì)認(rèn)為工具類(lèi)自己實(shí)現(xiàn)就好了,干嘛非要引入一個(gè)三方類(lèi)庫(kù)呢?確實(shí),如果你有能力,可以實(shí)現(xiàn)和建設(shè)自己的工具庫(kù),但是自己實(shí)現(xiàn)難免會(huì)花很多的時(shí)間,或者實(shí)現(xiàn)的性能不夠高,甚至可能出現(xiàn)一些問(wèn)題(比如資源忘記 close 導(dǎo)致泄露,魚(yú)皮就干過(guò))。

        而 Hutool 中的工具方法來(lái)自于每個(gè)用戶(hù)的精雕細(xì)琢,作為一個(gè)開(kāi)源項(xiàng)目,由很多大佬共同開(kāi)發(fā)和完善,并經(jīng)歷了上百個(gè)企業(yè)的真實(shí)檢驗(yàn)。使得它涵蓋了Java 開(kāi)發(fā)底層代碼中的方方面面,既是大型項(xiàng)目開(kāi)發(fā)中解決小問(wèn)題的利器,也是小型項(xiàng)目中的效率擔(dān)當(dāng)。

        Hutool 是項(xiàng)目中 “util” 包友好的替代,它節(jié)省了開(kāi)發(fā)人員對(duì)項(xiàng)目中公用類(lèi)和公用工具方法的封裝時(shí)間,使開(kāi)發(fā)專(zhuān)注于業(yè)務(wù),同時(shí)可以最大限度的避免封裝不完善帶來(lái)的 bug。

        下面通過(guò)一個(gè)演示,來(lái)看下 Hutool 如何提高我們的開(kāi)發(fā)效率。


        它如何提升我們的開(kāi)發(fā)效率?

        Hutool 的目標(biāo)是使用一個(gè)工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問(wèn)題,徹底改變我們寫(xiě)代碼的方式。

        以發(fā)送郵件為例:

        • 以前:打開(kāi)搜索引擎 => 搜 “Java 如何發(fā)送郵件” => 打開(kāi)幾篇博客 => 選擇一個(gè)看似優(yōu)秀的實(shí)現(xiàn) => 復(fù)制粘貼 => 改改就用

        • 現(xiàn)在:引入 Hutool => 調(diào)用 MailUtil.sendText 方法 演示使用:

        說(shuō)不定可以提前下班了呢!

        Hutool 的存在原因之一就是為了減少代碼搜索成本,避免網(wǎng)絡(luò)上參差不齊的代碼出現(xiàn)導(dǎo)致的 bug。


        如何使用 Hutool?

        Hutool的用法非常簡(jiǎn)單,而且對(duì)業(yè)務(wù)無(wú)任何侵入,可以直接通過(guò) Maven 或者 Gradle 等包管理工具引入,也可以直接把 Hutool 的代碼復(fù)制粘貼到自己的項(xiàng)目中。

        1. Maven 方式,在項(xiàng)目的 pom.xml 的 dependencies 中加入下列代碼:
        <dependency>
        ??<groupId>cn.hutoolgroupId>
        ??<artifactId>hutool-allartifactId>
        ??<version>5.4.4version>
        dependency>


        1. Gradle方式,在build.gradle中加入下列代碼:
        compile?'cn.hutool:hutool-all:5.4.4'


        然后就可以參照文檔去使用啦,文檔地址:https://hutool.cn/docs/



        Hutool 的功能

        Hutool 的功能非常大而全,常用的工具有:

        1.日期工具

        通過(guò) DateUtil 類(lèi),提供高度便捷的日期訪問(wèn)、處理和轉(zhuǎn)換方式。

        2.HTTP 客戶(hù)端

        通過(guò) HttpUtil 對(duì) HTTP 客戶(hù)端的封裝,實(shí)現(xiàn)便捷的 HTTP 請(qǐng)求,并簡(jiǎn)化文件上傳操作。

        3.轉(zhuǎn)換工具

        通過(guò) Convert 類(lèi)中的相應(yīng)靜態(tài)方法,提供一整套的類(lèi)型轉(zhuǎn)換解決方案,并通過(guò) ConverterRegistry 工廠類(lèi)自定義轉(zhuǎn)換。

        4.配置文件工具(Setting)

        通過(guò) Setting 對(duì)象,提供兼容 Properties 文件的更加強(qiáng)大的配置文件工具,用于解決中文、分組等 JDK 配置文件存在的諸多問(wèn)題。當(dāng)然還有更多組件,如下:

        模塊
        介紹
        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ù)模塊,提供類(lèi)Crontab表達(dá)式的定時(shí)任務(wù)
        hutool-crypto
        加密解密模塊,提供對(duì)稱(chēng)、非對(duì)稱(chēng)和摘要算法封裝
        hutool-db
        JDBC封裝后的數(shù)據(jù)操作,基于ActiveRecord思想
        hutool-dfa
        基于DFA模型的多關(guān)鍵字查找
        hutool-extra
        擴(kuò)展模塊,對(duì)第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)
        hutool-http
        基于HttpUrlConnection的Http客戶(hù)端封裝
        hutool-log
        自動(dòng)識(shí)別日志實(shí)現(xiàn)的日志門(mén)面
        hutool-script
        腳本執(zhí)行封裝,例如Javascript
        hutool-setting
        功能更強(qiáng)大的Setting配置文件和Properties封裝
        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封裝

        可以根據(jù)需求對(duì)每個(gè)模塊單獨(dú)引入,也可以通過(guò)引入 hutool-all 方式引入所有模塊。


        寫(xiě)在最后

        最后,給大家一點(diǎn)建議。
        不要僅僅把 Hutool 當(dāng)做一個(gè)工具去使用,用久了會(huì)把人用傻的?!

        有時(shí)間的話,應(yīng)該閱讀 Hutool 的源碼,學(xué)習(xí)其各種工具類(lèi)的優(yōu)秀實(shí)現(xiàn),培養(yǎng)自己的代碼能力。
        Hutool 的源碼其實(shí)并不難,就是通過(guò)大量的靜態(tài)方法來(lái)方便調(diào)用,比如下面的手機(jī)號(hào)工具類(lèi):
        ?/**
        ??*?手機(jī)號(hào)工具類(lèi)
        ??*/

        ?public?class?PhoneUtil?{
        ???/**
        ????*?座機(jī)號(hào)碼
        ????*/

        ???private?static?final?Pattern?TEL?=
        ?????Pattern.compile("0\\d{2,3}-[1-9]\\d{6,7}");
        ???/**
        ????*?驗(yàn)證是否為手機(jī)號(hào)碼(中國(guó))
        ????*
        ????*?@param?value?值
        ????*?@return?是否為手機(jī)號(hào)碼(中國(guó))
        ????*/

        ???public?static?boolean?isMobile(CharSequence?value)?{
        ?????return?Validator.isMatchRegex(PatternPool.MOBILE,?value);
        ???}
        ???...
        ?}
        大家可以自行閱讀感興趣的功能的源碼,有朝一日自己也能成為開(kāi)源大佬!



        以上就是本期分享,求個(gè) 點(diǎn)贊 + 在看 ,這將是我持續(xù)創(chuàng)作的最大動(dòng)力,謝謝 ??

        往期推薦

        騰訊同事的內(nèi)部分享,大贊!

        怒肝 Linux 學(xué)習(xí)路線,這回不難!

        我被最恨的公司采訪了!

        很多網(wǎng)站,根本不用自己做!

        我兩年的堅(jiān)持,值了!

        瀏覽 61
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            爱爱电影w无码 | youjizzxxxx国语对白 | 俺也去视频 | 逼待逼网站 | 国产美女在线观看 | 嗯啊放荡女np高h粗绿帽 | 狂野性欧美猛交XX乂弯腰 | 污污的视频免费观看 | jizzzz成熟丰满韩国女视频 | 深夜福利视频在线观看 |