Java
文章平均质量分 89
梅友谦
这个作者很懒,什么都没留下…
展开
-
Spring如何避免IoC循环依赖
Spring如何避免IoC循环依赖 单例bean构造器参数循环依赖(无法解决) prototype原型bean循环依赖(无法解决) 对于原型bean的初始化过程中不论是通过构造器参数循环依赖还是通过setXxx方式产生循环依赖,Spring都会直接报错处理。 if(isPrototypeCurrentlyInCreation(beanName)) { throw new BeanCurrentlyInCreationException(beanName); } 在获取bean之前如果这个原原创 2021-06-13 18:51:24 · 324 阅读 · 0 评论 -
MyBatis缓存
MyBatis缓存 Mybatis总共支持两级缓存 一级缓存是SqlSession级别的缓存,在操作数据库时需要构造sqlSession对象,在该对象中有一个数据结构(HashMap)用来存储缓存数据,不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。 二级缓存是mapper级别的缓存,和namspace相关联,多个sqlSession去操作同一个Mapper的sql语句,多个sqlSession可以公用二级缓存,二级缓存是夸sqlSession的。 public void原创 2021-05-05 22:05:37 · 102 阅读 · 0 评论 -
Java高并发程序设计学习笔记(二)锁相关
锁的种类 Java中的锁大致分为:偏向锁,自旋锁,轻量级锁,重量级锁 锁的使用方式为:先提供偏向锁,如果不满足时,升级为轻量级锁,再不满足,升级为重量级锁。自旋锁是一个过渡的锁状态,不是一种实际的锁类型。锁只能升级,不能降级。 偏向锁 是一种编译解释锁。如果代码中不可能出现多线程并发争抢同一个锁的时候,JVM编译代码,解释执行的时候,会自动的放弃同步信息。消除synchronized...原创 2019-08-11 15:55:25 · 355 阅读 · 0 评论 -
Java高并发程序设计学习笔记(一)一些基本概念
并发级别:阻塞、无饥饿、无障碍、无锁、无等待 阻塞:一个线程是阻塞的,就是必须等待其他线程释放资源。使用synchronization关键字,或者在重入锁时就能得到阻塞线程。(悲观锁) 无饥饿:有优先级线程时,线程调度会优先满足优先级高的线程。。非公平锁的情况下系统允许高优先级的线程插队,可能导致低优先级的线程产生饥饿。 无障碍:最弱的非阻塞调度。可以同时进入临界区,但是如果检测到其它...原创 2019-08-11 16:06:12 · 102 阅读 · 0 评论