摘要:1、穿透 概念:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库 解决: 1.设置空值缓存:对于那些后端不存在的数据,在Redis中设置一个空值(null或空对象)缓存,以避免重复的后端访问。 2.、布隆过滤器:布隆过滤器是一种数据结构,用于快速判
阅读全文
摘要:mybatis 执行流程原理 Mybatis底层封装了JDBC,使用了动态代理模式。创建SqlSession,执行Executor mybatis 缓存 一级缓存(本地缓存) sqlSession级别的缓存,一级缓存一直是开启的,它实质上就是sqlSession级别的一个Map 与数据库同一次会话期
阅读全文
摘要:HashMap的数组结构 底层使用hash表数据结构,即数组和链表或红黑树 1,当我们往HashMap中put元素时,利用key的hashcode重新计算出当前对象的元素在数组中的下标 2,储存时,如果出现hash值相同的key,会有两种情况 a.如果key相同,则覆盖原始值 比入第一次存储的key
阅读全文
摘要:模型-视图-控制器的设计模式,将程序进行分层解耦 springmvc 执行流程 (1)用户发送请求至前端控制器(DispatcherServlet) (2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle; (3)处理器映射器根据请求
阅读全文
摘要:什么是循环依赖 循环依赖指的是两个或多个Bean之间相互依赖,并且形成了一个环形依赖关系。例如,Bean A依赖Bean B,BeanB依赖Bean C,Bean C又依赖Bean A,这样就形成了一个循环依赖。在Spring容器中,出现循环依赖会导致Bean无法被正确创建,进而抛出异常,造成应用程
阅读全文
摘要:1.Redis是完全基于内存的,绝大部分请求是纯粹的内存操作,这个数据存在内存中,类似于HashMap,而HashMap的优势就是查找和操作的时间复杂度都是0(1); 2.数据结构简单,对数据操作也简单,redis中的结构都是特殊设计的; 3.采用单线程,不存在多进程和多线程导致的切换而消耗CPU,
阅读全文
摘要:Redis以键值对的形式储存,建的类型只能为字符串,值支持多种数据 1.String 2.hash 3.list(有序,可重复) 4.set(无序,不可重复) 5.zset(不可重复,基于score实现)6.位图(Bitmap)7.地理位置(Geospatial):经纬度
阅读全文
摘要:应用场景:验证码接口防刷 AOP:面向切面编程。在不改变源代码的情况下对源代码进行功能加强 1 @Aspect 2 @Around(value = "pt()") 3 public ObjectcacheAdvice(ProceedingJoinPoint pjp) { AOP 底层原理: 动态代理
阅读全文