置顶文章
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...文章列表
未命名
# JS # map 和对象区别 声明方式不同 对象的键只能是 symbol 和字符串,map 的键可以是任意类型 对象的属性有排序顺序 (排序为索引属性和命名属性),map 中 key 的顺序就是插入的顺序 # 遮蔽 js 中重复定义变量,导致新定义的同名变量覆盖原变量的过程就是遮蔽 var 和 function 关键字定义的变量会发生遮蔽 js 中函数的变量名是只读的,不能被修改 # void 0 替代 undefined undefined 不同于 null,null 不可以被重新赋值,但是 undefined 可以被重新赋值,因此不可靠 void 0 会稳定返回...
more...rtc实时通信
# rtp 实时传输协议、RTCP 实时传输控制协议 rtp 是实时传输协议,定义于 rfc3550,是为了需要实时优先级的数据交换提供实时连接。 RTP(实时传输控制协议)负责传媒体,但媒体传的怎么样,就需要 RTCP 来进行反馈和协调,RTCP 专门用户传控制信息、不传音视频数据本身。 # webrtc 网页实时传输协议 webrtc 是网页实时传输协议,是用于客户端点对点建立连接、而不需要服务器中转数据的一种通信方式的协议 webrtc 实际上使用的是 SRTP 协议(安全实时传输协议),确保了交换数据的安全性和身份验证。 # 优势 跨平台:只要设备的浏览器上支持...
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...技能栈
# 面试者技能栈 & 项目 熟悉 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...图解Google V8笔记
# 图解 Google V8 笔记 [TOC] # 开篇词:如何学习 V8 # 如何学习 V8? 先了解 JavaScript 这门语言的基本特性和设计思想,再学习 V8 执行 JavaScript 代码的完整流程。 # 1. V8 是如何执行一段 JavaScript 代码的? # 什么是 V8? V8 是由 Google 开发的开源 JavaScript 引擎,也被称为虚拟机,模拟实际计算机各种功能来实现代码的编译和执行。 # 高级代码为什么需要先编译再执行? CPU...
more...





















