![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Cache
qb170217
这个作者很懒,什么都没留下…
展开
-
缓存穿透与缓存雪崩
缓存穿透什么是缓存穿透?一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 如何避免?1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。2:对一定...原创 2018-08-10 10:05:01 · 92 阅读 · 0 评论 -
彻头彻尾理解 ConcurrentHashMap
摘要: ConcurrentHashMap是J.U.C(java.util.concurrent包)的重要成员,它是HashMap的一个线程安全的、支持高效并发的版本。在默认理想状态下,ConcurrentHashMap可以支持16个线程执行并发写操作及任意数量线程的读操作。本文将结合Java内存模型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制,包括其在JD...转载 2018-08-17 10:08:22 · 438 阅读 · 0 评论 -
如何使用Future和ConcurrentHashMap实现一个线程安全,高效,无缓存污染的缓存
几乎所有的服务器应用程序都会使用某种形式的缓存。重用之前的结果,以及来降低延迟,提高吞吐量。 像许多重复发明的轮子一样,缓存看上去非常简单。然而,简单的缓存可能会大大提升系统的瓶颈。我们现在首先来实现一个简单的缓存,通过一步步深入来构建一个并发安全且高效的缓存。 构建场景:我们的系统中有一个比较耗时的查询操作,定义为searchUser,如果不使用缓存那么我们会每次都去数据库进行一个耗时的查询...转载 2018-08-15 10:29:45 · 515 阅读 · 0 评论 -
基于ConcurrentHashMap实现带时限的缓存
我们都知道利用缓存可以提高系统的效率,那该如何运用缓存了?在我的项目中,有个业务需要经常访问一张配置表,而配置表的内容是很少变化的,此时就可以利用缓存,减少服务器与数据库之间的频繁交互,从而提高效率。实现起来非常简单 一、创建缓存类package cache; import java.util.Map;import java.util.concurrent.Concur...转载 2018-08-15 10:19:32 · 3845 阅读 · 2 评论 -
自定义缓存实现ConcurrentHashMap
import java.util.Map;import java.util.WeakHashMap;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock; publ...转载 2018-08-15 10:16:59 · 429 阅读 · 0 评论 -
Java-ConcurrentHashMap实现缓存、异步
Java-ConcurrentHashMap实现缓存、异步MyCache.javapackage cn.pangpython.test.cache;/** * Created by pangPython on 2017/9/25. * * 缓存实体类 */public class MyCache { private String sessionID;//key ...转载 2018-08-15 10:04:57 · 662 阅读 · 0 评论 -
google Guava Cache使用--向本地缓存的,轻量级的Cache,适合缓存少量数据
前言项目中需要按照时间维度定期清理map中的数据,清理数据时还需要有个回调能够做点其他事情,此场景使用Guava Cache非常合适,因此对Guava Cache做个总结。在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来需要选择不同的cache,比如分布式缓存如Redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache。之前用spring...转载 2018-08-07 16:47:22 · 11379 阅读 · 1 评论 -
Java的Executor框架和线程池实现原理
一,Java的Executor框架1,Executor接口 public interface Executor { void execute(Runnable command); } Executor接口是Executor框架中最基础的部分,定义了一个用于执行Runnable的execute方法,它没有实现类只有另一个重要的子接口Executo...转载 2018-08-14 16:07:07 · 940 阅读 · 0 评论 -
ExecutorService 的理解与使用
接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。ExecutorService 样例这里有壹個简单的使用Java 实现的 Ex...转载 2018-08-14 16:05:16 · 130 阅读 · 0 评论 -
Java ExecutorService四种线程池的例子与说明
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub }}).start();那你就out太多了,new Thread的弊端如下...转载 2018-08-14 16:04:28 · 360 阅读 · 0 评论 -
微信公众号扫码登录后,只允许一个人登录,还是允许同时多人登录
1. 只允许一个人登录:每个人登录后保存的cookie.key都一样,但是保存的cookie.value不一样保存cookie和缓存: //loginName = loginName + Constant.QLSKEY_SPLITTER + RandomStringUtils.randomAlphabetic(3); Cookie coo...原创 2018-08-23 12:47:34 · 9578 阅读 · 1 评论