浅谈tcp拥塞控制和如何提高网络吞吐量的机制

前言

之前用node的net模块时,翻了一下官方文档,无意间看到了一个这样的方法:

1
2
3
4
5
6
socket.setNoDelay([noDelay])#

Disables the Nagle algorithm. By default TCP connections use the Nagle algorithm, they buffer data before sending it off.
Setting true for noDelay will immediately fire off data each time socket.write() is called. noDelay defaults to true.

Returns socket.

这api的作用是禁用tcp Nagle算法⊙_⊙(什么鬼,Nagle算法是什么。。。怎么没听说过。。赶紧百度百度。到时候被人问到时,还能装一装逼o(*≧▽≦)ツ┏━┓)

express路由解析核心,pathtoRegexp源码解析

其实很早就想着仿写express的,想着总有一天用纯原生重写之前写过的一个论坛,但仿写express,肯定得先明白其路由解析的正则匹配规则把。
于是就花了一两天时间研究了一下path-to-regexp模块,话说这正则确实之前看的有点头大,不过完全看懂后,感觉自己的正则水平提升了不少,这时间花的还是值得的。

闲话不多说,直接上代码把,注释全部写在代码里。理解是一回事,写出又是一回事,接下来花几天自己撸出来看看!

Node.js Stream - 深入篇

前言

如何让自我执行力得到解放

这篇博文本打算星期五就写,硬生生的被我拖到了星期天(刷了两天动漫),还有昨晚上打开手机看了一下,MD我是狗(对方网名,挺文艺的)又在这个时候问我问题,我表示我正在经历思想斗争(虽然还是被懒癌击败…),每个星期五星期六总会来(跟dayima似得)。。今天早上也总算是回过神来了。如何改变现状嘛╮(╯▽╰)╭,MDZZ我是狗天天给我压力,还是在我最脆弱的时刻。。。总的来说还是压力太小闲的,都快毕业的人啦,做事方面居然还是如此慵懒,现在我在此立誓,如果下次还这样,就让我是狗直播吞粪!哎,闲话也不多说,停滞不前也不是我的风格,想想以后美好的生活,嘛,瞬间有动力了,有木有!

使用screen终端复用器

前言

自从租了云服务器后,经常需要使用SSH进行远程登录管理,每次进行耗时操作时为了防止该任务独占会话以及断开连接时任务终止,我会使用nohup命令将任务与当前会话分离,使用命令如下:

$ nohup wget <url> &

nohup命令对wget做了三件事:

  • 阻止SIGHUP信号发送到该进程
  • 关闭标准输入
  • 重定向标准输出和标准错误到文件nohup.out

这样wget就能安全的运行在后台,并不会随着会话的结束而结束,但其缺点是,浏览命令的执行结果变得不那么直观(需要打开nohup.out文件)。而screen终端复用器正好能满足我们的需求。

Node.js 中使用 Redis 来实现定时任务

前言

最近在cnode社区看到死月大神写了一篇关于redis定时任务的文章,其中的序言时这样的:

本文所说的定时任务或者说计划任务并不是很多人想象中的那样,比如说每天凌晨三点自动运行起来跑一个脚本。这种都已经烂大街了,随便一个 Crontab 就能搞定了。
这里所说的定时任务可以说是计时器任务,比如说用户触发了某个动作,那么从这个点开始过二十四小时我们要对这个动作做点什么。那么如果有 1000 个用户触发了这个动作,就会有 1000 个定时任务。于是这就不是 Cron 范畴里面的内容了。
举个最简单的例子,一个用户推荐了另一个用户,我们定一个二十四小时之后的任务,看看被推荐的用户有没有来注册,如果没注册就给他搞一条短信过去。Σ>―(〃°ω°〃)♡→

看完后联想起“快递一直放在快递柜没领,然后隔个24小时就发一条短信给你,如果有多个快递,就有多条每隔24小时的短信发给你(吗哒,要疯啦w(゚Д゚)w!)”的例子类似的,想着以后可能也会遇到这种需求,于是研究了一番。。。