- 博客(7)
- 收藏
- 关注
原创 字节码技术及其相关
有没有感叹过 “卧槽!arthas好牛逼!卧槽!skywalking好牛逼!卧槽!sandbox好牛逼!那就来浅析一下这些牛逼的东西,是怎么工作的。上图就是它们用到的基本技术栈。上图就是他们的基本工作原理。很懵?我也是,这些够我学N年了,慢慢来。
2023-09-07 16:13:12
345
原创 面试系列之阻塞队列(BlockeQuery)
面试系列之阻塞队列(BlockeQuery)ArrayBlockeQuery:底层是数组 加入队和出队双指正的方式形成循环数组,减少数组移动的性能消耗。并且保证先进先出使用一个ReentrantLock加上两个Condition保证线程安全以及阻塞交互。由于入队和出队都使用同一把锁(入队和出队互斥),所以性能相对较低LinkedBlockingQueue底层采用单向链表的结构,head、tail指针,保证先进先出使用两把锁以及对应的两个Condition,将入队操作和出队操作分
2021-11-24 22:41:21
347
原创 spring源码 ---- 自动注入
spring源码 ---- 自动注入AutowiredAnnotationBeanPostProcessor 继承于 BeanPostProcessor。所以工作在bean生命周期的后置处理器阶段。自动注入,需要先找到注入点:注入点的注解是:Autowired 、Value和 Inject扫描属性和方法,依次判断是否为注入点(也就是判断是否包含Autowired 、Value和 Inject注解),然后加入注入点的集合。遍历注入点处理FieldElement 注入点Met
2021-11-22 14:53:41
138
原创 面试系列之线程池
面试系列之线程池基本参数:int corePoolSize:核心线程数int maximumPoolSize:最大线程数long keepAliveTime:非核心线程数最大存活时间TimeUnit unit: 时间单位BlockingQueue workQueue: 等待队列ThreadFactory threadFactory:线程工厂RejectedExecutionHandler handler:拒绝策略 (实现RejectedExecutionHandler类)addWo
2021-11-17 12:37:57
343
原创 面试系列之volatile(JMM)
面试系列之volatile(JMM)JMM模型:java并发编程中:可见性:当一个线程修改了共享变量的值,其他线程能够看到修改的值。顺序性:即程序执行的顺序按照代码的先后顺序执行。原子性:一个或者多个操作一起全部执行不能被中断或者全部不执行1.可见性:从JMM模型我们可以看出每个CPU都有自己的本地缓存,所以当多个CPU在操作同一个共享变量时会把共享变量读到自己的本地缓存中进行操作,但是操作完成之后并不会立即将结果写到主内存,由此产生了可见性的问题。所以在这种架构出来的时候就出现对 缓存
2021-11-16 16:02:31
371
原创 面试系列之AQS以及实现
面试系列之AQS以及实现AQS:特性:阻塞等待队列,共享/独占,公平/非公平,可重入,可中断AQS原理:AQS基于管程的MESA模型实现,依然存在同步队列和条件队列过程分析:非公平锁 final void lock() { if (compareAndSetState(0, 1)) setExclusiveOwnerThread(Thread.currentThread()); else
2021-11-15 16:04:46
443
原创 面试系列之synchronize
面试系列之synchronize 从两方面讲清楚:synchronize之锁升级过程: 偏向锁:偏向锁是利用对象头中的MarkWord存储偏向的线程Id。锁撤销必须到达安全点之后才能进行(锁撤销消耗性能的原因)偏向锁延迟:jvm在启动时会大量用到synchronize,而且大部分都存在竞争,所以为了效率在启用阶段是禁用偏向锁的。在启动完成4秒以后开启偏向锁(当然也可以通过参数指令关闭偏向锁延迟),当偏向锁延迟关闭或者jvm启动4s以后,创建的对象直接就是匿名偏向状态(锁状态为偏向锁状态,但是为偏
2021-11-14 12:36:33
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人