ssm框架整合的个人说明 如何系统的学习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的开源实现方法了。有play,scalajvm,javainjava,ajvm,python-jvm,lua,各个版本各个不同的jvm利用。
当然,这些实现方法都只不过基本原理。
后面推荐一下你上去看《实战hotspot》豹子书,查哈高级语言虚拟机的圈子。
其实,垃圾回收的书籍比较少,这里我还是推荐推荐给你垃圾回收的最经典书《The Garbage Collection Cookbook》。但是对新的垃圾回收算法有兴趣,可以去知乎搜索相关的论文和GC算法闭源实现程序的demo。
5.其实,我的建议只不过根据Java本身。
完全要至少几乎才能学好java生态,软件工程,计算机网络,大数据基础知识,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些也是做互联网应用,无法躲闪的。
不能建议,通用知识能熟练,钻研方向全精通,咨询生态了解。
的原因提问是对于java本身。我就再次发动说其他具体一点方向了。具体解释的是大的技术方向,并没有什么其他答主现在这样,具体详细去继续讨论语法糖这种级别。只希望对提主有不帮助。
有任何问题,记得关注回复,与我再讨论。谢谢了。
万能的头条,一个没有工作经验的Java程序员需要掌握多少技术?
两种情况
1.老系统是需要手中掌握jspjqueryspringMVCmybatismysqlpostgreSqloracleredis定时任务存储过程
2.新系统springbootspringcloudMQjava8mybatisspringsecurityspringdataredis数据库
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。