我经常能听到一些同学困惑,“面试造火箭,天天拧螺丝”,每天进行重复的业务开发,似乎自己的能力被日常工作限制,无法突破提高自己的能力水平。
难道懂得如何造火箭,还能没有实际价值吗?
初始的表现是,非常低的负载下,CPU 利用率就已经超过 80%。首先,通过第 33 讲的类似过程,定位问题在于低效实现导致的高 CPU 占用问题,利用 Go Profiling 发现热点代码,据此快速查出一个最频繁操作的算法复杂度是 nlogn。
修改为 logn 复杂度算法后,系统又表现出了新的特征,随着负载压力的提高,CPU 利用率无法超过 60%,内存、I/O 也还有很大余量,吞吐量虽然已经有数量级提高,但还是达不到设计目标。
进一步分析发现在某共享模块,竟然有可观的同步开销,原来不必要的共享以及其实现内部采用的一些线程安全手段,限制了系统的扩展性。将该模块修改为非共享实例后,CPU/ 内存等计算资源就得到了充分利用,吞吐量基本达到理论峰值。
技术选择背后的逻辑
Java 核心知识点和能力出发 典型回答和考点分析,还会剖析 Java 核心知识点,将其讲清讲透,让你彻底领悟题目背后所考察的能力,帮你梳理复习 Java 知识体系 通过这个专栏,提升 Java 技能
∆扫码试看或订阅
新手阶段
新手阶段
到今天),比如:
第 2 讲 | Exception 和 Error 有什么区别?
第 3 讲 | 谈谈 final、finally、finalize 有什么不同?
第 4 讲 | 强引用、软引用、弱引用、幻象引用有什么区别?
高级新手
高级新手
面对没见过的、一定规模的或者较高标准的问题时无所适从,具体表现为“领导,你看这样行吗?”。没做过互联网高并发应用,难道就不能对并发编程有相对深入的思考吗?比如,习惯了使用 Executors,你有没有思考过不同的线程池到底适合什么场景?当前的实现在未来业务量增长下可能出现什么问题?(参考第 21 讲 | Java 并发类库提供的线程池有哪几种?分别有什么特点?)
无法独立提供有说服力的、有深度的分析、设计和实现,比如业务系统运行一段时间就变慢,调整 Heap 大小,似乎仍然 OOM。目前团队处理的方式就是重启服务器,有没有想过去发掘真正的原因,真正去解决它?(参考第 26 讲 | 如何监控和诊断 JVM 堆内和堆外内存的使用?)
第 6 讲 | 动态代理是基于什么原理?
第 9 讲 | 对比 Hashtable、HashMap、TreeMap 有什么不同?
第 11 讲 | Java 提供了哪些 IO 方式?NIO 如何实现多路复用?
第 18 讲 | 什么情况下 Java 会产生死锁?如何定位、修复?
第 27 讲 | Java 常见的垃圾收集器有哪些?
白盒的视角看待技术内部,系统性的思路掌握普遍规律
∆扫码试看或订阅
胜任者
如何成长为团队的核心成员?
独立负责做 GC 调优,即使没有历史经验,也能给出有说服力的方案。(参考第 28 讲 | 谈谈你的 GC 调优思路?)
在 JVM 领域有充足的技术经验和知识储备。(第 25 讲 | 谈谈 JVM 内存区域的划分)
全面评估评估后台变慢等问题的复杂度、风险点、解决的可能性。(参考第 33 讲 |Java 后台服务明显变慢,谈谈你的诊断思路?)
对于所谓本质的思考和理解,能听懂深入的抽象观点。
第 39 讲 | 谈谈常用的分布式 ID 的设计方案?Snowflake 是否受冬令时切换影响?
第 36 讲 | 谈谈 MySQL 支持的事务隔离级别,悲观锁和乐观锁的原理和应用场景?
精通者和专家
提炼并发工具类的一般性指导方法。(参考第 19 讲 | Java 并发包提供了哪些并发工具类?)
告诉团队如何写出安全的 Java 代码,防范看似安全下隐藏的风险。(参考第 32 讲 | 如何写出安全的 Java 代码?)
借鉴 Java/JVM 中的一些技术,从基础能力上提高自身平台的能力。例如,PHP 7 中引入的 JIT,带来了极大的性能提升,第 35 讲中对 JIT 的介绍,就有了新的用武之地。(参考第 35 讲 | JVM 优化 Java 代码时都做了什么?)
如何通过 Container-Aware 技术,提高 Kubernetes 集群中 JVM 负载的可靠性。(参考第 30 讲 | Java 程序运行在 Docker 等容器环境有哪些新问题?)
创造某一类问题的解决方法。例如,似乎 Java 工程师动不动就是 Happen-Before,除了耍酷,能不能从更高的高度看待:JMM 是如何实现了编译器工程师、JVM 工程师、Java 开发者甚至不同厂商之间的一致性规范?如何创造性地避免了早期 C++ 内存模型在不同厂商之间的混乱?(参考第 29 讲 | Java 内存模型中的 happen-before 是什么?)
限时福利
∆扫码试看或订阅
专栏读者评价
专栏目录
点「阅读原文」,最低
转载:https://blog.csdn.net/hollis_chuang/article/details/100980685