记一次nodejs源码bug分析

1. 问题 前几日,我在测试express框架的时候,构造了一个测试样例死活过不来,即便调试到测试框架superagent ,依然不对。最终发现是nodejs的bug,而且最新版本的nodejs已经"修复"了,导致我中间饶了几圈都没发现是nodejs的事,下面来重现问题流程。 2. 环境预备 安装一下gnvm 地址,后面需要控制一下版本(windows10 需要用管理员权限的cmd或者powershell) 安装git环境(主要要使用curl命令) 摘抄如下代码 // main.js var »

js PropertyName

本文是一篇大水文,辣眼睛 js中给普通对象(对象字面量,ObjectLiteral)初始化,key值可以是动态的 var k = 'you' var m = { [k]: 'are stupid' } console.log(m) // output {you: "are stupid"} 另外注意: var k = 'you' »

记一次定位js内存泄漏

来源 线上有个升级服务,隔一两个月时间内存会慢慢上涨到服务器内存80%以上,单进程内存到500M左右 原因一直不明确 heapdump 首先压测无果,初步猜测应该是压测量级或者特殊情况触发不够 就想着添加一下代码,等出现情况时,dump线上进程的内存 添加heapdump库,准备随时dump内存,但是由于内存过大,不能设置定时器,否则很可能影响性能 所以采用添加在路由里,等到情况复现时,手动触发 var heapdump = require('heapdump'); ... router.get( »

js 匿名函数 箭头函数

关于new 首先回顾一下new关键字 var ch = new Fa(); 等价于 var ch = {}; ch.__prototype__ = Fa.prototype; Fa.call(ch); 本质上call的第一个参数可以理解传入了一个this,改变了整个上下文 本文事例 运行环境 nodejs v7.7.2 拿一段观察者模式的代码来看 //js文件 »

js valueOf

toString的区别 valueOf():返回最适合该对象类型的原始值; toString(): 将该对象的原始值以字符串形式返回。 在数值运算里,会优先调用valueOf(),如a + b; 在字符串运算里,会优先调用toString(),如alert(c)。 知乎来源 我在网上找到的其他例子,放在crhome里面跑,或者nodejsV7.7.2都是不同的 所以有理由相信,之前的js实现跟当前流行的是不一样的,下面以nodejs为主 var c = { i: 10, »

express.js 源码四探 —— application篇

本篇 本篇是这个系列的第四篇,谢谢各位的建议 环境 保持与之前的版本一致,源码版本是express.js 4.14.1 application源码 app.init 戳这里,初始化app的一些参数 //导出的是这个app实例 var app = exports = module.exports = {}; //这个后面再讨论,关于代理 var trustProxyDefaultSymbol = '@ »