编程高手必学的内存知识--极客时间课程推荐/优惠
版权声明
本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。
课程详情
你将获得:
- 一条通往系统级程序员的学习路径;
- 全面深入拆解计算机内存系统;
- 吊打面试官的N个小技巧;
- 从内存贯穿全局,全面提升底层硬实力。
课程介绍
作为程序员,我们每天都在跟计算机内存系统打交道。无论你是做移动端、服务端,还是全栈开发,难免遇到些复杂问题,诸如:
- 如何解决缓冲区溢出带来的安全问题?
- 如何利用好CPU Cache优化程序的性能?
- 如何在大型系统里设计适合自己业务的内存池?
- 设计高性能的并发库时,要考虑哪些与内存相关的因素?
对于这些问题,你只有深入到计算机内存中,才能找出最佳的解决方案。而且,现在企业愈加青睐于擅长处理复杂问题、能进行底层开发的系统级程序员,这也是为什么,计算机内存相关的话题几乎是大厂面试的必考内容。
内存相关的知识如此重要,但学起来并不是一件简单的事情。这是因为,内存知识太过庞杂,涉及到CPU硬件设计、操作系统、编译器,以及编程语言库、虚拟机等众多领域,需要你有大量的知识储备。
更何况,内存相关的知识能够串联起计算机软、硬件的全局脉络,提高你的底层实力,是你从普通程序员向前精进,突破职业生涯瓶颈的不二选择。
所以,这次我们请来了华为资深编译器专家、原Huawei JDK负责人海纳老师。海纳老师会用自己十余年的编程经验,带你全面拆解计算机内存系统,给你一条从内存出发,通往系统级程序员的高效学习路径。同时,我们在每节课课后都设置了“吊打面试官”小卡片,涉及各大厂高频面试真题,让你全方位提升自己在内存上的实战能力。
课程模块设计
本课程一共分为三个部分。
第一模块:软件篇。
我们知道,操作系统是软硬件设计的核心,它管理着所有的硬件资源,同时又为各种运行在它上面的应用程序提供服务。因此,在软件篇,老师会以操作系统为核心,把进程和内存的关系给你彻底讲清楚,让你对操作系统、编译器,以及应用程序的运行原理有深入的理解。这样,当你遇到进程crash时,分析coredump、查看内存映射等都能游刃有余。
第二模块:硬件篇。
在硬件篇,老师将会带你学习与内存相关的计算机体系架构,包括多核CPU内存模型、存储体系结构和存储器电路。
通过这一模块的学习,你可以快速掌握缓存原理、多核CPU通信的核心知识,让你最大限度地使用好缓存,写出正确而高效的代码。同时,我们课程里对硬件知识的讲解,还可以让你掌握CPU设计一些简单原理,并且在此基础上,可以深入地学习RISC-V等开源CPU的实现。
第三模块:自动内存管理篇。
学习内存管理算法,能够让我们正确地使用各种不同的语言,比如在Python和Swift中要注意解循环引用等。而且,你还可以通过学习原理处理各种应用层面的问题,例如Java程序的STW问题,等等。
因此,在你掌握好计算机软硬件相关的内存基础后,老师会带你深入学习内存管理算法,逐一攻克C++和Java语言内存模型(JMM)、垃圾回收算法等相关知识,同时帮你熟练运用它们,解决开发中的各种疑难杂症。
课程目录
开篇词
- 开篇词|为什么你要系统学习计算机的内存知识?
课程导学
- 导学(一)| 拆解CPU的基本结构和运行原理
- 导学(二)| 汇编语言是怎么一回事?
- 导学(三)| 一个CPU是怎么寻址的?
软件篇
- 01|虚拟内存:为什么可用内存会远超物理内存?
- 02|聊聊x86体系架构中的实模式和保护模式
- 03 | 内存布局:应用程序是如何安排数据的?
- 04 | 深入理解栈:从CPU和函数的视角看栈的管理
- 05 | 栈的魔法:从栈切换的角度理解进程和协程
- 06 | 静态链接:变量与内存地址是如何映射的?
- 07 | 动态链接(上):地址无关代码是如何生成的?
- 09 | 深入理解堆:malloc和内存池是怎么回事?
- 08 | 动态链接(下):延迟绑定与动态链接器是什么?
- 10 | 页中断:fork、mmap背后的保护神
- 11 | 即时编译:高性能JVM的核心秘密
- 12 | 内存虚拟化:云原生时代的奠基者
加餐:不定期福利
- 不定期福利第一期 | 海纳:我是如何学习计算机知识的?
- 不定期福利第二期 | 软件篇答疑
- 直播加餐|链接器和加载器是如何为你工作的?(合集)
硬件篇
- 13 | 存储电路:计算机存储芯片的电路结构是怎样的?
- 14 | CPU Cache:访存速度是如何大幅提升的?
- 15 | MESI协议:多核CPU是如何同步高速缓存的?
- 16 | 内存模型:有了MESI为什么还需要内存屏障?
- 17 | NUMA:非均匀访存带来了哪些提升与挑战?
自动内存管理篇
- 18 | Java内存模型:Java中的volatile有什么用?
- 19 | 垃圾回收:如何避免内存泄露?
- 20 | Scavenge:基于copy的垃圾回收算法
- 21 | 分代算法:基于生命周期的内存管理
- 22 | G1 GC:分区回收算法说的是什么?
- 23 | Pauseless GC:挑战无暂停的垃圾回收
- 24 | GC实例:Python和Go的内存管理机制是怎样的?
结束语
- 期末测试 | 来赴一场满分之约吧!
- 结束语 | 自主基础软件开发的那片星辰大海