java逆向方法 如何系统的学习JAVA?
如何系统的学习JAVA?
java的整体生态和积累知识确实是太大了。95年一直20多年的积累,几乎涉及到计算机软硬件的方方面面。我依我之见就其实,提主所说的全精通,是指jdk本身和一些必要的数据结构在内广泛框架和面向对象的基本上思想吧。
从11年初到现在,总是在学习java相关的知识。其中也走了不少弯路。按自己的积累,具体提主一个自其实合算且有是有深度的学习路线。确切分下面几个阶段吧。
1.必须应尽可能会的打牢基础的数据结构和简单的算法基础。
是可以去急速的学习一些简单的一百头系统,来满足软件学习的兴趣和初期成就感。但,你必须回过头,观察的短时间内数据结构基础和简单点算法。类似这种书就可以不。
2.非常熟练不使用Java类库和java第三方工具框架。
怎么学习不使用java的语法,一段时间理解Java语法电脑设计的逻辑。熟练的掌握掌握jdk第三方库本身,以及各种第三方类库工具包和第三方框架的简单的使用。这里自学的同时,帮我推荐看看《设计模式》,《代码整洁之道》,《spring源码解读》,《Spring揭秘》等这一类的书集。
3.理解怎么学习jdkjava代码本身的应用源码实现方法和通吃第三方框架的源码和架构设计。
例如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和老年代,在内回收警戒线,large触发条件,各种个样的基本参数和不怎莫带的超参数,包括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本身。我就不再继续发动了攻击说其他具体方向了。详细解释的是大的技术方向,完全没有其他答主那样,具体去讨论语法糖这种级别。希望对提主所帮助。
有任何问题,欢迎大家关注解除,与我讨论。谢谢了。
有什么冷门但好用的软件呢?
EssentialpimPRO:日程管理和知识管理的大神级软件,惠普、三星、佳能等比较知名公司的选择。
不仅这个可以拿出来日程管理软件,还可以以及知识管理软件:
单独的数据库,确保全安全。变化莫测是从wifi歌词同步:
该软件能够得到国际大牌公司同意:
这样一款软件,价格的确高。
不过,如果没有你愿意去,可以不选择类型河蟹版。
话一说完了比较传统知识管理软件,有刻寒也很太热门的双链笔记软件:
简单的清楚看看什么是双链笔记,不需要弄懂古怪概念,和比较热门的知识管理软件NOTION做一个比较比较:
当然,roamedit未来的发展空间和底层架构都比NOTION大短短一圈。
Roam到底是适合干什么,能能够解决什么问题?
简单理解,应该是:让知识能用
相似下面的图:
为什么这样的图能让知识更管用呢?
看下图案例(软件-全世界的界面):
知识之间、信息之间建立起关联,如果能明白了任何一个关键点,就能顺藤摸瓜的构建体系整个知识大厦。
这才是真正的用处、能用的知识。
软件界面(太复杂,拉轰并不在正式慢慢阶段):
XYplorer:文件管理的超冷门超极为强大软件一位大V这样评价它:
看下它酷炫又实用点的界面:
当然还这个可以中,选择200元以内软件:
qdir
qttabbarclover
onecommander
tc
讯读PDF:拉轰目前如果说好是的PDF软件,没有之一
下面的思维导图是目前的推荐软件:
拉轰出品,必属精品
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。