![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Node.js
文章平均质量分 63
node
草莓味的狮子座leo
这个作者很懒,什么都没留下…
展开
-
DNS详解
浏览器首次对网站域名DNS解析流程为:浏览器缓存——操作系统缓存——路由器缓存——ISP DNS缓存——递归缓存1. 前端优化:DNS预解析提升页面速度Chrome,Firefox 3.5内置了DNS Prefetching技术预解析实现:// 用meta信息来告知浏览器, 当前页面要做DNS预解析<meta http-equiv="x-dns-prefetch-control" content="on" />// 在页面header中使用link标签来强制对DNS预解析<原创 2021-01-03 20:58:02 · 208 阅读 · 0 评论 -
WebSocket
WebSocket协议WebSocket客户端基于事件的编码模型与Node中自定义事件相差无几WebSocket实现了客户端和服务器端之间的长连接,而Node事件驱动方式可以与大量客户端保持高并发连接WebSocket的优势客户端与服务器端只建立一个TCP连接WebSocket服务器端和客户端可以实现数据交互轻量级的协议头,减少数据传送量全双工通信WebSocket数据传输当握手完成后,当前连接不再需要进行http交互,而是通过WebSocket的数据帧协议,实现客户原创 2020-12-29 16:41:56 · 210 阅读 · 0 评论 -
网络编程
Node提供了net、dgram、http、https这4个模块,分别用于处理TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端一、TCP Servernet模块通过net.createServer方法创建TCP服务器,通过net.connect方法创建客户端去连接服务器。TCPTCP传输控制协议,在OSI模型中属于传输层协议TCP面向连接的协议,需要3次握手形成会话net模块实现创建TCP服务器端// server.jsvar net = require('net'原创 2020-12-29 16:18:34 · 60 阅读 · 0 评论 -
理解Buffer
1.Buffer结构Buffer是一个像Array的对象,主要用于操作字节在Node进程启动时就已经加载Buffer,并将其放在全局对象上;无须通过require加载2.Buffer对象Buffer对象类似于数组,元素为16进制的两位数,即0~255的数值length获取长度 、下标访问元素3.Buffer内存分配Buffer对象的内存分配不是在V8的堆内存中,而是在Node的C++层面实现内存申请Node采用slab分配机制,slab是一种动态内存管理机制,有三种状态:full:完原创 2020-12-29 09:48:19 · 859 阅读 · 0 评论 -
EventEmitter
Node.js所有的异步I/O操作在完成时都会发送一个事件给事件队列大多数Node.js核心API构建惯用异步事件驱动架构,某些类型的对象(触发器Emitter)会触发命名事件来调用函数(监听器Listener)net.Server对象会在每次有新连接时触发事件、 fs.readStream对象会在打开文件时触发事件所有这些产生事件的对象都是events.EventEmitter实例。这些对象有一个EventEmitter .on()函数,用于将一个或多个函数绑定到命名事件上当EventEmitt原创 2020-12-28 18:06:00 · 217 阅读 · 0 评论 -
ip地址和端口号
所有的联网程序都需要网络通信计算机中只有一个物理网卡,且在同一个局域网中,网卡的地址必须唯一网卡通过唯一的ip地址进行定位IP用来定位计算机端口号用来定位具体应用程序客户端通过DNS解析域名和服务器进行通信req.socket.remotePort //获取当前请求客户端的端口号req.socket.remoteAddress //获取当前请求客户端的IP地址理解IP地址和端口号ip地址分配给网卡,一个网卡对应一个IP;如果一台计算机有多个网卡,则有多个ip;在同一个局原创 2020-12-28 14:17:21 · 523 阅读 · 1 评论 -
Node中的javascript
一、 Node.js简介Node.js是一个Javascript运行环境,是一个可以快速构建网络服务及应用的平台,使用javascript搭建,可用于的后端建立服务器。1.支持EcmaScriptjs基础语法2.核心模块fs、http、url、pathvar fs = require(‘fs’);3. 简单模块化Node中模块有三种具名的核心模块:fs、http等自定义文件模块:(1)相对路径必须加 ./(2)可以省略文件后缀(3)模块之间相互通信require、expor原创 2020-12-28 10:20:48 · 124 阅读 · 1 评论 -
Node.js事件循环
Node是单进程单线程应用程序,由于V8引擎提供异步执行回调接口,通过这些接口可以处理大量并发Node中几乎每个API都支持回调函数,基本所有的事件机制都是观察者模式实现Node单线程类似进入while事件循环,直至没有事件观察者退出,每个异步事件都生产一个事件观察者,如果事件发生则调用该回调函数u1.事件驱动模型当web server接收到请求,关闭进行处理,然后去服务下一个web请求;当此请求完成时,它被放至处理队列,当到达队列开头将结果返回给用户实例// 引入 events ..原创 2020-12-27 20:25:47 · 87 阅读 · 0 评论 -
认识V8引擎
V8详解原创 2020-12-25 14:11:59 · 64 阅读 · 0 评论 -
Node异步编程解决方案
目前,异步编程的主要解决方案有三种:事件发布/订阅模式Promise/Deferred模式流程控制库一、事件发布/订阅模式事件监听器模式是广泛用于异步编程的模式,是回调函数的模式化,又称事件发布/订阅模式Node自身提供的events模块是发布/订阅模式的简单实现,它具有addListener/on()、once()、emit、addListener等基本的事件监听模式的方法实现。实例代码:const events = require("events");const emitter =原创 2020-12-24 15:54:54 · 148 阅读 · 0 评论 -
Node异步编程
单线程模型在同步I/O影响下,由于I/O调用缓慢,在应用层面导致CPU和I/O操作无法重叠进行,性能问题就称为开发人员的困扰。提升性能的方式过去一般使用多线程的方式,但是在业务逻辑方面,从操作系统调度多线程的上下文切换开销,实际应用中的锁、同步问题也给开发人员带来不少麻烦。Node利用js及其内部异步库,将异步直接提升至业务层。异步编程的优势Node最大特性就是基于事件驱动的非阻塞I/O模型非阻塞I/O可以让CPU和I/O操作并不需要依赖等待异步编程的难点异常处理try/c.原创 2020-12-24 11:42:23 · 165 阅读 · 0 评论 -
Node.js异步编程-回调函数
Node回调函数Node.js 异步编程的直接体现就是回调function foo1(name, age, callback) { }function foo2(value, callback1, callback2) { }创建一个input.txt ‘www.baidu.com’阻塞:按顺序执行var fs = require('fs')fs.readFile('input.txt', function (err, data) { if (err) return con原创 2020-12-24 10:29:24 · 280 阅读 · 0 评论 -
npm
使用npm安装模块npm install <Module Name>// 引用 require('<Module Name>'>全局安装和本地安装1. 本地安装 npm install <Module Name>将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录)可以通过 require() 来引入本地安装的包2. 全局安装 npm install <Module Name> -g将安装包放在原创 2020-12-24 10:17:44 · 110 阅读 · 0 评论 -
Node.js基础
Node简介Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。Node.js就是运行在服务器端的JavascriptNode.js创建第一个应用Node.js的组成部分引入require模块创建服务器:监听客户端请求接收请求与响应请求/* Node.js 创建第一个应用*/var原创 2020-12-24 10:06:24 · 75 阅读 · 0 评论