caffeine实现原理(源码分析)

前言上篇文章介绍了常用的缓存框架,了解了目前内存缓存框架性能最好的是Caffeine本篇文章将详细从源码级讲解Caffeine内部实现原理,包含以下内容淘汰策略tinyLFUCaffeine内部接口关系loadputinvalidate操作的原子性缓存过期策略解析缓存淘汰算法缓存淘汰算法的作用是在有

@Cache源码分析

介绍Spring3.1引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache或者OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种annotation,即能够达到缓存方法的返回对象的效果。Spri

@Scheduled源码分析

补充内容ImportAware应用该接口同样也是需要配合@Import注解进行使用,其主要作用就是配合@Enable××通过开关的形式开启某个功能时进行各项属性值的初始化工作。其中比较典型的应用场景就是@EnableRedissonHttpSession查看@EnableRedissonHttpSe

Mybatis技术内幕笔记(二)

基础支持层基础支持层位于Mybatis整体架构的最底层,支撑着Mybatis的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块,不仅仅为Mybatis提供基础支撑,也可以在合适的场景中直接复用。解析器模块在Mybatis中涉及多个XML配置文件,因此我们首先介绍XML解析的

mybatis技术内幕笔记(一)

Mybatis整体架构Mybatis的整体架构分为三层,分别是数据支持层、核心处理层和接口层。基础支持层基础支持层包含整个Mybatis的基础模块,这些模块为核心处理层的功能提供了良好的支撑。反射模块Java中的反射虽然功能强大,但对大多数开发人员来说,写出高质量的反射代码还是有一定难度的。Myba

mybatis源码分析:mybatis中的动态代理使用的一些思考

概述mybatis中使用动态代理技术来实现当用户只提供接口时,mybatis提供对相应接口的实现的能力。这里之所以提供该能力主要的目的是通过该框架来将整体的各种数据库操作高度规范化,而不是给用户暴露相关接口,做到在操作数据库流程方面也就是对于封装JDBC实现高度的规范化。MapperProxyFac