- 博客(6)
- 收藏
- 关注
原创 SpringBoot2.x +redis5.x读写分离配置
redis的主从复制我就不赘述了,各大博客都有写怎么配置的,我们来讲SpringBoot怎么配置读写分离:方法应该有多种:可能的实现有利用AOP动态的获取redis连接工厂并注入对应的实例本文的实现比较呆板,读写分离,主redis负责写,从redis负责读,有两个java配置类如下:附加:java Config(java配置类)是Spring的一种编码风格,其他两种编码风格为XML和注解,J...
2019-11-20 20:31:04 3014
原创 深入理解JDK动态代理《从手写模拟到源码剖析》
目录 一.java代理模式的实现 二.手写模拟JDK动态代理 三.JDK动态代理源码剖析正题一、java代理模式的实现 1.java中代理模式的实现方式java代理分静态代理和动态代理,java静态代理实现有两种:继承,聚合。java动态代理实现有两种:JDK动态代理,CGLIB代理。 2.静态代理和动态代理的主要区别和特...
2019-11-13 14:54:50 521
原创 关于JDK7HashMap多线程场景下扩容死循环问题的原因以及JDK8的解决方案
JDK7中HashMap扩容出现死循环的本质原因是,这个集合不是线程安全的,共享变量Node结点访问出错,当前线程在扩容到槽中最后一个节点B时,由于其他线程将最后一个节点B的next引用置成了A(下图),被当前线程看到了(实际情况是,没有同步措施的情况下,当前线程可能看到,可能看不到,和线程何时将自己本地内存的值刷新到主存有关,这里涉及JMM模型和内存可见性,如有不懂请百度),导致了当前线程多执行...
2019-11-14 20:44:23 558
原创 关于ThreadLocal的使用可能造成的内存泄露以及避免方案以及为什么使用弱引用
我们知道,每个Thread类中有一个ThreadLocalMap类型的threadLocals变量,即每个线程中都有一个自己的map,map中的key为ThreadLocal实例,value为要存储的值我们查看该Map的结构,发现里面有个内部类Entry,此Entry类型是构成map的结点结构,类似HashMap中的Node一样。我们在此发现一个问题,发现Entry中的key没有显式声明,...
2019-11-04 14:32:42 712
原创 JDK8中HashMap链表转红黑树的阈值为什么选8?为什么用红黑树做优化?
为什么会引入红黑树做查询优化呢?在平常我们用HashMap的时候,HashMap里面存储的key是具有良好的hash算法的key(比如String、Integer等包装类),冲突几率自然微乎其微,此时链表几乎不会转化为红黑树,但是当key为我们自定义的对象时,我们可能采用了不好的hash算法,使HashMap中key的冲突率极高,但是这时HashMap为了保证高速的查找效率,就引入了红黑树来优化...
2019-11-03 21:33:18 8778 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人