nodejs的一些问题理解
2015-01-31 21:07
211 查看
1.什么叫Nodejs的阻塞式设计?与Apache+Php有什么区别
nodejs是单线程设计的,它的异步也就是非阻塞体现在IO上,基于事件机制,充分利用回调函数,并且通过闭包解决异步带来的函数定义和函数运行时上下文不一致的问题。然后nodejs对与cpu密集型运算依然会阻塞线程,这时候需要用类似html5的WebWorker来解决。
apache是利用多进程或多线程(取决于配置)来提供并发服务的,但是会相当消耗主机的内存,所以这是nodejs着眼想要改进的重点。php只是apache调用的解释器,php的运行本身就是阻塞式的,只是apache会开多个进程达到并发。nginx的并发性能还要好些,线程级,能够支持高达50000个并发连接数。
2.Nodejs是单线程还是多线程?(好吧是单线程)在单线程的条件下是实现同时处理多个用户的请求的?
单线程。同时处理请求体现在IO上,只有真正获取到数据之后才会执行回调函数,所以不会因为等待数据取回而造成堵塞。另外在nodejs内部其实也是多进程/线程的(Of
course, on the backend, there are threads
and processes for DB access and process execution. ),所以请求数据(在还没有触发回调函数前)能够做到并发。
3.Nodejs如何处理抛出的error的?
异步的话基于事件机制,process.on('uncaughtException',function(err){...}) 和 domain 。
同步的话try/catch。
4.Nodejs中如何暴露接口
在模块中定义exports.xxx = xxx,或者module.exports = xxx。 具体可以是一个类或者函数或者变量。
5.Nodejs的管道
nodejs有一个stream的模块,require("stream"),其本身也被别的模块继承,比如fs。通过管道可以避免缓存这一步,而且底层一点的readable stream和writeable
stream更是可以监听读入和写入操作。
6.Nodejs的路由
nodejs的路由并没有专门的机制,只是一种默认的规范。引入url这个模块后,可以解析出url中的参数,然后进行相应操作。一般文件分为index.js,server.js,router.js,handler.js四种,router.js定义在什么样的参数下使用什么样的handler,通过index.js传入server.js,server.js解析出url参数后调用router。
7.关于数据库,基础概念,不过我们现在用的是mongodb,属于nosql。教程我看这个mongodb还可以,了解一下即可
感觉mongodb就是一个BSON查询器?快速找到你想要的键。
nodejs是单线程设计的,它的异步也就是非阻塞体现在IO上,基于事件机制,充分利用回调函数,并且通过闭包解决异步带来的函数定义和函数运行时上下文不一致的问题。然后nodejs对与cpu密集型运算依然会阻塞线程,这时候需要用类似html5的WebWorker来解决。
apache是利用多进程或多线程(取决于配置)来提供并发服务的,但是会相当消耗主机的内存,所以这是nodejs着眼想要改进的重点。php只是apache调用的解释器,php的运行本身就是阻塞式的,只是apache会开多个进程达到并发。nginx的并发性能还要好些,线程级,能够支持高达50000个并发连接数。
2.Nodejs是单线程还是多线程?(好吧是单线程)在单线程的条件下是实现同时处理多个用户的请求的?
单线程。同时处理请求体现在IO上,只有真正获取到数据之后才会执行回调函数,所以不会因为等待数据取回而造成堵塞。另外在nodejs内部其实也是多进程/线程的(Of
course, on the backend, there are threads
and processes for DB access and process execution. ),所以请求数据(在还没有触发回调函数前)能够做到并发。
3.Nodejs如何处理抛出的error的?
异步的话基于事件机制,process.on('uncaughtException',function(err){...}) 和 domain 。
同步的话try/catch。
4.Nodejs中如何暴露接口
在模块中定义exports.xxx = xxx,或者module.exports = xxx。 具体可以是一个类或者函数或者变量。
5.Nodejs的管道
nodejs有一个stream的模块,require("stream"),其本身也被别的模块继承,比如fs。通过管道可以避免缓存这一步,而且底层一点的readable stream和writeable
stream更是可以监听读入和写入操作。
6.Nodejs的路由
nodejs的路由并没有专门的机制,只是一种默认的规范。引入url这个模块后,可以解析出url中的参数,然后进行相应操作。一般文件分为index.js,server.js,router.js,handler.js四种,router.js定义在什么样的参数下使用什么样的handler,通过index.js传入server.js,server.js解析出url参数后调用router。
7.关于数据库,基础概念,不过我们现在用的是mongodb,属于nosql。教程我看这个mongodb还可以,了解一下即可
感觉mongodb就是一个BSON查询器?快速找到你想要的键。
相关文章推荐
- 网络编程中一些问题理解(一)
- 关于C#3.0和.net一些问题的理解
- Java的一些常见问题,JRE,JDK,JVM,包等概念理解
- 【OpenGL】理解一些基本问题
- 【OpenGL】理解一些基本问题
- JAVA编码问题的一些理解
- 关于iOS push一些问题的理解
- 关于hibernate的关系映射的问题一些理解和笔记
- 公司信息化ERP项目实施的问题和我的一些理解(一)
- 【2】KMP算法的一些理解问题
- 一些没有理解的问题?
- 一些问题的理解
- Java的一些常见问题,JRE,JDK,JVM,包等概念理解
- JAVA必须要理解的一些问题
- 对于MVC应该理解的一些问题
- 说说我对iAD的错误理解及一些相关问题
- 在SuSE10上源码编译安装nodejs时遇到的一些问题(转)
- 用汇编语言角度来理解C语言的一些问题
- building outline 问题及set, mutilset以及堆的一些理解