自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

转载 【转载】如果面试官让你分析类初始化阶段的死锁现象

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。准备写两篇文章透彻剖析下类的初始化阶段及初始化阶段的死锁问题:类的初始化做什么 JVM底层是如何实现类的初始化的 为什么会出现死锁问题 怎么解释死锁问题 如果证明你对死锁的判断是正确的 我是如何论证的(改Hotspot源码打日志)会由浅入深,循序渐进展开。今天是第一篇,难度偏认知层面。读起来应该会很轻松愉快。clinit类初始化阶段做什么?其实很简单,执行clinit方法。这个方法哪里来的?你的Java代码中只要有静态属性或

2022-01-07 10:18:08 139

转载 【转载】从雷布斯身上我学到了什么

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。今天我想跟大家聊聊我为什么会去研究雷总,从研究雷总的过往上,我又学到了哪些。U1S1,雷总是我们所有Coder都要去研究的对象,他的事迹对我们Coder的崛起真的有很大的指导意义。雷总,就是小米CEO雷军。出于尊敬,不直呼其名。大概介绍下雷总的事迹:大学是武汉大学,跟360老总红衣教主周鸿祎是校友,又是乡友,又是一对欢喜冤家,大家还记得当年乌镇大会传出的这张图吗?哈~雷总大学用了两年的时间学完了我们普通人四年的课程,后混迹于武汉电子一条

2022-01-06 10:03:37 177

转载 【转载】死磕synchronized六:系统剖析偏向锁篇二

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。近期准备写一个专栏:从Hotspot源码角度剖析synchronized。前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载。对本专栏感兴趣的、希望彻彻底底学明白synchronized的小伙伴可以关注一波。电子书整理好了会通过公众号群发告知大家。我的公众号:硬核子牙。市面上关于synchronized的资料已经很多了,我这个专栏跟那些资料有啥差别呢:更系统。市面上目前虽然资料众多,但都是零散的。有些资料讲得东西甚至是相互冲突

2021-12-27 16:38:51 126

转载 【转载】死磕synchronized五:系统剖析轻量级锁

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。近期准备写一个专栏:从Hotspot源码角度剖析synchronized。前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载。对本专栏感兴趣的、希望彻彻底底学明白synchronized的小伙伴可以关注一波。电子书整理好了会通过公众号群发告知大家。我的公众号:硬核子牙。本篇文章给大家分享关于轻量级锁的所有。在synchronized的所有锁类型中,轻量级锁是最简单的,但是这个简单是相对的,如果不具备一些底层的思维及学习底层

2021-12-24 11:29:17 172

转载 【转载】死磕synchronized四:系统剖析偏向锁篇一

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。近期准备写一个专栏:从Hotspot源码角度剖析synchronized。前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载。对本专栏感兴趣的、希望彻彻底底学明白synchronized的小伙伴可以关注一波。电子书整理好了会通过公众号群发告知大家。我的公众号:硬核子牙。市面上关于synchronized的资料已经很多了,我这个专栏跟那些资料有啥差别呢:更系统。市面上目前虽然资料众多,但都是零散的。有些资料讲得东西甚至是相互冲突

2021-12-23 10:38:43 222 1

转载 【转载】一个特别牛叉的方法

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。不论你觉得是否牛叉,反正我觉得很牛叉。真正理解后我很赞赏道格李的代码功底。国际惯例,先上代码这个方法应该把很多人看懵了,来解析下。如果你对AQS的队列机制还不了解,记住一句话就可以了:AQS中的队列与我们正常写的队列不太一样,它的第一个节点是当前占有锁的线程对应的Node。我也认真想过道格李为什么要这样实现、为什么第一个节点不是待唤醒的线程对应的Node……因为我自己实现的AQS就是这个思路,也没发现有啥问题。所以这个问题只有道格李本人才

2021-12-22 11:24:33 91

转载 【转载】死磕synchronized三:系统剖析延迟偏向篇二

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。近期准备写一个专栏:从Hotspot源码角度剖析synchronized。前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载。对本专栏感兴趣的、希望彻彻底底学明白synchronized的小伙伴可以关注一波。电子书整理好了会通过公众号群发告知大家。我的公众号:硬核子牙。市面上关于synchronized的资料已经很多了,我这个专栏跟那些资料有啥差别呢:更系统。市面上目前虽然资料众多,但都是零散的。有些资料讲得东西甚至是相互冲突

2021-12-21 11:04:10 121

转载 【转载】AQS这样学就很简单了

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。AQS,抽象队列同步器,为了解决Java多线程环境下的互斥与同步而生。JUC包中的很多类都是基于AQS实现的,可见AQS的重要性。但是很多同学在学AQS的过程中觉得很难很抽象,在这里分享下我是如何精通AQS的。精通AQS需要结合线程互斥、线程同步两套场景去理解,本篇文章主要讲AQS针对互斥场景是如何处理的。如果你是道格李如果你是道格李,你要实现一套机制来保证线程互斥,你会如何实现呢?你肯定不会一上来就写代码对吧,你会想有哪些场

2021-12-20 10:48:24 94

转载 【转载】AQS中的cancelAcquire何时会运行

大家好,我是江湖人送外号[道格牙]的子牙老师。今天分享一篇JUC包中AQS的一个方法的深度解读,可能你都没有关注过这个细节吧。这篇文章适合对AQS有一定基础的童鞋学习。学完本篇文章就可以对AQS高级部分有更深入的理解:比如AQS中的节点什么时候会修改自己的waitStatus、Node.CANCELLED状态有何意义、cancelAcquire何时会运行……尤其是cancelAcquire何时会运行,最近讲完AQS课被问得比较多。今天抽个空写篇文章分享下。cancelAcquire这个方法内部做

2021-12-20 10:25:47 345 1

转载 【转载】JMM到底如何理解?JMM与MESI到底有没有关系?

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。今天给大家分享一篇对于理解Java的多线程,特别重要的一个知识点:JMM。在JVM中增加线程机制,首当其冲就是要实现JMM,即Java内存模型。JMM也是大家真正理解Java多线程的基础。但是大家对于JMM,可以说大多数小伙伴对其的理解是错误的。这篇文章我会从这几个方面讲JMM,让大家获得对JMM正确的、深刻的认识:1、市面上大家看到的资料是怎么介绍JMM的2、我会结合一个Linux多线程程序给大家分析,JMM与MESI没有半毛钱

2021-12-17 10:44:21 273

转载 【转载】Java线程创建过程中的各种细节

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。近期准备给大家分享专题系列文章,聚焦Java多线程机制。hotspot其他模块的文章准备先放一放。会从hotspot源码角度,给大家揭秘平时学习多线程那些从来没有想过的问题,或者存在疑虑却又无法证明的理论。当然,如果你有好的问题,可以加我微信(jvm-ziya)分享给我。今天是系列文章首篇,咱们来谈谈Java线程创建的一些细节问题:Java线程是如何与OS线程建立联系的 Java线程与OS线程共用一套线程状态吗 Java线程是如何

2021-12-16 10:22:42 87

转载 【转载】Java线程VS操作系统线程

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。今天给大家分享的文章聚焦讲清楚Java线程与操作系统线程之间的关系。我会通过讲清楚这几个问题来让你对这个关系有一个全面的认识,让你在面试中能够让面试官眼前一亮:嚓,这就是我要找的人啊,太特么靠谱了!帮我“背锅”刚刚好。毕竟我的锅太重,一个人背不动。大概五个问题:Java线程创建的完整流程 Java的线程是何时与JVM线程绑定的 JVM线程是何时与OS线程绑定的 Java线程对应的OS线程有什么特殊的地方 调用JavaAPI为什

2021-12-15 10:13:33 128

转载 【转载】超快速定位OOM一揽子计划

大家好,我是江湖人送外号[道格牙]的子牙老师。最近来问OOM与JVM调优相关的问题的同学特别多。只能感叹,大家都太不容易了。明明只是小白、明明只想找份工作、明明没有机会接触到OOM与调优……却被现实逼着要去搞懂JVM、OOM、调优……本篇文章是结合大厂与小厂的同学们问的问题,结合我之前在大厂的工作经历整理总结而来。看懂、理解、背下来,当面试官再问你OOM与调优,一定被你征服。看完这篇文章,大家能获得的知识:1、什么是OOM2、为什么会发生OOM3、哪些区域会发生OOM4、JVM进程挂

2021-12-14 11:20:03 125

转载 【转载】贡献一道超高套路JVM面试题二

大家好,我是江湖人送外号[道格牙]的子牙老师。本篇文章是接上篇文章【贡献一道超高套路JVM面试题】写的,如果你还没看过,墙裂都建议你看一下。传送门上篇文章我给出的结论是:下面这段创建对象的代码,在JVM中只会创建一个对象,并给出了强有力的证明。并且说到,父类的属性也是存储在子类对象中的,同样也给出了铁证。但是今天在手撸JVM的过程中,我又陷入了深深的思考:父类中公共属性存储到子类对象上我能理解,父类中的私有属性为什么也要这么干呢?于是开启了一连串的风骚操作,最终找到了答案。为了方...

2021-12-13 13:59:11 70

转载 【转载】贡献一道超高套路JVM面试题

大家好,我是江湖人送外号[道格牙]的子牙老师。最近在手撸JVM实现OOP的封装机制的时候,有个问题引起了我的眉头紧锁。代码如下于是我把这个让我眉头紧锁的问题提炼成了一个面试题:这段创建对象的代码,在JVM内部创建了几个对象?正方两个:一个是Test_2对象,一个是Object对象。会创建Test_2对象就不用说了。为什么会创建Object对象呢?因为Java中所有的类都继承自Object类,所有对象的创建都会调用类的构造方法,而这些构造方法中都会调用Object的构造方法。如图

2021-12-10 10:18:30 113

转载 【转载】从hotspot源码层面剖析Java的多态实现原理

大家好,我是江湖人送外号[道格牙]的子牙老师。本篇文章是接上篇文章【JVM的多态是如何实现的】写的,如果你还没看过,墙裂都建议你看一下。上篇文章我给出了这道面试题的及格分的回答及七八十分的回答,今天我就告诉大家如果想回答得接近满分,应该怎么回答。因为会设计到C++的虚表及C++的多态实现,如何这块你不理解或不熟,面试中建议别拿出来说,免得碰到懂C++给你来个连环call把你问懵了。关于C++,我后面有计划出一套视频教程。对子牙老师的C++教程感兴趣的小伙伴可以关注公众号:硬核子牙,后面出了会在本公众

2021-12-09 11:09:58 158

转载 【转载】JVM的多态是如何实现的

大家好,我是江湖人送外号[道格牙]的子牙老师。最近写文章有点缺课题,小伙伴们可以把在面试中被虐的面试题留言给子牙老师。虐得越惨越痛的那种,子牙老师不喜欢研究没有挑战性的课题。自信有木有?昨天就有一个小伙伴被一道面试题虐了,我也给了他一定深度的答案。但是我觉得不够,我觉得应该让小伙伴们像我一样,答题能答出惊喜感,于是就有了这篇文章。我会从Java层面到Hotshot源码层面再到C++层面,完整分析这个问题。这道面试题在好一些的互联网公司,尤其是一二线,问到的概率非常大,建议小伙伴们把这

2021-12-08 10:23:45 90

转载 【转载】内存编织技术,JVM对内存的又一次压榨

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。今天这个问题就比较卷了,也是一位面试被虐得体无完肤的小伙伴提供的。放心哈,我已经安抚住他想砍面试官的心了。其实看到这个问题,我还是挺感叹的:现在的面试题已经难到这个程度了吗?这个问题可是需要你完整得理解JVM是如何实现OOP的封装机制才能答出来的。所有呢,给小伙伴们一个建议:简历不要凡尔赛,带来关注的同时,也带来了高期待。直接的结果就是问超难的面试题,一上来就给你打蒙圈了。问题分析我们先来分析下这个问题。如果你想知道怎么访问对

2021-12-07 11:19:44 107

转载 【转载】数据在计算机中是如何存储的

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。这篇文章,咱们讨论的问题是数据在计算机中是如何存储的。为什么要讨论这个问题呢?因为在手写JVM的过程中,我们需要实现所有的数据类型,比如说Java中的八种基本类型。那在实现的过程中,Java的八种基本类型在JVM的内存模型中应该如何存储就是我们需要考虑的问题。我们只能通过研究操作系统这块的机制来寻找答案。其实这个知识点也是大家能够真正学明白指针的关键。本篇文章,你可能会看到很多与你的固有认知不太一样的观点。但是我都会给出证据来证明我的观点

2021-12-06 09:42:48 187

转载 【转载】hotspot源码角度看OOP之类属性的底层实现(一)

hello,大家好,我是江湖人送外号[道格牙]的子牙老师。最近看hotspo源码有点入迷。hotspot就像一座宝库,等你探索的东西太多了。每次达到一个新的Level回头细看,都有不同的感触。入迷归入迷,分享还是得分享。分享使大家夸我,使我快乐。^_^最近报名JVM小班的同学问我问的比较多的是类加载阶段对属性的处理那块。这块知识点还挺多,不局限于加载阶段:加载阶段如何存储属性 准备阶段给属性赋初值,细节是什么 初始化阶段给静态属性赋值,细节是什么 创建对象时给非静态属性赋值,细节是什么

2021-12-04 11:04:33 109

转载 【转载】如何找到native方法对应的Hotspot源码

hello,大家好,我是江湖人送外号[道格牙]的子牙老师。大家平时在看jdk源码的时候,是不是看着看着,总是会凑不及防地遇到native方法,然后就束手无策了。今天我就教大家如何精准定位到Java方法对应的C++代码、如何高效研究Hotspot源码,甚至!教大家如何修改Hotspot源码,拓展反射API,为我所用!怎么找就拿线程的start方法为例吧一、定位文件如果是系统的native方法,都是很有规律的start0是Thread类中的方法,Thread类在jdk

2021-12-03 16:08:18 119

转载 【转载】Java中的静态方法为什么不能调用非静态方法

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。昨晚京东大佬勇哥在群里分享了一道他新创的JVM面试题,我听完后觉得还挺有意思的,分享给大家。你是不是想说因为静态方法是属于类的,而非静态方法属于实例对象哈,有人这样回答了,勇哥表示不满意。你这样回答,离正确答案,就差那么一句话。说出来了,就表示你知道了。哪句话呢?临门一脚JVM是如何调用Java方法的呢?咱们不把call_stub、entry_point、执行流

2021-12-02 10:05:49 302

转载 【转载】深入剖析Lambda表达式的底层实现原理

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。又有一段时间没有给大家分享文章了,因为最近在筹备创办公司的事情,比较忙。今天偷得浮生半日闲,准备给大家分享下Lambda的底层实现。如果想研究明白这个问题,我们需要研究哪些东西呢?干想也想不出来对吧,对着代码想吧。对于这个问题,每个人的答案肯定不一样。但是,好的问题好的切入点是成功的一半。我给自己提了如下这些问题,然后顺着这些问题去研究,研究过程中对于JDK的有些设计或者代码实现不太理解,就尝试自己手写一遍,站在设计者的角度去

2021-12-01 10:42:56 74

转载 【转载】啊,i++与++i居然有这么多学问在里面

把++给讲透彻

2021-11-30 16:26:45 78

转载 【转载】困扰了你大半辈子的STW,今天总算可以毕业了

hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师。最近在看GC那块的源码,想把之前遗留的一些疑惑给整明白。恰好今天在群里看到有小伙伴在问:看了无数的资料,还是觉得STW好抽象啊,谁能告诉我STW到底是什么?择日不如撞日吧,就写篇文章告诉大家STW到底长什么样子。GC时一定会谈到的一个概念:安全点,又是什么?

2021-11-26 14:54:53 62

转载 【转载】死磕synchronized二:系统剖析延迟偏向篇一

哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师。近期准备写一个专栏:从Hotspot源码角度剖析synchronized。前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载。对本专栏感兴趣的、希望彻彻底底学明白synchronized的小伙伴可以关注一波。电子书整理好了会通过公众号群发告知大家。我的公众号:硬核子牙。市面上关于synchronized的资料已经很多了,我这个专栏跟那些资料有啥差别呢:更系统。市面上目前虽然资料众多,但都是零散的。有些资料讲得东西甚至是相互冲突

2021-11-25 10:22:52 128

转载 能够走到聚光灯下的“码师”,都做对了什么

hello,大家好,我是江湖人送外号[道格牙]的子牙老师。昨天刷朋友圈看到有小伙伴分享了这张图,看完还挺有感触的。我也算是从最小白一步步走到今天,起点应该是图里的码徒。目前的Level,不炫耀地讲,应该是图里的码师吧。我也一直在思考,究竟是什么原因,导致大多数人在起点基本相当的情况下,5-10年,天壤之别。本篇文章就给大家分享下我得出的结论。“神尊”的开导工作前几年是在小公司,那时候见识浅,身边几个年长的什么任务都能接,做得贼快,我就觉得特么好牛哇,我那个时候OOP都没玩明白,代码跳

2021-11-24 13:30:26 331

转载 【转载】死磕synchronized一:synchronized修饰的方法的执行

synchronized修饰的方法的执行

2021-11-23 13:39:36 78

转载 【转载】今天聊点不一样的,百万年薪需要具备的能力

今天聊点不一样的,百万年薪需要具备的能力

2021-11-22 14:56:32 57

转载 【转载】玩转字节码文件,开发字节码解析器

带你用Java实现字节码文件解析器。什么是解析器?解析器干些什么?要怎么实现?解析的结果如何存储?有哪些需要注意的地方?Hotspot源码中有解析器吗?是哪个……是不是突然脑海中就蹦出来了这么多问题?么事,本文都会讲到

2021-11-19 15:26:35 284

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除