摘要: 这篇文章,我们将介绍什么是缓存穿透、缓存击穿与缓存雪崩,以及对应的解决方案。 1.缓存穿透 缓存穿透,是指查询一个不存在的数据,由于数据不存在,所以数据不会被缓存,每次查询都是从数据库中去查询。如果有人利用这个存在的漏洞去伪造大量的请求,那么很可能导致DB承受不了那么大的流量就挂掉了。 解决方案: 阅读全文
posted @ 2019-01-07 14:17 51life 阅读(3544) 评论(0) 推荐(2) 编辑
摘要: 1.定义 重入锁:能够支持一个线程对资源的重复加锁,也就是当一个线程获取到锁后,再次获取该锁时而不会被阻塞。 2.可重入锁的应用场景 2.1 如果已经加锁,则不再重复加锁,比如:交互界面点击后响应时间长,可能会多次点击,使用重入锁可防止后台重复执行。 2.2 如果发现该操作已经在执行,则等待一段时间 阅读全文
posted @ 2018-12-25 16:16 51life 阅读(702) 评论(0) 推荐(0) 编辑
摘要: java中的线程池是应用场景最多的并发框架,合理使用线程池能带来三个好处: 第一:降低资源消耗。通过重复利用已经创建的线程降低创建线程和销毁线程造成的资源消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,会 阅读全文
posted @ 2018-12-19 14:38 51life 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 1.Callable和Runnable 看Callable接口: 看Runnable接口: Callable和Runnable都代表着任务,不同之处在于Callable有返回值,并且能抛出异常,Runnable任务执行结束之后没有返回值。Callable一般和Future一起使用,可以获取任务返回结 阅读全文
posted @ 2018-12-19 13:57 51life 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 1.ConcurrentHashMap原理介绍(JDK1.7) 我们知道HashTable在并发情况下效率低的原因是所有访问HashTable的线程都必须竞争同一把锁,这就导致一旦一个线程获取了锁,其余所有的线程都必须处于等待状态。而ConcurrentHashMap使用的是锁分段技术,就是将数据分 阅读全文
posted @ 2018-12-17 10:54 51life 阅读(349) 评论(1) 推荐(1) 编辑
摘要: 本文分为两部分:一是JVM内存区域的讲解;二是常见的内存溢出异常分析。 1.JVM内存区域 java虚拟机在执行java程序的过程中会把它管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,这些区域有哪些呢?如下图: 1.1 程序计数器 程序计数器是一块很小的内存空间,它的作用可以看作是当 阅读全文
posted @ 2018-10-18 16:40 51life 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 对于本篇文章,将从四个概念来介绍:内存模型基础,重排序,顺序一致性和happens-before 1.内存模型基础 在并发编程中,有两个关键问题:线程之间如何通信和如何同步。由此而引出了两种并发模型:共享内存的并发模型和消息传递的并发模型。 1.1 消息传递的并发模型 该模型是指两个线程之间通过发送 阅读全文
posted @ 2018-09-29 10:12 51life 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 在对SQL的执行过程进行分析前,先看下测试demo: 整个的流程就是上面注释部分所写,加载配置文件 》加载映射文件 》为Mapper接口生成代理对象 》调用方法时,真正的执行逻辑是在invoke方法中。这篇文章就从MapperMethod类的execute方法入手,来分析SQL的执行过程。对于前面三 阅读全文
posted @ 2018-09-28 16:40 51life 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 关于synchronized,本文从使用方法,底层原理和锁的升级优化这几个方面来介绍。 1.synchronized的使用: synchronized可以保证在同一时刻,只有一个线程可以操作共享变量,并且该共享变量的变化对其他线程可见。它的使用方法有三种: 1.1 作用于实例方法 当synchron 阅读全文
posted @ 2018-09-26 10:47 51life 阅读(311) 评论(0) 推荐(1) 编辑
摘要: Mybatis中使用到了哪些设计模式呢?下面就简单的来介绍下: 1.构造者模式: 构造者模式是在mybatis初始化mapper映射文件的过程中,为<cache>节点创建Cache对象的方式就是构造者模式。其中CacheBilder为建造者角色,Cache对象是产品角色,可以看CacheBuilde 阅读全文
posted @ 2018-09-21 08:50 51life 阅读(9167) 评论(0) 推荐(0) 编辑