2016 - 2024

感恩一路有你

elasticsearch菜鸟教程 如何系统的学习JAVA?

浏览量:1404 时间:2023-09-14 22:53:48 作者:采采

如何系统的学习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和老年代,这些回收警戒线,clear触发条件,各种个样的基本参数和不怎莫用的超参数,以及G1的H区,ZGC等等。。。不错的是,GC并都属于jvm官方规范的一部分。

后再,动手制作一些jvm的实践和实战,

.例如,jvm比较普遍的故障排查和故障总结归纳,性能调优,热程序加载,class字节码的动态操作,asm等。

后来,可以不尝试基于自己的jvm。(肯定这个步骤,对很多同学来说不是什么前提是了)

这里我我推荐几本书,也是再次搞懂jvm规范的学习路径。最好自己基于垃圾回收器。

周老师的《深入理解Java虚拟机》。

接下来的事情是《深入嵌入式java虚拟机》和配套源码。这个cldc的jvm源码只能1M多。目前在oracle的官网上,依然是可以上网下载。是一个设计的很精简的jvm基于。

下一步,可以不去阅读《自己动手写java 虚拟机》。这本书的jvm实现方法是常规go语言编写。不过其中也有很多设计并并非更加合算。但基本都都不能违背了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本身。我就不再继续发动了攻击说其他详细方向了。具体描述的是大的技术方向,并没有什么其他答主现在这样,具体看去讨论语法糖这种级别。期望对提主极大帮助。

有任何问题,记得关注回复,与我讨论到。谢谢了。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。