【手写JVM专栏】一、带你用Java实现JVM-开篇
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-开篇相关推荐
- minst手写数字识别(带界面)
minst手写数字识别(带界面) 目录 minst手写数字识别(带界面) 一.项目简介 二.项目结构及环境 三.网络结构介绍 四.程序文件介绍 五.使用介绍 六.源代码获取 一.项目简介 1)概述:手 ...
- 用Python实现BP神经网络识别MNIST手写数字数据集(带GUI)
概述 计算机神经网络则是人工智能中最为基础的也是较为重要的部分,它使用深度学习的方式模拟了人的神经元的工作,是一种全新的计算方法.本文的目标就是通过学习神经网络的相关知识,了解并掌握BP神经网络的实现 ...
- java虚拟机是干吗的_从头开始学习-JVM(二):为什么java需要JVM(Java虚拟机)?...
前言 在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块. 我们意识到,java所谓的"Write Once,Run Anywhere"的特性,就是基于JV ...
- 从头开始学习->JVM(二):为什么java需要JVM(Java虚拟机)?
前言 在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块. 我们意识到,java所谓的"Write Once,Run Anywhere"的特性,就是基于JV ...
- 正则化极限学习机_手写逻辑回归(带l1正则)
因为带l1正则化项的损失函数是不可微的,所以这里我们单独来讨论一下l1正则化的求解方法,这里我们可以直接turn to sklearn for help. solver : str, {'newton ...
- 一文带你学会java的jvm精华知识点
前言 本文分为20多个问题,通过问题的方式,来逐渐理解jvm,由浅及深.希望帮助到大家. Java类实例化时,JVM执行顺序? 正确的顺序如下: 1父类静态代码块 2父类静态变量 3子类静态代码块 3 ...
- matlab朴素贝叶斯手写数字识别_基于MNIST数据集实现手写数字识别
介绍 在TensorFlow的官方入门课程中,多次用到mnist数据集.mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx*-ubyte ...
- python朴素贝叶斯的文本分类_自给自足,完全手写一个朴素贝叶斯分类器,完成文本分类...
Part 1: 本文解决的问题: 我在有这样的一个数据集,里面存放了人们对近期播放电影的评价,当然评价也就分成两部分,好评和差评.我们想利用这些数据训练一个模型,然后可以自动的对影评做出判断,到底是好 ...
- Fast multi-language LSTM-based online handwriting recognition 在线手写识别
Fast multi-language LSTM-based online handwriting recognition 在线手写识别 paper 在线手写识别,是区别于离线手写识别,即带书写轨迹的 ...
- 苹果键盘怎么手写_手写笔的魅力
请点击文末右下角"",移步官网获取更好阅读体验! 欢迎加入Augix官方QQ群:595698697. 喜讯!Augix已开通微博,请搜索关注:Augix频道. B站视频更新频道也已 ...
最新文章
- 5折交叉验证_[Machine Learning] 模型评估——交叉验证/K折交叉验证
- java nio doug_Java NIO简介
- 单路塔式服务器选购指南 2月最新行情
- 如何将一键还原精灵备份文件复制出来?
- shell批量创建随机文件名格式文件
- 五、规则组织的衍生组织——纬山形组织数学模型的建立
- 主类网络号怎么算_一文了解网络文化经营许可证的审批范围
- 新时代 新营销 新增长, 纷享销客重磅发布CRM7.0产品,持续赋能企业数字化未来
- Linux清mysql磁盘,mysql与linux ~ 磁盘分析与调优
- 蓝屏,BAD_SYSTEM_CONFIG_INFO,0x00000074故障
- Java聊天室yadiChat step1 登陆注册
- 弹性地基梁板法计算原理_基础专题
- 两台电脑之间使用ntp做时间同步的总结
- xp系统不能搭建信息服务器地址,XP系统出现“automation 服务器不能创建对象”提示怎么办...
- 三菱FX系列PLC编程口通信协议举例
- git文件没有绿色红色小图标解决办法
- 图像预处理——matlab
- 想转行当程序员的必看!揭秘ARouter路由机制,Android校招面试指南
- gis 文件 数据库 服务器,GIS空间数据库(85)地理信息WEB服务
- 太好了!什么都能查!!