この記事では、Java開発パッケージと共通APIジャーレコードで使用される自分をコンパイル。
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
共通lang3
簡単な紹介
最も一般的に使用される今のjarパッケージには、多くの一般的なツールキットをカプセル化
オンラインAPI
に依存しています:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
次のように主な一般的なカテゴリは次のとおりです。
- ツールの配列ArrayUtils
- 日付ツールDateUtilsのDateFormatUtils
- 文字列のツールのStringUtils
- デジタルツールのNumberUtils
- ブールツールBooleanUtils
- 反射相関ツールはFieldUtils、MethodUtils、MemberUtils、TypeUtils、ConstructorUtils
- ツールオブジェクトObjectUtils
- シリアル化ツールSerializationUtils
APIの紹介
私はちょうどそれを頻繁に使用されるいくつかのツールや方法を紹介し、ArrayUtils、のStringUtils、NumberUtils、DateUtils、他の公式APIドキュメントをチェックアウトします
1.ArrayUtils
メソッド名 | 説明 |
---|---|
加えます | |
削除 | |
クローン | 配列のコピー |
全て追加する | |
すべて削除する | 第2のパラメータはインデックス(複数の添字を指定することができる)が削除されるように渡されます |
物申す | 包装に値(INT []、ダブル[])(INT []、ダブル[]) |
の指標 | 添字を満たすために、対応する最初の値を見つけるために、配列を見つけるために |
lastIndexOf | 添字を満たすために対応する最後の値を見つけるために、配列を見つけるために |
含まれています | アレイは、特定の値を含みます |
isEmpty | 配列が空であるかどうかを確認 |
isNotEmpty | 配列が空でないかどうかを確認 |
逆 | 配列の逆 |
サブアレー | 指定された範囲の傍受のアレイ、半開区間の間隔が終了を含みません |
内のtoArray | 型の対応する配列にオブジェクト、これらのいくつかの複数のオブジェクトを受信します |
toMap | 地図への2次元配列 |
2.NumberUtils
メソッド名 | 説明 |
---|---|
私に | 3つの数値の比較、比較は最小値を返す、またはインデックスの指定された数は最小値を返します |
最大 | 3つの数字の比較は、最大数または比較の指定された数、戻りの最大値を返します |
createInt | createDouble、createFloat、渡された文字列から型に対応する値を作成します... |
オーバーライド: | INTデフォルト値を指定するための指定された型に文字列、文字列がデフォルト値にヌル復帰である場合、選択されてもよい、等加えて、そこtoDouble、toLong ...方法の異なるタイプに |
比較します | 同じタイプの2つの値を比較します |
isDigits | 文字列が数字のみ含まれているかどうかを判断します |
isParsable | 文字列をlongに変換できるかどうかを決定する、他のタイプのInt |
ISNUMBER | 数字列(0X六角値の開始時等0X)かどうかを決定します |
3.DateUtils
メソッド名 | 説明 |
---|---|
parsedata | 文字列にDateオブジェクト |
isSameDay | 同じ日にするかどうか2つのオブジェクトを決定するために日付を記入 |
isSameDay | 同じ日にするかどうか2つのオブジェクトを決定するために日付を記入 |
addHour | 指定されたDateオブジェクトプラス時間、加えて、そこaddMonth、addDay ...など |
その名の通りDateFormatUtilsは、文字列に時間に使用され、そこではない多くの言うことです
4.StringUtils
メソッド名 | 説明 |
---|---|
加わります | 配列は、指定した文字列に接続され、指定された文字セグメンテーションを追加しています |
containOnly | 文字列は、文字列のみが含まれているかどうか |
substringBefore | 上記の文字列の内容を傍受 |
substringAfter | (指定された文字列を含まない)指定された文字列以下採取概要 |
substringBetween | substringBetweenとした文字列のセクション、( "ABCDE"、 ""、 "E")= "BCD" の内容 |
差 | 2つの文字列を比較し、2つの文字列が異なるコンテンツを返すには、APIドキュメント与えられた具体的な例を見ることができます |
ISBLANK | 3つの結果が真のためのもの「「」」、文字列が空白、nullであるかどうかを確認 |
isEmpty | 文字列が空であるかどうかを決定する(長い文字列オブジェクトの長さがnullでない場合、または渡されないように真の0として) |
countMatches | 文字列で指定した文字列に登場する数の分析 |
deleteWhitespace | 文字列の削除スペース |
defaultIfBlank | 如果字符串为空白,则返回一个指定的默认值(null或某个String) |
defaultIfEmpty | 如果字符串为空,则返回一个指定的默认值(null或某个String) |
capitalize | 将指定字符串首字母大写 |
abbreviate | 将指定字符串的后面三位转为... |
swapCase | 将字符串中的字母大小写反转,如aBc变为AbC |
lowerCase | 将字符串的字母全部转为小写 |
upperCase | 将字符串的字母全部转为大写 |
left | 取字符串左边几个字符,如left("hello",3)="hel",right与此相反 |
leftPad | 字符串的长度不够,则使用指定字符填充指定字符串,如leftPad("hel",5,"z")="zzhel",rightPad方法与此相反 |
prependIfMissing | 指定字符串不以某段字符串开头,则自动添加开头,如prependIfMissing("hello","li")="lihello" |
prependIfMissing | 指定字符串不以某段字符串开头(忽略大小写),则自动添加开头 |
getCommonPrefix | 获得多个字符串相同的开头内容,接收参数为多个字符串 |
removeEnd | 删除字符串中结尾(满足是以某段内容结尾),如removeEnd("hello","llo")="he" |
removeEndIgnoreCase | 与上面一样,忽略大小写 |
removeStart | 与上面的相反 |
remove | 删除字符串中的指定内容,如remove("hello","l")="heo" |
removeIgnoreCase | 删除字符串中的指定内容,如remove("hello","l")="heo" |
strip | 清除字符串开头和末尾指定的字符(第二个参数为null,用来清除字符串开头和末尾的空格),如strip(" abcxy","xy")=" abc",strip(" abcxy","yx")=" abc" |
stripStart | 清除字符串开头指定字符 |
stripEnd | 清除字符串末尾指定的字符 |
common-io
简介
常用的IO流工具包
在线API
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
API
我们主要关心的就是Utils后缀的那几个类即可,可以看到,common-io库提供了FileUtils,FileSystemUtils,FileNameUtils,FileFilterUtils,IOUtils
FileUtils
- 写出文件
- 读取文件
- 创建一个有父级文件夹的文件夹
- 复制文件和文件夹
- 删除文件和文件夹
- URL转文件
- 通过过滤器和扩展名来筛选文件和文件夹
- 比较文件内容
- 文件最后修改时间
- 文件校验
FileSystemUtils
关于文件系统的相关操作,如查看C盘的大小,剩余大小等操作
IOUtils
字面意思,是封装了IO流的各种操作的工具类
Log4j
简介
Log4J 是 Apache 的一个开源项目,通过在项目中使用 Log4J,我们可以控制日志信息输出到控制台、文件、GUI 组件、甚至是数据库中。
我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程,方便项目的调试。
依赖:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
结构
Log4J 主要由 Loggers (日志记录器)、Appenders(输出端)和 Layout(日志格式化器)组成。
其中Loggers 控制日志的输出级别与日志是否输出;
Appenders 指定日志的输出方式(输出到控制台、文件等);
Layout 控制日志信息的输出格式。
日志级别:
级别 | 说明 |
---|---|
OFF | 最高日志级别,关闭左右日志 |
FATAL | 将会导致应用程序退出的错误 |
ERROR | 发生错误事件,但仍不影响系统的继续运行 |
WARN | 警告,即潜在的错误情形 |
INFO | 一般和在粗粒度级别上,强调应用程序的运行全程 |
DEBUG | 一般用于细粒度级别上,对调试应用程序非常有帮助 |
ALL | 最低等级,打开所有日志记录 |
我们主要使用这四个:Error>Warn>Info>Debug
使用
我们可以使用两种方式来运行Log4j,一种是java代码方式,另外一种则是配置文件方式
例子(Java方式)
public class Log4JTest {
public static void main(String[] args) {
//获取Logger对象的实例(传入当前类)
Logger logger = Logger.getLogger(Log4JTest.class);
//使用默认的配置信息,不需要写log4j.properties
BasicConfigurator.configure();
//设置日志输出级别为WARN,这将覆盖配置文件中设置的级别,只有日志级别低于WARN的日志才输出
logger.setLevel(Level.WARN);
logger.debug("这是debug");
logger.info("这是info");
logger.warn("这是warn");
logger.error("这是error");
logger.fatal("这是fatal");
}
}
例子(配置文件方式)
上面的例子,我们想要实现打印Log,但是每次都要写一遍,浪费时间和精力,所以,Log4j提供了另外一种方式来配置好我们的信息
创建一个名为log4j.properties
的文件,此文件需要放在项目的根目录(约定),如果是maven项目,直接放在resources文件夹中即可
log4j.properties
#控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#log jdbc
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=WARN
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
#log mybatis设置
#log4j.logger.org.apache.ibatis=DEBUG
log4j.logger.org.apache.ibatis.jdbc=error
log4j.logger.org.apache.ibatis.io=info
log4j.logger.org.apache.ibatis.datasource=info
#springMVC日志
log4j.logger.org.springframework.web=WARN
# 文件输出配置
log4j.appender.A = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A.File = D:/log.txt #指定日志的输出路径
log4j.appender.A.Append = true
log4j.appender.A.Threshold = DEBUG
log4j.appender.A.layout = org.apache.log4j.PatternLayout #使用自定义日志格式化器
log4j.appender.A.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #指定日志的输出格式
log4j.appender.A.encoding=UTF-8 #指定日志的文件编码
#指定日志的输出级别与输出端
log4j.rootLogger=DEBUG,Console,A
#指定某个包名日志级别(不能超过上面定义的级别,否则日志不会输出)
log4j.logger.com.wan=DEBUG
之后使用的话就比较简单了
//Logger的初始化(这个推荐定义为全局变量,方便使用)
Logger logger = Logger.getLogger(Log4JTest.class);
//输出Log
logger.info("这是info");
参考链接:Log4j入门教程
lombok
简介
平常我们创建实体类的时候,需要get/set方法,极其麻烦,虽然IDEA等IDE都是有提供了快捷生成,不过,最好的解决方法还是省略不写
而lombok就是这样的一个框架,实现省略get/set方法,当然,lombok的功能不只有此,还有equal,toString方法也可以由此框架自动生成
lombok的原理是使用注解,之后就会在编译过程中,给Class文件自动加上get/set等方法
不过IDEA似乎无法识别,代码检查还是会报错,所以,使用IDEA的时候还得安装一个插件,在plugin搜索lombok,之后安装重启即可,如图
之后为Java项目添加依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
使用示例
1.实体类省略get/set
估计Kotlin中的data关键字就是参照着lombok实现的
//这里我们只需要为类添加Data注解,就会自动生成对应属性的get/set方法,toString,equal等方法
@Data
public class User {
private String username;
private String password;
}
2.需要无参构造以及get/set方法
@Getter
@Setter
@NoArgsConstructor
public class User {
private String username;
private String password;
}
3.链式调用set方法
@Data
@Accessors(chain = true)
public class User {
private String username;
private String password;
}
//使用
User user = new User();
user.setUsername("helo").setPassword("123");
4.参数不为空
//如果调用此方法,就会抱一个空指针错误
public String print(@NotNull String str){
...
}
5.只需要toString
@ToString(callSuper=true, includeFieldNames=true)
public class User {
private String username;
private String password;
//省略的get/set方法
}
6.builder模式创建实体类对象
@Data
@Builder
public class User {
private String username;
private String password;
}
//使用
User user1 = User.builder().username("user1").password("123").build();
7.工具类
@UtilityClass
public class MyUtils{
//会将此方法自动转为静态方法
public void print(String str){
...
}
}
//使用
MyUtils.print("hello");
8.自动关闭流
public static void main(String[] args) throws Exception {
//使用Cleanup会自动调用close方法
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
byte[] b = new byte[1024];
while (true) {
int r = in.read(b);
if (r == -1) break;
out.write(b, 0, r);
}
}
9.省略Logger时的初始化
@Log4j
@Log
public class User{
//会自动添加此语句
//Logger logger = Logger.getLogger(User.class);
...
}