非阻塞IO
Node中的全局变量
module 和 exports,默认情况下每个模块暴露一个空对象
exports是对module.exports的引用
// a.js
exports.name = 'Jennifer';
// index.js
const a = require('./a.js');
console.log(a.name);
也可以对module.exports重写
// a.js
module.exports = add;
function add(a, b) {
return a + b;
}
// index.js
const add = require('./a.js');
console.log(add); // add就是function本身
流对象
默认编码是 Buffer
console.log会在指定字符后面加上\n换行写到stdout流中process全局对象有三个流对象stdin:标准输入,默认状态是暂停的stdout:标准输出stderr:标准错误
TCP(传输控制协议)
是一个面向连接的协议,一种传输层协议,他能将数据完整有序的从一台计算机传输到另一台计算机。http这样的协议都是基于TCP协议的。
Node中的http.Server继承自net.Server(net是TCP模块)
IP协议
该协议是基于数据报传输的,送达的顺序是无序的,但数据包包含了标识该连接以及数据流顺序的信息。所以使用TCP/IP和服务器建立连接后能让数据包送达时是有序的。
套接字(socket)
对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。
Node中的end和close事件
end():当客户端显示关闭TCP连接时触发
close():连接发生错误时候触发,但一般两种情况都会触发close
中间件
就是一个js函数,next() ,use()
Express
是构建于connect之上的
Redis
一种数据库,结构化数据服务器,内存存储,搭配可配置的磁盘持久化思路不支持嵌套数据存储
可支持的数据类型:
1. 字符串(string)
– 命令:set(设置)
– incr(递增)
2. 列表(list)
– rpush(右侧推入)
– lpush(左侧推入)
– lrange(返回指定范围的元素)
3. 数据集(set)
– sadd(添加)
– smembers(获取所有)
– srem(删除),
4. 哈希(hash)
– hset(设置)
– hgetall(获取指定哈希表中的键和值)
– hdel(删除)
5. 有序数据集(sorted set)
其他
– 命令大小写不敏感
– get不能获取哈希类型的值
– 清空数据库 flushall
– Client.multi意味着告诉redis客户端,所有命令必须等到exec后才执行,它作为事务的一部分,需要一起执行