自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式锁外有事务传入导致丢失更新的解决方案

在RR事务隔离级别下,当分布式锁外有事务时,高并发请求可能会出现先开启事务的线程后获得锁的场景。这种情况下先拿到锁的事务版本号更大,后拿到锁的事务版本号更小,那么后拿到锁的将无法查询到先拿到锁的线程提交的数据,导致将其数据覆盖。

2022-09-02 17:17:33 2061 2

原创 Spring Boot实现扩展字段功能

前言 接口接收的Json在反序列化的过程中,有时候会遇到一些无法识别的属性(unrecognized properties),通常我们只要在Json处理类库上设置为忽略即可,但有时候作为中间服务,上下游服务希望提供一个透传功能。本文分享Jackson、Fastjson两个Json处理类库下,实现扩展字段收集透传功能。 Fastjson扩展字段实现 使用Fastjson类库,核心思路是通过自定义参数解析器来实现1.自定义注解/*** * 自定义注解标记对扩展字段的处理 */@..

2020-07-31 18:07:50 1968

原创 java基础——LinkedBlockingQueue源码学习

目录类图记录方法说明核心源码解析总结 类图记录 方法说明 核心方法功能描述 方法定义 功能 private void signalNotEmpty() 队列不为空,唤醒一个take线程 private void signalNotFull() 队列不满,唤醒一个put线程 private void enqueue(...

2019-12-20 19:38:50 409

原创 postgresql:复合索引的最左侧匹配原则

什么是复合索引 基于表的多列上创建的索引,也叫联合索引。 为什么使用复合索引 减少开销:建一个复合索引(col1,col2,col3),实际相当于建了(col1),(col1,col2),(col1,col2,col3)三个索引。每多一个索引,都会增加写操作的开销和磁盘空间的开销。对于大量数据的表,使用联合索引会大大的减少开销!覆盖索引:对复合索引(col1,col2,col...

2019-12-13 16:07:45 7377

原创 jdk8 ::双冒号操作符(方法引用)

为什么: java8引入函数式接口之后,如果要在满足函数式接口编程的要求,需要对原来的方法进行改造,定义函数式接口,为了解决这个改造的问题,引入了"::"双冒号操作符。在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法,这种特性叫做方法引用(Method Reference)。 是什么 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方...

2019-11-19 21:52:11 596

原创 java并发编程--ThreadLocal

什么是ThreadLocal 1.先看一下jdk文档的定义This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its {@code get} or {@co...

2019-10-18 18:19:06 201

原创 Builder模式

先上uml图应用场景一:解决多构造函数的问题 如Person对象,在不同的场景需要使用到的参数不同,使用Set属性方式不优雅,如果属性值过多代码也会显得非常的冗余。另一种实现方式是在构造函数中初始化属性,如果场景复杂,那么构造器也需要增加很多,使用起来非常不方便,使用Builder则会灵活很多。public class Person { private Stri...

2019-10-08 16:46:51 93

原创 final关键词

final是java中的一个关键词,是域、方法和类的修饰符,通常的作用是来表述被修饰的内容是无法改变的。 final数据 作用:一个恒定不变的编译时常量可以减轻运行时的负担,或者我们还可以定义一个运行时被初始化再也无法被改变的值。(1)修饰成员变量,只能在变量定义时或构造函数中初始化,否则编译不通过。 //基本类型的成员变量必须只能在定义时初始化,但并不意味着编译时...

2019-09-30 23:32:15 111

原创 java实现跨域访问(CORS)及验证

老生常谈之跨域 1.什么是跨域问题:因为浏览器的同源策略规定某域下的客户端在没明确授权的情况下,不能读写另一个域的资源。而在实际开发中,前后端常常是相互分离的,并且前后端的项目部署也常常不在一个服务器内或者在一个服务器的不同端口下。前端想要获取后端的数据,就必须发起请求,如果不做一些处理,就会受到浏览器同源策略的约束。后端可以收到请求并返回数据,但是前端无法收到数据。同源怎么理解:...

2019-09-27 14:53:03 1215

原创 springboot 拦截器获取客户端信息

客户端数据处理import java.util.HashMap;import java.util.Map;public class RequestInfo { private static ThreadLocal<Map<String, Object>> request = new ThreadLocal<Map<String, Objec...

2019-09-23 23:27:39 529

原创 spring-aop Pointcut语法详解与示例

Spring AOP支持在切入点表达式中使用如下的AspectJ切入点指示符 切入点指示符(PCD) 说明 织入方式 execution 匹配表达式中定义的类型 动态织入 within 匹配表达式中定义的包、子包中定义的连接点 静态织入 @within 匹配包含某个注解的类中所有的连接点 静态织入...

2019-09-23 23:18:08 965

原创 spring-aop使用实例--切面打印方法执行时长等日志

业务场景:如题:切面打印方法的执行时长等日志信息实现流程: 引入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifact...

2019-09-23 17:31:22 750

原创 Cloneable

Cloneable接口:是一个标记型接口,内部没有任何方法或属性的定义,这个标记仅针对Object类的clone()方法,如果没有实现这个接口去调用clone()方法,会抛出CloneNotSupportedException。 浅拷贝与深拷贝 (1)浅拷贝:只拷贝对象和对象基本类型变量,引用类型变量指向同一个地址(2)深拷贝:拷贝对象、对象基本类型变量,引用类型变量...

2019-09-18 14:28:36 188

原创 多线程与事务回滚

使用Callable接口获取并发任务结果,实现对线程异常的感知并重新抛出运行时异常实现事务回滚。

2016-05-10 14:43:08 11879

空空如也

空空如也

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

TA关注的人

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