您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

厉害了,这个开源类库可以帮你简化每一行代码。 <电影网站源码>

  • 时间:2022-09-01 01:29 编辑: 来源: 阅读:297
  • 扫一扫,手机访问
摘要:厉害了,这个开源类库可以帮你简化每一行代码。 <电影网站源码>
《黑铁时代》的读者中有个小伙伴感慨道,“Hutool这个开源类库这么厉害,应该基本都有工具类了。里面有所有的工具。 说实话,我在日常工作中经常使用Hutool。它真的可以帮助我们简化每一行代码,让Java像函数式语言一样优雅,让Java语言变得“甜”。 不过群里还是有一些小伙伴表示还不知道这个开源类库。我还是第一次听说。 所以我决定写篇文章来普及一下。毕竟好的轮子值得推荐。 Hutool的作者在官网表示,Hutool是Hu+tool的自造词(不用说,我们也能猜到),“Hu”是用来向他的“前任”公司致敬,“tool”就是工具的意思,谐音有意思。“迷茫”隐含着对“一切都迷茫,没有损失就没有收获”的追求(一个开源类库,瑞星 看一个开发团队成员的细节,一个Java后台工具的作者,其实很爱前台,数字,美女。嗯嗯,真的是“难分难解”(手动狗头)。 连提交给这个开源类库的PR(pull request)规范都很“病态”(哈哈哈):废话就这么多。来吧,我们开始吧!01.要引入HutoolMaven项目,只需在pom.xml文件中添加以下依赖项 & lt依赖性& gt& ltgroupId & gtcn.hutool & lt/groupId & gt;& ltartifactId & gtHu tool-all & lt;/artifact id & gt;& lt版本& gt5 . 4 . 3 & lt;/version & gt;& lt/dependency & gt;Hutool的设计思想是尽量减少重复定义,尽量减少项目中util包的数量。 好的轮子可以在很大程度上避免“复制粘贴”,从而节省我们开发者在项目中公共类库和公共工具方法的打包时间。 同时,成熟的开源库也可以最大程度的避免因包装不完善而导致的bug。 正如笔者在官网所说:以前我们打开搜索引擎->:搜索“Java MD5加密”->:开博客-& gt;复制粘贴->:改,更好用。有了Hutool,Hu tool->:Direct secure util . MD5()Hu tool不仅封装了底层文件、流、加密解密、转码、正则化、线程、XML等。JDK的,而且还提供了以下组件:其中很多非常全面。鉴于此,我只选取我喜欢的一小部分进行详解(偷偷告诉你,我就是想偷懒) 02.类型转换类型转换在Java开发中非常常见,尤其是从HttpRequest中获取参数时。前台传输整形,后台只能先获取字符串,然后调用parseXXX()方法进行转换,空值判断复杂。 Hutool的Convert类可以通过将任何可能的类型转换为指定的类型来简化这个操作,第二个参数defaultValue可以用于在转换失败时返回一个默认值。 String param = " 10int paramInt = convert . toint(param);int paramindefault = convert . toint(param,0);将字符串转换为日期:String dateStr = "2020年9月29日";date date = convert . todate(dateStr);将字符串转换为Unicode:String unicodeStr = "沉默王二";string unicode = convert . str unicode(unicode str);03.DateTime JDK自己的日期和日历不好用,所以Hutool打包的DateUtil用起来舒服多了!获取当前日期:Date Date = Date util . Date();dateUtil.date()实际上返回DateTime,它继承自Date对象,并覆盖toString()方法以返回yyyy-MM-dd HH:mm:ss格式的字符串。 有没有朋友想看看我写这篇文章的时候输出给大家看的:system . out . println(date);//2020-09-29 04:28:02 String to date:String dateStr = " 2020-09-29 ";date date = date util . parse(dateStr);DateUtil.parse()会自动识别少量常用格式,比如:yyyy-mm-ddhh:mm:ssy yyy-mm-ddhh:mmyyyy-mm-ddhh:mm:ss。SSS还可以识别中文:年、月、日、时、分格式化时差:字符串datestr。date date 1 = date util . parse(datestr 1);string datestr 2 = " 2020-10-01 23:34:27 ";date date 2 = date util . parse(datestr 2);long between day = date util . between(date 1,date2,DateUnit。MS);//输出:2天1小时1分4秒字符串格式between = date util . format between(between day,between formatter . level . second);星座和生肖://射手座串生肖= dateutil . get Zodiac(month . December . getvalue(),10);//蛇串生肖= Datutil。get中国十二生肖(1989);04.IO流相关的IO操作有读写,应用场景主要有网络操作和文件操作。原生Java类库区分字符流和字节流,字节流种类繁多,比如InputStream和OutputStream,使用起来让人感觉麻木。 Hutool封装了流操作工具类IoUtil、文件读写操作工具类FileUtil、文件类型判断工具类FileTypeUtil等。 BufferedInputStream in = file util . getinputstream(" Hu tool/origin . txt ");BufferedOutputStream out = file util . get output stream(" Hu tool/to . txt ");long copySize = IoUtil.copy(in,out,IoUtil。DEFAULT _ buff _ SIZE);在IO操作中,文件的操作相对复杂,但使用频率也很高。几乎所有项目中都有一个工具类叫做FileUtil或FileUtils。 Hutool的FileUtil类包括以下类型的操作:文件操作:文件判断包括创建、删除、复制、移动、重命名文件目录:判断文件或目录是否可以非空、目录、文件等。绝对路径:将类路径中的文件转换为绝对路径文件名:主文件名,扩展名的Get read操作:包括getReader和readXXX操作;写操作:包括getWriter和writeXXX操作;顺便说一下,类路径 在实际编码中,我们通常需要从一些文件中读取少量数据,比如配置文件、文本文件、图片等等。这些文件通常放在哪里?将它放在项目结构图的resources目录中,当项目被编译时,它将出现在classes目录中。 对应磁盘上的目录如下图所示:当我们要读取文件时,我不建议使用绝对路径。由于操作系统不同,文件的路径标识符也不同。 最好使用相对路径。 假设在src/resources中放了一个文件origin.txt,文件的路径参数如下:file util . getinputstream(" origin . txt ")。假设文件放在src/resources/hutool目录下,那么path参数改为:fileutil . getinputstream(" Hu tool/origin . txt ")05。Hutool打包的String工具类StrUtil类似于Apache Commons Lang包中的StringUtils。作者认为优点是str比string短,虽然我不这么认为。 不过我挺喜欢其中一个方法:String template = "{},一个沉默但有趣的程序员。如果你喜欢他的文章,请在微信上搜索{ };String = strutil.format(模板,“沉默王二”,“沉默王二”);//沉默的王二,一个沉默却有趣的程序员。如果你喜欢他的文章,请微信搜索沉默王二06。反射工具的反射机制可以让Java更加灵活,所以在某些情况下,反射可以达到事半功倍的效果。 Hutool封装的反射工具ReflectUtil包括:获取构造方法获取字段获取字段值获取方法执行方法(对象方法和静态方法)packagecom。itwanger。胡图尔。反思;导入cn . Hu tool . core . util . reflect util;导入Java . lang . reflect . constructor;导入Java . lang . reflect . field;导入Java . lang . reflect . method;/* * * * @作者微信搜索“寂静之王II”,回复关键字PDF */公共课reflect demo { private int idpublicfreflectdemo(){ system . out . println(" constructor ");} public void print(){ system . out . println("我是沉默王二");} public static void main(string[]args)抛出IllegalAccess异常{//Build object reflect demo reflect demo = reflect util . new instance(reflect demo . class);//Get构造函数[]constructors = reflect util . Get constructors(reflect demo . class);for (Constructor构造函数:constructors){ system . out . println(Constructor . getname());}//获取字段field field = reflect util . getfield(reflect demo . class," id ");field.setInt(reflectDemo,10);//获取字段值system . out . println(reflect util . getfield value(reflect demo,field));//Get all methods method[]methods = reflect util . Get methods(reflect demo . class);for(Method m:methods){ system . out . println(m . getname());}//获取指定的方法method method = reflect util . Get method(reflect demo . class," print ");system . out . println(method . getname());//执行方法reflectutil.invoke (reflectdemo," print ");}}07.压缩工具在Java中,打包压缩文件和文件夹是一件非常繁琐的事情。Hutool打包的ZipUtil针对java.util.zip包进行了优化,可以通过一种方法进行压缩和解压缩,自动解决文件和目录的问题,不再需要客户判断,大大简化了压缩和解压缩的复杂度。 ZipUtil.zip("hutool "," Hu tool . zip ");file unzip = ziputil . unzip(" hutool . zip "," hutoolzip ");08.Hutool打包的IdcardUtil可以用来验证身份证,支持mainland China 15位和18位身份证,港澳台10位身份证。 string ID _ 18 = " 321083197812162119 ";String ID _ 15 = " 150102880730303boolean valid = idcardutil . is valid card(ID _ 18);boolean valid 15 = idcardutil . is valid card(ID _ 15);09.扩展HashMapJava中的HashMap是强类型的,而Hutool封装的Dict对key的类型没有那么严格。 dictdict = dict.create()。set("年龄",18)。集(《名》、《默王二》)。set("生日",datetime . now());int age = dict . getint(" age ");string name = dict . getstr(" name ");10.在控制台上打印本地代码的过程中,经常需要使用System.out来打印结果,但往往有少部分复杂对象不支持直接打印,比如数组,需要调用Arrays.toString Hutool封装的Console类借鉴了JavaScript中的console.log(),使得打印成为一种非常方便的方式。 /* * * * @作者微信搜索“寂静之王II”,回复关键字PDF */public class console demo { public static void main(string[]args){//打印string Console.log("寂静之王II,一个有趣的程序员");//打印字符串模板Console.log("洛阳是{王朝}的古都",13);int [] ints = {1,2,3,4 };//打印数组console . log(ints);}}11.字段验证器在做Web开发时,后台通常需要对表单提交的数据进行验证。 Hutool封装的验证器可以进行很多有效的条件验证:邮箱是否是IP V4,V6是否是电话号码等。Validator.isEmail("沉默王二");validator . is mobile(" it wanger . com ");12.双向查找MapGuava提供了一种特殊的映射结构,称为BiMap,实现了双向查找功能。可以根据键找到值,也可以根据值找到键。Hutool也提供了这种映射结构。 BiMap & ltString,String & gtbiMap =新的BiMap<。& gt(新散列表& lt& gt());BiMap.put("王二","寂静之王二");BiMap.put(《王三》、《沉默王三》);//通过keybiMap.get("wanger ")获取值;biMap.get("王三");// get key by valuebiMap.getKey("沉默王二");BiMap.getKey(《寂静之王三》);在实际的开发工作中,其实我更喜欢用Guava的BiMap,而不是Hutool的。 这里提到我在Hutool的在线文档中发现了一个错误,提出了一个问题(从中可以看出我一丝不苟的心和清澈明亮的大眼睛)。 13.Hutool打包的ImgUtil,一个图片工具,可以缩放,裁剪,转换成黑白,水印等等。 缩放图像:imgutil . scale(fileutil . file(" Hu tool/wangsan . jpg "),fileutil . file(" Hu tool/王三_ small.jpg "),0.5f);图片:imgutil . cut(fileutil . file(" Hu tool/wangsan . jpg ")、fileutil . file(" Hu tool/王三_ cut.jpg ")、New Rectangle (200,200,100,100));添加水印:imgutil . press text(//fileutil . file(" Hu tool/wangsan . jpg ")、fileutil . file(" Hu tool/王三_ logo.jpg ")、《寂静之王II》、Color。白色,新字体(“粗体”,字体。加粗,100),0,0,0.8f);让大家欣赏一下二哥的帅脸。 14.配置文件众所周知,Java中广泛使用的配置文件属性有一个特别大的诟病:不支持中文。 每次使用的时候,如果要存储汉字,就必须使用IDE相关的插件将其转换成Unicode符号,而这个反人类的符号在命令行是看不到的。 于是,胡图尔的设定就应运而生了。 除了兼容属性文件格式,Setting还提供了少量独特的功能,包括:各种编码方式支持变量支持分组支持整个配置文件example.setting,内容如下:name=无声王二age=18,然后读取升级配置文件:/* * * * @作者微信搜索“无声王二”,回复关键字PDF */public class Setting demo { private final static string Setting = " Hu tool/example . Setting ";public static void main(string[]args){//Initialize setting setting = new setting(setting);//Read setting.getStr("name "," Silence Two ");//配置文件改变时无限期加载setting . autoload(true);//通过代码添加键值对setting.set("生日"," 2020年," 2020年9月29日");setting.store(设置);}}15.Hutool打包的LogFactory日志工厂兼容所有主流的日志框架,也非常好用。 /* * * * @作者微信搜索“沉默王二”,回复关键字PDF */public class log demo { private static final log log = log factory . get();public static void main(string[]args){ log . debug("很难混淆");}}}首先由LogFactory.get()自动识别导入的日志帧,然后创建日志帧对应的facade log对象,再调用debug()和info()等方法输出日志。 如果不想创建日志对象,可以使用StaticLog,顾名思义,这是一个提供静态方法的日志类。 StaticLog.info ("Cool {} ",“默二的文章”);16.CacheUtil,一个缓存工具,是一个创建由Hutool打包的缓存的快捷工具。它可以创建不同的缓存对象:FIFOCache:先进先出,将元素添加到缓存中,直到缓存满为止。当高速缓存满时,过期的高速缓存对象被清除,并且先进的高速缓存在它仍然满时被删除。 缓存& ltString,String & gtfifoCache = cacheutil . newfifocache(3);FifoCache.put("key1 ","沉默王一");FifoCache.put("key2 ","寂静之王2 ");FifoCache.put("key3 ","沉默王三");FifoCache.put("key4 ","无声王四");//大小为3,所以key3放进去之后key1就被清理了。字符串值1 = FIFO cache . get(" key 1 ");LFUCache,最小使用量,根据使用次数决定一个对象是否可以持续缓存,在缓存满的时候清除过期的对象,在清除后仍然满的时候清理访问最少的对象,从其他对象的访问次数中减去这个最小访问次数,这样新的对象进入后就可以公平的计数。 缓存& ltString,String & gtlfu cache = cacheutil . new fucache(3);LfuCache.put("key1 1 ","寂静之王一");//使用次数+1 lfu cache . get(" key 1 ");LfuCache.put("key2 2 ","寂静之王2 ");LFACHE。PUT ("KEY3 ","寂静之王III ");LfuCache.put("key4 4 ","沉默王四");//因为缓存容量只有3,所以在添加第4个元素的时候,会把用的最少的去掉(去掉2,3)。字符串value 2 = lfu cache . get(" key 2 ");字符串value 3 = lfu cache . get(" key 3 ");最近最长时间没有使用的LRUCache,根据使用时间决定一个对象是否可以持续缓存。当对象被访问时,它被放入缓存。当缓存满时,最长时间未使用的对象将被删除。 缓存& ltString,String & gtlruCache = cacheutil . new rucache(3);LruCache.put("key1 ","沉默王一");LruCache.put("key2 ","寂静之王2 ");LruCache.put("key3 ","沉默王三");//差不多该用lrucache . get(" key 1 ");LruCache.put("key4 ","沉默王四");//因为缓存容量只有3,所以在添加第4个元素的时候,会把使用时间最长的那个去掉(2)string value 2 = LRU cache . get(" key 2 ");system . out . println(value 2);17.加密解密加密分为三种:对称加密,如AES、DES等非对称加密,RSA、DSA等摘要加密。例子:MD5、SHA-1、SHA-256、HMAC等Hutool都封装了这三种情况:对称加密SymmetricCrypto AsymmetricCrypto抽象加密消化器快速加密工具类SecureUtil有以下方法:1)对称加密SecureUtil.aesSecureUtil.des2)非对称加密se CureUtil.rsaSecureUtil.dsa3)抽象加密SecureUtil . m D5 SecureUtil . sha 1 SecureUtil . hmacmd 5 SecureUtil . hmacsha 1只写一个简单的例子供参考:/* * @作者微信public static void main(string[]args){ string encrypt = AES . encrypt hex(" Silent King II ");system . out . println(encry);string oo = AES . decryptstr(encry);system . out . println(oo);}}18.Hutool还有很多其他类库,尤其是少量第三方类库的进一步包,比如MailUtil,QrCodeUtil,Emoji,EmojiUtil。朋友们可以参考Hutool的官方文档:https://www.hutool.cn/项目源代码地址:looly/hutoolPS:如果需要Java书单,我在GitHub上找到了一个宝藏项目,里面什么都有。 需要的小伙伴可以按需自取,地址如下:itwanger/JavaBooks最后,每天求一个赞,满满的干货,我先当敬酒,随便你。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部