自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 将文件按照文件名创建文件夹保存

场景:有一个图片的压缩包,里面的图片是按照系列存的。上传图片时需要按商品编号找到文件夹,进入文件夹选取里面的图片。所以写了下面的,按照文件名创建文件夹,然后把所有文件名的图片放进去,如果一个文件名有多个图片,则文件名按照后缀加-0,-1区别。例如,有一个商品图片,有3张,D304,分别存在3个文件夹中。经过处理后需要创建一个D304的文件夹,然后把3张图片存进去,名称分别为D304, D304-1,D304-2。

2024-03-06 17:22:46 383

原创 springboot项目处理响应结果方案ResponseBodyAdvice

在项目中我们有统一的返回结果定义。我们自己定义内容这个在我们自己项目都是这种返回结构,但是在对接其他公司的系统的时候,有的公司规定的返回结果结构跟我们的不一样。他们的是这样的这和我们项目中的是不一样的。字段名和含义都不一样。需要在不改变我们项目结构的同时满足这种返回结果。我们在controller层可以自己定义一个返回结果对象,但是项目中抛出异常,就会走我们定义的第一种响应结构。

2024-02-20 14:05:32 365 1

原创 elasticsearch搜索会限制结果数量

现象:elasticsearch在搜索时,会限制默认的搜索条数10000。比如有一个spu_index索引,里面的数据有50000条,在执行页面搜索的时候,前10000条数据能显示出来,下一页就没有数据了。解决方法,重新设置一下这个限制,在kibana中执行。

2024-01-29 08:56:09 287

原创 java 项目中有需要记录操作日志,统一处理

代码的实现主要是:利用短信 模板的形式。先给定一段话,里面的变量用字符串代替。等针的有操作的时候,就替换变量,改成一段话记录下来。变量替换的参数可以对象,map,或者是json。基本使用就这些,如果想更方便,还可以做成注解形式,解析参数,利用切面保存。

2023-12-08 09:36:18 1068

原创 记feign调用第三方接口时header是multipart/form-data

请求第三方接口,用feign请求

2023-11-15 20:58:27 677

原创 idea自定义提示关键词 switch

idea自定义快捷键

2023-08-29 14:50:04 267

原创 spring参数校验@Validated及嵌套校验

对象校验,用post传参,对象属性的校验注解导包使用正确集合作为校验接收参数使用ValidList这个类接收对象中集合校验使用List接收,不能使用ValidList,会出现2次错误信息get参数校验,需要在类上加@Validatedservice层校验需要自己写校验工具类。写校验方法。

2023-03-27 19:55:26 5167 1

原创 springboot项目配置序列化,反序列化器

本文介绍在项目中时间类型、枚举类型的序列化和反序列化自定义的处理类,也可以使用注解。建议枚举都实现一个统一的接口,方便处理。我这定义了一个Dict接口。由于上边规定所有的枚举都需要实现Dict接口,下面的反序列化只针对符合条件的处理/*** 枚举反序列化器*/

2023-03-11 16:09:50 3687

原创 记Java调用第三方接口封装实现

在Java项目中,会遇到很多调用第三方接口的地方,比如接入微信,其他公司的系统,需要传token或者签名。由于接入调用接口很多,每个接口内部都需要手动设置token或者其他数据,这就显得很麻烦。而且发送http请求还需要自己创建request对象。下面介绍2中封装方式,一、利用feign功能封装请求,所有接口和服务之间调用是一样的,只需要执行后面的url,参数类,请求方式等。内部需要传输的token信息,在自定的拦截器中设置,自定义的拦截器需要实现RequestInterceptor接口。

2023-02-15 16:13:40 5281

原创 系统体验环境数据抽取创建

本文主要介绍系统体验环境的数据抽取和复制。需求:有一个项目需要有用户体验,或者是演示功能,这些操作又不能在正式环境操作,测试环境也不稳定,用户体验不好。所以需要有新的一套系统,供用户使用,但是这些数据不会长期保存。这些用户也不需要登录。

2023-01-15 18:36:12 403

原创 nacos配置动态刷新及监听到变化触发一些方法

在使用spring 时,动态更新配置是常见的,属性值更新,但是需要开启支持刷新功能,一个是spring.cloud.nacos.config.isRefreshEnabled=true; 这个值一般是默认的,可以在nacosConfigProperties这个类中看到。还要在扩展配置中开启refresh = true

2023-01-10 20:54:50 12442 1

原创 证明volatile 是线程可见的

java中 volatile 关键字是线程可见的,以前了解的是一个线程对volatile 修饰的遍历修改之后,另一个线程再次获取这个变量的值的时候,就是修改之后的值了。如果变量没有 volatile 修饰,另一个线程就不会感知到便获。

2022-12-18 21:15:02 427

原创 mybatis查询多个结果返回map--@MapKey使用方法

mybatis查询结果集返回多个,想用map接收,使用@Mapkey解决,并介绍源码实现

2022-11-30 10:55:35 9797 1

原创 springMVC参数绑定源码分析

springMVC参数绑定源码分析

2022-11-26 18:09:30 1181

原创 ES各种查询语法及响应结果

ES搜索查询语法笔记

2022-10-12 11:53:00 3350

原创 list转map,key相同合并代码执行顺序

用list.stream转map注意执行顺序

2022-08-10 14:43:34 1368

原创 spring事务传播代码测试

介绍spring事务在不同的传播机制下,执行的不同结果事务传播配置7中,具体的参见org.springframework.transaction.annotation.Propagation这个类场景:serviceA类有方法A调用 serviceB类有方法B。B方法出异常,哪个会提交??初始值<update id="updateUserA"> UPDATE `t_user` SET `name` = '张三11' WHERE `id` = 1; &

2022-03-02 17:33:01 599 1

原创 java线程状态及中断interrupt()

线程中断参考视频【Java并发·08】线程中断 interrupt_哔哩哔哩_bilibili距离上次更新过去了快两个月,虽然快两个月,但是这集还是做的比较仓促可能是年纪大了吧……内容自然是精心准备的。不过有些画面细节可能还比不上前面的作品,特别是文字质量,发虚是因为我又换软件了,这次都是用开源软件做的后面有时间了我会去研究研究怎么改进https://www.bilibili.com/video/BV1CM4y157vc/?spm_id_from=pageDriver1.判断线程是否中断,只有在线.

2022-02-09 14:40:37 648

原创 强大的CompletableFuture开启异步执行任务

本文介绍CompletableFuture类,开启线程异步执行任务。参考视频:这个视频讲的很好,一定要去看。。。。。。【Java并发·03】CompletableFuture入门_哔哩哔哩_bilibili异步编程,原来可以这样简单多线程、异步 是近些年来工作中越来越常用的技术但是有好多同学都停留在 Thread 层面,没有去了解更方便的工具这是制作视屏以来的第三个作品,加入了一些搞笑的元素。希望能让你们轻轻松松学知识-本节课是 CompletableFuture 的入门课讲到了 Completab

2022-02-08 18:19:22 1002

原创 idea从diagram中进入类

idea展示类结构图--diagram,想进入其中一个类看使用F4进入图中选中想要进入的类,按F4就可以进入。

2022-02-07 17:01:38 928

原创 BlockingQueue的实现类讲解

jdk有几个BlockingQueue阻塞队列的实现类,总结一下,不同点及用处。看类图第一个:ArrayBlockingQueue入队方法public boolean add(E e) ---- 内部会调用offer(e),返回false就抛异常,需要自己捕获,否则线程遇到这个异常就结束了public boolean offer(E e)----往队列里添加元素,添加成功返回true,添加失败返回false。public void put(E e) throws Inte

2022-02-07 16:25:02 924

原创 Cannot find a @StreamListener matching for message with id: 99a2a40a-fcf9-800a-384d-e3782846c0ed

rocketMQ报错Cannot find a @StreamListener matching for message with id: 99a2a40a-fcf9-800a-384d-e3782846c0ed原因:RocketMQ整合Spring cloud stream之后代码中写了@StreamListener(value = OrderEventSink.ORDER_STATUS_CHANGED_EVENT_INPUT, condition = "headers['rocketmq_

2022-01-28 16:36:48 1545

原创 CountDownLatch的2种使用场景

CountDownLatch是基于AQS的操作共享锁的表现,可以控制多个线程,一起执行。模仿并发CountDownLatch类中有2个方法。1. await();表示线程阻塞,2. countDown();表示,计数器减一。在线程阻塞后,计数器减至0后才可以唤醒阻塞的线程。场景一:模仿高并发,多个线程,同事访问一个资源。代码:package com.example.demo2.cusdemo.countdowndemo;import java.util.concurrent.C.

2022-01-28 10:49:44 1563

原创 ReentrantLock加锁解锁线程入队源码分析

本文介绍ReentrantLock加锁解锁过程在看这个类的代码时,先看类的关系,ReentrantLock,内部有sync类,继承了AbstractQueuedSynchronizer,这个类中封装很多锁的公共方法,比如,获取锁,释放锁,创建队列,入队,阻塞,共享锁的逻辑。测试代码:import java.util.concurrent.locks.ReentrantLock;public class TestLock { public static void main(Strin

2022-01-27 17:06:52 631

原创 线程中断方法Thread.currentThread().interrupt()、Thread.interrupted()、Thread.currentThread().isInterrupted()

本文介绍3个线程中断方法的意义及使用结果。在ReentrantLock类中会看到有使用的地方。 Thread.currentThread().interrupt():表示为当前线程打中断标记。 Thread.interrupted():表示清除中断标记,如果当前线程中断,返回true,否则返回false Thread.currentThread().isInterrupted():表示查看当前线程的状态是否中断,不清除中断标记 测试代码public static v

2022-01-26 18:35:17 4562 1

原创 易懂--详解--线程池ThreadPoolExecutor执行流程

介绍线程池的执行流程,及源码分析线程池接收任务:1.先创建核心work,执行任务,核心work创建满了,再来新的任务,没有空闲的核心work,2.就将任务放进队列,队列添加满了,3.就创建非核心work,此时,非核心work和核心work一起执行队列中的任务,当核心、非核心work、队列都满了,再添加任务,就执行拒绝策略注1:一个线程池创建的work数量是有限的,当work达到ctl最大值即563870912,此线程池就拒绝接收任务,每次创建一个work,不论是核心还是非核心的,ctl值

2022-01-19 16:49:19 1829 1

原创 springboot服务认证方式Tomcat中session创建管理流程分析

本文介绍springboot项目采用spring-security认证,传递token,session的生成流程,分析源码创建过程。最主要的入口在org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter#doFilter这个请求过滤器中。具体访问流程如下Tomcat接收请求进入org.apache.catalina.authenticator.Authentic

2022-01-18 14:26:18 1022

原创 spring-web项目采用token认证session创建过多导致OOM

本文介绍关于session过多,分问题、解决方案、分析在另写文章。问题:spring-boot微服务互相调用时,采用的是spring-security来认证,比如A服务调用B服务用feign调用方式。1. 浏览器访问web项目,传递token,Bearer 0d8c2dfa-5a3f-4fde-935e-96da27712687,此时,web服务会拿着token,去用户服务认证,认证通过,放行。每次访问都会在web服务创建一个新的session,有效期是30分钟,即使前端下次访问的时候,传递上次响应

2022-01-18 11:10:21 888

原创 mybatis-plus解析注解,自动生成sqlNode

本文介绍,mybatis-plus在项目启动的时候,解析实体类的注解,比如:@Table等,生成sqlNode,然后在真正访问的时候,再拼接成sql语句。访问流程:入口:1. com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean#buildSqlSessionFactory// 构建SqlSession的时候根据接口解析自动生成的sqlNode。protected SqlSessionF...

2022-01-10 11:35:28 676

原创 mybatis-plus查询sql条件拼接deleted = 0

本文介绍springboot整合mybatis-plus在项目中使用时,写查询方法的时候,使用lambda表示查询数据,在真正执行sql的时候where条件会拼接deleted = 0 。原因:1、全局配置配置删除字段。默认删除值=1.未删除值=0。配置方式如下:mybatis-plus.global-config.db-config.logic-delete-field = deleted在使用全局配置的时候,如果实体类中有deleted字段,就会拼接deleted = 0.2. 如果

2022-01-06 10:09:49 10083 2

原创 springboot集成mybatis-plus源码分析

本文介绍springboot-集成mybatis-plus,(又出现很多以Mybatis开头的配置类),启动时如何加载各个类,解析配置文件,生成接口代理类。sql执行器。自定配置入口1.找到自动配置类MybatisPlusAutoConfiguration,会看到@Bean@ConditionalOnMissingBeanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {}

2022-01-04 15:12:14 620

原创 springmvc整合springboot执行流程---源码分析

本文介绍springmvc被springboot整合之后,web容器注册spring容器,初始化DispatcherServlet,controller里面的方法注册,访问过程。首先从springboot-autoconfigure包下面的META-INF/spring-factories里面找到WebMvcAutoConfiguration这个自动配置类,在209行会看到RequestMappingHandlerMapping这个类被创建成bean,这个类有个afterProperti...

2021-12-31 16:56:38 552

原创 mysql模糊查询,有特殊符号%_?*

使用mybatis,把mysql模糊查询时,特殊字符,进行转义

2021-12-29 09:55:30 6429

原创 修改spring-security-oauth2获取用户资源使用连接池

本文介绍使用spring-security-oauth2进行授权认证后,获取用户资源时,使用oauth2RestTemplate进行访问,没有使用连接池,进行优化。设置连接池的代码package org.springframework.security.oauth2.client.test;import org.springframework.beans.factory.ObjectProvider;import org.springframework.boot.autoco...

2021-12-24 10:39:04 725

原创 MongoDB的模糊查询

MongoDB模糊查询

2021-12-23 18:16:17 2629

原创 整合swagger后,获取项目中所有的url

整合swagger以后获取项目中所有的url

2021-12-21 16:01:32 1825

原创 mybatis-spring源码分析版本2.0.6

mybatis整合spring源码分析

2021-12-20 15:31:30 563

原创 spring内部事件监听类加载源码(下)ApplicationEvent

介绍spring启动加载监听类源码,包括注解@EventListener和实现ApplicationListener

2021-12-14 17:06:53 398

原创 spring内部事件源码(上) ApplicationEvent

介绍spring内部事件执行原理及代码示例

2021-12-14 16:17:26 379

原创 idea自定义archetype及错误处理

idea自定义archetype

2021-12-06 15:02:36 3774 1

空空如也

空空如也

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

TA关注的人

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