自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

子牙老师

深入研究JVM、Linux内核、Redis、MySQL。手写过JVM、NIO、线程池…运营公众号:硬核子牙

  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 全网整理最全的手写64位多核操作系统开发笔记+源码开源啦!

本篇文章就为大家分享一位大神整理的手写操作系统开发笔记+源码,可以帮助到大家在手写操作系统的学习中突飞猛进,那我们就一起来欣赏下开发过程吧。完整的笔记+源码获取方式放在文章末尾,也可以直接关注宫中号:【硬核子牙】,回复:操作系统,即可免费获取。手写一个操作系统可以说是很多程序员心中的一个白月光,不仅可以帮互助你在项目面中脱颖而出,手写操作系统的过程还需要理解计算机系统的各个层面,包括处理器架构、内存管理、进程调度、I/O 等,这都能够帮助程序员深入理解计算机系统的工作原理。

2024-03-12 21:45:39 232

原创 单步调试Linux内核论证水位线watermark

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…这篇文章给大家分享Linux内核内存模块一个很重要的知识点:水位线,就是这玩意这玩意干啥的呢?控制内存回收的。

2024-02-26 10:49:45 977

原创 谁说常量字符串不可修改

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…问你一个问题:你觉得下面这个程序能正确运行吗?我大胆的预测,你的内心是这样子的哈哈,别别,我没疯,我来证明给你看看到没,我真的做到了!细心的小伙伴可能发现了,在修改常量字符串之前,好像执行了一段代码!

2024-02-23 09:39:06 559

原创 还能这样学Linux内核,非我族类!

性价比超高,可全网比价!感兴趣的小伙伴别错过超大优惠上车哦~

2024-01-29 09:22:41 1252

原创 为什么说linux对于程序员无法取代

Linux系统的多用户支持是其强大而灵活的特性之一。每个用户在Linux系统中有自己的账户和权限,可以对自己的文件和设备有特殊的权利,这确保了各用户之间互不干扰。这种多用户的支持使得Linux在多用户环境中能够有效地分隔用户的操作,保障各用户的隐私和安全。每个用户有自己的家目录,只能访问自己的文件,而不能轻易干涉其他用户的数据。另外,在高配置硬件的情况下,Linux系统就更能够充分发挥多任务和多线程的优势。每个用户可以同时执行多个任务,多个线程可以并行工作,这显著提高了系统的效率和响应速度。

2024-01-24 17:19:45 423

原创 2024年linux内核开发会是程序员新的风口吗?

众所周知,linux操作系统一直靠着稳定,安全,开源等优势占据着80%以上的服务器市场。小至私人企业,大至世界百强,都离不开它的身影。以至于无论你擅长的是哪门语言,面试的时候都会或多或少的涉及linux的相关知识,如果你精通了linux,那发展前景肯定不用发愁。那如何精通linux呢?最重要的就是学习内核。Linux目前依旧是是最强大的操作系统之一,它在云计算、服务器管理、网络安全等领域占据了核心地位。

2024-01-18 16:58:17 10790

原创 JVM如何执行synchronized修饰的方法

我知道小伙伴们心理在想什么:我什么时候也能像子牙老师这样,哪里不懂就直接深入源码去寻找答案、工作腻了,我也想写一些自己感兴趣的算法……实话实话,底层这玩意学起来确实难。有时候遇到问老师就是红手题都找不到答案,甚至有时候百度都不知道怎么查…自己瞎学瞎报班,浪费钱浪费时间,还没有结果。操作系统内核我也是报班学的,自己学了一段时间,真心学不会。我的老师就是红手指的首席科学家唐老师,前瑞星杀毒的技术专家,虚拟化领域的TOP级人物。给大家看看我之前写的一些项目,证明下我不是在吹牛。

2024-01-09 10:30:38 630

原创 调用Java线程相关的API为什么能够控制操作系统线程?

今天我们解决Java线程的这五个问题:Java线程创建的完整流程Java的线程是何时与JVM线程绑定的JVM线程是何时与OS线程绑定的Java线程对应的OS线程有什么特殊的地方调用JavaAPI为什么能够操作OS线程对于任何支持多线程的计算机语言来说,深入理解线程及写好多线程程序,都是一个巨大的挑战。正因为难,才使得多线程一直是面试的重点难点。面试官刚一开口扯到多线程,有些小伙伴内心就升起了慢慢的恐惧感。

2024-01-08 14:23:12 876

原创 实战讲解Linux进程内存空间

本篇文章为大家分享了64位Linux进程的内存空间布局,并详细讲了进程的用户空间关于Linux进程的用户空间内存布局,Linux内核源码中是没有提供明确的答案的,不像内核空间内存布局,是有明确答案的我们通过阅读Linux内核源码,做实验,推导出了Linux进程的用户空间内存布局,并从ELF文件、运行时,详细讲解了每一层。并通过malloc分配内存讲到了面试中经常问到的问题最后,恭喜大家,这就是Linux进程用户空间内存布局的全部,你已经掌握了它!

2024-01-08 10:05:33 1005

原创 【JVM面试题】Java中的静态方法为什么不能调用非静态方法

昨晚京东大佬勇哥在群里分享了一道他新创的JVM面试题,我听完后觉得还挺有意思的,分享给大家小佬们先别急着看我的分析,先自己想想答案。

2024-01-04 14:32:03 637

原创 hotspot源码角度看OOP之类属性的底层实现

如果你每次都是因为native而对hotspot源码束手无策,如果你每次都是因为底层而无法深入研究下去,如果你深入骨子里的想成为技术大牛,欢迎跟着我学习,关注我的公众号,找我咨询课程。跟我学底层,一定不会踩坑,一定学有所得。

2024-01-04 14:10:45 1092

原创 【Hotspot源码】揭秘Java线程创建过程中的各种细节

总是听到小伙伴说:多线程好难学、多线程学不会、多线程没概念……为什么会这样呢?我觉得可能是这样:大多数小伙伴接触线程都是从高级语言开始的,比如Java。而高级语言的线程是基于操作系统的线程机制实现的,而小伙伴们没有学过操作系统应用层的学习机制,更不了解操作系统内核级的线程机制,所以学完多线程有一种似会非会的感觉。跟别人交流或者面试的时候,滥用应用态切内核态、线程调度等名词。写多线程程序更是惨不忍睹。我的手写JVM小班新增的内容就是以我所理解的方式让大家精通多线程。

2024-01-03 16:45:53 878

原创 JMM到底如何理解?JMM与MESI到底有没有关系?

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

2024-01-03 15:23:08 854

原创 内存编织技术,JVM对内存的又一次压榨

我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。喜欢分享硬核知识,如果你也喜欢研究底层,喜欢硬核知识,关注我。

2024-01-02 15:31:41 941

原创 JVM是如何基于虚拟机栈运行的

我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。喜欢分享硬核知识,如果你也喜欢研究底层,喜欢硬核知识,关注我。

2024-01-02 14:14:55 566

原创 不了解NUMA,就看不懂Linux内核

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…最近在备课《实战Linux内核》内存专题,把NUMA好好研究了一下,写成文章,Mark一下,顺便分享给有缘人NUMA是什么呢?一种内存访问架构,与它相对应的是SMP架构,它俩之间有什么区别呢?

2023-12-29 09:20:35 460

原创 Linux内核中,CPU是如何读写数据的

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了这些课程:手写JVM、手写OS、带你用纯汇编写OS、手写64位多核OS、实战Linux内核…说个笑话:以前我在图灵讲课的时候,很多学员跟我说:子牙老师,别的老师的课不硬核,都是OS之上的,听起来没劲,看你骨骼清奇天赋异禀,能不能讲点硬的,最好能撕到硬件内部,让我长长见识……OK,安排。

2023-12-20 14:13:16 819

原创 揭秘Linux内核线程切换底层实现

比如线程函数长这样描绘一下场景:在本轮CPU时间片周期内,这个线程执行到i = 1233,这时候发生了时间片到期中断,这个线程就没有机会运行了,需要将CPU时间片让出去,当下次获得调度,能够从i = 1234位置接着运行,而不是从i = 0开始又从头运行什么是线程上下文呢?其实就是程序执行的时候,CPU内部寄存器中的值、线程栈当前使用的位置当发生中断,CPU进入中断处理例程的那一刻,就像给上一个运行的线程拍了张快照,这时候我们将寄存器中的值及线程栈当前使用的位置保存下来,就叫保存上下文。

2023-12-06 10:29:02 896

原创 硬核子牙:我准备写一本《带你手写64位多核操作系统》的书!

开篇就讲到这里吧,相信从这篇文章里,你已经知道了,这将是一段特别有趣的旅程,我应该会写得很快乐!你是不是想问你能不能学得很快乐,哈哈,那应该不可能,学习总是痛苦的,不痛苦那就不是在学习,是在复习!因为痛苦,所以很多人不愿意学习,也就改变不了自己的命运,求而不得,最后生怨!何苦,何必…对了,如果你汇编、C语言不是很好,可以看看我讲课的视频,免费分享。

2023-10-24 09:37:13 216

原创 源码级揭秘Linux内核启动流程

哈喽,我是子牙,一个很卷的硬核男人。深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程今天这篇文章给大家分享一下Linux内核的启动流程。为什么要分享这个话题呢?所谓万丈高楼平地起,如果我们想玩转Linux内核,我们既要了解它的前世,又要了解它的今生,还要了解它的未来。启动流程就是Linux内核的前世,对于理解Linux内核,里面包含了太多太多关键信息其实也是在为后面出书做准备…Linux内核的重要性,我不必言说了。

2023-09-21 09:55:26 220

原创 这样才能玩转Linux内核之CPU篇

哈喽,我是子牙,一个很卷的硬核男人 深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及Linux内核…,收到了很多小伙伴的反馈,表示自己研究Linux内核很迷茫,很多代码看不懂,不知道是干啥的,需要这样的文章指明方向。今天带来的是它的兄弟篇:CPU篇。

2023-08-24 12:24:47 231

原创 Linux内核这样学才能学会(内存篇)

哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及Linux内核…事情是这样的,上篇文章我分享说到如果你想玩转Linux内核,你要具备这些基础。其中第二条说到你要了解核心硬件的工作原理,比如CPU、内存条、CPU+内存条…很多小伙伴看完后觉得没概念,让我展开说说。

2023-08-15 16:25:04 1605 1

原创 如果让你来设计CPU之内存篇

想要了解关于操作系统的干货知识,可以看我的以往文章,也可以关注我的公众号,第一时间获取最新干货。

2023-06-07 14:20:11 312

原创 如何手写网络协议栈

我写的网络协议栈,除了可以与Linux socket模拟三次握手建立连接,建立全双工通道通信,还可以侵入正常的socket client与socket server建立的连接进行通信,意思就是我写的协议栈可以冒充客户端与服务端通信!说下应用场景,比如我们通过浏览器访问网页,大家都知道走的是http协议,http协议属于应用层协议,它是在TCP协议的基础上实现的,所以我们最终的问题还是落到,如何构建TCP包并发送。如果你也像我一样,喜欢研究计算机底层,并乐此不疲,无论多难,都不曾想过放弃,欢迎跟我学习。

2023-06-04 14:59:14 4416 1

原创 手写操作系统+手写网络协议栈,太硬核了

前面讲的可能看起来有点牛叉,不免会让有些人怀疑我是不是在吹牛,所以我准备给出有力的事实手写操作系统三期大纲​三期课程相关的代码我已经全部写完实模式切入保护模式实现内存检测、物理内存管理模块、虚拟内存管理模块实现了输出模块。要知道你用Linux终端,它会自动翻页,这个功能你如果写内核都是要自己实现的实现了键盘中断。就是你键盘敲什么,屏幕就显示什么,为后面加入命令行做准备实现了时钟中断,通过时钟中断调度任务。与Windows、Linux一模一样实现了进程线程、任务切换、阻塞唤醒。

2023-05-25 15:39:28 10927 1

原创 手写操作系统必掌握基础:函数调用约定

正片开始,enjoy~因为要照顾不同基础的小伙伴,对于有基础的小伙伴可以略显啰嗦。那你可以:一,可以不用看这篇文章;二,可以跳到末尾看结论。

2023-05-24 14:45:59 769

原创 想自学写个操作系统,有哪些推荐看的书籍?

哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你巩固知识,修炼内功的书籍,这些书籍涵盖了操作系统的核心概念、设计原理和实践技巧。如果你能够啃得下来,对于你的技术提升绝对是一个质的飞跃。同时我也为大家整理好了这些电子书的下载地址,以及开发操作系统的环境搭建打包文件,都一同贴在了文章末尾,希望能够帮助到梦想实现自己操作系统的技术人。

2023-05-22 14:04:19 9852 3

原创 手写操作系统+文件系统开源啦

哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写模拟器、手写编程语言…今年是我创业的第二年,已经做了两个课程:手写JVM、手写操作系统。为了保证课程质量,一年左右出一个课程。今年的新课:Linux内核,将于九月份招生,十月份开课,带你以写驱动的方式实战学习。纯讲原理,假大空,是学不会内核的,也不是我的风格…我的课程,一定要超级硬核,学起来能够切实感受到自己在变得牛叉…

2023-03-06 12:53:17 1478

原创 计算机是如何把操作系统跑起来的

我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。如果你也喜欢研究底层,欢迎关注我的公众号【硬核子牙】

2022-10-08 11:22:15 885

原创 开发操作系统内核环境搭建

哈喽,我是子牙,一个很卷的硬核男人闲来无事不是写了个操作系统吗,写完之后发了篇文章《圆梦,手写了个操作系统》,这一发倒好,一石激起千层浪,很多小伙伴跑来问我开发操作系统的环境如何搭建。既然这么多小伙伴想写操作系统,作为过来人,我就把我的环境搭建踩坑手册分享给大家如果人人都能写操作系统,国家计算机行业的兴旺指日可待呀

2022-09-19 13:55:17 1771

原创 为了学明白中断机制,我努力了

我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。如果你也喜欢研究底层,欢迎关注我的公众号【硬核子牙】

2022-09-14 10:05:57 337

原创 圆梦,手写了一个操作系统

我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。

2022-09-05 10:26:49 2564

原创 字符串常量池,看这篇就够了(三)

哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO、三色标记算法…这篇文章是专栏字符串常量池的第三篇。如果前两篇你还没看,墙裂都建议你回去看一下,再来看本篇本篇文章就从上篇文章留的问题切入,分享:什么情况字符串会写入常量池什么情况字符串不会写入

2022-04-20 09:28:25 890

原创 字符串常量池,看这篇就够了(二)

哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO、三色标记算法…这篇文章是谈字符串常量池的第二篇。如果上一篇你还没看,建议先回去看一下,再来看本篇本篇文章的节奏会这样展开:首先会讲到两段Java代码创建的字符串在JVM中的存在形式,把涉及到的相关名

2022-04-19 10:29:42 1417

原创 字符串常量池,看这篇就够了(一)

哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO、三色标记算法…今天准备跟大家聊啥呢?字符串常量池,即Java代码中的字符串在JVM中到底是如何存储的。分析问题的时候,我们需要把一道高度抽象的问题提炼成一道追寻本质的问题。讲道理的时候,一招制敌的秘

2022-04-15 15:47:32 2397

原创 OopMap理论篇

哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO…最近正在写三色标记算法,准备实现OopMap了,把JVM的OopMap机制认真梳理了下。为什么要梳理,而不是基于对理论的理解去写?为了尽量跟Hotspot源码保持一致。东西有点多,怕后面忘记,写几篇文

2022-01-23 10:08:42 4897 4

原创 G1实现原理之记忆集与卡表

这几天花时间完成了标记-清除算法、标记-整理算法、标记-复制算法,还算顺利。今天准备动手写G1,整理思路过程中发现G1涉及到的概念相当多而且还难以理解,网上的文章、相关书籍对相关概念的解释相对比较孤立、比较简洁,需要结合很多资料串起来想才能想明白。防止后面忘记,也为了保证G1的顺利完成,码点文字把这点明白记录下来。JVM的内存结构是由垃圾回收算法决定的。RegionG1及其后出现的垃圾收集器ZGC、Shenandoah,它们都是基于Region的内存布局形式。它们垃圾收集的目标范围不再是整个新生代(M

2022-01-22 11:41:42 738

原创 难怪我看不懂,call_stub居然这么玄乎

哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。手撸过JVM、内存池、垃圾回收算法、synchronized、线程池、NIO…最近正在写三色标记算法 _这样的硬核男人,怎么才能认识他?关注:硬核子牙聊点啥这篇文章想跟大家聊聊Hotspot源码的call_stub,如图这啥?这篇文章目前还不适合你,默默关掉吧,我理解

2022-01-17 10:28:35 298

原创 如果面试官让你分析类初始化阶段的死锁现象

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

2022-01-06 17:35:06 402

原创 从雷布斯身上我学到了什么

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

2022-01-05 09:48:44 625

VC6.0代码补全插件(实测可用)

有了这个插件,开发效率指数级提升

2017-06-28

空空如也

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

TA关注的人

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