Network - HTTP 长连接 短连接

1. HTTP协议与TCP/IP协议的关系

  
  HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。

阅读全文


Node - pm2 cluster 模式无法使用babel-node启动

为了使用 ES6/7 的新功能, 而且不进行转码, 项目一直使用 babel-node 启动脚本, 同时使用 pm2 进行项目管理, 开发环境下 babel-node 可以正常工作, 生产环境下 pm2 并不支持使用 babel-node,

Because the cluster mode has an hardcoded interpreter which is node

阅读全文


Linux 服务器内部无法正常解析域名

问题现象

Linux 服务器内部无法正常解析域名, IP访问正常
curl xxx.xxx Could not resolve host: xxx.xxx

阅读全文


Chrome 阻止自动http 跳转 https

配置一个服务使用SSL出错, 当前使用的是二级域名, 根域名有别的SSL证书, 然后切换回http时, 一直自动跳转到https, 使用的是根域名的SSL证书, 跟当前二级域名不相符, 一直提示不安全的连接, 很长时间无法直接访问http.

阅读全文


shell - 判断文件夹是否存在

#shell判断文件夹是否存在

#如果文件夹不存在,创建文件夹
if [ ! -d “/myfolder” ]; then
mkdir /myfolder
fi

#shell判断文件,目录是否存在或者具有权限

folder=”/var/www/“
file=”/var/www/log”

阅读全文


shell - 条件判断 if 中 -a 到 -z 的意思

[ -a FILE ] 如果 FILE 存在则为真。

[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。

[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。

[ -d FILE ] 如果 FILE 存在且是一个目录则为真。

阅读全文


Node - Event loop

Event Loop 允许Node.js执行非阻塞I/O操作, 尽管JavaScript是单线程的,只要有可能就将操作卸载到系统内核。
由于大多数现代内核是多线程的,所以它们可以处理在后台执行的多个操作。当其中一个操作完成时,内核会通知Node.js,以便可以将相应的回调(callbacks)添加到轮询队列(poll queue)中以最终执行。事件循环每次循环称为一次Tick 我们稍后将在本主题中进一步详细解释。

阅读全文


Node - 异常捕获

当出现未被程序捕捉的异常时, 整个服务将会终止. 即使有的异常被捕捉, 但是无法返回有效的失败响应, 只能通过返回服务超时也会影响产品的体验. 总的解决方案是 try…catch 捕获程序中的同步异常, 异步异常分为多种情况

  • Promise不需要使用try…catch,直接使用.catch()

阅读全文


Node - 内存管理

垃圾回收策略

标记清除

JavaScript 自动垃圾收集最常用的方式: 标记清除. 当变量进入环境(函数中声明一个变量)时, 就将这个变量标记为: “进入环境”, 进入环境的变量使用的内存, 在代码执行过程中就有可能会用到, 所以不能回收. 当变量离开环境时, 则将其标记为: “离开环境”, 在下一次垃圾回收时, 清理响应内存.
垃圾收集器咋运行的时候会给存储在内存中的所有变量都加上标记(可以使用任何方式, 重要的是标记策略), 然后去掉环境中正在使用的变量和有被引用的变量的标记, 还有标记的变量会被认为准备删除的变量. 原因是环境中的变量已经无法访问到这些变量了. 最后垃圾收集器清除对应的内存, 销毁那些带标记的值并回收他们所占用的空间.

阅读全文


Node - 内存泄漏

内存泄漏(Memory Leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况

Node.js 使用 V8 作为 JavaScript 的执行引擎,所以讨论 Node.js 的 GC 情况就等于在讨论 V8 的 GC。在 V8 中一个对象的内存是否被释放,是看程序中是否还有地方持有改对象的引用。

阅读全文