node中的异步和同步怎么理解
node是单线程的,异步是通过一次次的循环事件队列来实现的.同步则是说阻塞式的IO,这在高并发环境会是一个很大的性能问题,所以同步一般只在基础框架的启动时使用,用来加载配置文件,初始化程序什么的.
有哪些方法可以进行异步流程的控制?
- 多层嵌套回调
- 为每一个回调写单独的函数,函数里边再回调
- 用第三方框架比方async, q, promise等
怎样绑定node程序到80端口?
多种方式:
- sudo
- apache/nginx代理
- 用操作系统的firewall iptables进行端口重定向
有哪些方法可以让node程序遇到错误后自动重启?
- runit
- forever
- nohup npm start &
怎样充分利用多个CPU?
- 一个CPU运行一个node实例
怎样调节node执行单元的内存大小?
用--max-old-space-size 和 --max-new-space-size 来设置 v8 使用内存的上限
程序总是崩溃,怎样找出问题在哪里?
- node --prof 查看哪些函数调用次数多
- memwatch和heapdump获得内存快照进行对比,查找内存溢出
有哪些常用方法可以防止程序崩溃?
- try-catch-finally
- EventEmitter/Stream error事件处理
- domain统一控制
- jshint静态检查
- jasmine/mocha进行单元测试
怎样调试node程序?
- node --debug app.js 和node-inspector
如何捕获NodeJS中的错误,有几种方法?
- 监听错误事件req.on('error', function(){}), 适用EventEmitter存在的情况;
- Promise.then.catch(error),适用Promise存在的情况
- try-catch,适用async-await和js运行时异常,比如undefined object