自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis缓存并发操作可能存在的数据正确性问题

其实我想说的意思就是上图时间线表明的问题,即便是A线程使用双删除,但是在高并发情况下是否存在其他线程在线程B存入旧数据(就是M=400)到A线程再次删除这个时间段内有其他线程读取M,然后拿脏数据的M做判断去进行后续操作呢?假如这种情况是存在的,我的解决方案是定义一个public static final Map redisKeyMap = Maps.newHashMap();然后把放入redis的键全部放入这个集合,每次操作缓存时对相应的key加锁(不是说只要操作缓存就加锁),即synchronized.

2020-07-06 10:56:48 1118 2

转载 Spring Aop使用之避坑和cglib动态代理

我们都知道AOP本质上就是一个代理模式,但是因为Spring使用了CGLIB来实现运行期动态创建Proxy,如果我们没能深入理解其运行原理和实现机制,就可能遇到各种诡异的问题。1、举例反应现象假设我们定义了一个UserService:@Componentpublic class UserService { // 成员变量: public final ZoneId zoneId = ZoneId.systemDefault(); // 构造方法: public Use

2020-06-18 10:22:50 4072 4

原创 Java动态代理的实现方式

本篇文章着重分析的是jdk动态代理的实现过程,通过自己创建案例和对源码的一步步分析之后可以较为清晰的理解jdk动态代理的实现方式。首先我们先来看一下java常用代理方式的区别:1、静态代理VS动态代理代理类可以增强被代理对象的方法,可分为静态代理和动态代理。1.1 静态代理由程序员创创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。1.2 动态代理无需程序员自己声明代理类,是使用反射和字节码的技术,在运行期创建指定接口或类的子类(即动态代理类)以及

2020-06-17 16:51:30 875

原创 高并发及数据安全

在我们日常的编写的业务代码中经常会出现多个线程同时运行一段代码或者操作共同数据的情况,这时就会存在“线程安全”问题(多个线程同时运行同一段代码,如果每次运行和单线程运行的结果相同,就是线程安全的),也就是在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。在数据库中MYSQL默认的事务处理级别是’REPEATABLE...

2020-04-03 16:14:21 365

原创 关于对shiro跨域请求认证的解决方案

对shiro跨域请求认证的解决方案大家在写项目时可能会遇到前后端分离的情况,那么这个时候就会遇到跨域请求的问题。我们知道在web环境下http是一种无状态的通讯协议,要想记录和校验用户的登录状态必须通过session的机制来实现,浏览器是通过cookie中存储的sessionid来确定用户的session数据的,shiro默认也是采用这种机制。首先简要说一下怎样突破shiro跨域访问的限制,由...

2020-01-09 14:57:54 1356

空空如也

空空如也

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

TA关注的人

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