自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySql的间隙锁和不可重复读

SQL标准中DB隔离级别有:read uncommitted:可以读到其它transaction 未提交数据read committed:可以读到其它transaction 已提交数据repeatable read:一个transaction中相同的查询,每次获取的结果是一样的serialize:所有操作串行脏读 即一个transaction 可以读到另一个的未提交数据。不可重复读 即一个transaction 中,两次相同的查询会读到不一样的结果。幻读 一个transaction中,

2022-03-05 21:14:37 708

原创 currenthashmap线程安全的原因

1 线程安全的hash表初始化由上文可知ConcurrentHashMap是用table这个成员变量来持有hash表的。table的初始化采用了延迟初始化策略,他会在第一次执行put的时候初始化table。可通过sizeCtl保证线程安全。成员变量sizeCtl在ConcurrentHashMap中的其中一个作用相当于HashMap中的threshold,当hash表中元素个数超过sizeCtl时,触发扩容; 他的另一个作用类似于一个标识,例如,当他等于-1的时候,说明已经有某一线程...

2022-03-05 20:19:41 7630

原创 hashmap线程不安全的原因

1 扩容时可能造成死循环,扩容时会造成死锁,形成环形链表;或者造成扩容大小不一致等问题2 多个线程put的时,get的值可能不一致,put的操作不是原子性的3 删除键值对的时候,会删除刚刚修改的位置元素扩容操作时:这个操作会新生成一个新的容量的数组,然后对原数组的所有键值对重新进行计算和写入新的数组,之后指向新生成的数组。当多个线程同时检测到总数量超过门限值的时候就会同时调用resize操作,各自生成新的数组并rehash后赋给该map底层的数组table,结果最终只有最后一个线程生成的新数组被

2022-03-05 18:23:29 2865

原创 死锁的优化

死锁的四个必要条件:请求和保持、互斥、不可剥夺、循环等待。-死锁条件-----破除方法--请求和保持 : 预先分配互斥:虚拟资源不可剥夺:可剥夺,死锁检测之后就中止最后导致死锁的进程循环等待:按序申请资源1. 正确的顺序获得锁如果必须获取多个锁,我们就要考虑不同线程获取锁的顺序。上面的例子出现死锁的根本原因就是获取所的顺序是乱序的,超乎我们控制的。上面例子最理想的情况就是把业务逻辑抽离出来,把获取锁的代码放在一个公共的方法里面,让这两个线程获取锁都是从我的公共的方法里

2022-03-05 17:58:15 180

转载 事务注解失效

事务注解 @Transactional 失效的3种场景及解决办法_HollisChuang's Blog-CSDN博客@Transactional第一种Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。例如以下代码,定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法@Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。这里分析 的原因是,@Transa.

2022-03-05 17:38:08 237

原创 IOC和AOP

IOCioc是一种设计思想,指的是将程序中原本有我们手动创建对象的控制权,在使用spring后,将这个控制权交给spring容器进行控制管理,由spring来管理对象的生命周期和对象的依赖关系。ioc由专门的容器来创建对象,将所有的类都方法哦spring容器中,当我们需要某个对象的时候,不在需要自己主动去new了只需要告诉spring容器,然后spring容器就会把对应的对象返还给你。传统的应用程序都是由我们在类内部主动创建依赖对象,从而导致类的耦合度高,有个springioc之后把创建和查找依

2022-03-05 17:21:55 575

原创 判断类是否相等以及类加载器

两个类是否相等取决于是否由统一的类加载器加载,如果他们来自不同的类加载器,哪怕这两个类来自同一个class文件他们也不相等。类加载流程加载:类加载过程的一个阶段:通过一个类的完全限定查找此类字节码文件,并利用字节码文件创建一个Class对象验证:目的在于确保Class文件的字节流中包含信息符合当前虚拟机要求,不会危害虚拟机自身安全。主要包括四种验证,文件格式验证,元数据验证,字节码验证,符号引用验证。准备:为类变量(即static修饰的字段变量)分配内存并且设置该类变量的初始值即0(如s

2022-03-05 11:30:54 669

转载 多态理解及实现原理

面试中学习

2022-03-05 10:38:23 1634

转载 狂神说SQL总结

MySQL01 https://blog.csdn.net/qq_33369905/article/details/105828923?spm=1001.2014.3001.550102 https://blog.csdn.net/qq_33369905/article/details/105828926?spm=1001.2014.3001.550103 https://blog.csdn.net/qq_33369905/article/details/105852675?spm=1...

2021-06-03 21:11:48 331

空空如也

空空如也

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

TA关注的人

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