对于一个程序员来讲,每天所要面对的事情就是写代码和划水。
但是呢?每天不是编码就是在去编码的路上,根本没有时间去划水。要知道,程序员可是会偷懒的生物呀!能去拷贝的代码绝对不会自己动脑子写的。
既然是这样,那么为什么你的划水时间还那么少呢?或许真不是自己太菜了,这真的是自己没有学会使用高级的工具。下面我们就来推荐几款程序员开发必备的工具吧
在日常的开发中经常会遇到处理JSON数据的情况,并且我们现在很多的RESTFul接口都是通过JSON数据格式来传递数据消息的。接下来我们要说的工具就是与JSON相关的工具。对于程序员来说使用最多的应该是Fastjson,它是由阿里开源的一款JSON解析工具,其用法也相对简单。
在使用的时候我们需要在Maven文件中导入对应的POM坐标。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version></dependency>
这样我们就可以在代码中使用JSONObject以及JSONArray来对请求接受的JSON数据格式的字符串进行处理了。无外乎就是如下的几种情况
引入了相应的依赖之后,接下来就是要看我们如何去请求数据,如何去处理出数据了。在RESTFul接口情况下,我们不可避免的要去调用一些第三方的HTTP请求,那么我们如何去调用这些第三方的接口呢?就需要我们下面介绍的中,HTTP请求工具类。
如何去高效的调用第三方的接口,方法有很多,但是这里我们主要推荐的就是HttpClient的使用,它里面提供了很多的基于网络请求的封装并且也经受过各种网络场景的考验,并且有很多的开发者。
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。导入一个HttpClient的依赖,如下所示,这里我们只是做了一个实例版本,读者可以根据自己的需求去修改对应的版本号。
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.4.1</version></dependency>
字符串的处理也是我们在开发中经常会处理的数据类型。我们也知道String类型所提供给我们的只是一些对于字符串的基础操作,而对于一些高级的操作则需要我们自己通过基础操作去进行组合实现。
而下面我们介绍的commons-lang3组件其实就是对我们的字符串操作做了一系列的封装操作,提供了对于字符串的截取、字符串的拼接、字符串的比较等等各种的扩展方法,并且它所提供的方法要比String自身的方法使用的更加方便。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version></dependency>
集合类处理,也是我们日常开发中经常会遇到的问题,当然也是在面试中经常会被问到的问题。而在Java中对于集合类的处理也提供了各种各样的支持,例如List、Map、Set等等。它们都是对集合的各种实现,并且其中包含了各种的处理方法。可以完成集合数据的排序、集合数据翻转、集合数据判空、将集合数据转换为线程安全的结构、二分法查找等操作。
我们可以在POM文件中引入如下依赖来获得
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.3</version></dependency>
文件处理也是在开发中非常头疼的事情,例如读取一个文件,写入日志文件,处理某个日志文件等等。并且令很多开发者头疼的并不是这些文件的处理,而是对于Java中IO流操作的理解。这里我们推荐一款IO处理工具。
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.13.0</version></dependency>
如图所示,FileUtils中提供了文件IO处理相关的操作,有兴趣的读者可以详细的探究一下它们其中这些方法如何去使用。
相信很多人都用过BeanUtils工具类,它主要是用来完成对对象属性的拷贝工作。但是需要注意的是如果在项目开发中对象结构变化较大的情况下则不推荐使用这种方式。
当然在Java中还提供了一个MapStruct 类来实现对象的转换,BeanUtils只能完成属性名称相同的类型转换,而MapStruct所能完成的工作可以就非常多了。
首先在项目引入如下的依赖,这里需要注意的是JDK1.8的情况处理。
<dependency> <groupId>org.mapstruct</groupId> <!-- jdk8以下就使用mapstruct --> <artifactId>mapstruct-jdk8</artifactId> <version>1.2.0.Final</version></dependency><dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.2.0.Final</version></dependency>
怎么使用呢?如下所示,我们可以在所要执行类型转换的类上面添加上@Mapper注解,当然这个注解并不是MyBatis中的注解。而是org.mapstruct.Mapper注解。然后可以按照如下的操作来开发。会看到在其中我们可以通过@Mapping指定对象属性的映射规则
@Mapperpublic class Test { Test INSTANCE = Mappers.getMapper(Test.class); // 配置字段映射规则 @Mapping(source = "name",target = "username") WeiXin toCovert(Student student);}
在Guava包中提供了很多的Google Java项目所依赖的核心类库,例如对于集合的操作,对于缓存的操作,对于限流的操作对于并发的操作。引入方式如下
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.2-jre</version></dependency>
Guava的优势