- 博客(5)
- 收藏
- 关注
原创 怎么解决set注入造成的循环依赖
怎么解决set注入造成的循环依赖靠三级缓存区解决的,A,B两个类,A中有B,B中有A,都是通过setter方法进行依赖注入的。先去实例化A的实例,根据A的beanDefinition定义 拿到A class的无参构造方法后,反射创建出来了A的实例对象,这时候A的实例对象,是一个尚未进行依赖注入和init-method方法调用等等逻辑处理的早期实例,他还不能让业务层直接拿来去用,可以理解为早产儿,在进行后续加工处理之前,会把这个早产儿包装到一个ObjectFactory对象内,然后存放到spring的第三级
2021-03-14 21:27:06 943 3
原创 redis以及BIO NIO IO多路复用
redis6以前单线程,6之后对于异步删除操作引入多线程,来完善自己,但是对于大部分命令,依旧是原子的。redis压测redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -t set 并发50 连接数10000redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -q大概写8w,读10wqps点赞多线程的话 LongAdder redis incrredis为什么快1.高效的八大数据结构,
2021-03-14 21:25:53 213
原创 查看高cpu流程
java -jar xxx & 启动服务 并获取服务的pidtop -Hp 进程编号10进制转换为16进制printf ‘%x\n’ 5069jstack 进程pid | grep 线程转换后的十六进制 -A10jstack 4944 | grep 0x13ce -A10jstack 4944 > /opt/wenti.logcat -n /opt/wenti.log | grep -A10 0x13ce高gc的查看jstat -gcutil 进程pid 毫秒 打
2021-03-14 21:24:09 98
原创 Synchronized锁升级
对象由对象头 实例数据 对齐填充构成对象头由对象标记和类元信息构成对象标记有 哈希码、GC标记、GC次数、同步锁标记,偏向锁标记64位下讨论对象头有意义SynchronizedJAVA5之前涉及到用户态和内核态之间的切换;JAVA6之后内部优化为了减少获取锁和释放锁所带来的性能消耗,引入了轻量级锁和偏向锁由对象头中的MARK WORD根据锁标志位的不同而被恢复及锁升级策略无锁—偏向锁----轻量级锁----重量级锁一个线程访问时,偏向锁两个线程轻量级锁多个线程重量级锁Synchr
2021-03-14 21:22:06 86
原创 hashmap总结
1.说说你对hash算法的理解追问:hash算法任意长度的输入 转化为了 固定长度的输出,会不会有问题呢?追问:hash冲突能避免么?hash基本概念就是把任意长度的输入通过hash算法后转化为固定长度的输出;问题是不同的值经过hash算法后会计算出相同的hash值,发生hash冲突;hash算法没办法避免,只能尽量避免2.你认为好的hash算法,应该考虑点有哪些呢?算法效率高,长文本可以高效计算出hash值hash值不能逆推出原值分散,尽量降低hash冲突3.HashMap中存储数据的
2021-03-14 21:18:49 178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人