这一篇不打算讲技术,聊点别的吧,写这个的原因主要是看到了我博客园的签名,开始这个最终源码系列前想说点什么。

转行前端(达成)

入行1年vue源码(达成)、webpack源码(半达成)

入行2年争取读通node源码 (学习中)

入行3年进大厂(提前达成)或者入门V8引擎

目前转前端第二年,抓紧时间啦

  我是一个转行的前端,之前做的游戏运营。

  上面的每一句话都是一个非常艰辛的过程,作为一个211硕士,毕业之后一事无成,荒废了大概1年时间才决定转行做技术,为了弥补浪费的1年,付出了太多。

  对源码的兴趣在学前端的时候就有了,当时看的jQuery3.1,仅仅会点语法就去研究,想想实在是有点天真,差点被Sizzle引擎劝退。

  找到了第一份工作时还是比较开心的,虽然薪资非常低,但是事也不多,能建立信心和有时间研究自己的东西,好的开头是成功的一半嘛。当时就花了整整半年的时间跑vue源码,我看源码的方法比较特殊,及其不建议。第一遍就是抄,一行行跟着写,然后对工具方法做注释。第二遍就直接在new Vue那里打了一个断点,从头看到尾看整个代码流程。最后跌跌撞撞也算是写完了,但是质量毫不客气的说,就是垃圾,可能除了我自己也没人看得懂。但是管他呢,写下来就是进步。

  webpack源码算是比较失败的一个选择。这是一个很伟大的工具,当时实在是太崇拜,所以对实现原理产生了浓厚的兴趣。但是当我深入研究时,发现其代码的可阅读性极差,充斥着大量不知所谓的方法,向下兼容、操作系统兼容,有时候写了一篇,全部都是贴代码,完全不知道该说什么。最后算是弃坑解脱了吧,市面上没人研究果然还是有道理的。

  就这样,第一年就过去了,中间也陆陆续续看了JRE的数据结构、express源码等等。

  第二年,我又定下了新的目标,看node源码。不太记得当时下这个决心的导火索了,可能是因为偶然间在VS编译成功了node,看到那个REPL的瞬间,也可能是为了看V8做垫脚石。总之,就这么开始了。然而很可惜,node源码本身真的没有营养,它就像一个502,把V8和libuv粘在了一起,node源码最终变成了libuv的源码。这个系列写的不多,相当于只把事件轮询走了一遍,中间沉迷过游戏,沉迷过赌博,甚至不小心进了头条,为了适应工作鸽了相当长一段时间。最后总算在前段时间闲了下来,补完了坑。

  今天是19年5月22日,第一份工作开始的时间是17年3月27日,一转眼已经两年多了。

  V8引擎在学JavaScript的时候就想着总有一天我要干掉它,现在终于来到了这个时候。但是说实话,这是个太过于难的目标,远超之前看过的任何源码。国内并没有多少人研究这个东西,参考资料寥寥无几。并且看V8引擎老实说,对面试除了装逼基本上毫无用处,前端大部分情况下不可能会接触到C++。业务方面,由于普遍没什么复杂逻辑,知道V8底层原理也懒得为了那一点点优化去特意搞事情。也就是说,做这件事只能纯粹靠兴趣来推动自己了,希望不要像红黑树那篇一样,耻辱下播了(那篇狗文章阅读量怎么那么高,哈哈哈哈)。

  这个系列我也不知道会写多少,不知道会怎么写,不知道写不写的下去。但是作为我做前端的最终目标,希望还是能有所输出的。

  如果V8引擎是一片大海,那我便是一叶孤舟,只身探索神秘之地,寻觅心目中的宝藏。

  先这样吧,最后许愿V8引擎,希望我能有个好对象,保佑我哟。

深入V8引擎-写在前面的更多相关文章

  1. 浅谈Chrome V8引擎中的垃圾回收机制

    垃圾回收器 JavaScript的垃圾回收器 JavaScript使用垃圾回收机制来自动管理内存.垃圾回收是一把双刃剑,其好处是可以大幅简化程序的内存管理代码,降低程序员的负担,减少因 长时间运转而带 ...

  2. 基于c#+xaml的前台采用IE的js引擎写后台

    基于c#+xaml的前台采用IE的js引擎写后台的猜想 参考上一篇文章 基于js的开发wp8界面的猜想知道可以使用 js的window.external.notify调用c# c#可以用InvokeS ...

  3. V8引擎嵌入指南

    如果已读过V8编程入门那你已经熟悉了如句柄(handle).作用域(scope)和上下文(context)之类的关键概念,以及如何将V8引擎作为一个独立的虚拟机来使用.本文将进一步讨论这些概念,并介绍 ...

  4. 浅谈V8引擎中的垃圾回收机制

    最近在看<深入浅出nodejs>关于V8垃圾回收机制的章节,转自:http://blog.segmentfault.com/skyinlayer/1190000000440270 这篇文章 ...

  5. Google V8 引擎 原理详解

    V8 引擎概览 V8 引擎简介 Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版,可以运行在所有的主流 操作系统中,甚至可以运行在移动终端 ( 基于 ARM ...

  6. Nodejs V8引擎 fast property lookup

    前言 之所以会研究这个东西,是我在网上找了一下各个语言的执行效率比较.好吧,我承认这是个无聊的东西,不过看看总是无妨,然而我惊讶的发现,有些测试声称Java,C,Nodejs是处在同一个效率级别参见链 ...

  7. V8引擎——详解

    前言 JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力.编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进 ...

  8. 使用 D8 分析 javascript 如何被 V8 引擎优化的

    在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8.这篇我们讲一下如何使用 D8 调试 javascript 代码. 如果没有 d8,可以使用 ...

  9. v8引擎详解

    引用网址: https://blog.csdn.net/swimming_in_it_/article/details/78869549 前言 JavaScript绝对是最火的编程语言之一,一直具有很 ...

随机推荐

  1. 常用的linux命令大全

    之前做过两年的运维,用过很多命令,深切体会到某些linux命令熟练掌握后对效率提升有多大.举个简单的例子,在做了研发后经常会有跑一些数据,对于结果数据的处理,我们的产品同学一般都习惯于用excel做统 ...

  2. Jenkins + pipeline + Git + PHP (九)

    一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.150 # www.leon.com 运行wordp ...

  3. React 借助pubsub-js进行兄弟组件的传递值

    1===> raect中两个 兄弟组件 互相通信使用的技术 使用 消息订阅(subscribe)和发布(publish)机制 s儿 伯 s rai b pʌ b lɪ ʃ 有一个库可以处理 Pu ...

  4. LOJ 510: 「LibreOJ NOI Round #1」北校门外的回忆

    题目传送门:LOJ #510. 题意简述: 给出一个在 \(K\) 进制下的树状数组,但是它的实现有问题. 形式化地说,令 \(\mathrm{lowbit}(x)\) 为在 \(K\) 进制下的 \ ...

  5. 201871010104-陈园园 《面向对象程序设计(java)》第十五周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第十五周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  6. 201871010104-陈园园 《面向对象程序设计(java)》第八周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  7. python27期尚哥讲TFTP:

    TFTP介绍 :TFTP(Trivial File Transfer Protocol,简单⽂件传输协议)是TCP/IP协议簇中的⼀个⽤来在客户端与服务器之间进⾏简单⽂件传输的协议使用tftp这个协议 ...

  8. djang小项目过程中的小问题 01(django中的configrarion配置、django自带命名规范)

    不知道为什么,明明照着做,但是我就会遇到一些错误问题,但是我觉着自己生下来就是解决问题的. ##1. 第一个是在django运行时,没有配置configration, 这个时候我添加一个django ...

  9. Codechef Prime Distance On Tree

    [传送门] FFT第四题! 暑假的时候只会点分,然后合并是暴力合并的...水过去了... 其实两条路径长度的合并就是卷积的过程嘛,每次统计完路径就自卷积一下. 刚开始卷积固定了值域.T了.然后就不偷懒 ...

  10. Linux性能优化实战学习笔记:第九讲

    一.中断的魅力 1.中断在生活的魅力 比如你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进度,但是,配送员送外卖是不等人的,到了你这儿没人取的话,就直接走人了.所以你指能苦苦等着 ...