@Valid和@Validated的编程式调用,手动触发参数校验

简介隔离在家工作,最近遇到一个挺好玩的需求哈哈哈。在参数校验前需要做一段逻辑上的处理。比如:同一个接口的参数校验,一个实体类有10个属性满足条件A就校验其中的5个属性,满足条件B就校验另外5个属性。常用的处理逻辑一般我们在做Spring Boot项目时候的参数校验都是直接通过在接口入口处增加@Valid,然后Spring在序列化参数的时候就回自动帮我们进行校验。实体类增加校验注解这里举例:@Not

- 阅读全文 -

算法数据结构----差分数组

什么是差分数组?差分数组也是一个数组,只不过它的产生是由原数组进化而来。首先我们定义一个原数组array长度为8:INDEX01234567原数组1253101005466然后定义一个差分数组tempArray长度也为8,差分数组的每一项取值为(第一项默认为原数组第一项):tempArray[i] = array[i] - array[i-1] ;(i>0)INDEX01234567原数组1

- 阅读全文 -

Java8中的Optional

OptionalOptional构造方法私有,不能通过new创建对象。Optional创建对象的集中方法。方法名描述of(T value)创建一个对象,如果为空,抛出NullPointException。ofNullable(T value)创建一个对象,可以为空。empty()创建一个空的对象empty()Optional<Object> empty = Optional.empty

- 阅读全文 -

02-Jvm垃圾回收

如何判断对象可以回收?引用计数法两个对象互相引用,会导致两个对象都没法被回收。可达性分析Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着 GC Root对象 为起点的引用链找到该对象,找不到,表示可以 回收哪些对象可以作为GC root?虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中JNI(即

- 阅读全文 -

01-Jvm内存模型

jvm的内存模型包含什么?程序计数器(寄存器)作用:记住下一条jvm执行的执行地址。程序执行过程中cpu切换任务执行,再次返回是必须知道程序执行到哪一步了。程序计数器是线程私有的不存在内存移除虚拟机栈栈内存模型后进先出。虚拟机栈包含了栈帧。每一个线程只能有一个活动栈帧,对应当前正在执行的方法。每一次方法调用都会存在一个栈帧。栈内存溢出:栈帧过多(方法调用嵌套太多,不能正常返回。无限递归)栈帧过大(

- 阅读全文 -

04-多线程----自定义线程池实现

自定义线程池的实现自定义阻塞队列/** * 阻塞队列 存放任务 * @param <T> */@Slf4j(topic = "c.BlockingQueue")class BlockingQueue<T> { //任务队列 private Deque<T> queue = new ArrayDeque<>();

- 阅读全文 -

03-多线程----无锁解决并发的方案

1、问题多线程模拟银行取钱操作,代码如下:public interface Demo4 { //获取当前的余额 Integer getBalance(); // 取款 void withdraw(Integer amount); //操作某一个账户 static void demo(Demo4 account) { long start = Sys

- 阅读全文 -

Retrofit的Url组合规则

BaseUrl和URL有关的注解中提供的值最后结果http://localhost:4567/path/to/other//posthttp://localhost:4567/posthttp://localhost:4567/path/to/other/posthttp://localhost:4567/path/to/other/posthttp://localhost:4567/path/t

- 阅读全文 -

04-Redis进阶,雪崩,击穿,穿透

什么是Redis雪崩?怎么解决?热点数据会做缓存(首页数据),一般缓存都是定时任务刷新,或者是查不到的时候去更新缓存,定时任务刷新就会有一个问题。例子:假如首页key失效时间为12小时,中午12点刷新数据,刚好有个热点活动,用户大量涌入,缓存key全部都失效了,此时数据查询全部落在数据库,数据库可能直接挂掉。重启数据库后又会直接挂掉。这就是缓存雪崩的现象。缓存雪崩是大面积的key失效。或者缓存挂掉

- 阅读全文 -

03-Redis基础

部分来源,自己总结。https://juejin.cn/post/6844903982066827277你们的项目为啥要用到redis传统关系型数据库例如mysql已经不适用与所有的场景,比如:秒杀扣库存,app小程序首页访问高峰等访问流量高峰,所以引入缓存中间件。redis的数据结构有哪些?String list set sortedset hash应用场景:String ->如果有大量的

- 阅读全文 -