#3 Node Socket 编程 EMFILE 错误的一种情况

2021-01-31

本月,听了同事做的一次技术分享,觉得很有意思的问题,我在这里隐去业务细节,只保留技术部分,做个总结归纳,最后用一个业务无关的脚本来模拟一下这个过程。
同事的分享就好比是先逐步实验发现一个现象,然后研究出他背后的原理是什么。我在这里作为事后的归纳总结,就直接冲着背后的原理说了。

#2 npm 的 update-notifier

2019-04-17

线上某些基于 nodejs 的服务时不时看到这种进程,而且一直都在:

root     25997     1  0 Mar25 ?        00:00:00 /root/.nvm/versions/node/v10.14.2/bin/node /root/.nvm/versions/node/v10.14.2/lib/node_modules/npm/node_modules/update-notifier/check.js {"pkg":{"name":"npm","version":"6.4.1"}}

经过检查判断,这是 npm 带来的一个依赖模块,用来做版本检测。

#1 JS: split 方法

2017-02-12
"ni wo ta".split(" ")
// [ 'ni', 'wo', 'ta' ]

"ni wo ta".split(" ", 1)
// [ 'ni' ]
"ni wo ta".split(" ", 2)
// [ 'ni', 'wo' ]
"ni wo ta".split(" ", 3)
// [ 'ni', 'wo', 'ta' ]
"ni wo ta".split(" ", 4)
// [ 'ni', 'wo', 'ta' ]

"ni wo ta".split(":")
// [ 'ni wo ta' ]
"ni wo ta".split(":", 1)
// [ 'ni wo ta' ]
"ni wo ta".split(":", 2)
// [ 'ni wo ta' ]

如果要一刀将字符串切两半:

var line = "a : b : c"
var part1 = line.split(':', 1)[0]
if (a !== line) {
    var a = part1.trim()
    var b = line.substr(part1.length + 1).trim()
    console.log([a, b])
}
var line = "a : b : c"
var index = line.indexOf(':');
if (index != -1){
    var a = line.substr(0, index).trim()
    var b = line.substr(index + 1).trim()
    console.log([a, b])
}

参考资料与拓展阅读