自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 EasyExcel 设置单元格样式

【代码】EasyExcel 设置单元格样式。

2025-06-19 16:53:46 1163 1

原创 Postgres数据库 ---MERGE INTO 语句

背景:其中一个业务需求(DTO 中包含更新和新增的数据),想到使用MERGE INTO 语句;

2025-01-15 19:11:29 777

原创 从ThreadLocal 到 InheritableThreadLocal

废话不多说,先贴源码。

2024-12-12 23:41:04 445

原创 浅谈 ThreadLocal

初始化value为null,获得当前线程的threadLocals,如果存在,设置key 和 value到map中,其中key是当前ThreadLocal对象,如果不存在,则为当前线程new 一个threadLocals。首先获得当前线程的threadLocals,如果存在,则设置key 和 value到map中,如果不存在,则调用creatMap方法,为当前线程new 一个threadLocals。

2024-12-12 17:35:44 237

原创 Springboot 3.x 版本

最近在做一个新的项目,使用的JDK 17 版本,所对应的Spring Boot 版本是3.x,具体是Spring Boot 3.3.4;以往的一个项目使用的Spring Boot 版本是2.7.1 (Spring Boot 2.x 系列)。然而,在写一个Filter时,发现javax.servlet.ServletRequest 要替换成 jakarta.servlet.ServletRequest,等等,看起来是要javax包要替换成jakarta包,所以查下资料比较两者是否有啥区别。

2024-12-11 20:25:21 2676

原创 论SpringBoot 中 Filter 和 Interceptor

Interceptor:在 Spring MVC 框架中工作,它是在请求进入 Spring 的控制器之前(即业务逻辑执行之前)和响应返回客户端之前执行的。过滤器是基于 Servlet 规范实现的,它在请求进入 Spring MVC 控制器之前就被执行。Filter 和 Interceptor 执行顺序是:Filter 先执行,Interceptor 后执行。过滤器通常用于请求的预处理和响应的后处理,拦截器则更多用于业务逻辑层的拦截,例如验证、日志记录等。

2024-12-11 18:57:50 522

原创 @Valid 和 @Validated

在创建用户时,@Validated(User.Create.class) 会触发 Create 组的校验,而更新用户时,@Validated(User.Update.class) 会触发 Update 组的校验。当使用 @Valid 或 @Validated 时,如果对象验证失败,Spring 会抛出一个异常。使用 @Validated 注解时,通过 groups 参数指定验证组,可以只验证特定组中的约束条件。当请求中传入 User 对象时,@Valid 会自动触发校验。Controller 代码。

2024-12-06 13:28:49 728

原创 有关指针的数据类型小结

后续有新的类型,继续更新。

2024-11-19 16:00:41 181

原创 三重指针---在函数中间接修改二级指针或动态分配内存

这段代码的作用是为二维数组的每一行动态分配内存,让每行可以存储 c 个 double 类型的数据。如:s = 3, 表示分配 3 行,每行的指针需要用 malloc 动态分配。如: s = 3, c = 4, 即3行4列;

2024-11-18 15:38:32 320

原创 #define和typedef

typedef 与 #define 都可以定义新的名字,但 typedef 是在编译阶段处理的类型定义,而 #define 是在预处理阶段进行简单的文本替换。此外,typedef 更适合定义复杂类型,而 #define 更适合定义简单常量。它可以简化代码,使复杂的类型定义更清晰易读,特别是对于指针、结构体和函数指针等复杂类型。导致语法错误,使用do while 语句,正好可以解决此问题;定义宏函数时,使用do{} while(0)语法,又是为何?这样可以确保宏在使用时不会受制于单行或缺少分号的限制。

2024-11-12 15:32:30 287

原创 JUC---ThreadPoolExecutor话题

corePoolSize:核心线程数。这是线程池中始终保持存活的线程数量,即使它们处于空闲状态。这些核心线程用于处理较常见的任务。如果提交的任务数量超过 corePoolSize,新的任务会被放入任务队列(workQueue)中等待。maximumPoolSize:最大线程数。线程池中允许的最大线程数量,包括核心线程数和非核心线程数。当任务队列满了,且当前线程数小于 maximumPoolSize 时,线程池会创建新的线程来处理任务。keepAliveTime:线程空闲时间。

2024-11-11 17:06:17 607

原创 Oracle ----JSON_VALUE函数

JSON_VALUE 函数语法JSON_VALUE ( json_expression , path [ , return_type ] )假设你有一个存储 JSON 数据的表格 T_E2E_BU_WF_INFO,字段 BUS_CODE 存储了如下 JSON 字符串:{“lstmId”:“5f67c84580ca4071a70008fd99f371ef”, “orderId”:“12345”}说明:如果 JSON 数据中包含一个数组,可以使用 JSON_VALUE 来提取数组中的某个值。例如,假设 JS

2024-11-05 10:15:47 3972

原创 Java设计模式

是时候对设计模式来个全盘的认知了!

2023-04-27 09:51:49 104

原创 JAVA语言认识

《分析Java是编译语言还是解释语言?》结论:Java语言是一种动态性的解释语言。1)编译程序是整体编译完成了,再一次执行;2)解释程序是边解释边执行。解释一句就提交计算机执行一句,并不形成目标程序。3)编译性语言和解释性语言的区别在博主https://www.cnblogs.com/tsingke/p/12285650.html中介绍得很好。下面选用该博主中写得好本人又之前没有注意到的知识点:Java和其他语言不太一样,因为java针对不同的平台有不同的JVM,实现了跨平台。所以,java语言

2020-11-23 16:23:08 195

原创 Java中的移位操作

Java中的移位操作的一些基本介绍1、Java中的移位操作只有三种:有符号左移(<<),有符号右移(>>),无符号右移(>>>),并且都是针对补码。2、x<<n : x的绝对值的补码左移n位,舍弃高位,同时在低位补0,如果移动的位数超越了该类型最大位数,那么编译器回对移动的位数取模,例如,对int型移动了33位,实际上只移动了33%32=1位;3、x>>n : 若参与运算的数x为正数,则在高位补0,若参与运算的数x为负数,则在高位

2020-11-10 13:56:39 2086

原创 MySQL插入当前时间

在MySQL中插入当前时间now() 以‘YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到DATETIME字段中curdate() 以‘YYYY-MM-DD’的格式返回当前的日期,可以直接存到DATE字段中curtime() 以‘HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中例如: insert into tablename(fieldname) values (now())...

2020-11-10 11:11:15 590

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除