摘要:
父节点、子节点、根节点、兄弟节点、叶子节点 A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。 B、C、D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。 没有父节点的节点叫做根节点。 没有子节点的节点叫做叶子节点。 高度、深度、层 高度和深度都是从 0 开始。 满二叉树 阅读全文
posted @ 2025-11-17 18:52
jinzhepro
阅读(13)
评论(0)
推荐(0)
摘要:
堆栈 在 chrome 中,只要打开一个渲染进程,浏览器就会初始化 V8,同时初始化堆和栈。 栈主要只用来管理 JavaScript 调用的,栈是一块连续的内存空间,先进后出策略。 堆是一种树形结构,用来存储对象类型的离散的数据。 全局执行上下文和全局作用域 全局执行上下文里可能有多个作用域 词法环 阅读全文
posted @ 2025-11-17 18:51
jinzhepro
阅读(17)
评论(0)
推荐(0)
摘要:
当 ChatGPT 能秒写代码片段,当 Copilot 在 IDE 里实时“搭把手”,当 AI 工具开始接管重复的 API 封装、单元测试生成……我们不得不承认,一场由人工智能掀起的技术风暴,正深刻重塑着工程师的工作场景。有人焦虑“会不会被 AI 取代”,有人兴奋“终于能从繁琐工作里脱身”,但无论情 阅读全文
posted @ 2025-11-17 18:46
jinzhepro
阅读(18)
评论(0)
推荐(0)
摘要:
nodejs 分为两个大版本:奇数版和偶数版 每年十月 nodejs 发布奇数版为 Current,供给开发者最新特性的支持,6 个月后奇数版(Current)转为维护期(Maintenance)持续 18 个月随后进入结束期(EOL)。 就在奇数版转为维护期的同时,差不多第二年四月,偶数版本发布为 阅读全文
posted @ 2025-11-17 18:46
jinzhepro
阅读(20)
评论(0)
推荐(0)
摘要:
之前做的一个 expo 项目里有用到 google 登陆功能,特此记录一下: 1.申请 google credentials 首先需要登陆google cloud申请 Web ClientID、iOS ClientID、android ClientID。 Web ClientID 填入对应的后台地址 阅读全文
posted @ 2025-11-17 18:45
jinzhepro
阅读(19)
评论(0)
推荐(0)
摘要:
graph TB A[选择许可证] --> B[修改源码后是否可以闭源] --> |是| D[每一个修改过的文件是否都需要版权说明]--> |是| E[Apache] B-->|否|F[新增代码是否采用同样许可证] --> |是|G[GPL] D-->|否|H[是否可以用你的名字做广告促销] --> 阅读全文
posted @ 2025-11-17 18:44
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
基于对象 JavaScript 是一门基于对象的语言,因为 JavaScript 中大部分内容都是由对象构成的,可以说 JavaScript 就是建立在对象上的语言。 JavaScript 中的对象是指一组组属性和值组成的集合 45 属性描述符 configurable:是否可配置(delete,d 阅读全文
posted @ 2025-11-17 18:43
jinzhepro
阅读(3)
评论(0)
推荐(0)
摘要:
函数是一种特殊的对象 一等公民 JavaScript 中函数可赋值,可传参,可作为返回值,可有属性 如果某个编程语言中的函数,可以和其他数据类型做一样的事,函数就是一等公民。 V8 如何管理函数? 使用栈来管理函数调用 因为被调用者的生命周期始终小于调用者(后进先出),函数在执行过程中,其内部的临时 阅读全文
posted @ 2025-11-17 18:43
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
知识点:作用域、var、let、 const、ES6 解构赋值 1.作用域 ES5 中只有全局作用域和函数作用域的概念 我们应当避免使用全局变量 使用var声明变量 var a = 1; a = 1; window.a = 1; 上面三种结果都一样 值得注意的是,如果在函数里使用了var声明变量,则 阅读全文
posted @ 2025-11-17 18:41
jinzhepro
阅读(4)
评论(0)
推荐(0)
摘要:
js 中对象分为普通对象和函数对象,区别在于,普通对象的__proto__属性直接指向Object.prototype,所以对我们来说,讨论普通对象的原型并没有意义,下面我们主要讨论的是函数对象。 函数对象(也叫构造函数的实例),顾名思义是由函数构造的对象 function Person() {} 阅读全文
posted @ 2025-11-17 18:41
jinzhepro
阅读(9)
评论(0)
推荐(0)
摘要:
众所周知,数组的长度越长,查询的代价就越大。假如说现在要查询员工的薪资,需要有一个员工名字的数组,根据员工名字的位置在查找薪资。 所以 ES6 推出了 Map 和 Set,无论数据多大,查找速度也不会慢。 Map Map 可以理解为存放键值对的数组,像是一个二维数组: var map = new M 阅读全文
posted @ 2025-11-17 18:41
jinzhepro
阅读(7)
评论(0)
推荐(0)
摘要:
HTTP get 和 post 区别 get 多用于无副作用的场景,如搜索 post 多用于副作用的场景,如注册 get 可以被浏览器主动缓存,post 不能 post 比 get 相对安全 post 可以传输比 get 更多的数据 get 有长度限制 post 有更多的编码类型 强缓存 表示在时间 阅读全文
posted @ 2025-11-17 18:33
jinzhepro
阅读(7)
评论(0)
推荐(0)
摘要:
使用 docker+jenkins 实现自动化部署个人网站,只记录过程和可能要注意的点。 Docker docker 是一个应用容器引擎,可以理解为是操作系统上的软件包(容器)的集合,其容器之间相互独立,没有接口,完全使用沙箱机制隔离,容器内部的软件可以映射端口到宿主机。 使用 docker 可以更 阅读全文
posted @ 2025-11-17 18:31
jinzhepro
阅读(45)
评论(0)
推荐(0)
摘要:
Number 数值分为整数和浮点数,可使用十进制,八进制,十六进制和科学计数法来表示。 var a = 1; var b = 1.1; var c = 067; var d = 0xa; var e = 1.23e7; console.log(a, b, c, d, e); NaN 表示一个非数值, 阅读全文
posted @ 2025-11-17 18:31
jinzhepro
阅读(8)
评论(0)
推荐(0)
摘要:
一般我们开发 webApp 习惯用 chrome 控制台自带的手机模拟器,这没什么不好的,只不过在调试某些功能是会受限制: chrome 并不能完成完美的调用摄像头,调用录音等原生功能 chrome 有时不能完美的演示手机样式问题 所以就有了本地真机调试的想法,在网上大概搜了一下,结合自己的实践整理 阅读全文
posted @ 2025-11-17 18:30
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
表达式的最小单位,优先级最高 "zhang"; 123; null; true; false({})(function () {}); Member Expression 成员表达式 访问对象的成员,为了属性的访问 a().b a['b'] f`a${b}c` new class() // 带有参数 阅读全文
posted @ 2025-11-17 18:29
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
/[U+4E00–U+9FA5]/ 这是我们平时最常用的汉字匹配正则表达式,Unicode1.0 收录了 U+4E00–U+9FA5 范围内的文字,共计 20902 个汉字,但问题是这是 1993 年发布的,至今已经过去将近 30 年时间,这中间也已经加入了相当多的汉字。 历史 1993 年,Uni 阅读全文
posted @ 2025-11-17 18:29
jinzhepro
阅读(15)
评论(0)
推荐(0)
摘要:
DNS 查询路线 sequenceDiagram participant A as 用户 participant B as 浏览器 participant C as DNS根域名服务器 participant D as 顶级域名服务器 participant E as 域名服务器 A ->> B: 阅读全文
posted @ 2025-11-17 18:28
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
解析没有 defer 或 async 属性的 js 时会阻塞 DOM 的解析 graph LR A[页面加载] --> B[构建DOM树] --> D[render树] A --> C[构建CSSOM树] --> D B -..-> E[解析js图像等其他资源] D --> F[布局确定每个对象在页 阅读全文
posted @ 2025-11-17 18:28
jinzhepro
阅读(3)
评论(0)
推荐(0)
摘要:
rebase:重设基础点 将当前的branch的基础点移动到目标分支。 这么做的好处是主干master明确。 git rebase <目标分支> 不过rebase之后 master 并没有跟随过去,需要再合并一下: git checkout master git merge <刚刚的分支> 这样 m 阅读全文
posted @ 2025-11-17 18:27
jinzhepro
阅读(7)
评论(0)
推荐(0)
摘要:
Git 是一种分布式的版本控制系统。 -版本控制,顾名思义可以记录历史,并在需要时回退. -分布式的概念是多了一个本地仓库,每一个本地仓库都存在所有的版本,过程中无需联网提交(但是到最后还是要把代码提交到中央仓库)。 add add 的作用是把工作区改变的代码提交到暂存区,以监听文件内部的改变 gi 阅读全文
posted @ 2025-11-17 18:26
jinzhepro
阅读(11)
评论(0)
推荐(0)
摘要:
http 是基于 TCP/IP 的应用层通信协议,用于定义客户端和服务器之间的通信规则。 http/0.9(1991) http 第一个有记录的版本是 1991 年提出的http/0.9,他是有史以来简单的协议。 无请求头 只支持GET方法 只能返回HTML GET /index.html 服务器可 阅读全文
posted @ 2025-11-17 18:25
jinzhepro
阅读(38)
评论(0)
推荐(0)
摘要:
缺陷控制 在项目的全生命周期内,保障项目质量的一系列行为 缺陷问题 需求不明确 返工 沟通/督办 进度超期 加班 缺陷跟踪 工程有 bug 难维护 代码规范 协同 效率低 清单/代办 缺陷跟踪软件 帮助质量保证,在工作中维护软件的跟踪报告,主要作用是开发状态,集中概览,提供报告 总结 分工明确,责任 阅读全文
posted @ 2025-11-17 18:25
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
提前处理 var、 const、 let、 function 声明、 class 声明 。 var 如果 var 出现在 if 语句块中 会提升到所在作用域的头部 console.log(a); // undefined var a = 1; 如果 var 出现在 with 中 不定,不推荐使用 w 阅读全文
posted @ 2025-11-17 18:24
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
V8 是一个虚拟机,作为 js 的执行环境,它可以模拟 cpu,堆栈,寄存器等 指令集(机器语言): cpu 只能识别的二进制指令如(1000100111011000) 汇编指令集: 人类可识别记忆的符号(mov ax,bx) 高级语言的处理 解释执行(启动快,执行慢):源代码通过解析器编译成字节码 阅读全文
posted @ 2025-11-17 18:24
jinzhepro
阅读(10)
评论(0)
推荐(0)
摘要:
线性结构,内存不连续 单链表 头结点 后继指针 尾节点 空地址 null 插入和删除 查找 链表不支持随机访问,所以需要遍历节点,时间复杂度 O(n) 代码 使用数组模拟 class Node { // 单个节点 constructor(data, next) { this.data = data; 阅读全文
posted @ 2025-11-17 18:23
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
Proxy 可以创建一个对象的代理,实现对操作的劫持。 [MDN-Proxy](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy) // 定义一个普通对象 var obj = 阅读全文
posted @ 2025-11-17 18:22
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
常规属性(properties)和排序属性(element) 对象中的字符串属性被称为 properties,是按照创建的顺序;数字属性被称为 element,按照索引值大小排序。 在对象 bar 内部分别使用了两个线性数据结构保存这两种属性,索引顺序 element → properties 对象 阅读全文
posted @ 2025-11-17 18:21
jinzhepro
阅读(4)
评论(0)
推荐(0)
摘要:
函数运行时所需要的信息 在最新的 ES2018 中,执行上下文包括 词法环境(获取变量或 this 时) 变量对象(声明变量时) code evaluation state:恢复代码执行位置 Function:正在被执行的函数 Realm:‘国度’,代表了基础库和内置对象的实例 Generator: 阅读全文
posted @ 2025-11-17 18:20
jinzhepro
阅读(10)
评论(0)
推荐(0)
摘要:
alpha:内部测试版本,测试或开发人员使用 beta:公测版本,消除了严重 bug,还有新功能添加 rc: 发行候选版本,主要是修改 bug,不做功能改变 release:发行版 例如 1(主版本).2(次版本).3(修订号)- alpha.1(内部测试版本号)-beta.1(公测版本号)-rc. 阅读全文
posted @ 2025-11-17 18:20
jinzhepro
阅读(7)
评论(0)
推荐(0)
摘要:
线性表结构 使用一组连续的内存空间 相同类型数据 线性表结构 数据像一条线一样的结构,只有前,后两个方向.如链表,队列,栈等 连续内存空间 随机访问 插入,删除就要做大量的迁移工作 内存地址: a[i]_address = base_address + i * data_type_size 低效的“ 阅读全文
posted @ 2025-11-17 18:19
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。 二叉查找树的查找 先取根节点,如果值比节点小就在左树递归,如果值比节点大就在右树递归。 代码 const searchOrder = (node, val) => { if ( 阅读全文
posted @ 2025-11-17 18:18
jinzhepro
阅读(7)
评论(0)
推荐(0)
摘要:
宏任务是指消息队列中等待被主线程执行的事件。 微任务是一个需要异步执行的函数。 执行微任务时不会在当前函数中执行,所以不会导致栈溢出 微任务总是先于宏任务被执行 执行流程 foo→bar→global→micro-foo→micro-bar→micro-global→macro-foo→macro- 阅读全文
posted @ 2025-11-17 18:17
jinzhepro
阅读(8)
评论(0)
推荐(0)
摘要:
Completion Record 标准类型 [[type]]:完成的类型(break、continue、return、throw、normal) [[value]] :返回值(如果没有,则为 empty) [[target]] :语句的目标 { var a = 1; // normal, unde 阅读全文
posted @ 2025-11-17 18:10
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
回调函数 最原始的异步编程方法(回调地狱) Promise 在一定程度上解决了回调地狱的问题,但是 then 多了之后也不太友好。 三种状态 pending(进行中),resolved(已解决),rejected(失败),状态一旦确定不可改变,使用 then 进行异步编程,catch 进行错误捕获。 阅读全文
posted @ 2025-11-17 18:10
jinzhepro
阅读(5)
评论(0)
推荐(0)
摘要:
复杂度分析是学习数据结构与算法的前提。 事后统计法 通过监控、统计把代码跑一遍的方法。 局限性: 依赖测试环境。比如 i9 和 i3 的 cpu 跑同一段代码。 受数据规模影响大。比如已排序好的数组和未排序好的数组。 大 O 复杂度表示法 $T(n) = O(f(n))$ T(n)表示代码的执行时间 阅读全文
posted @ 2025-11-17 18:09
jinzhepro
阅读(32)
评论(0)
推荐(0)
摘要:
手写一个 new function create() { // 创建一个空对象 let obj = new Object(); // 参数转数组 var args = Array.prototype.slice.call(arguments); // 获取构造函数 let Con = args[0] 阅读全文
posted @ 2025-11-17 18:06
jinzhepro
阅读(9)
评论(0)
推荐(0)
摘要:
this 和切换执行上下文有关,取决于函数执行时刻,调用函数时所使用的引用。 8 种函数 // 普通函数 function(){ ... } // 箭头函数 () => { ... } // 生成器函数 function* (){ ... } // 类中的函数 class A{ function() 阅读全文
posted @ 2025-11-17 18:05
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
类型声明 使用 :[type] 指定变量的类型 let a: number = 1 // 数字 let b: string = 'zhang' // 字符串 let c: boolean = true // 布尔 let d: object = {} // 对象 let e: array = [] 阅读全文
posted @ 2025-11-17 18:04
jinzhepro
阅读(6)
评论(0)
推荐(0)
摘要:
前端自动化 前端代码的自动化构建,打包,测试,部署等一系列流程 CI 持续集成:不断开发新的功能,并通过测试快速发现新功能是否可与旧版本集成. CD 持续部署:不断的经过测试用例的校验,并将代码发布到测试或生产环境 意义 相比人工稳定,提升软件质量 效率迭代,便捷部署 快速交付,便于管理 阅读全文
posted @ 2025-11-17 18:03
jinzhepro
阅读(3)
评论(0)
推荐(0)
摘要:
封装 axios 的好处:兼容多种请求方法,不需要关心是怎么调用的,只需要传入相关参数即可使用 我是在 webpack 项目里,用的到了 ES6 模块化进行封装 话不多说,上代码: // 引入axios import axios from "axios"; // axios.create方法会创建一 阅读全文
posted @ 2025-11-17 18:02
jinzhepro
阅读(26)
评论(0)
推荐(1)
摘要:
本文知识点是摘自于汤姆大叔博客,自己记录理解并学习 书写可维护的代码 软件开发是一个熵增的过程,随着软件结构越来越复杂,代码维护就变得举步维艰,当你发现 bug 并理解修复他是最好的。否则,等你转移到其他任务,一段时间后再回来看你的代码,就需要: 花时间学习和理解问题 花时间学习和理解解决问题的代码 阅读全文
posted @ 2025-11-17 18:01
jinzhepro
阅读(8)
评论(0)
推荐(0)
摘要:
垃圾回收算法 遍历 GC Root(window,DOM,栈等)标记活动对象和非活动对象 回收非活动对象所占据的内存 内存整理 新生代和老生代 在 V8 中,会把堆分成新生代和老生代两个区域 新生代通常只支持 1~8M 的容量,存放生存时间短的对象,由副垃圾回收器负责。 老生代通常容量很大,存放生存 阅读全文
posted @ 2025-11-17 17:34
jinzhepro
阅读(46)
评论(0)
推荐(0)
摘要:
实体层 使用物理手段链接电脑,如光缆,wifi。 链接层 规定了电信号的解读方式。 以太网协议 以太网规定,一组电信号为一个数据包,也叫做帧,每一帧都分为标头(head)和数据(data)。标头包含了局书包的一些说明项,包括发送者、接受者、数据类型等。数据则是具体的发送内容。 MAC地址 MAC地址 阅读全文
posted @ 2025-11-17 17:26
jinzhepro
阅读(5)
评论(0)
推荐(0)

浙公网安备 33010602011771号