解决单元测试没有启动箭头,JsonUtil.toBean的使用、对于线程池的浅显了解、isBlank和isNotBlank、LocalDateTimeTemporal 接口

一、单元测试@test没有绿色的启动箭头

在写单元测试的时候,可以通过Alt+insert生成并且可以选择版本:
一定要注意下面的版本,选错了就会报错,无法运行。

在SpringBoot 2.2的版本之前Junit4:org.junit.Test
SpringBoot 2.2之后使用的是 Junit5:org.junit.jupiter.api.Test

加上@SpringBootTest和public
在这里插入图片描述

二、JsonUtil.toBean

JSONUtil.toBean()方法用于将JSON格式的数据转换为Java对象。‌这个方法通常属于一些JSON处理库(‌例如Hutool库中的JSONUtil)‌,‌它提供了一种便捷的方式,‌将JSON字符串中的数据映射到Java对象的相应属性上。‌这样,‌开发者可以以面向对象的方式处理JSON数据,‌而无需手动解析JSON字符串。‌

使用JSONUtil.toBean()方法的基本语法是:‌JSONUtil.toBean(jsonString, ClassName.class)。‌其中,‌jsonString是你要转换的JSON字符串,‌而ClassName.class是你希望将JSON转换成的Java类的Class对象。‌该方法会自动匹配JSON键与Java对象属性名,‌然后进行赋值,‌从而实现数据的转换。‌

例如,‌如果你有一个JSON字符串表示一个用户信息,‌你可以使用JSONUtil.toBean()方法将其转换为一个User对象,‌其中User是一个Java类,‌其属性与JSON字符串中的键相匹配。‌这样,‌你就可以在代码中以面向对象的方式操作这个用户信息,‌而不是直接操作JSON字符串。‌

此外,‌jsonutil.tobean方法的应用场景非常广泛,‌尤其适用于Web接口开发中服务器返回的数据处理,‌以及从数据库中读取JSON格式数据时的转换需求。‌由于Java和JSON的数据格式可能有所不同,‌因此在进行转换时,‌可能需要通过使用注解、‌配置文件等方式来映射Java对象与JSON字符串之间的对应关系。‌这种方法通过反射实现,‌即根据JSON字符串的key-value对的key值来通过反射获取Java对象中对应的属性并赋值,‌从而将JSON字符串转化为Java对象。‌

总的来说,‌JSONUtil.toBean()方法是一种非常实用的Java工具类方法,‌可以大幅度提升开发效率,‌特别是在Web开发等领域,‌使用jsonutil.tobean方法可以轻松地完成数据格式转换、‌数据传输和数据处理等任务

之后可以多去看看,总结用一下,包括BeanUtil

三、对于线程池的浅显了解:

1.就以黑马的redis中的这句代码来解释吧:

private static final ExecutorService CACHE_BUILDER_EXECUTOR = Executors.newFixedThreadPool(10);//获得十个线程

这段代码是在Java中使用Executor框架来创建一个固定大小为10的线程池。让我来解释一下每个部分的含义:
private: 这是Java中的访问修饰符,表示该成员变量只能在当前类中访问。
static: 这个关键字表示该成员变量属于类本身,而不是类的实例。这意味着你可以通过类名直接访问它,而不需要先创建类的实例。
final: 这个关键字表示一旦赋值之后,该成员变量的值不能再被修改。在这里,CACHE_BUILDER_EXECUTOR被赋予了一个固定的线程池实例。
ExecutorService: 这是一个接口,用于管理和执行线程池中的任务。
CACHE_BUILDER_EXECUTOR: 这是变量的名称,用于引用这个特定的ExecutorService实例。
Executors.newFixedThreadPool(10): 这是一个静态工厂方法,用于创建一个固定大小的线程池。在这里,参数10表示线程池的大小,即最多可以同时执行10个线程。

综上所述,这段代码的作用是创建了一个固定大小为10的线程池,命名为CACHE_BUILDER_EXECUTOR,可以用于并发执行多个任务,提高程序的效率和性能。

2. 什么是线程池

线程池(Thread Pool)是一种管理和重用线程的机制,用于优化多线程应用程序的性能和资源消耗。它包含若干个预先创建的线程,这些线程可以被程序反复利用来执行多个任务,而不需要每次执行任务时都创建新线程。线程池的主要目的是减少线程创建和销毁的开销,以及有效地管理并发任务的执行。

在使用线程池时,通常会指定最大线程数和一些调度策略,如何处理任务队列等参数。常见的线程池类型包括:

FixedThreadPool:固定大小的线程池,一旦创建就无法更改线程数量。
CachedThreadPool:根据需要创建新线程的线程池,如果线程池中的线程空闲时间超过设定时间,则回收该线程。
ScheduledThreadPool:用于定时执行或周期性执行任务的线程池。
使用线程池的好处包括:

提高程序响应速度:减少了线程创建和销毁的时间,任务可以更快速地执行。
资源管理:控制线程的数量,防止系统因过多线程而耗尽资源。
提高可管理性:能够监控和统计线程池的运行状况,便于调优和故障排除。
总之,线程池在多线程编程中扮演着重要角色,有效地提高了程序的并发性能和稳定性。

四、isBlank和isNotBlank

1. isBlank

isBlank 方法通常用于判断字符串是否为空或者只包含空格字符(包括制表符、换行符等)。具体来说:

如果字符串为 null,返回 true。
如果字符串长度为0,返回 true。
如果字符串中除去空格后长度为0,也返回 true。
否则返回 false。
示例:

String str1 = "";
String str2 = "   ";
String str3 = "\t\n";

StringUtils.isBlank(str1); // true
StringUtils.isBlank(str2); // true
StringUtils.isBlank(str3); // true
StringUtils.isBlank(null); // true
StringUtils.isBlank("  abc  "); // false

2. isBlank

isNotBlank 方法则与 isBlank 相反,用于判断字符串是否不为空且不仅包含空格字符:

如果字符串不为 null 且长度大于0,并且去除空格后长度大于0,返回 true。
否则返回 false。
示例:

String str1 = "";
String str2 = "   ";
String str3 = "\t\n";

StringUtils.isNotBlank(str1); // false
StringUtils.isNotBlank(str2); // false
StringUtils.isNotBlank(str3); // false
StringUtils.isNotBlank(null); // false
StringUtils.isNotBlank("  abc  "); // true

3. 使用建议

使用 isBlank 当你需要确保字符串在去除首尾空格后是否为空时。
使用 isNotBlank 当你需要确保字符串既不为 null 也不仅包含空格字符时。
这两个方法能够帮助你进行字符串的空值或空格检查,通常在输入验证或数据处理时非常有用。

五、LocalDateTimeTemporal 接口

1. 引入

(expireTime.isAfter(LocalDateTime.now())) {//意思是,过期时间(expireTime.).是不是在当前(LocalDateTime.now())时间之后(.isAfter)对于这个的使用

2. 使用

在实际应用中,这种检查常用于验证是否过期,例如验证会话令牌、临时凭证或其他时间敏感的数据。

示例使用:

LocalDateTime expireTime = LocalDateTime.of(2024, 7, 18, 15, 0); // 假设过期时间是2024年7月18日下午3点
boolean notExpired = expireTime.isAfter(LocalDateTime.now());
if (notExpired) {
    // 如果未过期,执行相关逻辑
    System.out.println("未过期");
} else {
    // 如果已过期,执行其他逻辑
    System.out.println("已过期");
}

3.LocalDateTime.of

LocalDateTime.of() 方法是 Java 8 中 LocalDateTime 类的一个静态工厂方法,用于创建一个指定日期和时间的 LocalDateTime 对象。它可以通过传入年、月、日、时、分等参数来设置日期时间。

具体来说,LocalDateTime.of() 方法的签名通常如下:

public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute)

参数含义如下:

year:年份,例如2024。
month:月份,从1到12。
dayOfMonth:月份中的日期,例如18号。
hour:小时数,24小时制。
minute:分钟数。
除了这些参数之外,LocalDateTime.of() 方法还可以根据需要传入其他参数,例如秒数和纳秒数,以精确设置日期时间。

比较较重要的用法


示例用法:

LocalDateTime dateTime = LocalDateTime.of(2024, 7, 18, 15, 0);
System.out.println(dateTime); // 输出:2024-07-18T15:00

这样就可以创建一个具体的日期时间对象,用于各种日期时间操作和比较,例如上面提到的过期时间判断。

4. Temporal 接口提供了其他一些用来比较日期的条件判断方法

isBefore(Temporal temporal):判断当前日期时间是否在提供的日期时间之前。
isAfter(Temporal temporal):判断当前日期时间是否在提供的日期时间之后。
isEqual(Temporal other):判断当前日期时间是否与提供的日期时间相同。
isAfter(TemporalAccessor temporal):判断当前日期时间是否在提供的日期时间之后。
isBefore(TemporalAccessor temporal):判断当前日期时间是否在提供的日期时间之前。
isEqual(TemporalAccessor temporal):判断当前日期时间是否与提供的日期时间相同。
这些方法可以被 LocalDate、LocalTime、LocalDateTime 和 ZonedDateTime 等日期时间类使用。下面是这些方法的示例使用:

LocalDateTime now = LocalDateTime.now(); // 获取当前的日期时间
LocalDateTime expireTime = LocalDateTime.of(2024, 7, 18, 15, 0); // 过期时间

if (now.isBefore(expireTime)) { // 判断当前时间是否在过期时间之前
    System.out.println("过期时间未到");
} else {
    System.out.println("过期时间已到");
}

if (now.isEqual(new LocalDateTime(2024, 7, 18, 15, 0)) { // 比较日期时间是否相等
    System.out.println("今天是过期日期和时间");
} else {
    System.out.println("今天的日期和时间不是过期日期和时间");
}
  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSONUtil.toBean方法是hutool中的一个工具方法,用于将JSON字符串转换为Java对象。根据引用\[1\]和引用\[2\]的内容,可以得出以下结论: 在使用JSONUtil.toBean方法时,如果要将JSON中的字段名与Java对象中的字段名进行匹配,需要注意以下几点: 1. Java对象中的字段名应与JSON中的字段名保持一致,大小写敏感。 2. 如果Java对象中的字段名使用驼峰命名法(如password),而JSON中的字段名使用下划线命名法(如pass_word),则需要在Java对象中使用@JsonAlias注解来指定JSON中的字段名。 3. 使用hutool的JSONUtil工具类进行转换时,会自动将Java对象中的驼峰命名法字段名转换为下划线命名法,以便与JSON中的字段名进行匹配。 因此,如果要将JSON字符串转换为Java对象,并且JSON中的字段名为"pass_word",则需要在Java对象中使用@JsonAlias("pass_word")注解来指定字段名为"password"。这样,在使用JSONUtil.toBean方法时,会将JSON中的"pass_word"字段值赋给Java对象中的"password"字段。 #### 引用[.reference_title] - *1* *2* [hutool JSONUtil今天踩坑了,赶紧学起来](https://blog.csdn.net/LookOutThe/article/details/122363852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值