
Node
文章平均质量分 90
exialym
fu萝卜
展开
-
Node——异步I/O
单线程编程会因阻塞I/O导致硬件资源得不到更优的使用。多线程编程也因为编程中的死锁、状态同步等问题让开发人员头痛。Node在两者之间给出了它的解决方案:利用单线程,远离多线程死锁、状态同步等问题;利用异步I/O,让单线程远离阻塞,以好使用CPU。 异步IO的实现在Node中,JS是在单线程中执行的没错,但是内部完成IO工作的另有线程池,使用一个主进程和多个IO线程来模拟异步IO。 当主线程发起IO原创 2016-07-20 17:06:06 · 861 阅读 · 0 评论 -
Node——异步编程
函数式编程函数式编程是异步编程的基础,在JS中,将函数作为参数,返回值,都是可以的。这为我们使用回调函数打下了很好的基础。var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b) { return a - b; }); // [ 1, 5, 10, 25, 40, 100 ] var isTyp原创 2016-08-04 14:24:24 · 476 阅读 · 0 评论 -
Node——内存控制
JS在浏览器中运行的时候并不存在太大的内存问题,我们通常也不刻意的去优化他们,但是当运行在服务器端的时候,运行时间长,这种问题就不得不考虑了。V8的垃圾回收机制与内存限制V8的内存限制在64位下只能使用1.4GB,在32位下0.7GB。即便你的物理内存有32GB,单个Node进程也只能使用这些内存。如果你要将一个2G的文件读到内存里解析,good luck。 V8之所以要限制内存原创 2016-08-05 17:18:59 · 4781 阅读 · 0 评论 -
Node——Buffer
对于传统的前端开发者,我们不需要处理网络协议,数据库,图片数据,接收上传文件等。但是在Node中这是很基本的场景。这里用到的大部分都是二进制数据,这是原有JS无法处理的。于是Buffer对象就出现了。Buffer结构Buffer是一个像Array的对象,主要用于字节操作。其性能部分用C++实现,非性能部分由JS实现。 在前面一节中我们知道Buffer所占的内存不是通过V8分配的。原创 2016-08-09 16:11:40 · 406 阅读 · 0 评论 -
Node——构建Web应用
基础功能之前我们通过http模块创建了一个简单的服务器,但是对于一个网络应用来说肯定是远远不够的,在聚义的业务中我们至少有如下要求:请求方法的判断URL的路径解析URL中查询字符串的解析Cookie的解析Basic认证表单数据的解析任意格式的上传处理Session管理一切的开始都是这个函数:var server = http.createServer(func原创 2016-08-21 22:11:34 · 3496 阅读 · 1 评论 -
Node——玩转进程
Node基于V8引擎构建,与浏览器类似,我们的JS将会运行在单个进程的单个线程上,他带来的好处是:程序状态是单一的,没有锁和线程同步问题,没有上下文切换CPU使用率高。但是还是有别的问题:CPU的多核无法利用,单线程上有异常并没有被捕获的情况下,服务器就无法继续提供服务了。多进程架构Node提供了child_process模块,这个模块可以做到打开新的进程来执行任务。最理想的状态应该是原创 2016-08-24 14:00:57 · 2798 阅读 · 0 评论