代码学习总结


时间格式化

hzBillMain.setIyear(Integer.parseInt(new SimpleDateFormat("yyyy").format(new Date())));
hzBillMain.setImonth(month);

hzBillMain.setMaxYearMonth(new SimpleDateFormat("yyyy-MM-dd").parse(hzBillMain.getIyear() + "-" + (month >= 10 ? month : "0" + month) + "-28"));

localTime,localDate,localDateTime的区别

                                        @Accessors(chain = true)

@Accessors(chain = true): 这是Lombok的另一个注解,用于启用链式调用。当你的类使用了这个注解后,你可以在调用一个setter方法后立即调用另一个setter方法,而不必每次都引用对象的变量。这可以提高代码的可读性和简洁性

Arrays和ArrayList的区别

ArraysArrayList 是 Java 中用于处理集合(数组或列表)的两种不同工具,它们有一些关键的区别:

  1. 数据结构:

    • Arrays 是一个类,用于操作数组,它提供了一系列的静态方法来处理数组,例如排序、复制、填充等。
    • ArrayList 是一个类,代表一个动态数组,是 Java Collections Framework 的一部分。它使用动态数组来存储元素,可以根据需要自动扩展数组的大小。
  2. 大小调整:

    • Arrays 操作的数组是静态大小的,一旦数组创建后,不能更改其大小。如果需要更改数组大小,必须创建一个新的数组,并将元素复制到新数组中。
    • ArrayList 具有动态大小,可以根据需要自动调整大小,因此可以轻松添加或删除元素。
  3. 元素类型:

    • Arrays 可以处理任何类型的数组,包括原始数据类型和对象类型的数组。
    • ArrayList 只能用于对象类型的数组,不支持原始数据类型,但可以使用包装类(如 IntegerDouble)来代替。
  4. 使用场景:

    • Arrays 适用于对静态数组进行各种操作,如搜索、排序、复制等。
    • ArrayList 适用于需要动态大小、增加、删除元素的场景。它是一种常见的列表数据结构,通常用于构建可变集合。
  5. 性能:

    • 在大多数情况下,Arrays 操作相对较快,因为它直接操作原始数组。但它不适用于动态大小的集合。
    • ArrayList 的性能在处理可变集合时通常很好。由于其动态数组的特性,它可以根据需要自动扩展,因此很适合处理变化大小的集合。

FROM_UNIXTIME

FROM_UNIXTIME 是 MySQL 数据库的一个函数,用于将 UNIX 时间戳转换为日期时间格式。UNIX 时间戳通常以秒为单位表示自 1970 年 1 月 1 日零点(也称为 UNIX 纪元)以来的时间。FROM_UNIXTIME 函数接受一个整数参数,该参数是 UNIX 时间戳,然后返回一个日期时间字符串

(FROM_UNIXTIME(cm.money_user_time / 1000, '%Y-%m-%d' )

@Lazy

@Lazy 是Spring框架中的注解之一,用于延迟初始化bean。当一个bean被标记为@Lazy时,Spring容器将不会在应用程序启动时立即创建该bean,而是在第一次请求该bean时进行创建。

@Autowired

@Lazy

private BService bService;

BigDecimal

BigDecimal.ZEROBigDecimal 类的一个静态常量,表示数值 0。它是 BigDecimal 类中的一个预定义常量,可以用于进行与 0 相关的精确计算,避免使用浮点数的精度问题。除了 BigDecimal.ZERO 之外,还有BigDecimal.ONE: 表1, BigDecimal.TEN: 表示数值 10

multiply

BigDecimal 类的 multiply 方法进行乘法运算。这个方法用于将当前 BigDecimal 与指定的 BigDecimal 相乘,返回一个新的 BigDecimal 对象,表示乘法的结果。BigDecimal 是不可变的,任何对 BigDecimal 的操作都会返回一个新的 BigDecimal 对象。

BigDecimal result = one.multiply(two);

compareTo

compareTo 是 Java 中的一个用于比较对象的方法,通常用于实现 Comparable 接口。该方法返回一个整数,表示两个对象的比较结果。返回值的含义如下:

  • 如果对象相等,则返回 0。
  • 如果调用对象小于参数对象,则返回负数。
  • 如果调用对象大于参数对象,则返回正数

 例: str1.compareTo(str2)

BigDecimal类型用于比较时,推荐用compareTo,因为:

  • BigDecimal 存储的是精确的十进制数,而不是二进制浮点数。由于浮点数在计算机中以二进制表示,存在精度丢失的问题。使用 compareTo 方法能够更好地处理 BigDecimal 对象之间的精度差异。
  • 使用比较运算符可能会忽略 BigDecimal 对象之间的微小差异,导致错误的比较结果。

try-catch

在 Java 中,异常分为两类:检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)。

  1. 检查型异常(Checked Exception): 这类异常在编译期强制要求进行捕获或声明,否则编译不通过。常见的检查型异常有:

    • IOException:处理输入输出操作时可能抛出的异常。
    • SQLException:处理数据库操作时可能抛出的异常。
    • ClassNotFoundException:处理类加载时找不到类的异常。
  2. 非检查型异常(Unchecked Exception): 这类异常通常是由程序错误引起的,编译器不会检查是否捕获或声明,因此也称为运行时异常。常见的非检查型异常有:

    • NullPointerException:尝试访问空对象的属性或方法。
    • ArrayIndexOutOfBoundsException:数组索引越界。
    • IllegalArgumentException:方法接收到不合法的参数。
    • ArithmeticException:算术运算异常,如除以零。
    • ClassCastException:类型转换异常。
    • RuntimeException 的子类,如 IllegalStateException、IndexOutOfBoundsException等。

在使用 try-catch 块时,可以选择捕获具体的异常类型,也可以捕获它们的父类 Exception

常见的 Java 异常及其简要描述:

  1. IOException: 输入输出异常,通常用于处理文件或网络操作中的错误。

  2. SQLException: 数据库操作异常,可能由数据库访问引起的问题。

  3. ClassNotFoundException: 找不到类异常,通常发生在尝试加载不存在的类时。

  4. NullPointerException: 空指针异常,尝试访问空对象的属性或方法。

  5. ArrayIndexOutOfBoundsException: 数组索引越界异常,尝试使用超出数组范围的索引。

  6. IllegalArgumentException: 非法参数异常,通常由方法接收到不合法的参数引起。

  7. ArithmeticException: 算术异常,例如除以零。

  8. ClassCastException: 类型转换异常,通常发生在试图将对象强制转换为不兼容类型时。

  9. RuntimeException 的子类:

    • IllegalStateException: 状态异常,通常在对象的状态不适合执行特定操作时引发。
    • IndexOutOfBoundsException: 索引越界异常,通常与集合类相关。
    • NumberFormatException: 数字格式异常,通常在字符串转换为数字时发生。
    • ConcurrentModificationException: 并发修改异常,通常在迭代集合时修改了集合结构。
  10. FileNotFoundException: 文件未找到异常,尝试访问不存在的文件时引发。

  11. SocketException: Socket 异常,通常在进行网络通信时发生。

  12. InterruptedException: 中断异常,通常在多线程编程中,线程被中断时引发。

mybatisplus分页问题

首先引入mybatisplus依赖
<!-- mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>

然后引入mybatisplus插件

如果数据量小于10条,mybatisplus的分页是不能用的,因为Page类中,默认的size是10,如果数据量小于10,分页功能并不实现。解决的办法有两个,一个是将自己的数据加到10条以上,另一个就是改变整个默认的size

WebMvcConfig(客户端访问服务端静态资源配置)

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置静态文件服务,将图片文件的实际路径映射到URL
        registry.addResourceHandler("/images/**")
                .addResourceLocations("file:D:/gw/"); // 请替换为你实际的图片存储路径
    }
}

例:http://192.168.0.111:8899/images/111.jpg

                                                        java.time包

1.获取当前日期和时间:

                LocalDateTime now = LocalDateTime.now();     

                默认会提供毫秒级精度,LocalDateTime类具有纳米级精度,如果希望不包括毫秒和纳秒,则使用truncatedTo截断

LocalDateTime now = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
 

2.获取某一天的开始时间(午夜):

                LocalDateTime startOfDay = LocalDate.now().atStartOfDay();

3.获取某一天的结束时间(23:59:59.999):

                LocalDateTime endOfDay = LocalDate.now().atTime(LocalTime.MAX);

4.获取当前日期:

                LocalDate currentDate = LocalDate.now();

5.获取当前时间:

                LocalTime currentTime = LocalTime.now();

6.获取当前时区:

                ZoneId currentZone = ZoneId.systemDefault();

7.获取带时区的日期和时间:

                ZonedDateTime zonedDateTime = ZonedDateTime.now();

8.获取当前日期的时间戳:

                Instant instant = Instant.now();





 

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值