HTTP详解(2)-请求、响应、缓存


     

1. HTTP请求格式      

       做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,而消息头是必须的。每当我们打开一个网页,在上面点击右键,选择“查看源文件”,这时看到的HTML代码就是HTTP的消息体,那么消息头可以通过浏览器的开发工具或者插件可以看到,如果火狐的Firebug,IE的Httpwatch。

      客户端通过发送 HTTP 请求向服务器请求对资源的访问。 它向服务器传递了一个数据块,也就是请求信息,HTTP 请求由三部分组成:请求行、  请求头和请求正文。

 请求行:请求方法 URI 协议/版本

  请求头(Request Header)

 

 请求正文

下面是一个HTTP请求的数据:

POST /index.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded
 
username=aa&password=1234
 

1、请求行:请求方法URI协议/版本

 请求的第一行是“方法 URL  协议/版本”,并以 回车换行作为结尾。请求行以空格分隔。格式如下:
POST /index.php HTTP/1.1
以上代码中“ GET”代表请求方法,“//ndex.php”表示URI,“HTTP/1.1代表协议和协议的版本。
        根据 HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
         URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。   

请求方法

在 HTTP 协议中,HTTP 请求可以使用多种请求方法,这些方法指明了要以何种方式来访问 Request-URI 所标识的资源。HTTP1.1 支持的请求方法如下表所示:

HTTP1.1 中的请求方式:
方法 作用
GET 请求获取由 Request-URI 所标识的资源
POST 请求服务器接收在请求中封装的实体,并将其作为由 Request-Line 中的 Request-URI 所标识的资源的一部分
HEAD 请求获取由 Request-URI 所标识的资源的响应消息报头
PUT

请求服务器存储一个资源,并用 Request-URI 作为其标识符

DELETE 请求服务器删除由 Request-URI 所标识的资源
TRACE 请求服务器回送到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
 

重点介绍 GET、POST 和 HEAD 三个方法:

(1)GET

        GET 方法用于获取由 Request-URI 所标识的资源的信息,常见的形式是:

        GET Request-URI HTTP/1.1
        GET方法是默认的HTTP请求方法,例如当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是 GET 方法向服务器获取资源。

        我们可以使用GET方法来提交表单数据,用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如:
         Http://localhost/login.php?username=aa&password=1234

        从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大。这是因为浏览器对url的长度有限制

       各种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)

IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000

(2)POST

          POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。 在请求头信息结束之后的两个回车换行之后(实际是空一行),就是表单提交的数据。如上面提到的post表单数据:

        username=aa&password=1234

        POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

  从编程的角度来讲,如果用户通过 GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。

 

 GET与POST方法有以下区别:

      1、  在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放在HTTP包的body中。

      2、 GET方式提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST则没有此限制。

      3、安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

      4.、服务器取值方式不一样。GET方式取值,如php可以使用$_GET来取得变量的值,而POST方式通过$_POST来获取变量的值。

 

(3)HEAD

     HEAD 方法与 GET 方法几乎是相同的,它们的区别在于 HEAD 方法只是请求消息报头,而不是完整的内容。对于 HEAD 请求的回应部分来说,它的 HTTP 头部中包含的信息与通过 GET 请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到 Request-URI 所标识的资源的信息。这个方法通常被用于测试超链接的有效性,是否可以访问,以及最近是否更新。

    要注意的是,在 HTML 文档中,书写 get 和 post,大小写都可以,但在 HTTP 协议中的 GET 和 POST 只能是大写形式。

2. 请求头

每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

HTTP最常见的请求头如下:

Transport 头域

Connection:

作用:表示是否需要持久连接。

如果服务器看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,服务器需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小;

例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的  网页,会继续使用这一条已经建立的连接

例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,  当客户端再次发送Request,需要重新建立TCP连接。

Host(发送请求时,该报头域是必需的)

Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。

eg:http://;localhost/index.html
浏览器发送的请求消息中,就会包含Host请求报头域,如下:
Host:
localhost

此处使用缺省端口号80,若指定了端口号8080,则变成:Host:localhost:8080

Client 头域

Accept:

作用:浏览器可以接受的媒体类型(MIME类型),

例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档, 如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)。

通配符 * 代表任意类型。例如  Accept: */*  代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)

Accept-Encoding:

作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);

例如: Accept-Encoding: gzip, deflate。Server能够向支持gzip/deflate的浏览器返回经gzip或者deflate编码的HTML页面。 许多情形下这可以减少5到10倍的下载时间,也节省带宽。

Accept-Language:

作用: 浏览器申明自己接收的语言。 

语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;

例如: Accept-Language:zh-cn 。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。

User-Agent:

作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上, 服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。

例如: User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; InfoPath.2; .NET4.0E)

Accept-Charset:

作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);

例如:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。

Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中;

Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。

Cookie/Login 头域

Cookie:

作用: 最重要的header, 将cookie的值发送给HTTP 服务器

Entity头域

Content-Length

作用:发送给HTTP服务器数据的长度。即请求消息正文的长度;

例如: Content-Length: 38

Content-Type:

作用:

例如:Content-Type: application/x-www-form-urlencoded

Miscellaneous 头域

Referer:

作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里, 他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问    他的网站。

例如: Referer:http://translate.google.cn/?hl=zh-cn&tab=wT

Cache 头域

If-Modified-Since:

作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

例如:If-Modified-Since: Thu, 09 Feb 2012 09:07:57 GMT。

If-None-Match:

作用: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag.  使用这样的机制将提高网站的性能

例如: If-None-Match: "03f2b33c0bfcc1:0"

Pragma:

作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样

Pargma只有一个用法, 例如: Pragma: no-cache

注意: 在HTTP/1.0版本中,只实现了Pragema:no-cache, 没有实现Cache-Control

Cache-Control:

作用: 这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下

Cache-Control:Public   可以被任何缓存所缓存()

Cache-Control:Private     内容只缓存到私有缓存中

Cache-Control:no-cache  所有内容都不会被缓存

2. HTTP响应格式      

      在接收和解释请求消息后,服务器会返回一个 HTTP 响应消息。与 HTTP 请求类似,HTTP 响应也是由三个部分组成,分别是:状态行、消息报头和响应正文。如:

 
  

HTTP/1.1 200 OK Date: Sun, 17 Mar 2013 08:12:54 GMT Server: Apache/2.2.8 (Win32) PHP/5.2.5 X-Powered-By: PHP/5.2.5 Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 4393 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8

HTTP响应示例<title> </head> <body> Hello HTTP! </body> </html></p> <p> </p> <h3><span style="color:#3333ff;">1、状态行</span></h3> <p><span></span>       状态行由协议版本、数字形式的状态代码,及相应的状态描述组成,各元素之间以空格分隔,结尾时回车换行符,格式如下:</p> <p><span></span>HTTP-Version Status-Code Reason-Phrase CRLF</p> <p><span></span>HTTP-Version 表示服务器 HTTP 协议的版本,Status-Code 表示服务器发回的响应代码,Reason-Phrase 表示状态代码的文本描述,CRLF 表示回车换行。例如:</p> <p><span></span>HTTP/1.1 200 OK (CRLF)</p> <p><strong>      状态代码与状态描述</strong></p> <p><span></span>      状态代码由 3 位数字组成, 表示请求是否被理解或被满足,状态描述给出了关于状态码的简短的文字描述。状态码的第一个数字定义了响应类别,后面两位数字没有具体分<span style="color:#ff0000;">类。第一个数字有 5 种取值,如下所示。</span></p> <ul> <li><span style="color:#ff0000;">1xx:指示信息——表示请求已经接受,继续处理</span></li> <li><span style="color:#ff0000;">2xx:成功——表示请求已经被成功接收、理解、接受。</span></li> <li><span style="color:#ff0000;">3xx:重定向——要完成请求必须进行更进一步的操作</span></li> <li><span style="color:#ff0000;">4xx:客户端错误——客户端请求有错误或请求无法实现</span></li> <li><span style="color:#ff0000;">5xx:服务器端错误——服务器未能实现合法的请求。</span></li> </ul> <p><span style="color:#ff0000;">常见状态代码、状态描述、说明:<br> 200 OK      //客户端请求成功</span></p> <p><span style="color:#ff0000;">303:</span><span style="color:#3333ff;">重定向,即从原url重定向到新的url。 例如php 的hear函数header("localtion:/index.php")</span></p> <p><span style="color:#ff0000;">400 Bad Request </span><span style="color:#3333ff;"> //客户端请求有语法错误,不能被服务器所理解</span><br><span style="color:#ff0000;">401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 </span><br><span style="color:#ff0000;">403 Forbidden  //服务器收到请求,但是拒绝提供服务,一般是服务器路径没有权限或者是其他权限相关问题</span><br><span style="color:#ff0000;">404 Not Found  //请求资源不存在,eg:输入了错误的URL</span><br><span style="color:#ff0000;">500 Internal Server Error </span><span style="color:#3333ff;">//服务器发生不可预期的错误:<span style="font-family:arial, '宋体', sans-serif;line-height:24px;text-indent:28px;"><span style="font-size:12px;">一般来说,这个问题都会在服务器端的源代码出现错误时出现,比如出现死循环。</span></span></span></p> <p><span style="color:#ff0000;"><span>502 </span></span><span style="font-family:'Microsoft YaHei', SimHei, Verdana;line-height:20px;"><span style="font-size:12px;color:#ff0000;">Bad Gateway</span></span><span style="color:#3333ff;"><span style="font-size:12px;">/</span>/<span style="font-family:arial, '宋体', sans-serif;line-height:24px;text-indent:28px;"><span style="font-size:12px;">作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。比如LNMP ,php-fpm没有启动就会报502错误。</span></span></span><br></p> <p><span style="color:#ff0000;">503 Server Unavailable  </span><span style="color:#3333ff;">//服务器当前不能处理客户端的请求,一段时间后可能恢复正常,比如java 容器部署war的时候,就出现503, <br>                                            或者是nginx处理的文件没有权限。<br></span></p> <p><span style="color:#3333ff;"><br></span></p> <p><span style="color:#ff0000;">504 Gateway Time-out:</span><span style="color:#3333ff;">作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应,</span><span style="color:#ff6600;"><strong>比如nginx和php-fpm, php设置sleep(200),就会收到504 Gateway Time-out。</strong></span><span style="color:#3333ff;">注意:某些代理服务器在DNS查询超时时会返回400或者500错误</span><br></p> <p><br></p> <h3><span style="color:#3333ff;">2、响应正文</span></h3> <p>响应正文就是服务器返回的资源的内容,响应头和正文之间也必须用空行分隔<span style="font-size:12pt;">。如:</span></p> <p><span style="font-size:12pt;"></span></p> <pre><code class="language-html"><html> <head> <title>HTTP响应示例<title> </head> <body> Hello HTTP! </body> </html></code></pre> <h3><span style="color:#3333ff;">3 、响应头信息</span></h3> <p><span style="font-size:16px;"><span style="font-size:12px;">HTTP最常见的响应头如下所示:</span></span></p> <h4>Cache头域</h4> <blockquote> <p><strong>Date:</strong></p> <p>作用:生成消息的具体时间和日期,即当前的GMT时间。</p> <p>例如: Date: Sun, 17 Mar 2013 08:12:54 GMT</p> <p><strong>Expires:</strong></p> <p>作用: 浏览器会在指定过期时间内使用本地缓存,指明应该在什么时候认为文档已经过期,从而不再缓存它。</p> <p>例如: Expires: Thu, 19 Nov 1981 08:52:00 GMT  </p> <p><strong>Vary</strong></p> <p>作用:</p> <p>例如: Vary: Accept-Encoding</p> </blockquote> <h4>Cookie/Login 头域</h4> <blockquote> <p><strong>P3P</strong></p> <p>作用: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题</p> <p>例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR</p> <p><strong>Set-Cookie</strong></p> <p>作用: 非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.</p> <p>例如: Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/</p> </blockquote> <h4>Entity实体头域:</h4> <p><strong>            实体内容的属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效性等。</strong></p> <blockquote> <p><strong>ETag:</strong></p> <p>作用:  和If-None-Match 配合使用。 (实例请看上节中If-None-Match的实例)</p> <p>例如: ETag: "03f2b33c0bfcc1:0"</p> <p><strong>Last-Modified:</strong></p> <p>作用: 用于指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)</p> <p>例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT</p> <p><strong>Content-Type:</strong></p> <p>作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,</p> <p>例如:</p> <p>        Content-Type: text/html; charset=utf-8</p> <p>  Content-Type:text/html;charset=GB2312</p> <p>  Content-Type: image/jpeg</p> <p><strong>Content-Length:</strong></p> <p>指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。</p> <p>  例如: Content-Length: 19847</p> <p><strong>Content-Encoding:</strong></p> <p>作用:文档的编码(Encode)方法。一般是压缩方式。</p> <p>WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。利用gzip压缩文档能够显著地减少HTML文档的下载时间。</p> <p>例如:Content-Encoding:gzip</p> <p><strong>Content-Language:</strong></p> <p>作用: WEB服务器告诉浏览器自己响应的对象的语言者</p> <p>例如: Content-Language:da</p> </blockquote> <h4>Miscellaneous 头域</h4> <blockquote> <p><strong>Server:</strong></p> <p>作用:指明HTTP服务器的软件信息</p> <p>例如:Apache/2.2.8 (Win32) PHP/5.2.5</p> <p><strong>X-Powered-By:</strong></p> <p>作用:表示网站是用什么技术开发的</p> <p>例如: X-Powered-By: PHP/5.2.5</p> </blockquote> <h4>Transport头域</h4> <blockquote> <p><strong>Connection:</strong></p> <p>例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接</p> <p>例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。</p> </blockquote> <h4>Location头域</h4> <blockquote> <p><strong>Location:</strong></p> <p>作用: 用于重定向一个新的位置, 包含新的URL地址</p> <p>实例请看304状态实例</p> </blockquote> <h3><span>HTTP协议是无状态的和Connection: keep-alive的区别</span></h3> <p>  无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。</p> <p>  HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。</p> <p>  从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。</p> <p>  Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。</p> <p> </p> <h2 class="headline-1 bk-sidecatalog-title" style="border-bottom:rgb(222,223,225) 1px solid;clear:both;"> <span style="color:#3333ff;"><span style="line-height:36px;font-size:22px;">3. 浏览器缓存</span>      </span></h2> <p>          </p> <p>       浏览器缓存:包括页面html缓存和图片js,css等资源的缓存。如下图,浏览器缓存是基于把页面信息保存到用户本地电脑硬盘里。</p> <p>        </p> <p><br></p> <p></p> <h3 style="font-size:17px;color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;"> <span style="font-size:16px;">1、缓存的优点:</span></h3> <p></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span style="font-size:16px;">   </span><span><span style="font-size:12px;">  1)服务器<span>响应更快</span>:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让服务器看上去响应更快。</span></span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span><span style="font-size:12px;">     2)<span>减少网络带宽消耗</span>:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。</span></span></p> <h3>1、缓存工作原理</h3> <p>       页面缓存状态是由http header决定的,一个浏览器请求信息,一个是服务器响应信息。主要包括Pragma: no-cache、Cache-Control、 Expires、 Last-Modified、If-Modified-Since。其中Pragma: no-cache由HTTP/1.0规定,Cache-Control由HTTP/1.1规定。</p> <p>       工作原理图:</p> <p></p> <p> </p> <p>从图中我们可以看到原理主要分三步:</p> <ol> <li>第一次请求:浏览器通过http的header报头,附带Expires,Cache-Control,Last-Modified/Etag向服务器请求,此时服务器记录第一次请求的Last-Modified/Etag                  </li> <li>再次请求:当浏览器再次请求的时候,请求头附带Expires,Cache-Control,If-Modified-Since/Etag向服务器请求</li> <li>服务器根据第一次记录的Last-Modified/Etag和再次请求的If-Modified-Since/Etag做对比,判断是否需要更新<span style="font-size:12px;">,<span style="font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;color:#393939;line-height:24px;">服务器通过这两个头判断本地资源未发生变化,客 户端不需要重新下载,<strong>返回304响应。常见流程如下图所示</strong>:</span></span></li> </ol> <div> <span style="font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;font-size:12px;color:#393939;"><span style="line-height:24px;"><br></span></span> </div> <div> <span style="font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;font-size:12px;color:#393939;"><span style="line-height:24px;"><br></span></span> </div> <p><br></p> <h3 style="font-size:17px;color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;"> <span style="font-size:16px;">与缓存相关的HTTP扩展消息头</span></h3> <p></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span style="font-size:16px;">  </span><span><span style="font-size:12px;">  <span>Expires</span>:设置页面过期时间,格林威治时间GMT</span></span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span style="font-size:12px;">    <span>Cache-Control</span>:更细致的控制缓存的内容</span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span style="font-size:12px;">    <span>Last-Modified</span>:请求对象最后一次的修改时间 用来判断缓存是否过期 通常由文件的时间信息产生 </span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span><span style="font-size:12px;">    <span> ETag</span>:响应中资源的校验值,在服务器上某个时段是唯一标识的。ETag是一个可以 与Web资源关联的记号(token),和Last-Modified功能才不多,也是一个标识符,一般和Last-Modified一起使用,加强服务器判断的准确度。</span></span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span><span style="font-size:12px;">    <span> Date</span>:服务器的时间</span></span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span><span style="font-size:12px;">    <span> If-Modified-Since</span>:客户端存取的该资源最后一次修改的时间,用来和服务器端的Last-Modified做比较</span></span></p> <p style="color:rgb(57,57,57);font-family:verdana, 'ms song', Arial, Helvetica, sans-serif;line-height:21px;"> <span><span style="font-size:12px;">    <span> If-None-Match</span>:客户端存取的该资源的检验值,同ETag。</span></span></p> <p>Cache-Control的主要参数 <br>       Cache-Control: private/public Public 响应会被缓存,并且在多用户间共享。 Private 响应只能够作为私有的缓存,不能再用户间共享。<br>       Cache-Control: no-cache:不进行缓存 <br>       Cache-Control: max-age=x:缓存时间 以秒为单位 <br>       Cache-Control: must-revalidate:如果页面是过期的 则去服务器进行获取。</p> <p><br></p> <p>我们nginx测试:</p> <p>server {<br>         listen       8081;<br>         server_name  10.163.1.175;<br>         if ($host != 'www.test1.com' ) {<br>             #rewrite ^/(.*)$ http://www.test1.com/$1 permanent;<br>         }<br>         index index.html index.htm index.php;<br>         root  /home/www/app/;<br><br><br>         access_log  /mnt/app/nginx/logs/test1.home.log  main;<br><br><br>         location ~ .*\.zip?$<br>         {<br>                access_log off;<br>         }<br>         location ~ .*\.txt?$ {<br>                 access_log off;<br>         }<br><br><br>         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$<br>         {<br>                 expires      30d;<br>         }<br><br><br>         location ~ .*\.(js|css|zip)?$<br>         {<br>                 expires      12h;<br>         }<br><br><br><br><br>         if (!-e $request_filename) {<br>             rewrite ^/(.+)$ /index.php?url=$1 last;<br>             break;<br>         }<br><br><br>         location ~ .*\.(php|php5)?$<br>         {<br>                 #fastcgi_pass  unix:/tmp/php-cgi.sock;<br>                 fastcgi_pass 127.0.0.1:9000;<br>                 fastcgi_index index.php;<br>                 include fastcgi.conf;<br>                 add_header Content-Type text/html;<br>         }<br> }<br></p> <p>然后我们代理两个域名指向同一个端口:</p> <p>server {<br>     listen  80;<br>     server_name   www.test1.com  test1.com;<br><br><br>     location / {<br>         proxy_pass         http://127.0.0.1:8081;<br>         proxy_set_header   Host             $host;<br>         proxy_set_header   X-Real-IP        $remote_addr;<br>         proxy_set_header   X-Forward-For    $proxy_add_x_forwarded_for;<br>         proxy_set_header Access-Control-Allow-Origin *;<br>         proxy_next_upstream http_502 http_504 error timeout invalid_header;<br>     }<br> }<br> server {<br>     listen  80;<br>     server_name   www.test2.com  test2.com;<br><br><br>     location / {<br>         proxy_pass         http://127.0.0.1:8081;<br>         proxy_set_header   Host             $host;<br>         proxy_set_header   X-Real-IP        $remote_addr;<br>         proxy_set_header   X-Forward-For    $proxy_add_x_forwarded_for;<br>         proxy_set_header Access-Control-Allow-Origin *;<br>         proxy_next_upstream http_502 http_504 error timeout invalid_header;<br>     }<br> }<br></p> <p><br></p> <p>我们访问www.test2.com,直接指向www.test1.com,http是304响应。</p> <p><br></p> <p>当我们把8081端口的配置去掉</p> <p>        if ($host != 'www.test1.com' ) {<br>             #rewrite ^/(.*)$ http://www.test1.com/$1 permanent;<br>         }<br>    重启nginx,同一个访问www.test2.com,发现还是直接跳转到www.test1.com。</p> <p>这是因为浏览器304缓存的问题。我们直接使用新浏览器访问,就直接访问就不会跳转啦。</p> <p><br></p> <p><br></p> <p>  </p> <p><br></p> <h3>2、关于图片,css,js,flash的缓存</h3> <p>这个主要通过服务器的配置来实现这个技术,如果使用apache服务器的话,可以使用<strong>mod_expires</strong>模块来实现:</p> <p><strong>编译mod_expires模块:</strong></p> <p>Cd  /root/httpd-2.2.3/modules/metadata</p> <p>/usr/local/apache/bin/apxs -i -a -c mod_expires.c //编译</p> <p>编辑httpd.conf配置:添加下面内容</p> <p><IfModule mod_expires.c></p> <p>ExpiresActive on</p> <p>ExpiresDefault "access plus 1 month"</p> <p>ExpiresByType text/html "access plus 1 months"</p> <p>ExpiresByType text/css "access plus 1 months"</p> <p>ExpiresByType image/gif "access plus 1 months"</p> <p>ExpiresByType image/jpeg "access plus 1 months"</p> <p>ExpiresByType image/jpg "access plus 1 months"</p> <p>ExpiresByType image/png "access plus 1 months"</p> <p>EXpiresByType application/x-shockwave-flash "access plus 1 months"</p> <p>EXpiresByType application/x-javascript      "access plus 1 months"</p> <p>#ExpiresByType video/x-flv "access plus 1 months"</p> <p></IfModule></p> <p>解释:第一句--开启服务</p> <p>第二句--默认时间是一个月</p> <p>在下面是关于各种类型的资源的缓存时间设置</p> <p><br></p> <p></p> <p>(缓存的部分修改自http://www.cnblogs.com/phphuaibei/archive/2011/09/27/2192817.html)  </p> <p><br></p> <p><br><br></p> <div class="shang_tit" style="font-family:Verdana;font-size:14px;line-height:19.0909px;"> <p style="color:rgb(255,255,255);font-size:16px;font-weight:bold;line-height:25px;text-align:center;"> 感谢您的支持,我会继续努力的! 扫码打赏,你说多少就多少</p> </div> <div class="shang_payimg" style="font-family:Verdana;font-size:14px;line-height:19.0909px;"> <img src="http://img.e-com-net.com/image/info8/25dd82be72124c579f071dbdbbdea2fc.jpg" alt="" width="0" height="0">          <img src="http://img.e-com-net.com/image/info8/cb6335ff831844c6920920e3af3d926a.jpg" alt="" width="0" height="0"> </div> <br> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1290221966241898496"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(网络知识)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1834834201300529152.htm" title="Java-后端程序员个人知识总结" target="_blank">Java-后端程序员个人知识总结</a> <span class="text-muted">金肴羽</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录概要1.编程语言2.数据结构与算法3.数据库知识4.框架和库5.服务器管理6.网络知识7.版本控制8.测试9.安全知识10.系统设计11.编码规范与最佳实践12.持续学习和适应能力概要后端程序员,主要负责应用程序的逻辑、数据库交互、服务器配置以及应用的性能优化等。成为一名优秀的后台程序员,需要掌握以下技能:1.编程语言掌握至少一种后台编程语言JavaPythonHtmlJavaScript</div> </li> <li><a href="/article/1833204456137781248.htm" title="子网ip和ip地址一样吗?子网ip地址怎么算" target="_blank">子网ip和ip地址一样吗?子网ip地址怎么算</a> <span class="text-muted">hgdlip</span> <a class="tag" taget="_blank" href="/search/ip/1.htm">ip</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%90%E7%BD%91ip/1.htm">子网ip</a> <div>在计算机网络的广阔世界里,‌IP地址作为设备的唯一标识,‌扮演着举足轻重的角色。‌然而,‌随着网络规模的扩大和复杂性的增加,‌子网划分成为提升网络管理效率和安全性的重要手段。‌这时,‌“子网IP地址”这一概念应运而生,‌那么。子网IP和IP地址一样吗?本文将深入探讨子网IP地址与普通IP地址之间的差异,‌并详细解析子网IP地址的计算方法,‌帮助读者更好地理解和应用这一网络知识。‌一、‌子网IP地址</div> </li> <li><a href="/article/1832717422772187136.htm" title="游戏网络知识" target="_blank">游戏网络知识</a> <span class="text-muted">S0linteeH</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>Peer-to-Peer帧同步最初的游戏是通过peer-to-peer来联网的,每个计算机通过网状拓扑的结构的彼此连接并交换信息。你仍然可以看到这种模型存在于RTS游戏中,而且基于某些原因它还很有趣,也许是因为它是大多数人认为游戏网络工作方式的第一种方式。处理游戏信息的基本思想就是把游戏的数据抽象并转换成一系列命令消息,当处理每个转换的时候就直接演变为游戏的状态。比如:移动单位、攻击物体、建造建筑</div> </li> <li><a href="/article/1832442200940703744.htm" title="【计算机毕设文章】美食信息推荐系统" target="_blank">【计算机毕设文章】美食信息推荐系统</a> <span class="text-muted">xn19950718</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E8%AE%BE%E6%96%87%E7%AB%A0%E5%8F%82%E8%80%83%E6%A1%88%E4%BE%8B/1.htm">计算机毕设文章参考案例</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E7%BE%8E%E9%A3%9F/1.htm">美食</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90/1.htm">需求分析</a> <div>毕业设计(论文)题目:美食信息推荐系统摘要使用旧方法对美食信息推荐系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在美食信息推荐系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的美食信息推荐系统对菜谱管理、字典管理、论坛管理、论坛收藏管理、饮食资讯管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识</div> </li> <li><a href="/article/1832029408811118592.htm" title="如何上好期末复习课" target="_blank">如何上好期末复习课</a> <span class="text-muted">郑大仙_585f</span> <div>复习课有知识梳理类的复习课、专项练习类的复习课、综合讲评类的复习课、查漏补缺类的复习课、思维提升类的复习课等。这些承载着不同学习目标的复习课的教学质量,往往影响着整个复习阶段的教学质量。一、知识梳理类复习课:连点成线,形成知识结构网络知识梳理类复习课是一般意义上的复习课。这类复习课的目标定位主要是知识梳理,帮助学生将前面学习的散点知识,通过一定的结构化梳理,从整体上给予把握。组织形式多样,一般来说</div> </li> <li><a href="/article/1830332659973320704.htm" title="实施面试题目" target="_blank">实施面试题目</a> <span class="text-muted">张小胡</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">智能路由器</a> <div>(仅供参考)一、网络知识1.请分别写出网线水晶头568A和568B接法,并解释其用法。568A通常用于交叉线,即一端使用568A标准,一端使用568B标准,适用于电脑与电脑(同种设备)之间的直接连接。568B更常见于直连线,两端都使用568B标准,适合电脑与交换机、路由器等设备间的连接。2.解释一下路由器、交换机、集线器、二层交换机、三层交换机的区别。路由器(Router):路由器工作路由器工作在</div> </li> <li><a href="/article/1828919117541896192.htm" title="云计算时代容器安全综述-容器的网络安全(上)" target="_blank">云计算时代容器安全综述-容器的网络安全(上)</a> <span class="text-muted">攀师傅</span> <div>互联网应用已经深深的渗透到我们日常生活的方方面面,比如很多同学应该有很长时间都没有使用过现金了。不过任何事情都具有两面性,科技发展给我们造成便利的同事,不容忽视的一个事实是,大部分在线交付系统每天都会遭受各种各样的网络攻击,因此无论你的系统部署在哪里,我们都需要有基本的网络知识来保护系统的正常运行以及核心数据不会被窃取。读者看到这里可能会说讲网络原理的书和文章太多了,这个东西还有什么好说的。笔者认</div> </li> <li><a href="/article/1827692439670976512.htm" title="怎么查2022微博贴吧手机发的匿名帖子查找发帖人真实注册IP地址?" target="_blank">怎么查2022微博贴吧手机发的匿名帖子查找发帖人真实注册IP地址?</a> <span class="text-muted">V丶ny133733</span> <div>懂点网络知识的都知道,每个连入互联网的用户都有一个数字IP,像一串数字一样的,分四段,不管使用何种上网方式,那个互联网IP是必须有的。每个网络IP对应着一个现实生活中的地址,在电信运营商的服务器中都有详细的分配记录。一、IP地址电脑之间要实现网络通信,就必须要有一个合法的ip地址。IP地址=网络地址+主机地址,(又称:主机号和网络号组成)ip地址的结构使我们可以在Internet上很方便的寻址。i</div> </li> <li><a href="/article/1827486106350874624.htm" title="如何通过快速阅读变现" target="_blank">如何通过快速阅读变现</a> <span class="text-muted">GH_1052</span> <div>Day62018.09.05《通过快速阅读来变现,获得第一桶金》现在是网络知识盛产的时代,知识的多样性让人目不暇接。知识的输出质量参差不齐,让人更加难以选择。付费知识也越来越让人能够接受,人们对不熟悉的专业知识领域有更多的追求,知识付费为人们筛选渠道与选择提供一定的便捷性,对解决学习专业问题更加具有针对性。人对知识方面的需求不同,所以需要对不同人群需求进行调查,总结归纳出我所需要输出的知识,对有这</div> </li> <li><a href="/article/1826310777959706624.htm" title="计算机网络知识点汇总(2)" target="_blank">计算机网络知识点汇总(2)</a> <span class="text-muted">Jose_smith</span> <div>1.MAC地址中的前24位代表的生产厂家,所以可以使用工具知道网卡是哪个厂家生产的2.MAC地址要求全球唯一,不同的生产厂家要去同一个注册网站上注册自己的网卡的MAC地址3.可以通过指定MAC地址,让发送的数据帧中的MAC地址为你指定的值(变相修改MAC地址,但是网卡上的MAC地址改不了)4.现在的交换机是由以前的集线器和网桥发展而来的,最开始局域网用集线器连接,随着局域网的扩大(局域网的计算机增</div> </li> <li><a href="/article/1773356656105684992.htm" title="计算机网络知识点汇总" target="_blank">计算机网络知识点汇总</a> <span class="text-muted">蓝小俊</span> <div>第1章概述P36习题3、7、14、15、17、22、24、262.“协议”与“服务”的异同点?答:(1)协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下面一层提供服务。(2)协议和服务的概念的区分:1、协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服</div> </li> <li><a href="/article/1760685307633651712.htm" title="【人工智能学习思维脉络导图】" target="_blank">【人工智能学习思维脉络导图】</a> <span class="text-muted">AK@</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>曾梦想执剑走天涯,我是程序猿【AK】目录知识图谱1.基础知识2.人工智能核心概念3.实践与应用4.持续学习与进展5.挑战与自我提升6.人脉网络知识图谱人工智能学习思维脉络导图1.基础知识计算机科学基础数学基础(线性代数、微积分、概率论和统计学)编程语言(Python、R等)2.人工智能核心概念机器学习监督学习无监督学习强化学习深度学习神经网络卷积神经网络(CNN)循环神经网络(RNN)自然语言处理</div> </li> <li><a href="/article/1759862526385942528.htm" title="HHDESK端口转发监控服务获取客户端和数据库之间的交互信息" target="_blank">HHDESK端口转发监控服务获取客户端和数据库之间的交互信息</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E7%9B%91%E6%8E%A7%E8%BF%90%E7%BB%B4/1.htm">监控运维</a> <div>1.用户痛点端口转发是一种网络技术,用于将外部网络请求转发到内部网络中的特定设备或服务。它允许通过公共网络访问内部网络中的资源,提供了灵活性和便利性。传统的端口转发方式是通过配置路由器的端口映射,但这需要具备网络知识和一定的技术操作,对于一般用户来说较为繁琐。而HHDESK提供了简单易用的解决方案。用户只需对HHDESK进行简单的配置,即可实现外部网络通过互联网访问设备的功能,并且在使用过程中用户</div> </li> <li><a href="/article/1759689192318791680.htm" title="Linux 性能分析工具汇总" target="_blank">Linux 性能分析工具汇总</a> <span class="text-muted">下雪了 ~</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>Linux性能分析工具汇总出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux大牛,Netflix高级性能架构师BrendanGregg更新Linux</div> </li> <li><a href="/article/1757108812872957952.htm" title="从下到上看五层模型" target="_blank">从下到上看五层模型</a> <span class="text-muted">fossi</span> <div>这是计算机网络相关的第一篇文章。要想了解HTTP协议,必然要从最基本的计算机网络知识开始入手。本篇文章从下到上具体介绍五层经典模型,极速入门计算机网络。经典五层模型image下面我们先来了解一下各层做的事情!1.物理层电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。这就叫做"物理层",它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用</div> </li> <li><a href="/article/1756652058724810752.htm" title="Python网络通信" target="_blank">Python网络通信</a> <span class="text-muted">互联网的猫</span> <a class="tag" taget="_blank" href="/search/Python%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">Python从入门到精通</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>目录基本的网络知识TCP/IPIP地址端口HTTP/HTTPSHTTPHTTPS搭建自己的Web服务器urllib.request模块发送GET请求发送POST请求JSON数据JSON文档的结构JSON数据的解码下载图片示例返回所有备忘录信息此文章讲解如何通过Python访问互联网上的资源,这也是网络爬虫技术的基础。基本的网络知识TCP/IP在网络通信中会用到一些相关协议,其中,TCP/IP是非常</div> </li> <li><a href="/article/1756175008394133504.htm" title="计算机网络知识体系全面总结(收藏)" target="_blank">计算机网络知识体系全面总结(收藏)</a> <span class="text-muted">公众号:ITIL之家</span> <div>更多专业文档请访问www.itilzj.com我们周围无时无刻不存在一张网,如电话网、电报网、电视网、计算机网络等;即使我们身体内部也存在许许多多的网络系统,如神经系统、消化系统等。最为典型的代表即计算机网络,它是计算机技术与通信技术两个领域的结合。一、计算机网络概述1.1计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。</div> </li> <li><a href="/article/1756104248602411008.htm" title="神经网络(Nature Network)" target="_blank">神经网络(Nature Network)</a> <span class="text-muted">栉风沐雪</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a> <div>最近接触目标检测较多,再此对最基本的神经网络知识进行补充,本博客适合想入门人工智能、其含有线性代数及高等数学基础的人群观看1.构成由输入层、隐藏层、输出层、激活函数、损失函数组成。输入层:接收原始数据隐藏层:进行特征提取和转换输出层:输出预测结果激活函数:非线性变换损失函数:衡量模型预测结果与真实值之间的差距2.正向传播过程基础的神经网络如下图所示,其中层1为输入层,层2为隐藏层,层3为输出层:每</div> </li> <li><a href="/article/1755302941499080704.htm" title="计算机网络知识点总结——第二章物理层" target="_blank">计算机网络知识点总结——第二章物理层</a> <span class="text-muted">祖安大龙</span> <a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94%E7%AC%94%E8%AE%B0/1.htm">考研笔记</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>第二章物理层一、概述⭐重点概念⭐二、数据通信(一)数据模型(二)数据通信相关术语(三)⭐三种通信方式⭐(四)数据传输方式(五)同步传输&异步传输(六)小节脑图(七)码元(八)数字通信系统数据传输速率⭐码元传输速率⭐(码元速率、波形速率、调制速率、符号速率)⭐信息传输速率⭐(信息速率、比特率)⭐带宽⭐三、奈氏准则&香农定理(一)失真(二)⭐奈氏准则⭐(三)⭐香农定理⭐(四)⭐两者区别⭐四、编码&调制</div> </li> <li><a href="/article/1755302943281659904.htm" title="计算机网络知识点总结——第四章网络层" target="_blank">计算机网络知识点总结——第四章网络层</a> <span class="text-muted">祖安大龙</span> <a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94%E7%AC%94%E8%AE%B0/1.htm">考研笔记</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>目录一、网络层概述二、IPv4IPv4地址网络地址转换NAT⭐子网划分和子网掩码⭐⭐无分类编址CIDR⭐ARP地址解析协议DHCP动态主机配置协议ICMP网际控制报文协议三、IPv6(没考过)IPv6数据报格式IPv6和IPv4的区别四、路由协议与路由算法分层次的路由选择协议RIP协议(UDP)⭐距离向量算法⭐小节脑图OSPF协议(IP)链路状态路由算法BGP协议(TCP)三种路由协议比较五、IP</div> </li> <li><a href="/article/1755302562522742784.htm" title="计算机网络知识点——第二章" target="_blank">计算机网络知识点——第二章</a> <span class="text-muted">Celeste.沐晨</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>目录物理层的一些理论物理层基本概念数据通信基本知识1.相关术语2.三种通信方式3.两种数据传输方式码元、波特、速率、带宽1.码元2.速率、波特、带宽※奈氏准则、香农定理失真:奈氏准则(奈奎斯特定理)——内部、码间影响香农定理——外部、噪声影响编码与调制基带信号与宽带信号编码与调制概念※数字数据编码为数字信号※数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制成模拟信号物理层的传输媒介导向型传</div> </li> <li><a href="/article/1755260274622873600.htm" title="k8s 网络策略揭秘:CKA认证必备的网络知识全解析" target="_blank">k8s 网络策略揭秘:CKA认证必备的网络知识全解析</a> <span class="text-muted">didiplus</span> <a class="tag" taget="_blank" href="/search/K8S/1.htm">K8S</a><a class="tag" taget="_blank" href="/search/CKA/1.htm">CKA</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/CKA/1.htm">CKA</a> <div>网络策略(NetworkPolicy)是Kubernetes中的一种资源对象,用于定义和控制Pod之间的网络通信规则。它允许您在Kubernetes集群中定义详细的网络规则,以控制哪些Pod可以相互通信,以及允许或禁止的流量。网络策略提供了一种实现细粒度网络访问控制的方式,帮助管理员和开发者确保集群中的网络通信符合特定的安全性和策略需求。Pod隔离的两种类型Pod有两种隔离:出口隔离入口隔离它们涉</div> </li> <li><a href="/article/1755155019599986688.htm" title="计算机网络知识点总结——第六章应用层" target="_blank">计算机网络知识点总结——第六章应用层</a> <span class="text-muted">祖安大龙</span> <a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94%E7%AC%94%E8%AE%B0/1.htm">考研笔记</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/p2p/1.htm">p2p</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>目录一、网络应用层模型网络应用模型二、DNS系统域名域名服务器三、文件传输协议FTP四、电子邮件简单邮件传送协议邮局协议POP3基于万维网的电子邮件五、万维网和HTTP协议万维网超文本传输协议HTTPHTTP协议的报文结构一、网络应用层模型应用层对应用程序的通信提供服务。应用层的功能:文件输入、访问和管理电子邮件虚拟终端查询服务和远程作业登录⭐应用层的重要协议⭐:FTPSMTP、POP3HTTP⭐</div> </li> <li><a href="/article/1755114518339403776.htm" title="计算机网络知识(面试必问)" target="_blank">计算机网络知识(面试必问)</a> <span class="text-muted">JSon liu</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E5%90%88%E9%9B%86/1.htm">计算机网络相关面试合集</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a> <div>https://blog.csdn.net/weixin_45912307/article/details/1092297021.三次握手,四次挥手过程三次握手:第一次握手:客户端发送syn包(syn=1,seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+AC</div> </li> <li><a href="/article/1754641445605621760.htm" title="【实习】路由与交换-网络安全生产实习(计算机网络)" target="_blank">【实习】路由与交换-网络安全生产实习(计算机网络)</a> <span class="text-muted">天亮之前_ict</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%88%90%E9%95%BF%E6%97%A5%E5%BF%97/1.htm">网络工程师成长日志</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>一、实习概况1实习目的一、掌握OSPF深层内容LSA类型、特殊区域、路由汇总、认证原理与配置。二、掌握BGP邻居类型,路由通告原则等原理及配置。三、掌握IPSecVPN工作原理及相关配置。四、掌握VRRP、MSTP等企业网常用高可靠技术原理及配置。五、掌握网络故障排除、需求拓扑设计的能力。2实习任务学习网络配置方案及原理掌握拓扑配置方法掌握,ospf,bgp等网络知识二、实习具体内容1具体内容拓扑</div> </li> <li><a href="/article/1754228296482045952.htm" title="冒泡排序与选择排序" target="_blank">冒泡排序与选择排序</a> <span class="text-muted">渡一web前端</span> <div>hello,小伙伴们大家好,新开的《董小姐花痴记》系列从今天开始就正式登场和大家见面啦~主要讲算法知识,而之前的《邓哥奇遇记》系列主要讲网络知识,不过大家不用担心,《邓哥奇遇记》系列没有停止,还会继续更新哦~排序是算法的世界里最基础的问题,而冒泡排序和选择排序是排序算法里最简单的排序算法~很多同学经常弄混两种排序,今天我们就来详细探究冒泡排序和选择排序的区别~在文章开篇之前,我们还是用一句话来描述</div> </li> <li><a href="/article/1754202869017362432.htm" title="计算机网络" target="_blank">计算机网络</a> <span class="text-muted">AdamShi</span> <div>应表会传网数物网络(一):基础知识-计算机网络知识点全面总结(这也太全了吧!)-02_计算机网络的OSI七层(应表会传网数物)_weixin_30755393的博客-CSDN博客七层协议以及如何很好得记忆_曹同学的博客-CSDN博客_网络七层协议记忆口诀巧记OSI七层网络模型(前端)_cmyh100的博客-CSDN博客_七层网络模型记忆口诀三次握手,四次挥手(详解)-常见面试题之计算机网络-</div> </li> <li><a href="/article/1754163304097398784.htm" title="Linux TCP状态TIME_WAIT 过多的处理" target="_blank">Linux TCP状态TIME_WAIT 过多的处理</a> <span class="text-muted">lxw1844912514</span> <div>首先处理这个问题,我们要知道一些网络知识,要知道tcp那些事,比如说三次握手,和四次挥手......很多人会问,为什么建链接要3次握手,断链接需要4次挥手?让我们一起看下下面的流程图:首先,是三次握手:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了</div> </li> <li><a href="/article/1753831226713587712.htm" title="计算机网络知识点——概述、信道复用、数据链路层、网络层" target="_blank">计算机网络知识点——概述、信道复用、数据链路层、网络层</a> <span class="text-muted">我叫两万块</span> <a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a> <div>计算机网络概述物理层的信道复用技术数据链路层物理链路和数据链路的区别CSMA/CDMAC和LLC子层IEEE802.3以太网(Ethernet)快速以太网(100BASETX)网桥生成树网桥交换机级联与堆叠网络层分组交换网提供两种传输服务网际协议IP虚拟互连网络地址分类子网掩码子网划分超网ip地址与硬件地址ip数据报格式地址解析协议ARPICMP协议ARP命令RARP协议分片问题IP路由IP协议网</div> </li> <li><a href="/article/1753643144513077248.htm" title="测试总结分享" target="_blank">测试总结分享</a> <span class="text-muted">sinat_26916241</span> <a class="tag" taget="_blank" href="/search/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">功能测试</a> <div>软件测试工程师面试题系列篇|目录测试常见问题与流程篇测试工具篇计算机网络知识篇数据库篇Linux篇Python编程篇自动化测试篇:包含Selenium、Appium和接口测试性能测试篇软素质篇:10大灵魂拷问反问面试官篇一、测试常见问题和流程篇介绍一下测试流程(重点,常见!)需求评审、测试计划、测试用例、用例评审、冒烟测试、测试执行、验收测试、风险评估、上线\观察、问题跟进、测试报告、复盘会议;根</div> </li> <li><a href="/article/6.htm" title="[黑洞与暗粒子]没有光的世界" target="_blank">[黑洞与暗粒子]没有光的世界</a> <span class="text-muted">comsci</span> <div>     无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算      但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....      那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的 &nbs</div> </li> <li><a href="/article/133.htm" title="jQuery Lazy Load 图片延迟加载" target="_blank">jQuery Lazy Load 图片延迟加载</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。 版本: jQuery v1.4.4+ jQuery Lazy Load v1.7.2 注意事项: 需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src</div> </li> <li><a href="/article/260.htm" title="使用Jodd的优点" target="_blank">使用Jodd的优点</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/jodd/1.htm">jodd</a> <div>1.  简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。 2.  简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。 3.  对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。   使用方法简介</div> </li> <li><a href="/article/387.htm" title="jpa Query转hibernate Query" target="_blank">jpa Query转hibernate Query</a> <span class="text-muted">120153216</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>public List<Map> getMapList(String hql, Map map) { org.hibernate.Query jpaQuery = entityManager.createQuery(hql); if (null != map) { for (String parameter : map.keySet()) { jp</div> </li> <li><a href="/article/514.htm" title="Django_Python3添加MySQL/MariaDB支持" target="_blank">Django_Python3添加MySQL/MariaDB支持</a> <span class="text-muted">2002wmj</span> <a class="tag" taget="_blank" href="/search/mariaDB/1.htm">mariaDB</a> <div>现状 首先,Django@Python2.x 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案 首先据MySQL文档[3]说,自从MySQL</div> </li> <li><a href="/article/641.htm" title="在SQLSERVER中查找消耗IO最多的SQL" target="_blank">在SQLSERVER中查找消耗IO最多的SQL</a> <span class="text-muted">357029540</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>返回做IO数目最多的50条语句以及它们的执行计划。 select top 50   (total_logical_reads/execution_count) as avg_logical_reads,  (total_logical_writes/execution_count) as avg_logical_writes,  (tot</div> </li> <li><a href="/article/768.htm" title="spring UnChecked 异常 官方定义!" target="_blank">spring UnChecked 异常 官方定义!</a> <span class="text-muted">7454103</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>  如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!! public static boolean isCheckedException(Throwable ex) { return !(ex instanceof RuntimeExcep</div> </li> <li><a href="/article/895.htm" title="mongoDB 入门指南、示例" target="_blank">mongoDB 入门指南、示例</a> <span class="text-muted">adminjun</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C/1.htm">操作</a> <div>一、准备工作 1、 下载mongoDB 下载地址:http://www.mongodb.org/downloads 选择合适你的版本 相关文档:http://www.mongodb.org/display/DOCS/Tutorial 2、 安装mongoDB A、 不解压模式: 将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默</div> </li> <li><a href="/article/1022.htm" title="CUDA 5 Release Candidate Now Available" target="_blank">CUDA 5 Release Candidate Now Available</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/CUDA/1.htm">CUDA</a> <div>The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe</div> </li> <li><a href="/article/1149.htm" title="Essential Studio for WinRT网格控件测评" target="_blank">Essential Studio for WinRT网格控件测评</a> <span class="text-muted">Axiba</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。 网格控件功能 1、</div> </li> <li><a href="/article/1276.htm" title="java 获取windows系统安装的证书或证书链" target="_blank">java 获取windows系统安装的证书或证书链</a> <span class="text-muted">bewithme</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>      有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库  。 有关证书链的解释可以查看此处 。   public static void main(String[] args) { SunMSCAPI providerMSCAPI = new SunMSCAPI(); S</div> </li> <li><a href="/article/1403.htm" title="NoSQL数据库之Redis数据库管理(set类型和zset类型)" target="_blank">NoSQL数据库之Redis数据库管理(set类型和zset类型)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a> <div>4.sets类型         Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。         sadd:向名称为key的set中添加元</div> </li> <li><a href="/article/1530.htm" title="异常捕获何时用Exception,何时用Throwable" target="_blank">异常捕获何时用Exception,何时用Throwable</a> <span class="text-muted">bingyingao</span> <div>用Exception的情况 try {        //可能发生空指针、数组溢出等异常         } catch (Exception e) {          </div> </li> <li><a href="/article/1657.htm" title="【Kafka四】Kakfa伪分布式安装" target="_blank">【Kafka四】Kakfa伪分布式安装</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证   1. 安装步骤   Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不</div> </li> <li><a href="/article/1784.htm" title="Project Euler" target="_blank">Project Euler</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a> <div>Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。     看看problem 1吧: Add all the natural num</div> </li> <li><a href="/article/1911.htm" title="Java-Collections Framework学习与总结-ArrayDeque" target="_blank">Java-Collections Framework学习与总结-ArrayDeque</a> <span class="text-muted">BrokenDreams</span> <a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a> <div>        表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。         这篇要看一下java.util.ArrayDeque。从命名上看</div> </li> <li><a href="/article/2038.htm" title="读《研磨设计模式》-代码笔记-装饰模式-Decorator" target="_blank">读《研磨设计模式》-代码笔记-装饰模式-Decorator</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.Fi</div> </li> <li><a href="/article/2165.htm" title="Maven学习(一)" target="_blank">Maven学习(一)</a> <span class="text-muted">chenyu19891124</span> <a class="tag" taget="_blank" href="/search/Maven%E7%A7%81%E6%9C%8D/1.htm">Maven私服</a> <div>    学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功</div> </li> <li><a href="/article/2292.htm" title="[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充" target="_blank">[原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a> <div>本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点 节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法) 需要解决的问题:已知分支</div> </li> <li><a href="/article/2419.htm" title="Linux中用shell获取昨天、明天或多天前的日期" target="_blank">Linux中用shell获取昨天、明天或多天前的日期</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E5%87%A0%E5%B9%B4/1.htm">上几年</a><a class="tag" taget="_blank" href="/search/%E6%98%A8%E5%A4%A9/1.htm">昨天</a><a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96%E4%B8%8A%E5%87%A0%E4%B8%AA%E6%9C%88/1.htm">获取上几个月</a> <div>在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年 # 获取昨天 date -d 'yesterday'  # 或 date -d 'last day' # 获取明天 date -d 'tomorrow'   # 或 date -d 'next day' # 获取上个月 date -d 'last month' # </div> </li> <li><a href="/article/2546.htm" title="我所理解的云计算" target="_blank">我所理解的云计算</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a> <div>      在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:        Cloud computing is a phrase used to describe a variety of computing co</div> </li> <li><a href="/article/2673.htm" title="YII CMenu配置" target="_blank">YII CMenu配置</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>Adding id and class names to CMenu We use the id and htmlOptions to accomplish this. Watch. //in your view $this->widget('zii.widgets.CMenu', array( 'id'=>'myMenu', 'items'=>$this-&g</div> </li> <li><a href="/article/2800.htm" title="设计模式之静态代理与动态代理" target="_blank">设计模式之静态代理与动态代理</a> <span class="text-muted">come_for_dream</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>静态代理与动态代理        代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务</div> </li> <li><a href="/article/2927.htm" title="【转】理解Javascript 系列" target="_blank">【转】理解Javascript 系列</a> <span class="text-muted">gcc2ge</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>理解Javascript_13_执行模型详解 摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个</div> </li> <li><a href="/article/3054.htm" title="Subsets II" target="_blank">Subsets II</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/set/1.htm">set</a> <div>Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not conta</div> </li> <li><a href="/article/3181.htm" title="Spring4.1新特性——Spring缓存框架增强" target="_blank">Spring4.1新特性——Spring缓存框架增强</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a> <div>目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC T</div> </li> <li><a href="/article/3308.htm" title="shell嵌套expect执行命令" target="_blank">shell嵌套expect执行命令</a> <span class="text-muted">liyonghui160com</span> <div>    一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.   系统:centos 5.x   1.先安装expect yum -y install expect   2.脚本内容: cat auto_svn.sh   #!/bin/bash </div> </li> <li><a href="/article/3435.htm" title="Linux实用命令整理" target="_blank">Linux实用命令整理</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>0. 基本命令   linux 基本命令整理    1. 压缩 解压   tar -zcvf a.tar.gz a   #把a压缩成a.tar.gz   tar -zxvf a.tar.gz     #把a.tar.gz解压成a    2. vim小结   2.1 vim替换   :m,ns/word_1/word_2/gc  </div> </li> <li><a href="/article/3562.htm" title="独立开发人员通向成功的29个小贴士" target="_blank">独立开发人员通向成功的29个小贴士</a> <span class="text-muted">shoothao</span> <a class="tag" taget="_blank" href="/search/%E7%8B%AC%E7%AB%8B%E5%BC%80%E5%8F%91/1.htm">独立开发</a> <div> 概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。 明白你从事独立开发的原因和目的。 保持坚持制定计划的好习惯。 万事开头难,第一份订单是关键。 培养多元化业务技能。 提供卓越的服务和品质。 谨小慎微。 营销是必备技能。 学会组织,有条理的工作才是最有效率的。 “独立</div> </li> <li><a href="/article/3689.htm" title="JAVA中堆栈和内存分配原理" target="_blank">JAVA中堆栈和内存分配原理</a> <span class="text-muted">uule</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1、栈、堆 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>