diff --git a/docs/browse/v8WorkingPrinciple.md b/docs/browse/v8WorkingPrinciple.md index f7c80d0..8050999 100644 --- a/docs/browse/v8WorkingPrinciple.md +++ b/docs/browse/v8WorkingPrinciple.md @@ -2,6 +2,7 @@ editLink: false --- + # 编译器(Compiler)和 解释器(Interpreter) 编译型语言在程序执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次运行程序时,都可以直接运行该二进制文件,而不需要再次重新编译 c c++ Go等 @@ -10,8 +11,6 @@ editLink: false ![1720001190604](images/v8WorkingPrinciple/1720001190604.png) -**暂时无法在飞书文档外展示此内容** - 1. 在编译型语言的编译过程中,编译器首先会依次对源代码进行词法分析、语法分析、生成抽象语法树、优化代码、最后生成处理器可执行的机器码。编译成功会生成一个可执行的文件。后续运行这个可执行的文件即可。 2. 在解释型语言的解释过程中,解释器会对源码依次进行词法分析、语法分析、生成抽象树,基于抽象树生成字节码,根据字节码执行程序,输出结果。 @@ -95,7 +94,7 @@ ESLint是一个用来检查javascript编写规范的插件,其检测流程也 回调函数没有在主函数内被调用——异步函数 -系统调用栈的信息可以通过:chrom://tracing/来抓取 +系统调用栈的信息可以通过:chrome://tracing/来抓取 # 宏任务 微任务 -宏任务: @@ -257,14 +256,16 @@ console.log(3) ## 白屏优化(资源获取到后,渲染进程创建一个空白页面,解析白屏) 主要有: -- 解析HTMl +- 解析HTML - 下载CSS - 下载Javascript - 生成CSSOM - 执行Javascript - 生成布局树 - 绘制页面 + **主要体现在下载CSS文件、下载Javascript文件和执行Javascript** + 解决方法: - 通过内联Javascript、内联CSS来移除这两种类型的文件下载,这样获取到HTML文件之后就可以直接开始渲染流程 - 可以尽量减少文件的大小。通过webpack等工具移除一些不必要的注释,压缩Javascript文件 @@ -353,6 +354,7 @@ XSS主要有三种方式 ## CSRF攻击 Cross-site request forgery 跨站请求伪造 CSRF攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些事情 + csrf与xss的不同,csrf攻击不需要将恶意代码注入用户页面,仅仅是利用服务器漏洞和用户的登录状态来实施攻击 ### csrf攻击的三个必要条件: