Skip to content

Commit 543d772

Browse files
authored
Merge pull request #1 from zhangqf/dev
Dev
2 parents b02f254 + 6d21b25 commit 543d772

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

docs/browse/v8WorkingPrinciple.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
editLink: false
33
---
44

5+
56
# 编译器(Compiler)和 解释器(Interpreter)
67

78
编译型语言在程序执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次运行程序时,都可以直接运行该二进制文件,而不需要再次重新编译 c c++ Go等
@@ -10,8 +11,6 @@ editLink: false
1011

1112
![1720001190604](images/v8WorkingPrinciple/1720001190604.png)
1213

13-
**暂时无法在飞书文档外展示此内容**
14-
1514
1. 在编译型语言的编译过程中,编译器首先会依次对源代码进行词法分析、语法分析、生成抽象语法树、优化代码、最后生成处理器可执行的机器码。编译成功会生成一个可执行的文件。后续运行这个可执行的文件即可。
1615
2. 在解释型语言的解释过程中,解释器会对源码依次进行词法分析、语法分析、生成抽象树,基于抽象树生成字节码,根据字节码执行程序,输出结果。
1716

@@ -95,7 +94,7 @@ ESLint是一个用来检查javascript编写规范的插件,其检测流程也
9594

9695
回调函数没有在主函数内被调用——异步函数
9796

98-
系统调用栈的信息可以通过:chrom://tracing/来抓取
97+
系统调用栈的信息可以通过:chrome://tracing/来抓取
9998

10099
# 宏任务 微任务
101100
-宏任务:
@@ -257,14 +256,16 @@ console.log(3)
257256

258257
## 白屏优化(资源获取到后,渲染进程创建一个空白页面,解析白屏)
259258
主要有:
260-
- 解析HTMl
259+
- 解析HTML
261260
- 下载CSS
262261
- 下载Javascript
263262
- 生成CSSOM
264263
- 执行Javascript
265264
- 生成布局树
266265
- 绘制页面
266+
267267
**主要体现在下载CSS文件、下载Javascript文件和执行Javascript**
268+
268269
解决方法:
269270
- 通过内联Javascript、内联CSS来移除这两种类型的文件下载,这样获取到HTML文件之后就可以直接开始渲染流程
270271
- 可以尽量减少文件的大小。通过webpack等工具移除一些不必要的注释,压缩Javascript文件
@@ -353,6 +354,7 @@ XSS主要有三种方式
353354
## CSRF攻击
354355
Cross-site request forgery 跨站请求伪造
355356
CSRF攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些事情
357+
356358
csrf与xss的不同,csrf攻击不需要将恶意代码注入用户页面,仅仅是利用服务器漏洞和用户的登录状态来实施攻击
357359

358360
### csrf攻击的三个必要条件:

0 commit comments

Comments
 (0)