如何系统的学习JAVA?
java的整体生态和积累真的太大了。从1995年到现在20多年的积累,几乎涉及了计算机软硬件的方方面面。目前,我认为主人s精通是指jdk本身和一些必要的数据结构,以及通用框架和面向对象的基本思想。
从11月初开始,我一直在学习java相关的知识。也有很多弯路。根据on《设计模式》、《代码整洁之道》、《spring源码解读》和《Spring揭秘》等书。
3.了解和学习jdk类库本身的应用源代码实现以及主流第三方框架的源代码和架构设计。
比如jdk本身的数据结构,比如二叉树,红黑树,treemap,异步包的包源代码,比如unsafe,同步阻塞队列,call-futur《设计模式》、《代码整洁之道》、《spring源码解读与设计详析》、《Spring揭秘》等等,都可以在这个过程中得到理解。
4.了解jdk和jr《实战java虚拟机》,他的解释更切合实际。很好理解。
首先可以从jdk自带的工具学习入手。
例如:日本联合技术统计署、日本联合分析计划、日本联合战略计划、日本联合战略计划、HSDB......................................................................................................................................................当然,作为初步的学习,我们只需要了解几个常用的命令,知道它们代表什么。毕竟第三方监控工具,包括jdk本身,也提供了三个可视化的监控。
其次,了解jvm的运行和加载原理,了解类文件的结构。
这在这个过程中,我们可以借助之前会用到的监控工具来了解jvm加载的基本原理。可以参考jvm标准的官方版本,学习理解类文件。在此基础上,我们可以使用classpy等工具来方便我们直接读取类文件。还可以尝试支持类字节码级别的单步调试工具。你甚至可以尝试使用jvm汇编编码工具。
接下来,了解jvm垃圾收集机制的发展历史,以及各种主流垃圾收集器的工作原理。
这个过程其实很复杂。垃圾收集器有各种串行,并行,新声代/换和老龄,还有回收警戒线,满触发条件,各种基本参数和很少用的超参数,还有G1H区,ZGC等等。。。幸运的是,GC不是官方jvm规范的一部分。
然后,做一些jvm的练习和实战。
比如jvm常见故障排查和故障总结、性能调优、热加载、类字节码的动态操作、asm等。
最后,可以尝试实现自己的jvm。(当然这一步对于很多同学来说并不是必须的。)
这里我推荐几本书,也是彻底理解jvm规范的学习路径。最好自己实现垃圾收集器。
周小姐《深入理解Java虚拟机》南部。
接下来是《深入嵌入式java虚拟机》和支持源代码。这个cldc的jvm源代码只有1M多。目前仍可在甲骨文官网下载。是一个非常精简的jvm实现。
接下来,你可以读《自己动手写java虚拟机》。这本书的jvm实现是用go语言写的。当然很多都不是很合理。但是它们基本上遵循jvm规范。
这时候可以看看github上各种JVM的开源实现。有go,scalajvm,javainjava,ajvm,python-jvm,lua,还有各种版本的不同jvm实现。
当然,这些实现只是基本原则。
推荐你看《实战hotspot》豹书,关注高级语言虚拟机的圈子。
当然,关于垃圾收集的书很少,这里我推荐《《TheGarbageCollectionCookbook》》,一本关于垃圾收集的经典书籍。其实如果你对新的垃圾收集算法感兴趣,可以去知乎搜索相关论文和GC算法的开源演示。
当然,我的建议只是针对Java本身。
很想学java生态学,软件工程,计算机网络,大数据基础,mahuot,sparklib,分布式搜索架构,各种消息中间件,缓存中间件,数据库,DNS/CDN。。。。。这些都是互联网应用,不可避免。
我只能建议我精通一般知识,精通研究方向和相关的生态学理解。因为问题是针对java本身的。我赢了。;其他具体方向不展开。描述了大致的技术方向,没有其他答案详细讨论语法糖的水平。希望对主有帮助。
如有问题,欢迎关注回复,与我探讨。谢谢你。
如何查看oracle是用的裸设备,数据文件,还是ASM?
这个应该是oracle查询的,Oracle有一个dba_data_files的视图,这里的字段都是正在应用的数据文件,你是这里的裸机。
但是,如果您是rac,您必须首先确定集群文件是否在原始设备上,以便知道哪些原始设备未被使用。
如果你想找到一些不能直接得到的东西,你需要写一个程序。只需连接到数据库查询数据文件名,然后使用"减法与数学使用所有的文件名——已经被使用的,剩下的是无用的。