- 博客(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
1009
3
原创 redis以及BIO NIO IO多路复用
redis6以前单线程,6之后对于异步删除操作引入多线程,来完善自己,但是对于大部分命令,依旧是原子的。 redis压测 redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -t set 并发50 连接数10000 redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -q 大概写8w,读10wqps 点赞多线程的话 LongAdder redis incr redis为什么快 1.高效的八大数据结构,
2021-03-14 21:25:53
269
原创 查看高cpu流程
java -jar xxx & 启动服务 并获取服务的pid top -Hp 进程编号 10进制转换为16进制 printf ‘%x\n’ 5069 jstack 进程pid | grep 线程转换后的十六进制 -A10 jstack 4944 | grep 0x13ce -A10 jstack 4944 > /opt/wenti.log cat -n /opt/wenti.log | grep -A10 0x13ce 高gc的查看 jstat -gcutil 进程pid 毫秒 打
2021-03-14 21:24:09
132
原创 Synchronized锁升级
对象由对象头 实例数据 对齐填充构成 对象头由对象标记和类元信息构成 对象标记有 哈希码、GC标记、GC次数、同步锁标记,偏向锁标记 64位下讨论对象头有意义 Synchronized JAVA5之前涉及到用户态和内核态之间的切换; JAVA6之后内部优化 为了减少获取锁和释放锁所带来的性能消耗,引入了轻量级锁和偏向锁 由对象头中的MARK WORD根据锁标志位的不同而被恢复及锁升级策略 无锁—偏向锁----轻量级锁----重量级锁 一个线程访问时,偏向锁 两个线程轻量级锁 多个线程重量级锁 Synchr
2021-03-14 21:22:06
124
原创 hashmap总结
1.说说你对hash算法的理解 追问:hash算法任意长度的输入 转化为了 固定长度的输出,会不会有问题呢? 追问:hash冲突能避免么? hash基本概念就是把任意长度的输入通过hash算法后转化为固定长度的输出; 问题是不同的值经过hash算法后会计算出相同的hash值,发生hash冲突; hash算法没办法避免,只能尽量避免 2.你认为好的hash算法,应该考虑点有哪些呢? 算法效率高,长文本可以高效计算出hash值 hash值不能逆推出原值 分散,尽量降低hash冲突 3.HashMap中存储数据的
2021-03-14 21:18:49
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅