自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 mybatis源码剖析

mybatis源码剖析 mybatis开发demo InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); //获取SqlSessionFactoryBuilder SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //解析配置文件,获得SqlSessionFactory SqlSessionFactory sql

2021-05-06 16:35:31 68

原创 Mybatis的一级缓存和二级缓存

Mybatis的一级缓存和二级缓存 作用域 一级缓存的作用域是session 二级缓存的作用域是namespace 一级缓存 一级缓存交于Executor维护的,在BaseExecutor下有一个PerpetualCache类型的属性,这个就是一级缓存。因为每一个SqlSession都有一个Executor,即代表着,每一个Session都有着独立的一级缓存PerpetualCache。 当用户发起查询请求时,是SqlSession会先去缓存中查找,如果有数据就返回数据,如果,没有就再去数据库查找。 但是,

2021-05-05 20:48:30 102

原创 JAVA并发之ConcurrentHashMap源码分析

JAVA并发之ConcurrentHashMap源码分析 HashMap并不能在多线程下保证数据安全,为了适应并发场景JUC包下提供了ConcurrentHashMap。 ConcurrentHashMap与HashMap比较相似,底层都是数组+链表+红黑树。其最大区别体现在put方法中。 保证HashMap的线程安全,就是保证hashMap的数据的线程安全,其数据包括、底层维护的数组、链表、红黑树以及map的size的线程安全。带着这个思路,可以很清楚地看懂ConcurrentHashMap源码。 Con

2021-04-26 23:58:35 130 2

原创 Java并发之lock源码分析

Java并发之lock源码分析 程序员自己管理锁的释放 lock()方法 final void lock() { //判断当前锁的状态,即STATE的是否为0,如果是0的话就将state改为1,表示当前锁空闲,当前线程抢占成功 if (compareAndSetState(0, 1)) //将当前线程记录 setExclusiveOwnerThread(Thread.currentThre

2021-04-25 17:12:59 87

原创 java并发之volatile

多线程之volatile 作用:保证变量的可见性 可见性问题的由来: 由于CPU比内存以及磁盘的速度快得多,CPU操作一个变量需要等到内存、磁盘读取成功。这时的CPU会死等在这里,极大的影响了CPU利用率。为了解决这个问题、硬件工程师先是增加了高速缓存,事先让一些常用变量加载到高速缓存中,这样CPU就不需要等待内存加载成功,这样提高了CPU的利用率,但是体验还是不行。为了提升CPU的利用率,发明了线程,在CPU死等的时候去运行其他的内容,极大地利用了CPU资源。但是工程师没有满足,为了得到更快的运行效率,提

2021-04-23 15:49:14 81

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除