• 我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:面向人群和教程特点


    在这一讲,我们来探讨一下这套JVM系列教程面向的人群及其特点。

    面向人群

    首先,我们来看一下这套JVM系列教程所面向的人群。

    • 拥有一定开发经验的Java平台开发人员。
    • 软件设计师、架构师。
    • 系统调优人员。
    • 有一定的Java编程基础并希望进一步理解Java的程序员。
    • 虚拟机的爱好者,JVM实践者。

    总体来说,就是希望大家学习这套JVM系列教程之前最好是有一定的Java开发经验,不管你是在学习过程中使用某些具体框架开发过个人项目也好,还是你已经进公司开发过真实项目也好。总之,就是你最好还是先要有一定的Java开发经验,然后基于实际的诉求,例如如何进行性能调优与监控,再来学我们这套JVM系列教程。

    问题来了,如果大家只是刚刚学完Java语言基础,也即Java SE这部分的内容,那么能不能学我们这套JVM系列教程呢?其实也是可以的啊,因为我会尽可能的以更加通俗易懂的语言来为大家进行讲解,尽量使得这套JVM系列教程对刚刚学完Java语言基础的童鞋来说也是适用的。

    但是,能学得懂不意味着你现在就适合学,我还是那几句话,等你有了一定的Java开发经验之后再来学。这就跟我们说的自行车一样,拿到一辆自行车以后,你最好先不要去研究这辆自行车的内部结构是什么,以及怎么去修自行车,因为这样会令人觉得异常的枯燥,正确的做法是先学会骑,然后再去研究怎么去修。小汽车也是一样,你得先学会开,充分感受一下开车的快感,然后再去考虑车出问题了该怎么修,千万别一上来就学如何修车,因为这可能会打消你开车的积极性。

    同理,如果大家没有一定的Java开发经验,那么千万别一上来就开始学比较底层的JVM,因为这同样会打消你学习Java的积极性。

    在上面我们谈到了一点,即性能监控与调优,关于这部分的内容大家得等到在性能监控与调优这一篇章中来进行学习了,不过这里我还是想给大家稍微说一下。

    针对性能监控,我将会在性能监控与调优这一篇章中来给大家介绍一些具体的监控工具,监控工具其实还是蛮多的,不过我都会一一向大家进行介绍。

    至于性能调优的话,那就不仅要思考在代码层面上该如何进行调优了,而且还要思考在内存与垃圾回收层面上该如何进行调优。提到代码层面上的调优,这里我会举一个简单的例子来向大家进行说明,大家初学Java的时候,应该有写过i++++i这种形式的代码吧,那你知道这两者之间的区别吗?提到内存与垃圾回收层面上的调优,不知大家有没有想到更合适的例子,要是没有想到,那就只能看我这里举的例子了,不知道大家在写代码的时候,会不会经常创建各种各样形式的字符串,如果有,那么你有没有想过这不同形式之间的字符串在内存中有没有什么区别?

    如果你真想彻彻底底地搞清楚以上这些问题,那么你就得把代码编译成字节码,然后在字节码层面再来反编译了,最后对比着看它们之间有没有什么区别,当然,主要是观察具体的指令怎么写的。

    最后我想说的是,如果你有代码层面调优的需要,那么你就得学习字节码与类的加载这一篇章中的内容了,在这一篇章中,我会事无巨细地给大家讲解有关字节码与类的加载方方面面的知识,力争不遗漏一点细节,这可就不仅仅只是以上面那个简单例子为例来进行说明了;如果你还有内存与垃圾回收层面调优的需要,那么你就得懂内存和垃圾回收中的一些细节了,而这也正是内存与垃圾回收这一篇章所要讲解的内容。

    可见,我们这套JVM系列教程所囊括的前三个篇章就覆盖了JVM的全部内容。

    1. 内存与垃圾回收篇
    2. 字节码与类的加载篇
    3. 性能监控与调优篇
    4. 大厂面试篇

    只不过,我们最终的实际生产力是来源于第三个篇章,即性能监控与调优篇,但想要掌握这个篇章中的所有内容,你必须得有前两篇的基础才行。

    功利一点讲,从面试的角度来说,前三篇中的内容都是面试常问的,而且,为了能将市面上常见的大厂面试题通通涵盖进来,我还推出了第四个篇章,即大厂面试篇。应该这样讲,我这套JVM系列教程可以说是无人能出其右。

    最后的最后,我还想提醒大家一点,就是这套JVM系列教程主要是基于JDK 8来进行讲解的,相信在前面我已经说过了。这也就是说,大家默认安装的JDK应该是JDK 8这个版本的,当然,在学习这套JVM系列教程的过程中,你还会安装各个版本的JDK,因为我们这套JVM系列教程其实各个版本的JDK都有涉及,到时候安装不同版本的JDK时,希望你不要太惊讶!

    不知你心里有没有这样的疑惑,就是为什么后续要安装这么多版本的JDK呢?有这样的疑惑是很正常的,没有才有点奇怪,如果你想知道为什么,那就安安静静地听我叙说。可能大家都听说过,JVM中方法区内存发生过一些变化,如果我们想知道方法区内存在JDK 6中是什么样子的,然后在JDK 7中又变成什么样子了,接着在JDK 8中又又变成什么样子了,那么是不是得基于不同版本的JDK来演示啊!还有,如果后续又出来了一些新的垃圾回收器,那么我们是不是又得基于不同版本的JDK来演示了啊!

    所以,虽然我们说这套JVM系列教程主要是基于JDK 8来进行讲解的,但其实各个版本的JDK我们都会涉及到,你就算是说这套JVM系列教程是基于JDK 13来讲的也是没有问题的。

    教程特点

    接下来,我就要跟大家唠唠这套JVM系列教程的特点了,也可以说成是我会怎样来为大家讲解JVM这门技术。

    下面是我写这套JVM系列教程时的三点体会,希望大家也能有所感触。

    • 理论 > 代码
    • 通俗易懂、说人话
    • 图解

    首先先来看第一点体会,就是理论 > 代码,这里不是说理论要大于实践,而是说在我为大家讲解JVM这门技术时,理论讲解的时间要长于写代码的时间。以前,我觉得学习一门新的技术,理论学习起来是要比写代码简单的,写代码会更难,因为可能一个分号没写,一个大括号漏了,代码就会出问题。

  • 相关阅读:
    spring和springMVC的说明
    报错:SSL routines:ssl3_get_record:wrong version number
    python 根据shp文件解析经纬度市县信息
    SerializationException: Could not read JSON: Could not resolve type
    工具篇--分布式定时任务springBoot--elasticjob使用--工作流程(2)
    web前端期末大作业:基于HTML+CSS+JavaScript制作我的音乐网站(带设计报告)
    A Survey on Fairness in Large Language Models
    java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统
    riscv fpga
    LeetCode笔记:Weekly Contest 322
  • 原文地址:https://blog.csdn.net/yerenyuan_pku/article/details/125436622