mirror of
https://github.com/cheetahlou/CategoryResourceRepost.git
synced 2025-10-19 16:33:46 +08:00
mod
This commit is contained in:
30
极客时间专栏/浏览器工作原理与实践/结束语/第二季回归 | 这次我们来专门聊聊V8.md
Normal file
30
极客时间专栏/浏览器工作原理与实践/结束语/第二季回归 | 这次我们来专门聊聊V8.md
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
你好,我是李兵。在这个专栏中,我们对浏览器的工作原理进行了详细的介绍。
|
||||
|
||||
初期的浏览器,展示的只是一些静态页面,随着需要和页面交互的需求越来越多,JavaScript就出现在了浏览器中,它让静态的页面动了起来。目前JavaScript已成为页面中最核心的一部分了,不过,JavaScript作为一门高级语言,它的代码给到浏览器或者Node.js时,是不能直接被底层的CPU所执行的,这就需要通过JavaScript虚拟机来实现代码的编译和执行。
|
||||
|
||||
市面上有很多种JavaScript虚拟机,比如SpiderMonkey、V8、JavaScriptCore等,其中由谷歌开发的开源项目V8使用最为广泛。
|
||||
|
||||
V8主要应用于Google开源浏览器Chrome中,它拥有非常庞大的生态圈,一方面得益于全球25亿台安卓设备上的Chrome浏览器,另一方面,也和它的许多革命性设计分不开。
|
||||
|
||||
比如,V8摒弃了导致JavaScript执行速度过慢的解释执行方式,率先采用了即时编译(JIT)的双轮驱动的设计,混合了编译执行和解释执行两种方式。JIT作为一种权衡策略,大幅优化了JavaScript代码的执行效率,也将JavaScript虚拟机技术推向了一个全新的高度。
|
||||
|
||||
作为JavaScript程序员,你可能并不会去实现一个JavaScript虚拟机,不过我们还是有必要理解JavaScript虚拟机工作机制的,你可以从中学习到很多优化性能的方法,帮你写出更高效的JavaScript代码。
|
||||
|
||||
所以,我回到极客时间做了第二季专栏《[图解Google V8](https://time.geekbang.org/column/intro/296?utm_term=zeusOVYAE&utm_source=app&utm_medium=geektime&utm_campaign=296-presell&utm_content=liulanqizhuanlan0316)》。在这一季里,我会专门讲讲V8的工作原理,帮你完整梳理V8的核心知识体系。在讲述方式上,我仍然延续这一季的风格,通过大量图片演示,深入浅出地讲解V8执行JavaScript代码的底层机制和原理。
|
||||
|
||||
希望通过这门课程,带你了解完整的V8编译流水线,同时通过对V8工作机制的学习,搞懂JavaScript语言的核心特性,进而从根源解决程序问题,加快JavaScript的执行速度。
|
||||
|
||||
下面是专栏的目录:
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/2c/a1/2cb0c3abcb6d7683df56353ac33beca1.jpg" alt="">
|
||||
|
||||
为了感谢老同学,我还准备了一个「专属福利」:
|
||||
|
||||
3 月 16 日,专栏上新时,我会送你一张 10 元专属优惠券,可与限时优惠同享,有效期 48 小时,建议尽早使用。
|
||||
|
||||
**点击下方图片**,立即免费试读新专栏。
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/c4/c4/c485757bed7d2269fe02048011a5f5c4.jpg" alt="">](https://time.geekbang.org/column/intro/296?utm_term=zeusOVYAE&utm_source=app&utm_medium=geektime&utm_campaign=296-presell&utm_content=liulanqizhuanlan0316)
|
||||
|
||||
一段新的征程,期待与你见证成长!我在《[图解Google V8](https://time.geekbang.org/column/intro/296?utm_term=zeusOVYAE&utm_source=app&utm_medium=geektime&utm_campaign=296-presell&utm_content=liulanqizhuanlan0316)》等你。
|
23
极客时间专栏/浏览器工作原理与实践/结束语/结束语 | 大道至简.md
Normal file
23
极客时间专栏/浏览器工作原理与实践/结束语/结束语 | 大道至简.md
Normal file
@@ -0,0 +1,23 @@
|
||||
<audio id="audio" title="结束语 | 大道至简" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/81/42/81a9e16a93f0610285b4ba5e75338d42.mp3"></audio>
|
||||
|
||||
你好,我是李兵。不知不觉中专栏已经更新完了,总的来说, 我写本专栏的过程是痛并快乐着。
|
||||
|
||||
觉得痛苦是因为写作期间每一天都能感受到多方的压力,完全没有放松的机会。在这过程中,阅读Chromium和V8的源代码占用了我大量的时间,因为有时候要验证文章的一些观点,或者找出一些知识点的实现逻辑,都需要通过阅读源代码来给出结论。V8的源代码还算好读,但Chromium的源代码就过于复杂了,要看一个功能是怎么实现的就得查看几十个源文件,而且这些代码中充斥着大量的回调函数,大大增加了阅读代码的难度。
|
||||
|
||||
当然这个过程中,我也觉得是快乐的,因为通过本专栏我解锁了两件非常有挑战的技能。
|
||||
|
||||
第一件是写技术文章。通过本专栏,我对写技术文章有了比较系统性的方法论,也理解了写技术文章的核心就是**用简单的语言讲清楚一个复杂的问题**。不过要做好却并非易事,搞清楚目标群体、对这个领域有深刻的理解和洞见、组织好文章的层次结构……一样都不能少,只有这样才能做到有的放矢。
|
||||
|
||||
在专栏的写作过程中,我还发现了写文章和做项目的相通之处。我们知道通常做项目时需要首先确认核心需求,并快速交付一个最小可行产品,然后再根据实际的需求来迭代产品。
|
||||
|
||||
而在设计专栏目录时,我也有意识地将文章分为“**搭建知识架构型**”和“**深入讲解单个知识点型**”。“搭建知识架构型”文章的主要任务是将相互关联的知识点串成线、连成网,这类文章的核心任务就是做连接,但这过程中又会涉及到很多知识点,不过单个知识点是怎么工作的并不是核心,因此我会将这些细节性的知识点关进“黑盒”,你只需要了解“黑盒”起到的作用是什么就行了,并不需要关心其内部实现的细节。相反,在“深入讲解单个知识点型”这类文章中,我会拆解这些“黑盒”,并将一个个知识点分析透彻。
|
||||
|
||||
我解锁的第二个有挑战的技能就是专栏录音,为此我还专门学习了一些录音技巧,虽然录音效果和专业主播比起来还有些差距,但对于我个人而言,这是我迈出去的“重要的第一步”!
|
||||
|
||||
如果非让我总结写作过程中的一些经验和心得,我会用四个词来概括:**大道至简,学会权衡,懂得舍弃,持续进化**。具体来讲,首先你懂得了大道,有着全局视野,才有能力去分析哪些是重要的、哪些是不重要的,这样你才有可能去化繁为简;在化繁为简的过程中,你还需要去权衡利弊,有勇气去舍弃那些不重要的或者已经花费了大量精力去做的事;完成之后,你还需要持续跟进,进行持续的重构改进!
|
||||
|
||||
我特别感谢极客时间给我这次机会,在这过程中,我学习了很多,也成长了很多。也非常感谢你在留言区的反馈和意见,才让我可以持续优化本专栏。虽然这是专栏的结束语,不过本专栏还会持续优化下去,我会详细回复你的留言,并对专栏做一些勘误和结构的优化,如有必要后续我还会准备一些加餐环节。
|
||||
|
||||
(备注:结课调研已完结)
|
||||
|
||||
|
10
极客时间专栏/浏览器工作原理与实践/结束语/结课测试 | 这些浏览器的知识你都掌握了吗?.md
Normal file
10
极客时间专栏/浏览器工作原理与实践/结束语/结课测试 | 这些浏览器的知识你都掌握了吗?.md
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
你好,我是李兵。
|
||||
|
||||
到这里,《浏览器工作原理与实践》这门课程已经全部结束了。我给你准备了一个结课小测试,来帮助你检验自己的学习效果。
|
||||
|
||||
这套测试题共有 20 道题目,包括14道单选题和6道多选题,满分 100 分,系统自动评分。
|
||||
|
||||
还等什么,点击下面按钮开始测试吧!
|
||||
|
||||
[<img src="https://static001.geekbang.org/resource/image/28/a4/28d1be62669b4f3cc01c36466bf811a4.png" alt="">](http://time.geekbang.org/quiz/intro?act_id=197&exam_id=523)
|
Reference in New Issue
Block a user