首页 > 编程语言 >推荐一个小而全的 Java 工具类库,再也不用重复造轮子,简直太优雅(带私活源码)

推荐一个小而全的 Java 工具类库,再也不用重复造轮子,简直太优雅(带私活源码)

时间:2024-05-30 19:59:47浏览次数:15  
标签:类库 Java 项目 小而全 Hutool Date date 私活 工具

上周接到老大的需求说让整理下工具类,新项目要用,本想直接拿以前的改改直接用的,结果发现以前的工具类存在很多问题,光加解密工具类就重复写了很多个。

图片

赶紧跑去找有经验的同事商量对策,最终在 Github 上找到 Hutool 这款神器。

简介

Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。

Hutool 中的工具方法来自每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

Hutool 是项目中 "util" 包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。

Hutool如何改变我们的coding方式

Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。

以计算MD5为例:

【以前】打开搜索引擎 -> 搜“Java MD5加密” -> 打开某篇博客-> 复制粘贴 -> 改改好用

【现在】引入Hutool -> SecureUtil.md5()

Hutool的存在就是为了减少代码搜索成本,避免网络上参差不齐的代码出现导致的bug。

包含组件

Hutool 是一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类

图片

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块

使用方法

Maven

在项目的pom.xml的dependencies中加入以下内容:

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

Gradle

implementation 'cn.hutool:hutool-all:5.7.16'

直接下载jar包

直接去Maven中央仓库下载即可

常用的轮子

类型转换工具类 Convert

Convert 类是一个类型转换工具方法类,里面封装了针对 Java 常见类型的转换,用于简化类型转换。

// 转换为字符串
int num = 0;
// str为"0"
String str = Convert.toStr(num);

// 转换为指定类型数组
String[] b = {"0", "1", "2", "3"};
Integer[] arr = Convert.toIntArray(b);

// 转换为日期对象
String dateStr = "2016-01-01";
Date date = Convert.toDate(dateStr);

// 转换为列表
String[] strArr= {"a", "b", "c", "d"};
List<String> strList = Convert.toList(String.class, strArr);

字符串工具 StrUtil

// 判断是否为空字符串
StrUtil.isEmpty(str);
StrUtil.isNotEmpty(str);

// 去除字符串的前后缀
StrUtil.removeSuffix("a.jpg", ".jpg");
StrUtil.removePrefix("a.jpg", "a.");

日期时间工具 DateUtil

主要提供日期和字符串之间的转换,以及提供对日期的定位。

// 当前时间
Date date = DateUtil.date();

// Calendar 转 Date
Date date = DateUtil.date(Calendar.getInstance());

// 时间戳转Date
Date date = DateUtil.date(System.currentTimeMillis());

// 自动识别格式转换
String dateStr = "2016-01-01";
Date date = DateUtil.parse(dateStr);

// 自定义格式化转换
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");

// 格式化输出日期
String format = DateUtil.format(date, "yyyy-MM-dd");

// 获取某天的开始、结束时间
Date beginOfDay = DateUtil.beginOfDay(date);
Date endOfDay = DateUtil.endOfDay(date);

// 计算偏移后的日期时间
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 1);

信息脱敏工具 DesensitizedUtil

在数据处理或清洗中,可能涉及到很多隐私信息的脱敏工作,因此Hutool针对常用的信息封装了一些脱敏方法。现阶段支持的脱敏数据类型包括:用户 id、中文姓名、身份证号、座机号、手机号、地址、电子邮件、密码、中国大陆车牌,包含普通车辆、新能源车辆、银行卡等。

// 身份证脱敏 4***************1X
DesensitizedUtil.idCardNum("41353620000320711X", 1, 2);

// 手机号脱敏 191****1999
DesensitizedUtil.mobilePhone("19149531999");

// 密码脱敏 **********
DesensitizedUtil.password("1234567890");

// 邮箱脱敏 7********@qq.com
DesensitizedUtil.email("[email protected]");

图片工具 ImgUtil

针对 awt 中图片处理进行封装,这些封装包括:缩放、裁剪、转为黑白、加水印等操作。

// 缩放图片
ImgUtil.scale(
   FileUtil.file("e:/test.jpg"),
   FileUtil.file("e:/test_result.jpg"),
   // 缩放比例
   0.5f 
);

// 裁剪图片
ImgUtil.cut(
   FileUtil.file("e:/test.jpg"),
   FileUtil.file("e:/test_result.jpg"),
   // 裁剪的矩形区域
   newRectangle(200, 200, 100, 100) 
);

// `slice` 按照行列剪裁切片(将图片分为20行和20列)
ImgUtil.slice(FileUtil.file("e:/test2.png"), FileUtil.file("e:/dest/"), 10, 10);

// 转换图片格式
ImgUtil.convert(FileUtil.file("e:/test.png"), FileUtil.file("e:/testConvert.jpg"));

// 转黑白
ImgUtil.gray(FileUtil.file("e:/test.png"), FileUtil.file("e:/result.png"));

Excel工具 ExcelUtil

// 读取 excel 文件
ExcelReader reader = ExcelUtil.getReader("e:/test.xlsx");
List<List<Object>> readAll = reader.read();
List<Map<String,Object>> readAll = reader.readAll();
List<Person> all = reader.readAll(Person.class);

// 写出到客户端
// 通过工具类创建writer,默认创建xls格式
ExcelWriterwriter = ExcelUtil.getWriter();
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
// out为OutputStream,需要写出到的目标流
// response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStreamout=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
// 此处记得关闭输出Servlet流
IoUtil.close(out);

图形验证码 CaptchaUtil

// 定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 150);
// 图形验证码写出,可以写出到文件,也可以写出到流
lineCaptcha.write("e:/line.png");
// 输出code
Console.log(lineCaptcha.getCode());
// 验证图形验证码的有效性,返回boolean值
lineCaptcha.verify("1234");
// 重新生成验证码
lineCaptcha.createCode();
lineCaptcha.write("e:/line.png");
// 新的验证码
Console.log(lineCaptcha.getCode());
// 验证图形验证码的有效性,返回boolean值
lineCaptcha.verify("1234");

Hutool 项目地址:https://github.com/dromara/hutool 

写在最后(私活源码)

​今天还给大家分享一套基于Springboot+Vue仓库管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取)

一、系统运行图(设计报告和接口文档)

1、登陆页面

2、物品信息管理

3、设计报告包含接口文档

二、系统搭建视频教程(部分截图)

源码免费领取方式

扫码关注本号,后台回复 仓库

扫码关注本号,后台回复 仓库 

持续关注本号,分享更多项目源码

分享一些关于学习Java编程方面的经验

在当今的软件开发领域,Java是一种非常流行和广泛使用的编程语言。无论是大型企业级应用程序还是小型个人项目,Java都是一个强大而可靠的选择。本文将为您提供一份关于如何开发Java项目的指南,帮助您顺利进行项目开发。

1. 确定项目需求:在开始开发之前,首先要明确项目的需求和目标。这包括功能需求、性能需求、用户体验等方面。通过与项目相关人员的沟通和讨论,确保对项目的理解一致。

2. 设计项目架构:在开始编码之前,需要设计项目的架构。这包括确定项目的模块划分、数据库设计、接口定义等。良好的架构设计可以提高代码的可维护性和扩展性。

3. 选择合适的开发工具和框架:Java生态系统中有许多优秀的开发工具和框架可供选择。根据项目需求和团队经验,选择合适的工具和框架可以提高开发效率和代码质量。

4. 编写清晰的代码:编写清晰、可读性强的代码是良好的编程实践。使用有意义的变量名、注释和代码结构,可以提高代码的可维护性和可理解性。

5. 进行单元测试:单元测试是保证代码质量的重要手段。编写单元测试用例,并使用合适的测试框架进行测试,可以及早发现和修复潜在的问题。

6. 版本控制和团队协作:使用版本控制工具(如Git)来管理代码的版本和变更记录。同时,与团队成员保持良好的沟通和协作,确保项目进展顺利。

7. 完善文档和注释:良好的文档和注释可以帮助他人理解和使用您的代码。在开发过程中,及时更新文档和注释,以便后续维护和扩展。

8. 进行集成测试和部署:在开发完成后,进行集成测试,确保各个模块之间的协同工作正常。然后,将项目部署到生产环境,并进行性能测试和安全测试。

9. 持续改进和优化:软件开发是一个不断迭代和改进的过程。通过收集用户反馈和监控系统性能,不断优化和改进项目,以提供更好的用户体验和性能。

Java项目开发需要一系列的步骤和技巧,但最重要的是保持代码质量和团队协作。通过遵循上述指南,您可以更好地规划和管理Java项目开发过程,从而提高项目的成功率和质量。祝您在Java项目开发中取得优秀的成果!

标签:类库,Java,项目,小而全,Hutool,Date,date,私活,工具
From: https://blog.csdn.net/m0_68103666/article/details/139178679

相关文章

  • .net6 类库 读取appsettings.json
    类库项目引入 Microsoft.Extensions.Configuration和 Microsoft.Extensions.Configuration.Json程序包以Sqlsugar读取配置文件为例:publicclassSqlsugarBase{publicstaticIConfigurationConfiguration{get;set;}staticSqlsugarBase()......
  • WPF 给类库设置设计时使用的资源字典
    WPF给类库设置设计时使用的资源字典 在开发多语言版本时,我将界面显示的文本保存在语言资源zh.xaml和en.xaml中,但程序启动,加载语言资源时是外部的配置文件决定的,因此语言资源我无法添加在App.xaml文件中,而开发单个XAML界面时,设计器将会因为找不到资源文件的存在,而拿不到资......
  • .NET下免费开源的PDF类库(PDFSharp)
    前言目前.NET体系下常见的PDF类库有Aspose、QuestPDF、Spire、iTextSharp等,有一说一都挺好用的,我个人特别喜欢QuestPDF它基于C#FluentAPI提供全面的布局引擎;但是这些库要么属于商业库价格不菲(能理解收费),但是年费太贵了。要么是有条件限制开源的,如Spire开源版本有各种限制。i......
  • Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    一、写在开头在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized、Lock或者AtomicInteger;我们还学习过CAS算法,在那篇博文中我们同样也提及atomic。那么今天,我们就来好好学一学Atomic原子库,一个基于CAS算......
  • C#的关于窗体的类库方案 - 开源研究系列文章
          这次想到了以前编写的关于应用的那个类库,不过当时的只是定义了显示接口,然后调用窗体显示。现在想到要把这个关于窗体的类库进行集合,统一调用,于是就把原来的代码进行了修改完善,终于得到了这次这个例子。      这个例子主要实现了4种关于窗体的形式。第1种为普......
  • WPF 引用类库中的图片在设计器的时候显示,运行起来不显示
    我这边是建立了一个类库,然后把所有静态资源放在该类库中,然后主项目添加该项目引用,然后图片死活不显示  1.图片属性设置为资源2.主项目添加该项目引用操作都试过了,就是死活不显示,然后问了别人,让我删除类库重新建一个试试,然后试了下,诶,好像确实可以了,突然想起一个小细节,我......
  • C#获取计算机唯一标识组装GUID ,延伸ManagementClass、WIN32_类库名
    usingSystem.Management;usingSystem.Security.Cryptography;usingSystem.Text;namespaceSWin{publicclassComGUID{privatestaticstringcomputerGUID=string.Empty;publicstaticstringValue(){if(str......
  • 漂亮的.NET控制台应用程序类库--Spectre.Console
    思维导航前言项目特性项目源代码新建控制台应用安装项目的NuGet包控制台文字输出table表格输出条形图日历布局规则水平线项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言做过.NET控制台应用程序的同学应该都知道原生的.NET控制台应用程序输出......
  • 顶级 Javaer 都在用的 20 个类库,真香!
    优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库。我花了很多时间来学习API,尤其是在阅读了EffectiveJava3rdEdition之后,JoshuaBloch建议在Java3rdEdition中使用现有的API进行开发,而不是为常见的东西编写新的代码。这对我来说很有意义,因为这些......
  • 晒晒我这两年的私活单,业余时间月入6k
    很多人仅靠主业顶多维持基本生活,想让自己、家人生活得好一点很难。前年底我开始尝试接私活,到目前并不多,加起来也就10多万,只能算一般,我想把一些经验分享出来,下面是我曾经接过的一小部分私活单:再举个例子,比如:帮证券公司抓取一些财经新闻或者是舆情相关的数据,开发完了之......