http详解 发表于 2023-10-16 更新于 2024-04-21 分类于 网络 Changyan: 本文字数: 2.2k 阅读时长 ≈ 4 分钟 http 1.0 简单、灵活、易扩展、跨平台 基本格式:header+body header、status 都可以自定义 https = http + tls/ssl 无状态: 服务器不会记录请求的状态 默认关闭 keepalive,每次请求都建立一次tcp连接,服务器处理后立即断开tcp连接 http1.0有队头阻塞, 即没收到第一个请求对应的响应 就不能发送第二个请求 阅读全文 »
几种继承方式 发表于 2023-10-15 更新于 2024-04-21 分类于 js红宝书 Changyan: 本文字数: 3.6k 阅读时长 ≈ 7 分钟 原型链 盗用构造函数 组合继承 原型式继承 寄生继承 寄生式组合继承 阅读全文 »
事件循环 发表于 2023-10-15 更新于 2023-12-24 分类于 技术 Changyan: 本文字数: 2.4k 阅读时长 ≈ 4 分钟 浏览器进程模型一个进程有很多线程,线程是干活的人,所以一个进程至少一个线程 浏览器极其复杂,拥有多个进程 浏览器进程 负责:界面显示、交互、子进程管理 网络进程 渲染进程 会开启一个渲染主线程,负责执行html\css\js代码 默认每个标签开启一个新渲染进程 阅读全文 »
一些枚举对象的方法 发表于 2023-10-13 更新于 2023-10-22 分类于 js红宝书 Changyan: 本文字数: 842 阅读时长 ≈ 2 分钟 方法名 包含原型链上的 可枚举的 Object.keys() 否 是 for-in 是 是 Object.getOwnPropertyName() 否 可或不可 阅读全文 »
浏览器渲染原理 发表于 2023-10-12 更新于 2024-04-14 分类于 技术 Changyan: 本文字数: 912 阅读时长 ≈ 2 分钟 渲染流程当浏览器获得html文档,会产生一个渲染任务,把渲染任务分配给渲染主线程的消息队列。在时间循环机制下,渲染主线程去除消息队列中的任务,开始渲染流程 阅读全文 »
枚举和迭代——借由for-in和for-of说明 发表于 2023-10-11 更新于 2024-03-11 分类于 技术 Changyan: 本文字数: 944 阅读时长 ≈ 2 分钟 枚举和迭代有什么区别? for-in 是遍历所有可枚举属性(包括原型链上的) 123456789let obj = { a: 'aaa', b: 'bbb'} Object.prototype.c = 'ccc'console.log(obj);for(let i in obj){ console.log(i);} 1234Object.defineProperty(obj,'d',{ value: 'ddd', enumerable: false}) //d属性枚举不到 🔗更多关于枚举 所以enumberable决定了属性能不能被枚举到而可迭代性是由各种类型里内置的迭代器工厂函数决定的 详见:🔗迭代器-生成器 for-of 是迭代,要有迭代器才能用 12345//比如迭代一个Object类型会报错,因为Object没有实现Iterable接口不可迭代console.log(obj); //{a: 'aaa', b: 'bbb', d: 'ddd'}for (let x of obj){ console.log(x);} //Uncaught TypeError: obj is not iterable 手写一个伪数组迭代器123456789101112131415161718192021const { range } = require("lodash");let fakeArr = { 0: 'a', 1: 'b', 2: 'c', length: 3,}//赋值号右边是一个生成器函数Object.prototype[Symbol.iterator] = function* () { for (i in range(0, this.length)) { yield this[i] }}for (let item of fakeArr) { console.log(item); }
promise笔记 发表于 2023-10-11 分类于 技术 Changyan: 本文字数: 3.5k 阅读时长 ≈ 6 分钟 Porimise.resolve(obj) Promise.reject(obj) obj是非Promise对象,其状态PromiseState一定是 fulfilled obj是Promise对象, 则根据obj的状态PromiseState是 fulfilled或 rejected 来决定整体的 resolve或 reject 本质是把 PromiseState 从 pending –> fulfilled/ rejected 状态不为pending 就会调用then 12345const p = Promise.resolve( new Promise((resolve, reject) => { reject("ok!"); })); 阅读全文 »
nginx 发表于 2023-10-11 更新于 2024-04-14 分类于 技术 Changyan: 本文字数: 691 阅读时长 ≈ 1 分钟 在nignx.exe所在目录启动nginx 1nginx 查看所有进程信息 1ps -ef | grep nginx 查看nginx所有进程信息 查看端口占用情况 12#80表示查看80端口的lsof -i:80 停止nignx 123nginx -s quit #优雅停止nginx -s stop #立即停止nginx -s reload #重载配置文件 查看配置 12nginx -V #查看配置nginx -t #检查配置是否出错 nginx 基本配置1234567891011121314event {}http { include /etc/nginx/mime.types; #导入文件MIME类型 include /etc/nginx/conf.d/*.conf; server { listen 80; server_name localhost; root /dist; # 访问80端口返回root页面 index egg.html; #默认访问index.html,配置后以配置优先 }} location 的使用1234567server { listen 80; server_name localhost; location / { # 访问根目录下的请求都从/dist目录下开始寻找资源 root /dist; }} 12345678# 完全指定请求地址对应的资源地址location = /app/index.html { root /dist;}# 也可以开启正则location ~ /videos/video[6-9].avi { root /videos/}