nodejs的一些问题理解

来源:互联网 发布:数据分析师能力要求 编辑:程序博客网 时间:2024/06/05 18:33
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查询器?快速找到你想要的键。





0 0
原创粉丝点击