1.什么是node.js

Node.js是一个后端的Javascript运行环境(支持的系统包括*nux、Windows),这意味着你可以编写系统级或者服务器端的Javascript代码。

Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

关于事件驱动的两个实例:
在美国去看医生,需要填写大量表格,比如保险、个人信息之类,传统的基于线程的系统(thread-based system),接待员叫到你,你需要在前台填写完成这些表格,你站着填单,
而接待员坐着看你填单。你让接待员没办法接待下一个客户,除非完成你的业务。 想让这个系统能运行的快一些,只有多加几个接待员,人力成本需要增加不少。 基于事件的系统(event-based system)中,当你到窗口发现需要填写一些额外的表格而不仅仅是挂个号,接待员把表格和笔给你,告诉你可以找个座位填写,填完了以后再回去找他。
你回去坐着填表,而接待员开始接待下一个客户。你没有阻塞接待员的服务。 你填完表格,返回队伍中,等接待员接待完现在的客户,你把表格递给他。如果有什么问题或者需要填写额外的表格,他给你一份新的,然后重复这个过程。 这个系统已经非常高效了,几乎大部分医生都是这么做的。如果等待的人太多,可以加入额外的接待员进行服务,但是肯定要比基于线程模式的少得多。
第二个例子是快餐店点餐。

在基于线程的方式中(thread-based way)你到了柜台前,把你的点餐单给收银员或者给收银员直接点餐,然后等在那直到你要的食物准备好给你。收银员不能接待下一个人,除非你拿到食物离开。
想接待更多的客户,容易!加更多的收银员! 当然,我们知道快餐店其实不是这样工作的。他们其实就是基于事件驱动方式,这样收银员更高效。只要你把点餐单给收银员,某个人已经开始准备你的食物,而同时收银员在进行收款,当你付完钱,
你就站在一边而收银员已经开始接待下一个客户。在一些餐馆,甚至会给你一个号码,如果你的食物准备好了,就呼叫你的号码让你去柜台取。关键的一点是,你没有阻塞下一个客户的订餐请求。
你订餐的食物做好的事件会导致某个人做某个动作(某个服务员喊你的订单号码,你听到你的号码被喊到去取食物),在编程领域,我们称这个为回调(callback function)。

2.在Node上运行的JavaScript相比其他后端开发语言有何优势?

最大的优势是借助JavaScript天生的事件驱动机制加V8高性能引擎,使编写高性能Web服务轻而易举。

最新文章

  1. MIS系统开发利器,实施、维护人员自定义报表的福音,AgileEAS.NET SOA平台动态报表指南
  2. java验证码前台技术
  3. --hdu 1800 Flying to the Mars(贪心)
  4. ecshop运行超过30秒超时的限制解决办法
  5. Server.MapPath()获取本机绝对路径
  6. Android问题-XE5提示"[DCC Fatal Error] Project1.dpr(1): F1027 Unit not found: 'System.pas' or binary equivalents (.dcu/.o)"
  7. 各大浏览器内核(Rendering Engine)
  8. 解决 win10 预览版开始菜单打不开的问题
  9. C#开发人员能够可视化操作windows服务
  10. 在Linux服务器上增加硬盘没那么简单【转】
  11. Xamarin自定义布局系列——ListView的一个自定义实现ItemsControl(横向列表)
  12. Postgresql快速写入/读取大量数据(.net)
  13. 山西某公司NetApp存储不小心删除文件数据恢复成功案例
  14. [bzoj1901]动态区间k大
  15. c# ?? 和?
  16. 用keras实现基本的回归问题
  17. SSE图像算法优化系列二十二:优化龚元浩博士的曲率滤波算法,达到约1000 MPixels/Sec的单次迭代速度
  18. :after和:before 伪类
  19. C# 取得上月月头和月尾、上周的第一天和最后一天。
  20. January 03rd, 2018 Week 01st Wednesday

热门文章

  1. Linux 设置端口转发
  2. influxDB 1.3 中文文档
  3. Azure Monitor Kibana configuration always seems to send over SSL
  4. 有关Dispose,Finalize,GC.SupressFinalize函数-托管与非托管资源释放的模式
  5. 用 MuGo 搭建 Go Engine 在 KGS 对战
  6. python文件操作错误解决
  7. Numpy和Pandas
  8. Js dom 学习
  9. struts2 基础3 文件上传、拦截器
  10. 网络摄像头CVE