标签:语句 mapper 缓存 HR 面经 华资 二级缓存 刷新 commit
1.自我介绍
2.聊了一下项目
3.Java中有哪些常用集合
4.线程安全的是哪些?
HashTable Vector
Collections包装方法实现的线程安全集合:
// 实际上是一个返回了一个内部类 它重写了要创建集合的方法,为其添加了synchronized代码块,竞争的锁是:Object mutex
Map<Object, Object> map = Collections.synchronizedMap(new HashMap<>());
juc包下的集合
5.spring中bean的作用域?
singleton(单例)
prototype(原型)
request()
session()
global session()
6.Mybatis中一二级缓存
使用缓存之前需要pojo实现序列化接口,是为了将缓存数据取出时做反序列化操作。
一级缓存作用于一个sqlSession
一级缓存使用Hashmap实现缓存,当发生读数据会直接获取数据,没有缓存则从数据库中获取,发生增删改数据的commit;会清空缓存(刷新)。
HashMap<K, V>,key:hashcode + statementid+ sql语句;value: 映射的Java对象
二级缓存是作用于全局的也可以说是对于Mapper级别的缓存,对于多个sqlSession操作同一个mapper中的sql语句都起作用
如何开启二级缓存?
由于二级缓存是mapper级别的,所以要在对应的mapper中开启缓存标签。
核心配置文件 settings中配置 可以配置 刷新缓存周期
mapper文件 cache标签
对应语句 useCache = true
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
eviction:回收策略:FIFO LRU SOFT WEAK
flushInterval:刷新缓存间隔
size:引用数目
7.Mybatis中一二级缓存刷新时间
一级缓存刷新时间:增删改数据的commit;会清空缓存(刷新)。
二级缓存刷新时间:可以在配置文件中配置二级缓存的刷新周期,默认情况下,每执行一次commit;也就是增删改就会刷新二级缓存。也可以在sql语句标签上设置是否允许刷新。(这里的刷新就是清空缓存)。
面试体验很好
标签:语句,mapper,缓存,HR,面经,华资,二级缓存,刷新,commit 来源: https://www.cnblogs.com/sqzr316/p/16281988.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。