eclipse上机遇到的问题及解决方法 如何系统的学习JAVA?
如何系统的学习JAVA?java的整体生态和积累确实是是太大了。95年到现在为止20多年的积累,简直牵涉到计算机软硬件的方方面面。我不提就认为,提主所说的精通满,是指jdk本身和一些必要的数据结构以及
如何系统的学习JAVA?
java的整体生态和积累确实是是太大了。95年到现在为止20多年的积累,简直牵涉到计算机软硬件的方方面面。我不提就认为,提主所说的精通满,是指jdk本身和一些必要的数据结构以及具体方法框架和面向对象的基本思想吧。
从11年初到现在,一直在学习java相关的知识。其中也走了不少弯路。按自己的积累,给出提主一个自其实合理且有肯定会深度的学习路线。大致分下面几个阶段吧。
1.简单的方法应尽很有可能的打牢基础的数据结构和简单的算法基础。
可以不去飞快的学习一些简单的大型系统,来满足软件怎么学习的兴趣和初期成就感。但,一定得转过头,一遍的培养数据结构基础和简单算法。不同于这种书就也可以。
2.比较熟练使用Java类库和java第三方工具框架。
去学习可以使用java的语法,接触明白Java语法啊,设计的逻辑。熟练的掌握完全掌握jdk开发库本身,包括各种第三方类库工具包和第三方框架的简单啊使用。这里学的同时,我推荐看看吧《设计模式》,《代码整洁之道》,《spring源码解读》,《Spring揭秘》等这一类的书集。
3.理解学习jdk类库本身的应用源码实现和通吃第三方框架的源码和架构设计。
比如说jdk本身的数据结构二叉树,红黑树,treemap,以及异步包的unsafe,同步阻塞队列,call-future等等包源码,包括线程基础类的实现,各个类库设计的结构和设计模式。理解透彻第三方框架的设计思想,理解自学第三方框架的核心源码。
当然,这里面可能会会牵涉到到其他的事务,分布式协议等,这里不再继续展开攻击。这个过程不是一朝一夕,可能会要大量的时间和技术感悟。当然,《设计模式》,《代码整洁之道》,《spring源码解读与设计详析》,《Spring揭秘》等等这一大类书,在这个过程可以不理解大差不差了。
4.明白jdk,jre即jvm原理和实现。
这里我推荐一下看下张桂兰的《实战java虚拟机》,里面解释比较比较偏实操。容易上手明白。
简单的方法,也可以从jdk随机软件的工具自学来从哪里开始。
.例如:jstat,jmap,jstack,jps,jdb.......甚至也有真接这个可以窥视运行期间求实际内存数据的HSDB。当然,才是怎么学习正式,我们只必须表述正确的几个命令,并明白其代表上帝的意义再试一下。况且,第三方监控工具,以及jdk本身也提供了3个可视化的监控。
主要,理解jvm的运行运行程序原理,弄明白class文件结构。
这个过程我们可以借助于之前会带的监控工具,理解jvm运行程序的基本原理。是可以相关参考官方各个版本的jvm标准,学习看懂class文件。在此也可以可以使用如classpy等工具,比较方便我们直接阅读理解class文件。也可以试下接受class字节码级别的虚拟轴调试工具。甚至连,是可以接触用用jvm汇编编码工具。
下一步,明白jvm的垃圾回收机制发展历史和各个主流垃圾回收器的工作原理。
这个过程总之太紧张。垃圾回收器有各种串行,分头并进,新声代/swap和老年代,以及回收警戒线,full触发条件,各种个样的基本参数和不怎末用的超参数,包括G1的H区,ZGC等等。。。不错的是,GC并属于什么jvm官方规范的一部分。
后再,动手做一些jvm的实践和实战,
比如,jvm最常见的故障排查和故障总结归纳,性能调优,热加载,class字节码的动态操作,asm等。
结果,可以数次基于自己的jvm。(当然这个步骤,对很多同学来说不是什么要了)
这里我推荐推荐几本书,又是全部弄懂jvm国家规范的学习路径。好是自己实现方法垃圾回收器。
周老师的《深入理解Java虚拟机》。
这一次是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码唯有1M多。目前在oracle的官网上,仍然可以不直接下载。是一个设计太不精简的jvm实现。
接下来的事情,这个可以去阅读《自己动手写java 虚拟机》。这本书的jvm实现是采用go语言c语言程序。当然了其中也有很多设计并也不是非常合理。但基本都都不违背了jvm规范。
这会儿就可以不去去看看github上各种jvm的闭源实现了。有you,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个相同的jvm实现方法。
当然,这些实现方法都只是因为基本原理。
后面帮我推荐你看看《实战hotspot》豹子书,查哈高级语言虚拟机的圈子。
不过,垃圾回收的书籍比较好少,这里我还是推荐给你垃圾回收的超经典书《The Garbage Collection Cookbook》。只不过对新的垃圾回收算法有兴趣,可以去知乎搜索相关的论文和GC算法开放源代码实现的demo。
5.其实,我的建议只不过是根据Java本身。
真正要都没有达到几乎想学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些大都做互联网应用,无法躲开的。
不能见意,通用知识熟练,钻研方向精通,咨询生态了解。
由于提问是针对java本身。我就再次展开攻击说其他具体详细方向了。详细解释的是大的技术方向,并没有什么其他答主现在这样,具体详细去讨论到语法糖这种级别。希望对提主所帮助。
有任何问题,记得关注解除,与我继续讨论。谢谢。