mysql基础知识学习之路 说说你们的JAVA学习历程是怎样的?
说说你们的JAVA学习历程是怎样的?
作为一个工作了7年的java老程序员,我学习java的历程是这样的。希望对你有帮助。
首先,要学习JDK的api,首先要学会使用它。对于一个初学Java的程序员来说,首先要学会使用JDK提供的api,这是特别重要和常用的,比如string api,collection api,IO api,thread api等等。实践的运用是打好Java基础的必由之路,然后每个api都要开始写demo,只有实践才能有很好的理解。
二、学习web相关内容一般是用Java语言开发企业级应用,所以web相关知识要有一定的储备。如果你想提供servlet,过滤器,器等。Java提供的,你需要真正明白其中的道理。机架都封装在这些周围。springmvc的核心是servlet:DispatcherServlet,struts的核心是过滤器。
三、学习常用框架在实际开发工作中,重点是提高开发效率。如果每一个内容都需要自己去实现,那么开发效率就大大降低了,所以需要学会使用常用的框架,比如spring,springmvc,m。Ybatis、struts、hibernate等基础框架需要学习使用,这样会节省我们很多时间。
第四,回归基础,研究JDK和各种框架的源代码。当你在开发中对Java驾轻就熟的时候,如果你想提高我们对其本质的理解,我们需要学习JDK的源代码,从而拓展我们对知识深度的理解。一些程序员说我可以全部使用它,而且需要看源代码吗?这是非常必要的。
本文只是粗略的讲解一下Java的学习过程。想跟老程序员学Java,请关注我的头条号。我会从Java源代码,各种框架源代码,并发开发,以文章的形式来写。
如何系统的学习JAVA?
java的整体生态和积累真的太大了。从1995年到现在20多年的积累,几乎涉及了计算机软硬件的方方面面。目前,我认为主人 s精通是指jdk本身和一些必要的数据结构,以及通用框架和面向对象的基本思想。
从11月初开始,我一直在学习java相关的知识。也有很多弯路。根据one s自身的积累,作者给出了一条自己认为合理的,有一定深度的学习路线。大致可以分为以下几个阶段。
1.第一,要尽可能打好基础数据结构和简单算法的基础。
可以快速学习一些简单的小系统,满足自己对软件学习的兴趣和最初的成就感。但是一定要回去认真夯实数据结构基础和简单算法。像这样的书就可以了。
2.熟练使用java类库和Java第三方工具框架。
学习使用java语法,尝试理解Java语法设计的逻辑。掌握jdk类库本身,以及各种第三方类库工具包和第三方框架的简单使用。在这里学习的时候,我推荐阅读《设计模式》、《代码整洁之道》、《spring源码解读》、《Spring揭秘》之类的书籍。
3.了解和学习jdk类库本身的应用源代码实现以及主流第三方框架的源代码和架构设计。
比如jdk本身的数据结构,比如二叉树,红黑树,treemap,异步包的包源代码,比如unsafe,同步阻塞队列,call-future,以及基于线程的类的实现,各个类库设计的结构和设计模式。彻底理解第三方框架的设计规划、理解、学习第三方框架的核心源代码。
当然,这可能涉及其他事务、分布式协议等。,此处不再展开。这个过程不会一蹴而就,可能需要大量的时间和技术洞察力。当然,在这个过程中可以理解《设计模式》、《代码整洁之道》、《spring源码解读与设计详析》、《Spring揭秘》之类的书。
4.了解jdk和jre作为jvm的原理和实现。
这里推荐读葛老师 s 《实战java虚拟机》,比较实用。很好理解。
首先可以从jdk自带的工具学习入手。
例如:日本联合技术统计署、日本联合分析计划、日本联合战略计划、日本联合战略计划、HSDB......................................................................................................................................................当然,作为初步的学习,我们只需要了解几个常用的命令,知道它们代表什么。毕竟第三方监控工具,包括jdk本身,也提供了三种可视化监控。
其次,了解jvm的运行和加载原理,了解类文件的结构。
在这个过程中,我们可以使用之前会用到的监控工具来了解jvm加载的基本原理。可以参考jvm标准的官方版本,学习理解类文件。在此基础上,我们可以使用classpy等工具来方便我们直接读取类文件。也您可以尝试支持类字节码级别的单步调试工具。你甚至可以尝试使用jvm汇编编码工具。
接下来,了解jvm垃圾收集机制的发展历史,以及各种主流垃圾收集器的工作原理。
这个过程其实很复杂。垃圾收集器有各种串行,并行,新声代/换和老龄,还有回收警戒线,满触发条件,各种基本参数和很少用的超参数,还有G1 H区,ZGC等等。。。幸运的是,GC不属于官方jvm规范的一部分。
然后,做一些jvm的练习和实战。
比如jvm常见故障排查和故障总结、性能调优、热加载、类字节码的动态操作、asm等。
最后,可以尝试实现自己的jvm。(当然这一步对于很多同学来说并不是必须的。)
这里我推荐几本书,也是彻底理解jvm规范的学习路径。最好自己实现垃圾收集器。
周老师;;s 《深入理解Java虚拟机》。
接下来是《深入嵌入式java虚拟机》和支持源代码。这个cldc的jvm源代码只有1M多。目前仍可在甲骨文官网下载。是一个非常精简的jvm实现。
接下来,你可以阅读《自己动手写java 虚拟机》。这本书的jvm实现是用go语言写的。当然很多都不是很合理。但是它们基本上遵循jvm规范。
这时候可以看看github上各种JVM的开源实现。有go,scalajvm,javainjava,ajvm,python-jvm,lua,还有各种版本的不同jvm实现。
当然,这些实现只是基本原则。
推荐你看《实战hotspot》豹子胆书,关注高级语言虚拟机的圈子。
当然,关于垃圾回收的书很少,下面是垃圾回收的经典书籍《The Garbage Collection Cookbook》。其实如果你对新的垃圾收集算法感兴趣,可以去知乎搜索相关论文和GC算法的开源演示。
当然,我的建议只是针对Java本身。
很想学java生态学,软件工程,计算机网络,大数据基础,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些都是互联网应用,避免不可避免的事情。
我只能建议我精通一般知识,精通研究方向和相关的生态学理解。
因为问题是针对java本身的。我赢了。;其他具体方向不展开。描述了大致的技术方向,没有其他答案详细讨论语法糖的水平。希望对主有帮助。
如有问题,欢迎关注回复,与我探讨。谢谢你。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。