node源码详解 (一)

声明:转载请保留声明头部并标明转载。原文:http://www.cnblogs.com/papertree/p/5225009.html


1.1 好奇哪些问题?

  分析源码之前,先带上几个问题:

1. node 如何执行js代码?在哪里?

2. js代码的异步io接口,如何作用到node?

  调用server.listen(80)函数如何让node挂起?

  而console.log(‘xxx‘)时node就退出?

3. 对“事件循环”这个词耳熟能详,那么具体细节如何?

4. node的文件异步io操作和网络异步io操作事实上并不一样,文件异步io 另外交给线程池处理,那么这里的细节又如何?


1.2 讲解思路

  带着上面几个关键问题,结合以下几个方面进行讲解:

1. 既然是源码,那么会给出上面问题的关键代码位置。

2. 为了对上面几个问题在整个运行流程中有个清楚的定位,会给出一个整体流程图,并做下必要解说。

3. 然后就是逐个问题的解说。

  现在开始下一篇博客吧。

时间: 2024-08-02 11:02:56

node源码详解 (一)的相关文章

node源码详解(二 )—— 运行机制 、整体流程

声明:转载请保留声明头部并标明转载.原文:http://www.cnblogs.com/papertree/p/5225201.html 2.1 项目代码结构 node 主要的部分有4个[下图最左列就是node项目源码的根目录]: 1. 原生 js模块:node提供给 用户js 代码的类接口,平时用的require('fs').require('http')调用的都是这部分的代码.[最左列的 lib文件夹,展开后是左二列] 2. node 源码:node程序的main函数入口:还有提供给lib模

node源码详解(五) —— 在main函数之前 —— js和C++的边界,process.binding

声明:转载请保留声明头部并标明转载.并私信告知作者.原文:http://www.cnblogs.com/papertree/p/5295344.html 在上一篇博客(详解四)讲了 C++通过v8的Object类和FunctionTemplate类,创建对象.方法,设置属性.原型方法等,提供给运行时的 js代码调用. 那么这些C++实现的process对象.TCP类是否都在程序启动的时候就创建到 js的执行环境(context)呢? 不全是.process对象是(见5.2节),但 TCP类等C+

node源码详解(四) —— js代码如何调用C++的函数

声明:转载请保留声明头部并标明转载.并私信告知作者.原文:http://www.cnblogs.com/papertree/p/5285705.html 上面讲到node调用Script::Compile()和Script::Run()解析执行app.js,并把io操作和callback保存到default_loop_struct,那么app.js里面js代码如何调用C++的函数呢? 在4.2节进行解释,先在4.1节来点知识预热. 4.1 V8运行js代码的基础知识 —— V8的上下文 来看看g

Java concurrent AQS 源码详解

一.引言 AQS(同步阻塞队列)是concurrent包下锁机制实现的基础,相信大家在读完本篇博客后会对AQS框架有一个较为清晰的认识 这篇博客主要针对AbstractQueuedSynchronizer的源码进行分析,大致分为三个部分: 静态内部类Node的解析 重要常量以及字段的解析 重要方法的源码详解. 所有的分析仅基于个人的理解,若有不正之处,请谅解和批评指正,不胜感激!!! 二.Node解析 AQS在内部维护了一个同步阻塞队列,下面简称sync queue,该队列的元素即静态内部类No

深入Java基础(四)--哈希表(1)HashMap应用及源码详解

继续深入Java基础系列.今天是研究下哈希表,毕竟我们很多应用层的查找存储框架都是哈希作为它的根数据结构进行封装的嘛. 本系列: (1)深入Java基础(一)--基本数据类型及其包装类 (2)深入Java基础(二)--字符串家族 (3)深入Java基础(三)–集合(1)集合父类以及父接口源码及理解 (4)深入Java基础(三)–集合(2)ArrayList和其继承树源码解析以及其注意事项 文章结构:(1)哈希概述及HashMap应用:(2)HashMap源码分析:(3)再次总结关键点 一.哈希概

Spring IOC源码详解之容器初始化

Spring IOC源码详解之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比较典型的代码 ClassPathResource res = new ClassPathResource("beans.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDe

条件随机场之CRF++源码详解-预测

这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有介绍. 就是训练结束后,会把待优化权重alpha等变量保存到文件中,也就是输出到指定的模型文件.在执行预测的时候会从模型文件读出相关的变量,这个过程其实就是数据序列化与反序列化,该过程跟条件随机场算法关系不大,因此为了突出重点源码解析里就没有介绍这部分,有兴趣的朋友可以自己研究一下. CRF++预测

Android编程之Fragment动画加载方法源码详解

上次谈到了Fragment动画加载的异常问题,今天再聊聊它的动画加载loadAnimation的实现源代码: Animation loadAnimation(Fragment fragment, int transit, boolean enter, int transitionStyle) { 接下来具体看一下里面的源码部分,我将一部分一部分的讲解,首先是: Animation animObj = fragment.onCreateAnimation(transit, enter, fragm

Spring IOC源码详解之容器依赖注入

Spring IOC源码详解之容器依赖注入 上一篇博客中介绍了IOC容器的初始化,通过源码分析大致了解了IOC容器初始化的一些知识,先简单回顾下上篇的内容 载入bean定义文件的过程,这个过程是通过BeanDefinitionReader来完成的,其中通过 loadBeanDefinition()来对定义文件进行解析和根据Spring定义的bean规则进行处理 - 事实上和Spring定义的bean规则相关的处理是在BeanDefinitionParserDelegate中完成的,完成这个处理需