从事java程序开发三年多,从第一年到现在,一直处于分析业务需求,完成业务功能,功能中需要使用什么技术,上网查,查到有类似的功能代码,就拷贝过来修修改改,极少时候会因为功能的需求去查看新技术的资料,但是大多数也是浅尝辄止。其实自己也知道这样的状态对自己的伤害很大,甚至会最后让自己丢了饭碗,扯远了,现在开始以【java虚拟机】作为我第一个深度学习的目标。
主要参考资料:极客时间《深入拆解java虚拟机》、书本《自己动手写java 虚拟机》。
了解java虚拟机有如下(但不限于)好处:
1:java虚拟机提供了许多配置参数,用于满足不同应用场景下,对程序性能的需求。学习java虚拟机,我们可以根据自己的应用,最优化匹配运行参数。如下,可以看出我的虚拟机默认的是hotspot
2:java虚拟机本身是一种工程产品,在实现过程中自然存在不少局限性。学习java虚拟机,可以更好地规避它在使用中的BUG,也可以更快地识别java虚拟机中的错误。
3:java虚拟机拥有当前最前沿、最成熟的垃圾回收算法实现,以及及时编译器实现。学习java虚拟机,我们可以了解背后的设计决策,今后再遇到其他代码托管技术也能触类旁通。
4:java虚拟机发展到了今天,已经脱离java语言,形成了一套相对独立的、高性能的执行方案。除了java外,Scala、clojure、groovy,以及时下热门的Kotlin,这些语言都可以运行在java虚拟机之上。
在日常的开发工作中,沉侵在业务中的我们,大多数时候只需要调用核心类库的API,就能完成业务功能,如果核心类库的API是数学中的公式,那java虚拟机便是推导公式的过程,掌握数学公式固然可以应付考试,但是了解背后的推导过程更加有助于记忆和理解,并且在遇到没法套公式的情况下,我们也能触类旁通。
无面试题总结。