#3 Node Socket 编程 EMFILE 错误的一种情况
NodeJS 网络编程 Socket 2021-01-31本月,听了同事做的一次技术分享,觉得很有意思的问题,我在这里隐去业务细节,只保留技术部分,做个总结归纳,最后用一个业务无关的脚本来模拟一下这个过程。
同事的分享就好比是先逐步实验发现一个现象,然后研究出他背后的原理是什么。我在这里作为事后的归纳总结,就直接冲着背后的原理说了。
#2 npm 的 update-notifier
NodeJS 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 方法
JavaScript NodeJS 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])
}