自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 eslint 规则

eslint 规则 https://eslint.nodejs.cn/docs/latest/rules/

2024-04-17 15:13:26 422 1

原创 babel - 语法降级与Polyfill消灭低版本浏览器兼容问题

babel-prest-env 仅仅只会转化最新的 es 语法,并不会转化对应的 API 和实例方法,比如说 ES6 中的 Array.from 静态方法。babel 是不会转译这个方法的,如果想在低版本浏览器中识别并且运行 Array.from 方法达到我们的预期就需要额外引入 polyfill 进行在 Array 上添加实现这个方法。最新ES语法,比如:箭头函数,let/const,class, async await。dev1 : 转换语法。

2023-09-01 13:49:26 629

原创 typescript

https://github.com/type-challenges/type-challenges/blob/main/README.zh-CN.md

2023-03-22 17:26:36 156 1

原创 caniuse-lite browserslist 源码解析

browserslist 中根据 caniuse-lite 的 agents 数据,根据 browserslist.default 的浏览器配置信息,对 agents 的浏览器做一个筛选。data 目录下的文件。

2022-09-23 18:06:48 237

原创 正则表达式

将有重复的字符提取出来,例如 12323454545666,提取 [‘23’, ‘45’, ‘6’]2.实现一个 trim 函数。

2022-08-21 23:28:23 166

原创 eslint 使用总结

1.eslint解析器ESLint 默认使用Espree作为其解析器,你可以在配置文件中指定一个不同的解析器以下解析器与 ESLint 兼容:EsprimaBabel-ESLint - 一个对Babel解析器的包装,使其能够与 ESLint 兼容。@typescript-eslint/parser - 将 TypeScript 转换成与 estree 兼容的形式,以便在ESLint中使用。注意,在使用自定义解析器时,为了让 ESLint 在处理非 ECMAScript 5 特性时正常工作,配置属性 p

2022-07-14 18:13:34 1132

原创 HTTP 目录

1. URL与 资源2. HTTP 报文

2022-06-17 18:20:43 168

原创 3. 与 HTTP 协作的 Web服务器

通信数据转发程序:代理、网关、隧道代理代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端 “中间人” 的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。在 HTTP 通信过程中,可级联多台代理服务器。请求和响应的转发会经过数台类似锁链一样连接起来的代理服务器。转发时,需要附加 Via 首部字段以标记出经过的主机信息。代理有多种使用方法,按两种基准分类。缓存代理代理转发响应时,缓存代理会预先将资源的副本保存在代理服务器上。透明代理转发请求或响应时,不对报文做任何加

2022-06-17 18:20:01 72

原创 应用进程跨越网络的通信

运输层协议概述从通信和信息处理角度看,运输层向它上面的应用层提供通信服务,它属于面向通信的最高层,同时也是用户功能中的最低层。从 IP 层来说,通信的两端是两台主机。IP 数据报的首部明确标志了这两台知己的 IP 地址。但 “两台主机之间的通信” 这种说法还不够清楚。这是因为,真正进行通信是实体是主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。 IP 协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没

2022-05-30 11:37:09 436

原创 数据报差错检测

运输层1. UDP用户数据报协议 UDP 有两个字段:首部字段数据字段首部字段有 8 个字节,由四个字段组成,每个字段的长度都是两个字节。源端口:源端口号。不需要时可用全 0。目的端口:目的端口号。长度:UDP 用户数据报的长度,其最小值是 8 (仅有首部)。校验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。UDP 用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在 UDP 用户报之前增加 12 个字节的伪首部。所谓 “伪首部” 是因为这种伪首部并不是 U

2022-05-27 17:38:21 891

原创 5层 应用层

每个应用层协议都是为了解决某一类应用问题,而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。具体来说,应用层协议应当定义:应用进程交换的报文类型,如请求报文和响应报文。各种报文类型的语法,如报文中的各个字段及其详细描述。字段的语义,即包含在字段中的信息的含义。进程何时、如何发送报文,以及对报文进行响应的规则。1. 文件传送协议2.远程终端协议3.电子邮件发送协议和读取协议应用层

2022-05-26 01:37:42 89

原创 (1-2层)广播协议 CSMA/CD

广播协议 CSMA/CD 协议的要点:多点接入 就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是 “载波监听” 和 “碰撞检测”。载波监听 也就是 “边发送边监听”。载波监听就是不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。碰撞检测 是适配器边发送数据边检测信道上的信号电压变化的情况。当两个或几个站同时在总线上发送数据时,总线上的信号电压变化幅度会增大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同

2022-05-25 22:44:41 792

原创 宽带接入技术

从宽带接入的媒体来看,可以划分为两大类。有线宽带接入无线宽带接入有线宽带接入ADSL 技术:用数字技术对现有模拟电话的用户线进行改造,使它能够承载宽带数字业务。光纤同轴混合网:是在目前覆盖面很广的有线电视网的基础上开发的一种宽带接入技术。FTTx 技术:现在有多种宽带光纤接入方式,称为 FTTx。这里的字母 x 可代表不同的光纤接入地点。所谓光纤到户,就是把光纤一直铺设到用户家庭。只有在光纤进入用户的家门后,才把光信号转为电信号。无线宽带接入无线网络移动网络...

2022-05-25 22:15:04 496

原创 (1-2层)点对点 PPP 协议

PPP 协议有三个组成部分:一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路(无奇偶检验的 8 比特数据),也支持面向比特的同步链路。IP 数据报就是其中的信息部分。这个信息部分的长度受最大传送单元 MTU 的限制。一个用来建立、配置和测试数据链路连接的链路控制协议 LCP(Link Control Protocol)。通信的双方可协商一些选项。一套网络控制协议 NCP(Network control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络

2022-05-25 02:42:40 278

原创 1-2层 物理层 和 数据链路层

数据链路层协议点对点协议 PPP广播协议 CSMA/CD

2022-03-29 18:10:48 378

原创 1.3 计算机网络的类别 和 宽带接入技术

计算机网络的类别按照网络的作用范围进行分类广域网 WAN (Wide Area Network)城域网 MAN (Metropolitan Area Network)局域网 LAN (Local Area Network)个人区域网 PAN (Personal Area Network)按照网络的使用者进行分类公用网专用网宽带接入技术...

2022-03-29 15:01:31 447

原创 1.4 计算机网络的性能

计算机网络的性能性能指标从不同的方面来度量计算机网络的性能。下面介绍常用的 七个 性能指标。速率带宽吞吐量时延时延带宽积往返时间 RTT利用率速率速率指的是数据的传送速率,它也称为数据率或比特率。当提到网络的速率时,往往指的是额定速率或标称速率,而并非网络实际上运行的速率。单位是 bit/s(比特每秒)。带宽带宽用来表示网络中某通道传送数据的能力,因此网络带宽表示在单位时间内网络中的某信道所能通过的 “最高数据率”。带宽的单位是 bit/s(比特每秒)。吞吐量吞吐量表示在单位

2022-03-28 17:33:17 2734

原创 (1-2层) 物理层下面的传输媒体

物理层下面的传输媒体传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。传输媒体可分为两大类:导引型传输媒体非导引型媒体在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播。非导引型传输媒体就是指自由空间,在非导引型传输媒体中电磁波的传输常称为无线传输。导引型传输媒体双绞线同轴电缆光缆非导引型传输媒体...

2022-03-27 18:52:06 1151

原创 1. 计算机网络概述

互联网服务提供者 ISP根据提供服务的覆盖面积大小以及所拥有的 IP 地址数目的不同,ISP 也分为不同层次的 ISP:主干 ISP地区 ISP本地 ISP互联网的组成部分互联网的拓扑结构虽然非常复杂,并且在地理上覆盖了全球,但从其工作方式上看,可以划分为以下两大块:边缘部分核心部分边缘部分由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。核心部分由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通

2022-03-27 17:58:36 3620

原创 (4层)超时重传时间的选择、选择确认 SACK

TCP 可靠传输的实现

2022-03-24 22:29:15 722

原创 (4层)TCP 运输连接管理

TCP 的运输连接管理TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个端点。TCP 连接的端点叫做 套接字 或 插口。根据 RFC 793 的定义:端口号拼接到 IP 地址即构成了套接字。因此,套接字的表示方法是在点分十进制的 IP 地址后面写上端口号,中间用冒号或逗号隔开。TCP 是面向连接的协议。运输连接是用来传送 TCP 报文的。TCP 运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,运输连接就有三个阶段,即:连接建立、数据传送 和 连接释放。TCP 连接的建立TC

2022-03-24 22:22:55 1950

原创 (4层)TCP 首部字段

TCP 有 6 个控制位,用来说明报文段的性质。同步 SYN确认 ACK紧急 URG推送 PSH终止 FIN复位 RST同步 SYN在连接建立时用来同步序号。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中是 SYN = 1 和 ACK = 1。因此 SYN 置为 1 就表示这是一个连接请求或连接接受报文。确认 ACK仅当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。TCP 规定,在连接建立后

2022-03-24 12:49:10 8267

原创 4层 运输层 UDP TCP

运输层协议概述从通信和信息处理角度看,运输层向它上面的应用层提供通信服务,它属于面向通信的最高层,同时也是用户功能中的最低层。从 IP 层来说,通信的两端是两台主机。IP 数据报的首部明确标志了这两台知己的 IP 地址。但 “两台主机之间的通信” 这种说法还不够清楚。这是因为,真正进行通信是实体是主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。 IP 协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没

2022-03-22 18:42:01 2218

原创 (4层)域名系统 DNS

域名系统 DNS 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。早在 ARPANET 时代,整个网络上只有数百台电脑,那时使用一个叫做 hosts 的文件,列出所有主机名字和相应的 IP 地址。只要用户输入一台主机名字,计算机就可以很快地把这台主机名字转换为机器能够识别的二进制 IP 地址。为什么机器在处理 IP 数据报时要使用 IP 地址而不是域名字呢?这是因为 IP 地址的长度是固定的 32 位(如果是 IPv6 地址,那就是 128 位,也是定长的),而域名的长度并不是固

2022-03-21 10:45:21 3073

原创 HTTP - 实体首部

由于请求和响应报文中都可能包含实体部分,所以在这两种类型的报文中都可能出现这些首部。实体首部Content-Type: 实体中所承载对象的类型。Content-Language: 与所传送对象最配的人类语言。Content-Encoding: 对象数据所做的任意转换(比如:压缩)Content-Length: 所传送实体主体的长度或大小。Cache-Control: 指出应该如何缓存改文档。Expires: 实体数据将要失效的日期时间。Last-Modified: 所传输内容在服务器上创建

2022-03-19 04:23:20 278

原创 HTTP - 字符集

HTTP 应用程序使用字符集编码请求和显示不同字母表中的文本,它们使用语言标记根据用户所理解的语言来说明并限制内容。字符集术语字符编码后的字符字形代码空间代码宽度字符库字符字符是字母、数字、标点、表意文字(比如汉语)、符号,或其他文本形式的书写原子。字符与字体以及风格无关。编码后的字符集编码后的字符集把整数映射到字符。编码后的字符集经常用数组实现,通过代码数值来索引。数组的元素就是字符。编码后的字符集标准US-ASCII 字符集ASCII的 iso-8859 扩展日文的

2022-03-18 19:15:21 1111

原创 Web 缓存

Web 缓存是可以自动保存常见文档副本的 HTTP 设备。当 Web 请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档。

2022-03-18 01:35:43 396

原创 2. HTTP 报文

HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。HTTP 报文是最简单的格式化数据。每条报文都包含一条来自客户端的请求,或者一条来自服务端的响应。它们由三个部分组成:对报文进行描述的起始行 包含属性的首部块。 可选的、包含数据的主体部分所有的 HTTP 报文都可以分为两类:请求报文 和 响应报文。请求报文的格式:<method> <request - U...

2022-03-18 01:29:33 1461

原创 1. URL与 资源

Web 浏览器、服务器和相关的 Web 应用程序都是通过 HTTP 相互通信的。HTTP 是现代全球因特网中使用的公共语言。Web 客户端 和 Web 服务器Web 内容都是存储在 Web 服务器上的。Web 服务器所使用的是 HTTP 协议,因此经常会被称为 HTTP 服务器。这些 HTTP 服务器存储了因特网中的数据,如果 HTTP 客户端发出请求的话,它们会提供数据。客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中回送所请求的数据。最常见的客户端就是 Web 浏览器。资源Web

2022-03-17 23:53:29 1629

原创 node.js

1. Node.js 从命令行接收参数获取参数值的方法是使用 Node.js 中内置的 process 对象。它公开了 argv 属性,该属性是一个包含所有命令行调用参数的数组。第一个参数是 node 命令的完整路径。第二个参数是正被执行的文件的完整路径。所有其他的参数从第三个位置开始。当使用以下命令调用 Node.js 应用程序时,可以传入任意数量的参数,参数可以是独立的,也可以具有键和值。node app.js joeconst args = process.argv.slice(2);

2022-03-16 16:09:20 915

原创 正则表达式的模式匹配

正则表达式是一个描述字符模式的对象。JavaScript 的 RegExp 类表示正则表达式,String 和 RegExp 都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能。正则表达式的定义正则表达式可以使用 RegExp() 构造函数来创建 RegExp 对象,更多的是通过一种特殊的直接量语法来创建。var pattern = new RegExp('s$');var pattern = / s$ /;正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JavaSc

2022-03-14 18:48:07 3060

原创 前端 - 模块化

在前端开发领域,一个模块,可以是 JS 模块,也可以是 CSS 模块,或是 Template 等模块。JS 模块1.模块是一段 JavaScript 代码,具有统一的基本书写格式。2.模块之间通过基本交互规则,能彼此引用,协同工作。把上面两点中提及的基本书写格式和基本交互规则描述清楚,就能构建出一个模块系统。对书写格式和交互规则的详细描述,就是模块定义规范(Module Definition Specification)。Sea.js 遵循的是 CMD 规范。RequireJS 遵循的是 AMD

2022-03-14 17:24:09 1998

原创 js - 模块

模块化的作用主要体现在封装和隐藏私有实现细节,以及保证全局命名空间的清洁上,因而模块之间不会意外修改各自定义的变量、函数和类。直到几年前,JavaScript 还没有内置对模块的支持。大型项目的程序员想方设法地利用 类、对象和 闭包 的弱模块化能力。**由于打包工具的支持,基于 闭包 的模块化在实践中成为常用模块化形式,核心是沿用了 Node 的 require() 函数。**基于 require() 的模块化是 Node 编程环境的基础,但并未被作为 JavaScript 语言的官方部分采用。事实上,E

2022-03-12 15:15:05 870

原创 es6 类 和 继承

只使用 ECMAScript 5 的特性来模拟类似于类的行为。各种策略都有自己的问题,也有相应的妥协。正因为如此,实现继承的代码也显得非常冗长和混乱。为解决这些问题,ECMAScript 6 新引入的 class 关键字具有正式定义类的能力。类是 ECMAScript 中新的基础性语法糖结构,背后使用的仍然是原型和构造函数的概念。1.类的定义 和 构成与函数类型相似,定义类也有两种方式:类声明 和 类表达式。// class 声明class Person{}//类表达式let Person =

2022-03-04 14:33:43 491

原创 变量、作用域、内存

变量正如 ECMA - 262 所规定的, Javascript 变量是松散类型的,而且变量不过就是特定时间点一个特定值的名称而已。ECMAScript 变量可以包含两种不同类型的数据:原始值 和 引用值。原始值就是最简单的数据,引用值则是由多个值构成的对象。保存原始值的变量是按值访问的,引用值是保存在内存中的变量。在操作对象时,实际上操作的是对该对象的引用而非实际的对象本身。为此,保存引用值的变量是按引用访问的。...

2022-03-03 16:04:12 227

原创 es5 原型、原型链、继承

1. 理解对象2. 创建对象2.1 工厂模式function createPerson(name, age, job){let o = new Object();o.name = name;o.age = age;o.job = job;o.sayName = function(){console.log(this.name);}return o;}let person1 = createPerson(“Nicholas”, 29, “software Engineer”);le

2022-03-02 14:24:56 795

原创 dom-align 源码解析

dom-align version 1.12.2导出两个方法alignElementalignPoint

2022-02-28 17:42:43 368

原创 客户端、窗口、视口、DOM的大小和位置

windowinnerWidth: 以像素为单位的窗口的内部宽度。如果垂直滚动条存在,则这个属性将包括它的宽度。innerHeight: 浏览器窗口的视口(viewport)高度(以像素为单位);如果有水平滚动条,也包括滚动条高度。outWidth: 获取浏览器窗口外部的宽度。表示整个浏览器窗口的宽度,包括侧边栏(如果存在)、窗口镶边(window chrome)和调正窗口大小的边框outHeight: 获取整个浏览器窗口的高度(单位:像素),包括侧边栏(如果存在)、窗口镶边(window chr

2022-02-27 14:54:27 1586

原创 React - React 版本

React v15.4.0: 分离 React 和 React DOMReact v15.5.0: React.PropTypes 和 React.createClass 发布了自己的包 prop-types,create-react-class如果您的应用在 15.5 中产生零警告,则它应该在 16 中继续运行,无需任何更改。React v15.6.0: 降级弃用警告以使用console.warn而不是console.error, 在style属性中添加对 CSS 变量的支持。添加对 CSS 网

2021-12-09 17:40:13 622

原创 React源码 - 事件系统( 二 )

将事件绑定到 container 元素 ReactDOM.render(element, container, callback)1.事件绑定过程绑定事件的开始方法为 ReactDOMRoot.js 的 createRootImpl 方法enableEagerRootListeners 默认为 true, 解决了 ReactDOM.createPortal 创建的 container 事件 bughttps://github.com/facebook/react/pull/19659htt.

2021-10-20 18:26:50 215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除