并行:指在任意的时候点上,有多个程序运行在多个CPU上面。
(与CPU的数量保持同等)。

异步: 用于多任务情形, 多个任务之间实行没有先后顺序,可以同时运行,实行的先后顺序不会有什么影响,存在多条运行主线;(指代码调用IO操作时,不须要等待IO操作完成,就可以返回的调用办法)(多线程)。

同步: 用于多任务情形, 多个任务之间实行的时候哀求有先后顺序,必须一个先实行完成之后,另一个才能连续实行, 只有一个主线;(指代码调用IO操作时,必须等待IO操作完成,才返回的调用办法)。

属于最大值jspNginx入门进修1一些概念 PHP

壅塞:从调用者的角度出发,如果在调用的时候,被卡住,不能再连续向下运行,须要等待,就说是壅塞;(调用函数的时候,当前哨程被挂起,不能立即返回)。

非壅塞: 从调用者的角度出发, 如果在调用的时候,没有被卡住,能够连续向下运行,无需等待,就说是非壅塞。
(调用函数的时候,当前哨程不会被挂起,而是立即返回)。

HTTP的要求与相应报文HTTP要求报文

下面是HTTP要求报文的基本语法:

要求行:①是要求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT和TRACE;②是要求对应的URL地址,它和报文头的Host属性组成完全的要求URL;③是协议名称及版本号。

要求头:④是HTTP的报文头,报文头包含多少个属性,格式为“属性名:属性值”,做事端据此获取客户真个信息。
请把稳与缓存干系的规则信息,均包含在header中。

要求体:⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个要求参数的数据。
请把稳,不仅报文体可以通报要求参数,要求URL也是可以通过类似于/envythink/index.html? param1=value1¶m2=value2的办法来通报要求参数。

将下来大略先容一下HTTP要求报文头属性:(1)Accept要求报文可通过一个“Accept”报文头属性见告做事端,客户端可以接管什么类型的相应。
举个例子,Accept:text/plain表示见告做事器,客户端只能吸收相应类型仅为纯文本的数据。

实际上Accept属性的值可以为一个或多个MIME类型的值(这些值用于描述内容类型的因特网标准, 能包含文本、图像、音频、视频以及其他运用程序专用的数据)。

(2)cookie。
客户真个Cookie便是通过这个报文头属性传给做事端。
这里常日会有一个sessionId,用于见告做事端如何辨别哪些要求来自于同一个客户端发起的。
实在便是通过HTTP要求报文头的Cookie属性中sessioId的值来关联的。
实在也可以通过重写URL的办法将会话ID附带在每个URL的后面,不过这种办法不宁靖安,不建议这么操作。

(3)Referer。
Referer表示这个要求是从哪个URL过来的。

(4)Cache-Control。
表示对缓存进行掌握,如一个要求希望相应返回的内容在客户端要被缓存一年,或不肯望被缓存就可以通过设置这个报文头来达到目的。

HTTP相应报文

HTTP相应报文也是由三部分组成,不同于要求报文中的要求行、要求头和要求体;相应报文包括相应行、相应头和相应体,如下所示:

相应行:个中①报文协议及版本;②状态码及状态描述;

相应头:个中③相应报文头,也是由多个属性组成;

相应体:个中④相应报文体,即做事器返回给客户真个数据。

将下来大略先容一下常见的HTTP相应报文头属性:(1)Cache-Control。
又看到这个属性,这里表示相应输出到客户端之后,做事端通过该报文头属性来见告客户端如何掌握相应内容的缓存。

Cache-Control这一属性常见的取值有private、public、no-cache、max-age、no-store,默认值为private。
private表示客户端可以缓存;public表示客户端和代理做事器都可以缓存;no-cache表示须要利用比拟缓存来验证缓存数据;max-age表示缓存的内容将在max-age秒之后失落效;no-store表示所有的内容都不会缓存。

前面也说了默认值为private,缓存韶光为31536000秒,也便是365天,也便是说在365天之内,再次要求这条数据,都会直接从缓存数据库中获取数据并利用。
(2)ETag。
它代表一个相应做事端资源,如页面版本的报文属性,如果某个做事端资源发生了变革,那么这个ETag就会发生变革。
可以将这个ETag作为Cache-Control的补充,它可以让客户端更智能的知道,什么时候从做事端获取资源,什么时候可以直接从缓存中返回相应。
(3)Location。
如果你之前利用过JSP,且须要让A页面Redirect到B页面,此时实在便是让客户端再发起一个要求到A页面,那么就须要Redirect到A页面的URL,说白了便是通过相应报文头的Location属性来奉告客户端。
举个例子,下面的报文属性便是将客户端Redirect到envythink的首页:

Location: http://www.envythink.com

(4)Set-Cookie。
做事端可以设置客户真个Cookie,其事理便是通过这个相应报文头属性来实现的。

(5)Cookie机制。
客户端要求做事器,如果做事器须要记录该用户状态,就可以利用Response向客户端浏览器颁发一个Cookie。
客户端浏览器会把Cookie保存起来,当浏览器再次要求该网站时,浏览器把要求的网址连同该Cookie一同提交给做事器。
做事器会检讨该Cookie并据此来辨认用户状态。
当然做事器还可以根据须要修正Cookie的内容。

Cookie的maxAge决定Cookie的有效期,单位为秒(Second)。
Cookie可以通过getMaxAge()与setMaxAge(int maxAge)方法来读写maxAge属性。

如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失落效。
如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie立即失落效。
如果maxAge为0,则表示删除该Cookie。

请把稳,Cookie并不供应修正和删除操作,如果须要修正某个Cookie,只须要新建一个同名的Cookie,然后添加到Response中来覆盖之前的Cookie。
如果要删除某个Cookie,只须要新建一个同名的Cookie,并将maxAge设置为0,并添加到到Response中来覆盖之前的Cookie。
举个例子,如下代码:

# 新建一个CookieCookie cookie = new Cookie("username","envy");# 设置Cookie的生命周期为0,把稳不能为负数cookie.setMaxAge(0);# 将cookie输出到客户端response.addCookie(cookie);大略要乞降非大略要求

在学习了上述HTTP要乞降相应报文之后,接下来就来理解大略要乞降非大略要求。
为什么须要区分大略要乞降非大略要求,那是由于浏览器处理大略要乞降非大略要求的办法不一样。

如果某个要求同时知足下面两个条件,那么该要求就属于大略要求:(1)要求方法是GET、POST或者HEAD三者中的任意一个;(2)HTTP头信息不超过下面几个字段:Accept、Accept-Language、Content-Language、Last-Event-IDContent-Type。
请把稳Last-Event-IDContent-Type只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain;

除此之外,凡是不同时知足这两个条件的,都属于非大略要求。

前面说过浏览器会针对这两种要求采纳不同的处理办法,那么详细的处理办法又是若何的呢?

大略要求

对付大略要求来说,浏览器会在其头信息中增加Origin字段后直接发出,Origin字段用来解释本次要求来自哪个源(协议+域名+端口)。

如果做事器创造Origin指定的源不在容许范围内,做事器会返回一个正常的HTTP回应,浏览器取到回应之后创造回应的头信息中没有包含Access-Control-Allow-Origin字段,就抛出一个缺点给XHR的error事宜;

如果做事器创造Origin指定的域名在容许范围内,那么做事器返回的相应会多出几个以Access-Control-开头的头信息字段。

非大略要求

说完了大略要求,接下来开始学习非大略要求,非大略要求是指对做事器有分外哀求的要求。
举个例子,如要求方法是PUT、DELETE或者Content-Type值为application/json中的某种时,浏览器会在正式通信之前,发送一次HTTP预检OPTIONS要求,先讯问做事器,当前网页所在的域名是否在做事器的容许名单之中,以及可以利用哪些 HTTP要求方法和头信息字段。
只有得到肯定答复,浏览器才会发出正式的XHR要求,否则报错。