深入V8引擎-写在前面
这一篇不打算讲技术,聊点别的吧,写这个的原因主要是看到了我博客园的签名,开始这个最终源码系列前想说点什么。
转行前端(达成)
入行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引擎-写在前面的更多相关文章
- 浅谈Chrome V8引擎中的垃圾回收机制
垃圾回收器 JavaScript的垃圾回收器 JavaScript使用垃圾回收机制来自动管理内存.垃圾回收是一把双刃剑,其好处是可以大幅简化程序的内存管理代码,降低程序员的负担,减少因 长时间运转而带 ...
- 基于c#+xaml的前台采用IE的js引擎写后台
基于c#+xaml的前台采用IE的js引擎写后台的猜想 参考上一篇文章 基于js的开发wp8界面的猜想知道可以使用 js的window.external.notify调用c# c#可以用InvokeS ...
- V8引擎嵌入指南
如果已读过V8编程入门那你已经熟悉了如句柄(handle).作用域(scope)和上下文(context)之类的关键概念,以及如何将V8引擎作为一个独立的虚拟机来使用.本文将进一步讨论这些概念,并介绍 ...
- 浅谈V8引擎中的垃圾回收机制
最近在看<深入浅出nodejs>关于V8垃圾回收机制的章节,转自:http://blog.segmentfault.com/skyinlayer/1190000000440270 这篇文章 ...
- Google V8 引擎 原理详解
V8 引擎概览 V8 引擎简介 Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版,可以运行在所有的主流 操作系统中,甚至可以运行在移动终端 ( 基于 ARM ...
- Nodejs V8引擎 fast property lookup
前言 之所以会研究这个东西,是我在网上找了一下各个语言的执行效率比较.好吧,我承认这是个无聊的东西,不过看看总是无妨,然而我惊讶的发现,有些测试声称Java,C,Nodejs是处在同一个效率级别参见链 ...
- V8引擎——详解
前言 JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力.编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进 ...
- 使用 D8 分析 javascript 如何被 V8 引擎优化的
在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8.这篇我们讲一下如何使用 D8 调试 javascript 代码. 如果没有 d8,可以使用 ...
- v8引擎详解
引用网址: https://blog.csdn.net/swimming_in_it_/article/details/78869549 前言 JavaScript绝对是最火的编程语言之一,一直具有很 ...
随机推荐
- 听说看了这篇文章就彻底搞懂了什么是OPC(上)
从2000年初以来,我们就一直在使用OPC软件互操作性标准,而那些正准备踏入和想要踏入工业自动化领域的人们却对这些含义感到困惑. 所以在本中,我将系统地为你梳理OPC知识. OPC首字母缩写词代表什么 ...
- ios--NavigationViewController跳转、返回传值
使用NavigationViewController进行页面跳转时,应该使用pushViewController方法来跳转至下一页面,这样的话,下一页面同样在NavigationViewContr ...
- PostgreSQL 插入行、查表、导出
1.连接数据库 使用cmd选择安装路径下的psql.exe 登录用户名为postgres 输入密码进行登录. D:\PostgreSQL\9.6\bin\psql.exe -U postg ...
- 其他综合-VMware 从模板机快速克隆多台
VMware 从模板机快速克隆多台 1.实验描述 通过 CentOS 7.6 的模板机快速克隆,为实现搭建其他项目而提供干净的实验平台. [基于此文章的环境]点我快速打开文章 2.实验环境 使用软件的 ...
- python开发微信公众号SDK选择
1.wechat-sdk sudo pip install wechat-sdk 文档地址: http://ww2.wechat-python-sdk.com/ 2.wechat sudo pip ...
- windows 上jenkins slave 执行脚本提示成功,但是没有运行
控制台结果,但是脚本没有运行Started by user admin Building remotely on test_1110 in workspace D:\jenkins\workspace ...
- com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor
在MyBatis的配置文件中修改对pageHelper的配置修改前 <plugins> <plugin interceptor="com.github.pagehelper ...
- 海量数据MySQL项目实战
主要内容包含 MySQL 典型数据库架构介绍.MySQL 主流数据库架构对比等理论性知识,然后从“订单.用户”两个项目实战,抛砖引玉,介绍亿级互联网业务数据库项目如何设计. MySQL 典型数据库架构 ...
- Eclipse的server选项卡中找不到tomcat配置项
1.在Eclipse中,如果想开发j2ee,必须要先安装插件.至于具体的插件安装方法,这里不再赘述. 2.当进行到配置tomcat服务器的时候,有时候会出现这种情况: 3.在server选项卡的Run ...
- NeuHub图像垃圾分类api和百度图像识别api
京东 NeuHub图像垃圾分类申请:http://neuhub.jd.com/gwtest/init/242 文档:https://aidoc.jd.com/image/garbageClassifi ...