自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (4)
  • 收藏
  • 关注

原创 v8优化之代码缓存-code caching

V8中的代码缓存--code caching简介isolate caches in V8Resourse cache其他html里面的JavaScript为什么以前V8没有code cache。实例引用和扩展阅读简介  一份JavaScript代码从Blink交给V8开始到执行,经历了解析,编译,运行,优化以及包括GC这些过程。下面这张图展示了V8在运行中实际测量得出的数据  我们发现解析...

2019-04-29 09:59:12 4213 2

原创 javascript,chrome与幽灵攻击---JavaScript,chrome with Spectre Attacks

   &a

2018-09-22 00:35:14 1141

翻译 ECMA-262-5 词法环境:ECMA实现(一)--- 简介

本文翻译自Dmitry Soshnikov的关于ECMAScript 系列的文章。其中涉及理论较多,如果想要更好的明白里面所讲的,要对ECMAScript 中相关概念本身有一点的基础,对于之前从未了解过得,推荐先到Dmitry Soshnikov文章中看完ES3系列的介绍,里面也有中文版本。此外,由于理论较多,难免会存在语言的上的生涩或者纰漏以及不规范之处,希望指正。这个系列分成了八个小篇章,可能

2017-12-05 23:10:00 2674

原创 关于Asm.js的一些基本介绍和它的实现

Asm介绍asm是mozilla提出的一套基于JS的语法标准,由 Mozilla 的 Emscripten项目催生而来,主要为了解决js执行效率问题,尤其是通过Emscripten转换过来的js代码效率。那什么是Emscripten和asm,关于它的诞生,最主要的原因就是js执行效率低下。(目前asm已经由几家公司进行标准化,形成了WebAssembly,关于WebAssembly的内容,可以去看下

2017-04-23 17:01:10 9971

原创 JavaScript与垃圾回收(GC)---实现篇

  Garbage Collection,即GC,中文称为垃圾回收。什么是垃圾回收呢?顾名思义,就是回收不需要的东西。正如你会把无用的东西扔到垃圾桶中,在程序中GC的作用就是回收不再使用的内存空间。对于GC,一般而言只有两件事需要做,找到内存空间里面的垃圾,接着回收垃圾,让程序员能够再次利用这部分空间。   诸如C这样的高级语言,提供了malloc()或者free()这样的API要求程序员显...

2019-08-14 00:06:04 2951

原创 JavaScript关于类型转换

一个关于JavaScript类型转换的问题( [ ][ [] ] + [ ] )[ -~{} ] + ( {} + {} )[ -~{} - ~{} ]这篇文章主要通过一条完全由符号组成的语句来分析JavaScript是如何执行的。首先,将式子分为两部分: 1. ( [][ [] ] + [])[ -~{}] 2. ( {} + {} )[ -~{} - ~{} ]第一部分先来看...

2019-06-01 21:38:39 172

翻译 不可不谈的JavaScript性能核心----单态及多态等(二)

让我们谈谈JavaScript单态(二)未讨论的:在撰写本文时,故意略去了一些实现细节,以免它在内容上过去宽泛。形状我们没有讨论对象的形状(即隐藏类)是如何表示,如何得到的以及如何和对象绑定在一起的。可以看下过去写的这篇 post on inline caches 以及我过去的一些会谈,比如AWP2014 来获得一些基本的了解。   这里需要你知道的一件重要的事是:Ja...

2018-04-19 00:35:48 294

翻译 不可不谈的JavaScript性能核心----单态及多态等(一)

本文介绍了我们在V8或者其他JavaScript引擎的介绍中,经常会看到的:单态以及多态等这些概念,结合JavaScript自身的例子,阐释了不同状态下引擎内部的处理过程以及各种状态的特点。本人翻译自Vyacheslav Egorov 的文章,并获得原作者许可。让我们谈谈JavaScript单态  那些涉及到JavaScript性能的演讲或是blog中经常会强调单态代码的重要性...

2018-04-19 00:29:40 752

原创 你不知道的JavaScript--数值表示

JavaScript中数字的相关这部分介绍了JavaScript数值相关的一些比较底层的知识和概念,阅读之前,要对IEEE754的数值表示有个大概的理解。本文是个人积累的一点关于数值方面存在的问题,以及对问题原因的解释。1.MAX_VALUE与Infinity  为什么Number.MAX_VALUE + 1 !=Infinity ?   首先我们要看看在IEEE种二者分别是怎...

2018-04-12 16:46:49 301

原创 V8中关于对象表示的简单介绍

  众所周知,V8采用了很多先进的思想和技巧来加速JavaScript的执行。其中重要的一点就是关于对象的表示。本文只介绍关于对象的表示,所以会隐去一些过程和相关细节。对象的结构   v8会把对象看作一个单独的类,像Java中的类那样,也就是隐藏类,它在V8的内部就是一个Map结构。    当对象每新增一个的属性都会生成为一个新的Map。这个Map描述了一个对象在内存中...

2018-03-23 23:59:11 611

翻译 V8中的快速属性访问-Fast Properties in V8

V8中的快速属性访问 本文内容来来自V8项目官方博客内容,使用知识共享署名 3.0 未本地化版本许可协议,如果转载本文,需注明出处。本文主要介绍V8通过隐藏类技术,达到快速属性访问的效果。  本文将向我们展示V8底层如何去处理JavaScript中的属性。从JavaScript的角度来看,不同类别的属性之间只有一些很少的必要的区别。大多数时候,JavaScript对象就像字典,字符串...

2018-01-14 01:01:40 1281

原创 “解析JavaScript — lazy 是否比 eager更好?”

“解析JavaScript — lazy 是否比 eager更好?” 本文理论内容来自JSConf EU 2017 中“Parsing JavaScript — better lazy than eager?”为题的主题演讲。V8与解析器  每个JavaScript代码在浏览器中被执行,经历的的第一步就是parser,解析器。   解析器会将JavaScript源码生...

2017-12-28 18:03:52 840

翻译 ECMA-262-5 词法环境:ECMA实现(四)--- 标识符解析及其他

标识符解析标识符解析是指在执行阶段决定一个出现在上下文中,使用词法环境的标识符的绑定关系的过程。  换句话说,这一个作用域链查找过程。在上面说过,这类似于原型链的查找,而在这里是通过词法环境的outter属性。

2017-12-05 23:24:53 708

翻译 ECMA-262-5 词法环境:ECMA实现(三)--- 执行上下文

执行上下文的结构  这部分主要讨论在ES5中执行上文(同执行环境)的结构,它与ES3中的有一些不同,先看看它的组成组件:ExecutionContextES5 = { ThisBinding: <this value>, VariableEnvironment: { ... }, LexicalEnvironment: { ... },}  在执行上下文中...

2017-12-05 23:22:21 1098

翻译 ECMA-262-5 词法环境:ECMA实现(二)--- 环境记录项

环境记录类型  ES5中有两种类型的环境记录项,分别是声明式环境记录项和对象式环境记录项。声明式环境记录项  声明式环境记录项是用来处理变量声明,函数声明以及形参与值的绑定,这些都出现在函数作用域中(这与ES3中的激活记录一致)或者catch从句中。   例如:// all: "a", "b" and "c"// bindings are bindings of// a declarative

2017-12-05 23:15:45 1349

翻译 ECMA-262-5 词法环境:通用理论(四)--- 环境

这一章我们将介绍词法作用域的技术实现。同时,在进一步介绍涉及到的一些高度抽象的实体和讲解词法作用域的时候,本文将开始使用环境的概念而不是作用域。”环境”是在ES5时期被引入规范中,与它一起的还包括全局环境和函数的局部环境等。

2017-12-05 18:07:56 1157 2

翻译 ECMA-262-5 词法环境:通用理论(三)--- 标识符绑定

标识符绑定命名绑定  在高度抽象的语言,我们不再需要通过操作底层的地址来访问内存中的某个数据,而是通过更方便的,以标识符(变量名)的形式来获取想要的数据。 命名绑定就是将一个标识符和一个对象绑定在一起。  一个标识符不仅可以被绑定,也可以被取消绑定。当标识符绑定到一个对象上,那么这个标识符引用了这个对象,通过它就可以去访问以及修改那个对象。  有两个与绑定相关的重要概念,分别是重绑定以及改变

2017-12-05 17:19:37 669

翻译 ECMA-262-5 词法环境:通用理论(二)--- 动态作用域

与静态作用域不同,动态作用域下,变量与值的绑定不能在词法分析阶段确定。一般来说,动态作用域中变量与值并不是通过词法环境中绑定的,而是通过一个全局的动态栈来管理的。每当遇到一个变量声明,就会把这个变量名放入这个栈中,当这个变量的生命周期结束时,又会把这个变量从栈中移除。   这意味着,在一个简单的函数中就可以存在无限多的关于同一个变量的解释,这都取决于函数的调用环境。

2017-12-05 17:11:25 601

翻译 ECMA-262-5 词法环境:通用理论(一)--- 作用域

ECMA-262-5 词法环境:通用理论译者按:本文翻译自Dmitry Soshnikov的关于ECMAScript 系列的文章。其中涉及理论较多,如果想要更好的明白里面所讲的,要对ECMAScript 中相关概念本身有一点的基础,对于之前从未了解过得,推荐先到Dmitry Soshnikov文章中看完ES3系列的介绍,里面也有中文版本。此外,由于理论较多,难免会存在语言的上的生涩或者纰漏,希望指正

2017-12-05 17:03:26 1592 1

原创 关于WebAssembly的一些介绍和开发

近几年,WebAssembly在快速的成长中,被称为未来的web发展方向。本文主要介绍关于WebAssembly的一篇介绍,包括和asm.js的一些对比,以及WebAssembly的一些特性和开发方式。 本文主要内容来自Google I/O '17中Alex Danilo的关于WebAssembly的主题演讲。感

2017-09-17 12:50:09 3388

原创 V8中的多态内联缓存PIC

Google的V8作为最优秀的浏览器引擎,在它的内部实现上采用了很多的奇淫巧计,而如果你要想去深入了解下V8的构造,的确需要去了解很多它所包含的思想。其中之一就是大名鼎鼎的polymorphic inline cache(PIC),即多态内联缓存。多态内联缓存的用途之一就是V8通过隐藏类技术加PIC来加速Javascript对象属性的访问。目前很多关于V8的文章中都会提到隐藏类或者属性的快速...

2017-06-04 20:25:00 2792

原创 新版V8引擎的一些介绍和了解

本文简单介绍在关于新于V8引擎的一些东西。主要内容包括:V8对于不同设备,不同需要情况下提供了最合适的优化;简单介绍V8引擎的最新架构,包括新的解释器以及优化编译器和垃圾回收器;介绍了对于ES2015语法的优化程度;介绍新版dev Tools的新功能特性;最后介绍了V8对于webassembly的支持。

2017-05-21 20:52:08 3344

原创 几个简单的对数增长阶算法

数学算法对数增长阶实现最近在看scip,不得不说,这本书的确是经典之作,每天抽出时间看一会上面所讲的东西,对我这样编程算法基础薄弱的人,也是受益匪浅。所以想把上面的一些好的算法用自己熟悉的javascript重新写一遍,加深记忆。最大公约数两个整数a和b的最大公约数(GCD)定义为能除尽这两个数的那个最大的整数。在SCIP中提到了一种基于欧几里得算法的对数增加阶的实现。该算法的思想是:如果r是a除以

2017-03-10 06:25:50 2986

原创 JavaScript 执行上下文和变量对象

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I

2017-01-17 01:39:56 398

原创 函数参数arguments共享问题

函数参数arguments共享问题在JavaScript中,传进来的函数参数可以用函数上下文里的内部对象arguments访问1.。它包括如下属性:callee:指向当前函数的引用,length : 实际传递进来的参数的个数properties-indexes (字符串类型的整数) 属性的值就是函数的参数值(按参数列表从左到右排列)。 properties-indexes内部元素的个数等于arg

2017-01-14 15:08:13 303

spectre.pdf

幽灵以及熔断漏洞的介绍 由chrome zero project团队体出

2019-05-21

TCPIP Illustrated, Volume 1, 2nd Edition_wrapper.pdf

TCP/IP详解 卷一 第二版 TCPIP Illustrated, Volume 1, 2nd Edition

2019-05-21

rfc2616_wrapper.pdf

rfc2616号规范 Hypertext Transfer Protocol -- HTTP/1.1

2019-05-21

chrome://tracing说明

Chrome Tracing 打开 about:tracing 页面,Chrome 提供的底层的追踪工具允许我们深度了解 V8 的解析以及其他时间消耗情况。V8 也提供了 详细的指南 来介绍如何使用这个功能。

2017-12-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除