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

转行前端(达成)

入行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. 在使用 Fortify进行源码扫描时需要做对项目需要做什么?

    1.一般我们的项目都是svn 或git 进行管理的,为了扫出异常的问题 做好把   “” .svn    “”  文件删除 2.把我们的项目需要的jar 文件放到一个文件夹内同项目一起进行扫描.这样为 ...

  2. mysql建库,建表,补列

    SET NAMES UTF8;DROP DATABASE IF EXISTS tmooc; CREATE DATABASE tmooc CHARSET=UTF8; USE tmooc;CREATE T ...

  3. CVE-2019-0708漏洞利用复现

    CVE-2019-0708漏洞利用复现 距离这个漏洞爆出来也有好几个月了,之前一直忙也没来得及写文档,现在重新做一遍. 准备环境: win7靶机 IP地址:172.16.15.118 Kali攻击机 ...

  4. sqlmap 注入的方法及技巧

    sqlmap 注入的方法及技巧 当给 sqlmap 这么一个 url 的时候,它会: 1.判断可注入的参数 2.判断可以用那种 SQL 注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些 ...

  5. 【分布式搜索引擎】Elasticsearch之开启Elasticsearch的用户名密码验证

    一.首先在elasticsearch配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启 xpack.security.ena ...

  6. 01-Redis 简单介绍

    Redis 简单介绍 1.Redis 是什么 Redis 是一种基于键值对的 NoSQL 数据库,与很多键值对数据库不同, redis 中的值可以有 string, hash , list , set ...

  7. 解决chrome插件安装时出现的“程序包无效”问题信息:程序包无效。

    https://blog.csdn.net/bluexuemei/article/details/35213117 2014-06-27 09:00:51 bluexuemei 阅读数 14374更多 ...

  8. 【洛谷P4542】 [ZJOI2011]营救皮卡丘(费用流)

    洛谷 题意: 给出\(n\)个点,\(m\)条边,现在有\(k,k\leq 10\)个人从\(0\)号点出发前往\(n\)点. 规定若某个人想要到达\(x\)点,则\(1\)~\(x-1\)号点都有人 ...

  9. vue router 导航守卫生命周期

    导航守卫 导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的.(记住参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察$r ...

  10. RegxUtils正则表达式工具类

    public class RegxUtils { //------------------常量定义 /** * Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a- ...