技术标签: node.js
1、Node是什么?(转自:https://blog.csdn.net/m0_37938910/article/details/103673105)
Node.js 就是运行在服务端的 JavaScript。
Node.js不是一种独立的语言,也不是一个JavaScript的框架,Node.js只是一个让JavaScript运行在浏览器之外的平台。它采用事件驱动、异步编程、为网络服务而设计,实现了诸如文件系统、模块、包、操作系统 API、网络通信等 Core JavaScript 没有或者不完善的功能。
Node能做什么?
● 具有复杂逻辑的网站
● 基于社交网络的大规模web应用
● web Socket网站
● TCP\UDP套接字应用程序
● 命令行工具
● 交互式终端程序
● 带有图形用户界面的本地应用程序
● 单元测试工具
● 客户端Javascript编译器
Node的特点
node最大的特点是采用异步式I\O与事件驱动
异步式 I/O 与事件驱动
Node.js 使用的是单线程模型,对于所有I/O都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。
Node的异步机制是基于事件的,所有的磁盘I/O,网络通信,数据库差选都是以非阻塞的的方式来请求,返回的结果有事件循环来处理,如图所示
Node.js 进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。这样做的好处是,CPU和内存在同一时间集中处理一件事,同时尽可能让耗时的I/O操作并行执行。对于低速连接攻击,Node.js只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击。
最重要的是:Node中的js不需要考虑浏览器的兼容问题!
2、Node与PHP、Java的区别
PHP 和 Node.js 的基本区别在于 PHP 是一种编程语言,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
性能:
由于 Node.js 遵循事件驱动的非阻塞I/O模型,与传统的后端技术相比,Node.js 能够处理大量的服务器请求。PHP 遵循一个阻塞模型,其中在服务器端创建多个线程来处理多个客户端请求,如果代码没有被优化,它会导致高服务器负载和响应时间。
托管和部署:
PHP 应用程序可以在包括 Nginx 和 Apache 以及 Windows 和 Linux 平台在内的任何服务器上运行,这使得部署过程变得更容易,而 Node.js,则需要具有 SSH 访问权限的虚拟服务器。因此,在没有任何控制台命令和 Secure Shell(SSH)知识的情况下,用 PHP 部署小型企业和个人应用会更好。
外部依赖:
Node.js 依赖关系较少,用几行代码就可以设置一个 Web 服务器。但运行 PHP 应用程序,就需要外部服务器软件。用 Node.js 的开发人员只需要 NPM(节点包管理器)就可以下载 Node 模块,这些模块可以轻松地集成到应用程序中,提供额外的功能。
CPU 扩展任务:
Node.js 可能在高吞吐量方面表现优异,但是当应用程序繁重,需要 CPU 做大量工作时,Node.js 肯定会有所欠缺。在这种情况下,PHP 最适合做 Web 应用程序的后端。
相似的情况在比较或选择用于 Web,桌面和移动开发的其他技术时。Node.js 有前途,并且肯定会占据PHP市场的一部分,但是不能完全取代 PHP。
Node.js和java之间:
1、Node.js可以说是动态语言,java是静态语言(不能改变它的类型的语言,是静态语言;能够随时改变它的类型的语言,是动态语言),要到运行时才知道类型错误,测试就得些的更好更详细。
2、前者解释型语言, 编写的程序不需要编译。解释型语言在运行的时候才翻译, java编译型语言, 写的程序执行之前,需要一个专门的编译过程,把高级语言翻译成机器语言(解释型语言的特点是,跨平台、知识产权保护性弱、运行效率低, 编译型语言特点与解释型语言相反)
3、语法方面node.js比Java更简洁,干净。
4、javascript支持函数作为参数,java得搞一个类。
5、node相对java学习学习曲线低,前后端语言统一方便技术交流提升。
6、node开发快,java开发慢,但是如果项目大、复杂的话,用java就不容易乱,管理起来比node.js简单。
3、同步和异步区别(转自:https://blog.csdn.net/singit/article/details/47724303)
他们最大的区别:同步需要等待,而异步无需等待。
同步是按顺序执行,执行完一个再执行下一个,需要等待、协调运行。
异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。
例子:
普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干别的事。
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。
``
线程就是异步实现的一个方式。
异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。
异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。
异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。
实现异步可以采用多线程技术或则交给另外的进程来处理。
``
同步可以避免出现死锁,读脏数据的发生。
一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
但是,同步需要等待资源访问结束,浪费时间,效率低。
异步则可以提高效率。
现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可以并发处理的。
但是安全性较低。
3、判断文件夹下文件状态
fs.readdir(__dirname,(err,files)=>{
//读取当前目录下所有文件
if(err) throw err;
for(let i in files){
//遍历所有文件
fs.stat(files[i],(err,stats)=>{
//判断当前文件的状态
//如果是文件就输出文件名是文件,如果是文件夹就输出文件夹名是文件夹
stats.isFile()?console.log(`${
files[i]}是文件`):console.log(`${
files[i]}是文件夹`);
})
}
});
在cmd中输入node fs.js运行创建的js文件,会输出如下内容:
文章浏览阅读5.4k次,点赞7次,收藏24次。一,演示项目的相关信息1,地址:https://github.com/liuhongdi/digv162,功能:以下订单为例,演示了在gorm中启用事务3, 项目结构:如图:说明:刘宏缔的go森林是一个专注golang的博客, 地址:https://blog.csdn.net/weixin_43881017说明:作者:刘宏缔 邮箱: [email protected]二,数据库及sql1,数据表:2,建表sql:CREATE TABLE `..._gorm 事务
文章浏览阅读200次。线性二次型调节控制现在我们讨论一个用于连续状态MDP的一个寻找最优策略的一个方法。该方法中我们直接近似V∗,而不采用离散化。该方法称之为值函数近似,在很多实际RL问题都有很好的应用。使用一个模型或为了发展一个值函数近似算法,我们假设对于MDP,我们有一个模型(model)或仿真器(simulator)。通俗的说,一个仿真器是一个黑盒子,输入是任何一个连续值的状态st,动作at,..._线性二次型调节器优势
文章浏览阅读5.3w次,点赞29次,收藏187次。文章目录一、分位数回归概念二、相关推导2.1 分位数概念2.2 离差绝对值LAD2.3 分位数回归2.4 效果以及理解三、模型检验四、求解方法一、分位数回归概念分位数回归是估计一组回归变量X与被解释变量Y的分位数之间线性关系的建模方法。以往的回归模型实际上是研究被解释变量的条件期望。而人们也关心解释变量与被解释变量分布的中位数,分位数呈何种关系。它最早由Koenker和Bassett(197..._分位数回归
文章浏览阅读139次。代表性学术成果[1] Hanning Yuan, Meng Fang,Xinquan Zhu,Hierarchical Sampling for Multi-Instance Ensemble Learning, IEEE Transactions on Knowledge and Data Engineering, 2013,25(12):2900~2905(SCI/Ei)[2] Hanning..._北京理工大学袁汉宁
文章浏览阅读9.2k次,点赞4次,收藏37次。“移动互联网”的形势下,个人隐私信息泄露所引发的事件越来越多,大众对隐私安全的重视程度越来越高;国家网信办、工信部、公安部、市场监管局等四部委及其他相关机构陆续出台个人信息保护规范和细则,并落地实施。_隐私协议检测实现逻辑
文章浏览阅读723次。iOS:原生二维码扫描时间 2015-01-28 14:06:00 博客园精华区原文 http://www.cnblogs.com/pretty-guy/p/4255359.html主题 iOS做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing。今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描。首先需要添加__viewpreview.bounds.size.height - _viewpreview.bounds.size.height * 0.4f
文章浏览阅读3.2k次,点赞6次,收藏24次。基于 Python + 百度AI 开发的多种人脸属性识别程序可检测:年龄、 颜值、表情、脸型、性别、眼镜、情绪等各种人脸属性程序代码如下:# -*- coding:utf-8 -*-from aip import AipFaceimport base64def shibe(file): """ 你的 APPID AK SK """ APP_ID = ''..._options = {'face_field': 'gender, age, beauty, mask,emotion,expression, glas
文章浏览阅读2k次。记录一个问题,今天在使用elementui中dialog组件时,将dialog组件封装成一个业务组件,在之后的使用中发现了一个问题。使用的场景是需要循环出来很多按钮,在按钮上绑定dialog事件,根据type传递参数,来切换不同样式的dialog。在使用过程中发现dialog组件会发生闪烁bug。最后经过一番痛苦的排查和尝试,原来是组件上绑定了:key的属性,属性值是type,只需要把这个属性删除掉,就没有问题了,其实这个dialog不经过循环,所以这个key完全是我写代码时粗心写上的。记录问题,引以_el-dialog 加了key之后闪烁
文章浏览阅读765次。1. 在android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimation 旋转动画效果 2.我们这里讲一下RotateAnimation的使用 RotateAnimation构造方法参数详解: RotateAnimation (float_rotateanimation
文章浏览阅读460次。也是从其他程序中学习得到计算距离:position=[]通过list来存储坐标xy, position.append([x,y])position = np.array(position) 转换成数组dist_arr = np.concatenate((np.array([0]), np.cumsum(np.linalg.norm(position[:-1] - position[1:], axis=1))))dist_arr为累计距离和x_norm=np.linalg.norm_python根据坐标计算跑动距离
文章浏览阅读49次。1 <!doctype html> 2 <html lang="en"> 3 <head> <!-- 头部 --> 4 <meta charset="UTF-8"> 5 <title>周六巨著</title> 6 <meta name="Key...
文章浏览阅读10w+次,点赞6次,收藏31次。文章目录四种 cell 之间的区别和联系两种 Cell Group - Master & Secondary两种 Node - Master & Secondary四种 cell 之间的区别和联系abbrenameconditionpropertiesPCellPrimary Cellunder MCG"Under MCG there may be many Cells, PCell is used to initiate the initial acces_pscell