2.3k 2 分钟

# 所使用的基础组件 代码托管在 Github 上,使用 github 集成的 Travis CI 自动触发 CI 流程。在 CI 中自动 build 新的 image 上传到 Docker Hub。然后通过 sshpass 远程登录 server 触发部署脚本。部署脚本 pull 新的 image 然后部署。 # Dockerfile 由于项目都是基于 python 的,所以 dockerfile 比较简单: FROM ubuntu:latestMAINTAINER Shaobo Liu <shaobo@mkdef.com>LABEL...
26k 24 分钟

# ------------------------------------ # react 官网笔记: # react 核心价值 组件化 + 数据驱动视图 UI = f (state) # react 快照 state state 就像每次渲染的快照,并且不会同步更新,react 中当 state 状态变化时,当前快照中是获取不到更新后的内容和状态的(因为 react 由于优化需要集中多个进行更新),此时想要操作快照更新之后的操作只能在快照更新之后添加钩子函数。 使用 useEffect(快照更新之后自动执行钩子) 类组件可以使用生命周期钩子 使用条件渲染,根据条件进行不同的处理 #...
13k 12 分钟

# 数据库 # 定义 数据库是用来组织存储和管理数据的仓库 # 分类 # 关系型 (传统型、关系型、SQL 数据库) ①MySQL 数据库(目前使用最广泛,流行度最高的开源免费数据库) ②Oracle 数据库(收费) ③SQL Server 数据库(收费) # 非关系型 (新型、非关系型、NoSQL 数据库) ④Mongodb 数据库 (一定程度上弥补了传统型数据库的缺陷) # 区别 1、MySQL 是关系型数据库,而 mongodb 是非关系型数据库; 2、MySQL 中支持多种引擎,不同引擎有不同的存储方式,而 mongodb 以类 JSON 的文档的格式存储; 3、MySQL 使用传统...
1.5k 1 分钟

# 隐式类型转换过程 当进行一些操作时,JS 会自动调用内部的函数进行隐式类型转换,例如: ==判断 ,数据类型不同的 加减法操作 ,数据前加 + 或 -( +new Date() )或 ${obj} 等 两个引用数据类型(对象)之间不会发生隐式类型转换,双等符号(==)也会判断其栈中的地址 隐式类型转换内部使用的函数有:ToNumber、ToString、ToBoolean、ToPrimitive(底层)等 ToNumber 对 引用数据类型 会先使用 ToPrimitive('number') ,然后使用 Number()...
15k 13 分钟

# babel # 1 执行编译的命令 在 package.json 文件中添加执行 babel 的命令 (在 scripts 中添加:"build":"babel src -d dist") babel src --out-dir dist* # 2.Babel 的配置文件 安装配置文件 npm install @babel/preset-env@7.11.0--save-dev 创建配置文件.babelrc,...
7.8k 7 分钟

# 浏览器渲染原理 过程包含 渲染进程 (主线程、合成线程、线程池)、 预解析进程 和 网络进程 # 解析 HTML 浏览器会开辟渲染进程、预解析进程和网络线程,预解析进程快速扫描并交给网络线程加载 js 和 css 文件,渲染进程会解析 HTML 字符串,解析成 DOM 树和 CSSOM 树这种容易操作的对象,也给 JS 提供了操作这两颗树的能力(document.body 和 document.styleSheets)。预解析进程加载和执行 JS 代码时,渲染进程会被阻塞,因为 JS 代码可能会操作 DOM 树和 CSSOM 树 解析 HTML 的结果是得到 DOM 树和 CSSOM...
9.4k 9 分钟

# 目录 调用堆栈 原始类型 值类型和引用类型 隐式,显式,名义和鸭子类型 == 与 ===, typeof 与 instanceof this, call, apply 和 bind 函数作用域,块级作用域和词法作用域 闭包 map, reduce, filter 等高阶函数 表达式和语句 变量提升 Promise 立即执行函数,模块化,命名空间 递归 算法 数据结构 消息队列和事件循环 setTimeout, setInterval 和 requestAnimationFrame 继承,多态和代码复用 按位操作符,类数组对象和类型化数组 DOM 树和渲染过程 new...
903 1 分钟

# ArrayBuffer: ArrayBuffer 是 JavaScript 中用于表示通用的固定长度的二进制数据缓冲区的对象。它可以在内存中分配一块连续的内存空间,用于存储二进制数据。 ArrayBuffer 对象本身只是一个占用了一定字节数的内存块,它没有提供直接的方法来读取或写入数据。为了操作 ArrayBuffer 中的数据,我们需要使用不同的视图(如 TypedArray 或 DataView)来读取、写入和操作底层的二进制数据。 在内存中,ArrayBuffer 对象以连续的字节序列表示。这意味着存储在 ArrayBuffer...
221 1 分钟

vue3 中通过位运算进行类型判断 性能提高,可读性减小: 快速判断:位运算是底层的二进制操作,比起其他逻辑运算符,如逻辑与 &&、逻辑或 ||,位运算更加高效。在某些场景下,使用位运算可以对多个类型进行快速判断,避免了复杂的条件判断和函数调用。 位运算的特性:位运算的特性使得它可以用较少的存储空间表示和处理多个状态或标志位。通过将多个类型的判断压缩到一个整数中,可以节省内存空间,并且减少了不必要的变量声明和赋值操作,从而提升了性能。