![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
understand
exception丶c
这个作者很懒,什么都没留下…
展开
-
缓存穿透、缓存击穿、缓存雪崩区别
一、读取缓存流程 一般我们读取缓存数据的流程: 先查缓存是否存在对应key的数据,有则直接在缓存取返回,如果不存在或者key过期时则读数据库; 从数据库读是否存在数据,有则更新缓存并返回,没有则返回null 二、缓存穿透 查询一个缓存中和数据库都不存在的数据,如果频繁进行这种操作将会对数据库造成较大的压力,进行这种操作很大可能是攻击者。 建议:可以采用设置空值-key的缓存并设置较...原创 2019-10-11 20:53:00 · 199 阅读 · 0 评论 -
深入理解java synchronized使用方式与底层原理
synchronized简介 synchronized是java的关键字,用于修饰方法(或代码块)来实现同一时间只有一个线程可以访问该方法(或代码块)。 synchronized的三种使用方式 1.修饰实例方法:该修饰本质同步的是对象,即当线程A执行method方法,其他线程无法访问该对象的任意同步方法。 /*同步实例方法 同步对象*/ public synchronized v...原创 2018-12-03 12:23:46 · 159 阅读 · 0 评论 -
JAVA锁 总结
一.自旋锁 定义:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。 优点:自旋锁不会使线程状态发生切换,一直处于用户态,即线程一直都是active的;不会使线程进入阻塞状态,减少了不必要的上下文切换,执行速度快。 缺点:如果某个线程持有锁的时间过长,就会导致其它等待获取锁的线程...原创 2019-05-31 17:09:36 · 206 阅读 · 0 评论