摘要: 1. 缓存穿透1.1 什么是缓存穿透?一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大, 就会对后端系统造成很大的压力。这就叫做缓存... 阅读全文
posted @ 2018-06-27 23:57 john8169 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1. 引子在高并发系统开发时有时候需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如 1000 次,来保护接口。2. 计数器 AtomicLong可以使用Java中的AtomicL... 阅读全文
posted @ 2018-06-27 23:43 john8169 阅读(4154) 评论(0) 推荐(0) 编辑
摘要: 1. 线程不安全的HashMap本节的代码均基于JDK 1.7.0_67HashMap是非线程安全的,HashMap的线程不安全主要体现在resize时的死循环及使用迭代器时的fast-fail上。1.1 HashMap工作原理1.1.1 HashMap寻址... 阅读全文
posted @ 2018-06-27 00:00 john8169 阅读(258) 评论(0) 推荐(0) 编辑