Node.js基础(一)

参考链接:Node.js 概述 -- JavaScript 标准参考教程(alpha)

url部分参考链接:node.js之Url & QueryString模块 - 简书

HTTP:HTTP知识先填坑-慕课网

HTTP协议在使用场景中的流程流程流程流程流程

1.首先,是对imooc.com域名解析,

(1.1)浏览器搜索浏览器自身的DNS缓存。

在Chrome浏览器下,通过chrome://net-internals/#dns就可以查看你曾经浏览过的网站DNS缓存记录。

(1.2)如果浏览器没有找到自身的DNS缓存或之前的缓存已失效,那么浏览器会搜索操作系统自身的DNS缓存。

(1.3)如果操作系统的DNS缓存也没有找到,那么系统会尝试在本地的HOST文件去找。(HOST文件:C:\Windows\System32\drivers\etc)

(1.4)如果在HOST里依然没有找到,浏览器会发起一个DNS的系统调用,即一般向本地的宽带运营商发起域名解析请求。请求分为以下步骤,1.宽带运营商服务器会首先查看自身的缓存,看是否有结果,如果没有,2.运营商服务器会发起一个迭代DNS解析请求【根域(获得com域顶级域IP地址)——>顶级域(获得imooc.com域的IP地址)——>域名注册商(将结果发给运营商的DNS服务器)】。运营商服务器把结果返回给操作系统内核(同时也缓存在自己的缓存区),操作系统内核把结果返回给浏览器,最终浏览器拿到了www.imooc.com对于的IP地址,DNS解析完成。

2.浏览器获得域名对应的IP地址后,发起HTTP“三次握手”,建立TCP/IP连接。(浏览器以一个随机端口向服务器的Web程序发起TCP连接请求,TCP连接请求通过层层的路由设备到达了服务器端以后进入了网卡,再进入内核的TCP/IP协议栈,还可能经过防火墙的过滤,最终进入了Web服务器,建立TCP和IP的连接。)

3.在TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了。比如,用HTTP的GET方法请求一个根域里的某个域名,协议可以采用HTTP 1.0 。

4.服务器端接受这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器,如果是imooc.com网站的页面,服务器就会把完整的HTML页面代码返回给浏览器。

5.浏览器拿到了imooc.com这个网站的完整HTML页面代码,在解析和渲染这个页面的时候,里面的Javascript、CSS、图片等静态资源,它们同样也是一个个HTTP请求,都需要经过上面的步骤来获取。

6.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现出来。

HTTP请求流程可拆分为:请求和响应,两者都会发送http头和正文信息。HTTP头发送的是一些附加的信息:内容类型,服务器发送响应的日期、HTTP状态码。

HTTP状态码:HTTP 状态消息

HTTP模块:①支持更多特性②不缓冲请求和响应③处理流相关

HTTP概念进阶:

1. 什么是回调?

什么是回调?回调是异步编程的基础方法,当需要按照顺序执行异步逻辑的时候,一般采取后续传递的方式,也就是将后续逻辑封装在回调函数中作为起始函数的参数,逐层去嵌套。

2. 什么是同步/异步?

同步就是执行一个任务,后一个任务等待前一个任务结束,然后再执行,程序执行的顺序与任务的排列顺序是一致的,比如js是单线程的,因此js代码是按照顺序执行的,即便是js同步下载多个文件,也得按照顺序执行,一旦js里面出现死循环的代码,那么页面就会被阻塞在这个地方,后面的js代码就不会被执行到 比如打电话预约座位,发现没有座位了,店员就挂电话开始查找有没有座位,查找,查找...等待一会儿之后,店员告诉你结果后,挂电话。

异步执行任务,每个任务都有一个或多个回调函数,前一个任务结束后不是执行后一个任务而是执行回调函数,后一个任务也不是等待前一个任务结束后执行,程序的执行顺序与任务的排列顺序无关。JS中最基本的异步函数就是setTimeout和setInterval。比如打电话预约座位,发现没有座位了,店员就挂电话开始查找有没有座位,查找,查找...查到之后,店员通过主动回电话。即执行回调函数来解决你的问题(是否有座位)。

3. 什么是I/O?

磁盘的写和读,在nodejs里面就是为文件系统,数据库资源提供接口,发送请求的时候,不用等待硬盘,当硬盘准备好了,非阻塞接口就会通知处理

4. 什么的单线程/多线程?

一次只能执行某一段代码叫做单线程

一次可以执行多段代码叫多线程,只要可以分配好资源

5. 什么是阻塞/非阻塞?

阻塞:某个程序执行时,未执行完就得一直等待

非阻塞:前一个程序未执行完时可以挂起,继续执行其他程序,等到前一个程序有结果再执行

6. 什么是事件?

一个触发动作(例如点击按钮)

7. 什么是事件驱动?

为了某个事件注册了回调函数,但这个回调函数不是马上执行,只有当这个事件发生的时候才会调用回调函数,这种函数执行的方式就叫事件驱动。也可以说是一个触发动作引起的操作(例如点击按钮后弹出一个对话框)

8. 什么是基于事件驱动的回调?

为了某个事件注册了回调函数,但是这个回调函数不是马上执行,只有当事件发生的时候,才会调用回调函数,这种函数执行的方式叫做事件驱动~这种注册回调就是基于事件驱动的回调,如果这些回调和异步I/O(数据写入、读取)操作有关,可以看作是基于回调异步I/O,只不过这种回调在nodejs中是有事件来驱动的

9. 什么是事件循环?

//事件循环Eventloop,倘若有大量的异步操作,一些I/O的耗时操作,甚至是一些定时器控制的延时操作,它们完成的时候都要调用相应的回调函数,从而来完成一些密集的任务,而又不会阻塞整个程序执行的流程,此时需要一种机制来管理,这种机制叫做事件循环.

Event Loop:回调函数队列。当异步函数执行的时候回调函数就会被压入到这个队列,对node.js来说,靠一个单线程不断地查询队列中是否有事件,当读取到一个事件的时候,将调取与这个事件关联的javascript函数。

如图,堆(heap)和栈(stack),栈中的代码调用各种外部API,它们在"任务队列"中加入各种事件(click,load,done)。只要栈中的代码执行完毕,主线程就会去读取"任务队列",依次执行那些事件所对应的回调函数。

node.js的核心思想非阻塞,单线程,和事件驱动。

HTTPS:https协议是在http基础之上加入了SSL/TLS握手以及数据加密传输,SSL/TLS是他们的最大区别。




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,398评论 0 106
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 个人博客搭建完成,欢迎大家来访问哦黎默丶lymoo的博客 什么是node.js JavaScript是一个脚本语言...
    黎默丶lymoo阅读 394评论 0 4
  • 3.1Node.js的控制台 ②第二个参数是一个整数表示时间。 ③第三个参数表示将要传入被调函数的参数。 clea...
    同Young不同样阅读 317评论 0 2
  • 2017.09.15 每天都在循规蹈矩的过着,重复着昨天做过的事,一遍又一遍 大概这个年纪真的是人生的迷茫期吧,不...
    兜兜w阅读 230评论 0 0