hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。

手写JVM小班一期已经结束了,二期的课也备得差不多了,现在稍微有点时间了,准备给大家出套教程:用Java带你手写JVM

因为我的手写JVM是付费的,所以既为了让大家能学到东西,又不能让VIP学员有意见,这套教程是文字版的,聚焦用Java实现。大家尽可以放心课程质量,我写不出水文浪费大家时间。跟着这套教程学完,你就可以用Java实现一个Java虚拟机。至于Java实现不了的,我会给大家方向,你们可以选择自己花时间慢慢啃慢慢研究,还是跟着我快速学习掌握。

课程代码有需要的同学可以加我微信领取:jvm-ziya

为什么学习

花时间学习手写JVM的意义是什么?是不是很多小伙伴有这个问题?我觉得:

一、能够更快GET到面试官问的问题:比如面试官问你静态方法为什么不能调用非静态方法,你如果写过JVM你就知道是因为this指针 传送门

二、任何的理论,你都可以在自己的JVM上去论证。比如你不明白执行方法为什么要那么多指令,你就去尝试,就搞一个指令,你看看能不能实现 传送门

三、能更深入的理解JVM各种底层原理,比如开启指针压缩为什么能够节省内存 传送门

四、能更容易去理解垃圾收集器的工作原理,为什么要引入STW、OopMap等等。你没写过的时候,你研究问题的角度是为什么要这样做,你学过以后,你的角度变成了这样做真的妙,还有没有其他更好的方式实现。

还要很多很多好处…你要想通过研究hotspot源码去找到你想要的答案是很难的,而且你不站在设计者的角度去看hotspot源码,很有可能会理解错误。

这些实现不了

Java语言,虽然可以通过Unsafe类申请或释放内存,但是因为不支持指针,所以可以说,在内存操作方面,Java是很弱的。这就导致了JVM中的很多技术,想通过Java来实现,要么做不到,要么非常复杂。更重要的是,与真实的JVM差异较大,达不到学以致用的目的。

子牙何许人也

子牙老师,一个明明可以靠脸吃饭,却偏偏要抢大家饭碗的硬核男人。深入研究JVM、OS内核,喜欢分享硬核文章,还有分享我的白手起家路上的所思所想所悟。这些文章在哪可以看到?公众号:硬核子牙。

于2020.3.20来到长沙与图灵学院谈合作,于25日加入图灵,成为一名讲师。3个月后因为精益求精、进步飞速、业绩突出,获得第一个奖:进步之星。半年后因为VIP课获好评无数,获得晋升教学总监。

于2021.4.1开始自己创业,第一个创业科目就是手写JVM小班,于4.4招到第一个学员。

经常会有人问我:为什么离开图灵自己单干。因为我自己喜欢的方向是底层,而图灵的业务方向是Java架构师。我早已过了为钱为生活妥协的阶段,自然是要去选择做自己喜欢的事情。

偶尔会有人问我:你是阿里哪个部门的、你在阿里的花名叫什么…我不知道这些问题的背后,别人是怎么想的,不管是好心还是恶意,我都选择不予理睬。道理很简单,没必要。我在阿里不算一个显眼的人。其次,已经离开了,何必还要蹭这个热度,难道靠自己打出一片天做不到吗?再其次,大家看我的作品,肯定不是因为title,而是因为我对JVM的认知及分享的内容本身,让大家有所收获。再再其次,不相信你的人,你说再多都没用,那何必在意?

我觉得什么时候大家认可我是因为子牙这两个字所代表的JVM实力及师者精神,而非一些title,我才算真正的小有成就。不过现在,算是取得了小小小成就了吧。

结语

这个世界上,放在我们面前的,通常不是正确的选择和错误的选择。而是正确的选择,和容易的选择。正确的选择,通常都是先付出,至于回报,有滞后性,甚至没有回报。而容易的选择,通常很快能看到结果。从人性的角度来说,人更容易选择马上能看到回报的事情。上班与创业,就是最好的例子。上班能一个月领到一笔薪资;而创业,可能很长,也可能很长很长,看不到回报。但是大家都知道,哪个是正确的选择。大家又知道,为什么不敢做正确的选择。

技术这条路也是一样,面向薪资学习,是理所当然的选择。但是当你面向薪资学习获得的知识足够你工作的时候,大多数人迷茫了或松懈了。这个时候,作为过来人,我劝你把底层补上。不成为高手,你很难想象,计算机这行真的很有乐趣。

上班,是生活,是在实现老板的梦想。成为一个Coder,你没有自己想做的事情吗?给大家看一些我写的底层项目

卷,不是别人喜欢卷,只是因为自己的沉淀到了那一步,不手写JVM那学什么呢?希望大家通过手写JVM这个项目找回自己曾经奋不顾身成为一个程序员的初衷。


【手写JVM专栏】一、带你用Java实现JVM-开篇相关推荐

  1. minst手写数字识别(带界面)

    minst手写数字识别(带界面) 目录 minst手写数字识别(带界面) 一.项目简介 二.项目结构及环境 三.网络结构介绍 四.程序文件介绍 五.使用介绍 六.源代码获取 一.项目简介 1)概述:手 ...

  2. 用Python实现BP神经网络识别MNIST手写数字数据集(带GUI)

    概述 计算机神经网络则是人工智能中最为基础的也是较为重要的部分,它使用深度学习的方式模拟了人的神经元的工作,是一种全新的计算方法.本文的目标就是通过学习神经网络的相关知识,了解并掌握BP神经网络的实现 ...

  3. java虚拟机是干吗的_从头开始学习-JVM(二):为什么java需要JVM(Java虚拟机)?...

    前言 在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块. 我们意识到,java所谓的"Write Once,Run Anywhere"的特性,就是基于JV ...

  4. 从头开始学习->JVM(二):为什么java需要JVM(Java虚拟机)?

    前言 在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块. 我们意识到,java所谓的"Write Once,Run Anywhere"的特性,就是基于JV ...

  5. 正则化极限学习机_手写逻辑回归(带l1正则)

    因为带l1正则化项的损失函数是不可微的,所以这里我们单独来讨论一下l1正则化的求解方法,这里我们可以直接turn to sklearn for help. solver : str, {'newton ...

  6. 一文带你学会java的jvm精华知识点

    前言 本文分为20多个问题,通过问题的方式,来逐渐理解jvm,由浅及深.希望帮助到大家. Java类实例化时,JVM执行顺序? 正确的顺序如下: 1父类静态代码块 2父类静态变量 3子类静态代码块 3 ...

  7. matlab朴素贝叶斯手写数字识别_基于MNIST数据集实现手写数字识别

    介绍 在TensorFlow的官方入门课程中,多次用到mnist数据集.mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx*-ubyte ...

  8. python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...

    Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...

  9. Fast multi-language LSTM-based online handwriting recognition 在线手写识别

    Fast multi-language LSTM-based online handwriting recognition 在线手写识别 paper 在线手写识别,是区别于离线手写识别,即带书写轨迹的 ...

  10. 苹果键盘怎么手写_手写笔的魅力

    请点击文末右下角"",移步官网获取更好阅读体验! 欢迎加入Augix官方QQ群:595698697. 喜讯!Augix已开通微博,请搜索关注:Augix频道. B站视频更新频道也已 ...

最新文章

  1. 5折交叉验证_[Machine Learning] 模型评估——交叉验证/K折交叉验证
  2. java nio doug_Java NIO简介
  3. 单路塔式服务器选购指南 2月最新行情
  4. 如何将一键还原精灵备份文件复制出来?
  5. shell批量创建随机文件名格式文件
  6. 五、规则组织的衍生组织——纬山形组织数学模型的建立
  7. 主类网络号怎么算_一文了解网络文化经营许可证的审批范围
  8. 新时代 新营销 新增长, 纷享销客重磅发布CRM7.0产品,持续赋能企业数字化未来
  9. Linux清mysql磁盘,mysql与linux ~ 磁盘分析与调优
  10. 蓝屏,BAD_SYSTEM_CONFIG_INFO,0x00000074故障
  11. Java聊天室yadiChat step1 登陆注册
  12. 弹性地基梁板法计算原理_基础专题
  13. 两台电脑之间使用ntp做时间同步的总结
  14. xp系统不能搭建信息服务器地址,XP系统出现“automation 服务器不能创建对象”提示怎么办...
  15. 三菱FX系列PLC编程口通信协议举例
  16. git文件没有绿色红色小图标解决办法
  17. 图像预处理——matlab
  18. 想转行当程序员的必看!揭秘ARouter路由机制,Android校招面试指南
  19. gis 文件 数据库 服务器,GIS空间数据库(85)地理信息WEB服务
  20. 太好了!什么都能查!!

热门文章

  1. 这样回答离职原因,一定没问题!
  2. Halcon OCR字符识别
  3. MTK原厂,MT6771参考设计最新资料
  4. Mac上Qt安装和配置教程
  5. 如何将Dicom系列转换为一个Nifti文件(Python)
  6. amCharts下的JS图表
  7. Dplayer播放器插件整合前置广告、暂停广告3.0版本
  8. java正则表达式原理_Java 正则表达式详解
  9. php start 五
  10. 国内 Android 手机典型勒索软件详情分析(附解锁方法)