java程序员该怎么自学 如何系统的学习JAVA?
如何系统的学习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和老年代,包括回收警戒线,wide触发条件,各种个样的基本参数和不怎莫得用超参数,和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本身。我就不再继续展开攻击说其他详细方向了。描述的是大的技术方向,却没其他答主这样,具体详细去继续讨论语法糖这种级别。我希望对提主所帮助。
有任何问题,欢迎关注快回复,与我讨论。谢谢啊。
自学java怎么入门?
总之编程语言的学习,更何况相对于有过编程经验的人来说,要抓语言的要注意元素,比如,每个语言完全应该有变量、函数、整数集(如数组、字典、类、结构体等)、流程控制(if-catch、break、continue等)、循环结构(for、while等),然后再再那就是语言自有的新语法。这样可以帮你快速入门。
可以说对于上面这些没有什么概念,此时反正不是需要极为很纠结这些概念的文字定义,只是肯定不断学习的书的或电子文档或者视频跟随天天练习c语言程序,一段时间自己能解决编译程序时的错误,变深自己对这些的认知和感觉。
书籍有很多,例如:
网上也有很多学习站点,如廖雪峰的官方网站:
廖雪峰的站点有两个优点就是,每章都会有一些小去练习,是这个可以真接在页面上编译程序尝试的,且每章到最后也有评论区可以不和博主也可以一起学习的人留个言交流。
如果没有楼主学习时还遇到了其他问题自己很难可以解决的,也可以不去搜索一些java学的群,群里也会有很多的学习资料,而还可以完全将自己的问题丢出与群友交流。
我希望还能够帮到你
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。