浅谈nodejs与php设计构思层面上的差异
nodejs最近火的一塌糊涂,那为什么它可以成为千百程序员的新宠呢?
难道只是因为把js搬到了服务端?如果仅仅是这样是迁移了一个运行环境和增加几个模块的话我想完全不可能会得到喜新厌旧的程序员的青睐
nodejs和php的差异主要是两个方面:分工和运行机制
分工:nodejs直接跳过了服务器这个阶段,把创建服务器作为node的一个模块,监听请求这些应该是服务器做的工作现在变成了node做,这样就简化的开发环境,而且更加容易控制监听请求以及响应.也就是说node没有一个web容器,没有根目录的概念。
运行机制:
php在处理并发的时候是通过多线程处理,这样会导致硬件成本的增加,特别是一些频繁I/0的项目,很多的线程被阻塞,cpu得不到充分的利用。
node:node的核心理念是单线程,通过事件和回调实现并发。既然是单线程,那硬件成本自然比较低。
那单线程怎么实现并发呢?我认为正是这种实现的方法让大家耳目一新,所以才会让node如此的火,
并发实现原理:比如一百个请求要做一百件事,当第一个请求执行到i/o的时候立马挂起,不等待i/o成功,直接执行下一个事件,直到i/o完毕,这是触发回调事件,回调事件的优先级会比普通事件的优先级高,就是这样通过异步来实现单线程的并发处理。保证了线程永远有事做,不会等待
缺点:这样是提高了cup的利用率,但是无疑是把所有鸡蛋放在一个篮子里面,如果有个事件导致线程蹦了,直接的后果就是导致线程上的所有任务事件都蹦了,还有如果是运算的阻塞是没法并发的,所以这就局限了它只是适合做大量i/o的应用场景,不适合做大量计算的项目,例如股票这类型的。
node还有一个很大的特点就是路由功能,需要自己去配置,应为没有服务器软件,所以服务器软件的所有功能都需要自己去写,但是常用的功能在开源社区基本都已经有人写好了,对于我这样的喳喳来说简直就是福音啊。
以上笔记单纯代表个人观点,有不同意见的欢迎打搅。
浅谈nodejs与php设计构思层面上的差异相关推荐
- 浅谈Hybrid技术的设计与实现【转】
https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...
- (转)浅谈Hybrid技术的设计与实现
转载地址:https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hyb ...
- php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
<Mysql学习浅谈mysql的索引设计原则以及常见索引的区别>要点: 本文介绍了Mysql学习浅谈mysql的索引设计原则以及常见索引的区别,希望对您有用.如果有疑问,可以联系我们. 索 ...
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹--落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
- 微型计算机在机械设计中的应用,浅谈计算机技术在机械设计制造及自动化中的应用.docx...
浅谈计算机技术在机械设计制造及自动化中的应用 当前科学技术与机械制造与自动化技术相互融合,将多种学科中的复合型技术加以整合,形成综合性的机械设计制造自动化学科.作为机械制造的核心内容,自动化在人们的生 ...
- 浅谈网站的logo设计
浅谈网站的logo设计 当今是信息高速发达的时代,互联网实现了世界范围的网络间的互联和信息共享,并已全面介入人类生活的方方面面,带动着人类社会的飞速发展,发挥着重要的作用. 随着PC和网络的普及,上网 ...
- 浅谈秒杀系统架构设计
秒杀是电子商务网站常见的一种营销手段. 原则 不要整个系统宕机. 即使系统故障,也不要将错误数据展示出来. 尽量保持公平公正. 实现效果 秒杀开始前,抢购按钮为活动未开始. 秒杀开始时,抢购按钮可以点 ...
- 浅谈飞控的软件设计(across写的)
关注across很久了,最近发现了它得CSDN,发现了这篇文章,感觉不错,转载保存. 摘自:https://blog.csdn.net/hz770495569/article/details/8657 ...
- 漫谈程序员(十八)浅谈谷歌用户体验设计准则
#漫谈程序员(十八)浅谈谷歌用户体验设计准则 ##谷歌的愿景 Google用户体验团队致力于创建有用的(useful).快速的(fast).简单的(simple).有吸引力的(engaging). ...
最新文章
- oracle11 区分大小写,修改Oracle11g用户密码不区分大小写
- 2021 年 1 月程序员薪资出炉,持续上涨!你过平均线了吗?
- oracle 11g 使用图解,oracle 11g adrci 工具使用方法
- nyoj914Yougth的最大化(二分搜索 + 贪心)
- 如何深入的学习好CSS?
- [转载] pip快速下载python包
- 软件开发计划_敏捷软件开发实践:估算与计划读书笔记125第23章 案例分析:Bomb Shelter Studio...
- 【POJ3070】斐波那契数列f[n]的后四位,n达1e+9(矩阵快速幂模版题)
- 接口(Api)版本号命名规则
- 是java运行时环境的缩写,java运行环境的英文缩写
- 将logstash与elasticsearch性能匹配的几点尝试
- CodeForces 1438D
- 【子桓说】苏明哲该如何摆脱面子对人生的消极影响?
- pycharm pep8 代码格式化
- linux系统结束vim进程的指令,Linux/Vim命令(持续更新)
- 2022电工杯A题B题高质量保奖代码思路合集
- open cv均值 中值 高斯 双边高斯 滤波及模糊
- day18-java
- 论文阅读_DEVFormer
- Cris 玩转大数据系列之 Hadoop HA 实现
热门文章
- 基础第三-MySQL-多表查询-索引-事务笔记
- ImportError: cannot import name '_validate_leng问题解决
- 大数据舞台中的Flink
- android脚本 附近的人,前天微信上有个附近的人加我,我发现她是个脚本
- 【Nature. Mach. Intell. 】基于Transformer的多肽-HLA I类结合预测和疫苗的新生抗原序列设计...
- Janis—微操作探针台系统
- Unity跑酷游戏的无尽关卡是如何生成的?
- 我能想到最快乐的事,就是把所有异性都处成朋友
- 保证良好睡眠,是糖友逆糖的关键
- 刘慈欣,王晋康,何夕著《星际远征》