
获得徽章 0
- volatile 关键字
先说 volatile 解决了可见性、顺序性,根据可见性引出内存模型
内存模型(JMM):主内存 工作内存
引出可见性问题:解决可见性问题可以依靠加锁和加 volatile 关键字,加锁为什么能解决可见性?因为加锁会在加锁前强制的从主内存中找到最新的值刷新到自己的工作内存中。
volatile 为什么能解决可见性:因为它保证了一个线程修改自己的工作内存的某个变量,会强制失效其他工作内存中的变量,那么又引出一个问题,在多线程修改同一个变量的情况下,以哪个线程修改的变量为主?为了解决一致性的问题所以引出了缓存一致性协议,缓存一致性协议有 MSI 协议、MESI 协议,我们以 MSEI 协议为例子说一下,如果一个线程修改了 CPU 的缓存,那么会通知其他 CPU 中的缓存失效,那么这个通知和接收通知是如何做到的?就是通过CPU 的嗅探功能(不断监听 CPU 总线发出的指令)
嗅探会有什么问题:总线风暴,如果 volatile 修饰的变量过多,每次修改变量都会向总线发送失效指令,会造成总线风暴。所以根据情况选择使用 volatile 还是锁。展开1点赞 - 有榜样,目前所在的公司组内每个人都有我值得学习的地方
1. 对于技术的极致的追求,以及做事情的严谨
2. 向上汇报的一些小技巧,如何最大化的争取属于自己的利益
3. 千万不要做了百分之百的工作,却让人觉得做了百分之六十
4. 总结一下就是 清醒、自律、明得失、知进退展开评论点赞 - 下一阶段的规划是想要称为架构师:
所以目前正在朝着这方面努力,
第一建立自己的技术影响力,无论是在公司还是在技术圈中
第二是学习一些通用技术,比如与人沟通能力还有汇报的能力
第三也是最重要的,就是技术底蕴要深厚展开评论点赞 - 最容易踩坑的面试题:发散性的问题
比如
1. 如果让你设计一个开源中间件你会考虑什么
2. 设计一个系统应该考虑什么
3. 如何设计一个秒杀系统
如果没有系统性的接触过这类东西,或者没有自己的总结很容易答非所问,或者答的不够深展开评论点赞 - 作为后端面试,一定要准备常见的面试题比如
1. 平时如何进行JVM调优
2. MySQL相关(慢查询、死锁、索引、日志、锁相关的问题)
3. Java相关(HashMap底层原理、volatile 原理、常见设计模式)
4. 线上问题排查经验
5. 中间件各种问题展开评论点赞