4.1k 4 分钟

# 浏览器工作原理与实践笔记 [TOC] # 进程和线程 关系: 一个进程就是一个程序的运行实例。启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。 线程由进程来启动和管理的。线程依赖于进程,而进程中使用多线程并行处理能提升运算效率。 特点 进程中任意一线程执行出错,都会导致整个进程的崩溃 线程之间共享进程之中的数据 当一个进程关闭之后,操作系统会回收进程所占用的内存 进程之间内容互相隔离 # Chrome...
856 1 分钟

# vue # 响应性原理 内存中维护了一个桶结构,weakMap-Map-Set,用于存储所有的副作用函数 使用 Proxy 这个 api 对对象进行代理,拦截到 getter 操作进行 track 收集副作用,拦截到 setter 操作进行 trigger 触发副作用函数。 # 编译时 将 template 词法分析为 tokens,语法分析为 vue ast,(标记 v-if 等指令属性),接着转换为 js ast,接着将 ast 变为 render 函数字符串(v-if 变为三元表达式),最后使用 new Function () 变为可执行的 render 函数。 #...
12k 11 分钟

# 概念 # 介绍 node.js 是一个异步的事件驱动的 JavaScript 运行时,node.js 的特性其实是 JS 的特性: 非阻塞I/O 和 事件驱动 。这种基于事件的编程方式具有 轻量级 、 松耦合 和 只关注事务点 等优势。 # 发展 Node 的出现将前后端的壁垒再次打破,JavaScript 这门最初就能运行在服务端的语言,在经历了前端的辉煌和后端的低迷后,借助事件驱动和 V8 的高性能,再次成为了服务端的佼佼者。在 Web 应用中,JavaScript 将不再仅仅出现在前端浏览器中,因为 Node 的出现,前端将会被重新定义。 # 核心 Node...
2.4k 2 分钟

# JS 继承 # 原型链继承 缺点:子类共享父类的状态 function Parent() { this.path = []}function Child() { }Child.prototype = new Parent(); // 原型链继承const child1 = new Child();const child2 = new Child();child1.path.push(1);console.log(child1.path===child2.path); // 原型链继承方式所有子类共享父类的状态#...
3k 3 分钟

小甲鱼汇编教程 # 8086CPU 为例 # 汇编语言 汇编语言是二进制指令的文本形式,是机器码的助记符。 不同的 CPU 型号所支持的汇编语言是不同的 # CPU 的型号 主要有:Intel 系列(8086 等)、AMD 系列和 Apple 系列(M1 等、基于 ARM 架构) CPU 由运算器、控制器和寄存器等组成,它们通过内部总线相连 区别:内部总线实现 CPU 内部各个器件之间的联系,外部总线实现 CPU 和主板上其他器件之间的联系 # CPU 寄存器 8086CPU 有 14...
798 1 分钟

资料链接 # 编译方式 静态编译 AOT:静态编译需要通过编译器将源代码编译为机器码,以便于在目标平台上直接使用。 动态解释 JIT:动态解释需要通过解释器一边解释编译一边执行。 # 编译器与解析器 # JIT 和 AOT # Pass 扫描 # IR # 编译器的基本构成 Source Code 原代码 ---- Front-End 编译前端 ---- Optimizer 中间代码优化 ---- Back-End 编译后端 ---- Machine Code...
1.6k 1 分钟

# 前端网络安全 # XSS 跨站脚本攻击 # 介绍 XSS 跨站脚本攻击侧重于脚本,旨在千方百计地注入并执行恶意的脚本代码 XSS 常用于通过 url 参数的形式或者输入框中输入脚本的形式进行攻击,分为反射性、储存型和 DOM 型。 反射性:主要是攻击者浏览器提交恶意代码到服务端,服务端将恶意代码传回到客户端 存储型:攻击者提交恶意代码到服务器,服务器将恶意代码存储到数据库 DOM 型:攻击者提交 DOM 操作脚本显示广告等。 # 预防 将 "<"、">"...
5.8k 5 分钟

# 概念 # 互联网 Internet 互联网是一个全球性的网络,由无数个私人网、公共网、学术网和政府网所组成,这些网络通过一系列标准的协议和技术服务相互连接,互联网的核心包括:全球性、开放性、互联性和服务多样性。 # 广域网 WAN 广域网是一种覆盖地理区域的计算机网络,通常跨越多个城市、州或国家。广域网 # PPP 链路 广域网在数据链路层通过 PPP 协议来传输数据。 PPP 点对点协议 # 路由器 路由器又称为网关 一台路由器对应多个网卡 路由器可以拥有多个 IP 地址,常见有内部 IP 地址、外部 IP 地址和其他 IP 地址。 路由器还可以支持网络地址转换(NAT...
3.2k 3 分钟

# JS # map 和对象区别 声明方式不同 对象的键只能是 symbol 和字符串,map 的键可以是任意类型 对象的属性有排序顺序 (排序为索引属性和命名属性),map 中 key 的顺序就是插入的顺序 # 遮蔽 js 中重复定义变量,导致新定义的同名变量覆盖原变量的过程就是遮蔽 var 和 function 关键字定义的变量会发生遮蔽 js 中函数的变量名是只读的,不能被修改 # void 0 替代 undefined undefined 不同于 null,null 不可以被重新赋值,但是 undefined 可以被重新赋值,因此不可靠 void 0 会稳定返回...
1.5k 1 分钟

# 介绍 rollup 是一个 ES 模块化打包工具,可以帮助我们编译小的代码到一个大的、负责的代码中,比如一个库或者一个应用程序 # 对比 我们会发现 Rollup 的定义、定位和 webpack 非常的相似: Rollup 也是一个模块化的打包工具,但是 Rollup 主要是针对 ES Modulej 进行打包的; 另外 webpacki 通常可以通过各种 loader 处理各种各样的文件,以及处理它们的依赖关系; rollup 更多时候是专注于处理 JavaScript 代码的(当然也可以处理 css、font、vue 等文件 另外 rollup 的配置和理念相对于...