置顶文章
Node学习笔记
# Node.js # 介绍 Node.js 并不是 JavaScript 应用,也不是编程语言,而是 JavaScript 的运行时。 Node.js 是构建在 V8 引擎之上的,V8 引擎由 C / C 编写,因此 JavaScript 语言需要编译为 C / C 代码之后才能执行。 Node.js 采用异步 IO 和事件驱动的设计理念,可以高效的处理大量并发请求,提供了非阻塞 IO 接口和事件循环机制,使其可以编写出高性能、高扩展的应用程序。(异步 IO 通过 libuv 库来实现) Node.js 使用 npm 作为包管理工具 Node.js 适合做一些 IO...
more...whistle抓包
# whistle 简单使用 # whistle 安装启动 安装:npm i -g whistle 使用:w2 start 访问:访问对应的页面 作用: 任何的链接都会经过工具转发一下,并记录下来 使用前需要配置代理到 whistle 服务的地址和端口上(设置代理如下) # 使用步骤 设置代理: 手机端省略 电脑端: 网络偏好设置 --- 高级 --- 代理 --- 网页代理、安全网页代理 配置代理的 ip 地址和端口号(8899) 确认证书: 一般会自动下载,也可以打开 8899 端口找到证书下载并确认信任 查看抓包情况和设置代理转发: 打开 127.0.0.1:8899...
more...复杂业务部署与优化
# 软件生命周期: # 架构流程图 # 复杂项目通用方案 # 业务的复杂度 交互的复杂性 数据结构和状态的复杂性 多项目互相依赖的复杂性 打包 性能优化 第三方库的使用和调研以及二次开发 # 流程的复杂度 git flow lint 工具 单元测试 commit 信息 PR revirew CI / CD # CI / CD 的概念 业务组件库的开发和发布是随着一些列任务进化的: 本地 commit 钩子函数完成 commit 验证 代码 push 到远端之后 跑特定的 test(不仅仅是本机的 unit test,也可能有时间很长的 E2E test) test...
more...前端性能优化
# 性能优化核心 # 指标 FCP 首次内容绘制 LCP 最大内容绘制 FID 首次输入延迟 INP 交互延迟时间 TTI 可交互时间 TBT 总阻塞时间 TTFB 首字节时间 # 代码部分 资源懒加载,图片懒加载。 路由懒加载 资源压缩 避免频繁回流重绘(使用 fragmet 标签同一添加 DOM) CSS 属性 will-change 控制分层,以提高渲染性能 CSS 放在顶部,JS 放在底部 避免空的 src 和 href 值 使用 web-worker 和 service-worker # 网络层面 使用缓存 使用 CDN DNS 预解析 gzip 组件 尽量减少 HTTP...
more...持续集成与持续部署
# 5-4 持续集成与持续部署 传统的开发过程中的坑: BUG 总是在最后才发现 越到项目后期,加班越严重 交付无法保障 变更频繁导致效率低下 无效的等待多,用户满足度低 你有没有想过 / 用过?当你哪一天... 不用为开发 / 测试环境不一致而苦恼 不用麻烦运维人员帮忙调试环境 不用手动进行测试,模拟环境中进行自测 不用手动发布、部署,自动化实现发布部署 不用管开发 / 测试环境,只用专注代码的开发? 持续集成解决了什么问题? 提高软件质量 效率迭代 便捷部署 快速交付、便于管理 介绍: 什么是 CI/CD 介绍 CI/CD 流程 前端项目:结合 CI/CD...
more...typeScript笔记
# TS 赋值时,父集合类型可以赋值给子集合类型,extends时,父集合类型可以继承自子集合类型 # 定义数据类型 /** * 定义数据类型 */let num: number = 1;let bool: boolean = false;/** * 定义固定类型数组 */let arr1: number[] = [1, 2, 3];let arr2: string[] = ["1", "2"];/** * 使用泛型定义固定类型数组 */let arr3: Array<number> = [1, 2, 3];/** *...
more...文章列表
WebKit技术内幕
# 浏览器内核 在浏览器中,有一个最重要的模块,就是浏览器内核,它用于将页面转变为可视化的图像结果,通常也被成为渲染引擎 # 内核分层 浏览器内核有许多功能模块,主要分为三层 第一层隶属于渲染引擎,包含:HTML 解释器 (解析 HTML 为 DOM 树)、CSS 解释器 (解析 CSS 为 CSSOM 树)、布局 (标记 DOM 元素位置信息) 和 JavaScript 引擎 (解析并执行 js) 第二层是封装了操作系统的能力,向第一层提供接口,包含网络、存储、2D/3D 图形、音频和视频和图片解码器等 第三层是操作系统的一些 api 支持,例如多线程和文件等 #...
more...业务场景
# 无感刷新 无感刷新 token 而不是将 token 过期时间设置很大主要是为了安全性和灵活性,如果 token 泄漏,定时更换 token 可以起到一定的安全性保护 无感刷新:后端维护一个 token 和 RefreshToken 两个令牌,放到响应头中进行返回,使用 token 进行正常的请求验证,当 token 失效时,就去验证 refreshToken 是否有效,如果 refreshToken 有效,就生成新的 token 替换掉旧的 token 并返回。 # 大文件上传 专业术语: 断点续传、断开重连重传、切片上传。 # 方案 首先前端将数据进行切片,根据 size...
more...你不知道的JavaScript
字符串 (ASCII--unicode--UTF) 字符串最早期是:使用一个字节表示的 ASCII 码,表示常用的字符足够了,但是表示不了全球的其他语言与字符,后来就出现了定长的 unicode 编码,使用 2 个或 4 个字节表示,由于扩大了只用英语的国家的字符串占用,现如今常使用变长的 unicode 编码:如 UTF-8、UTF-16 等,特点是兼容 ASCII 码 charCodeAt 和 codePointAt:对于定长的一个码元的字符(常常是 UTF-16 编码的字符),使用 charCodeAt 就足够了,但是对于不定长的需要两个码元表示的字符(UTF-8...
more...图解Google V8笔记
# 图解 Google V8 笔记 [TOC] # 开篇词:如何学习 V8 # 如何学习 V8? 先了解 JavaScript 这门语言的基本特性和设计思想,再学习 V8 执行 JavaScript 代码的完整流程。 # 1. V8 是如何执行一段 JavaScript 代码的? # 什么是 V8? V8 是由 Google 开发的开源 JavaScript 引擎,也被称为虚拟机,模拟实际计算机各种功能来实现代码的编译和执行。 # 高级代码为什么需要先编译再执行? CPU...
more...技能栈
# 面试者技能栈 & 项目 熟悉 vue 全家桶、源码 webpack、gulp 源码 babel 编译源码 cordova 混合 app 开发 前端工程化、脚手架、搭建 CICD 计算机网络、web 安全、浏览器原理 低代码 java 微信小程序 # js 基础 作用域和执行上下文的区别 es5 的继承,es6 继承 js 的垃圾回收机制 # vue 介绍 Vue template 到 render 的过程? vue 首先将 template 进行词法分析变为 tokens 数组,通过语法分析变为 vue 的 ast, 根据 ast 添加 js 独有的属性变为...
more...操作系统
# 操作系统 定义 操作系统是一组管理并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的互相关联的系统软件应用程序,同时也是计算机系统的内核和基石。 任务 设备管理 文件管理 进程管理 # CPU 作用 读取指令、执行指令、控制硬件、传输数据。 通过地址总线读取指令。 通过控制总线控制硬件设备。 通过数据总线传输数据。 # 启动 开机 --CPU 执行 主板rom中的BIOS程序 ,进行硬件自检 --- 硬件自检后 cpu 会将 0号扇区调入内存 中执行 MBR 主引导记录(Bootloader 程序)--- 主引导记录(Bootloader 程序)根据...
more...




















