Web基础与HTTP协议

目录

前言

一、Web基础

1.1 域名概述

域名的概念

1.2 域名空间结构

1.3   域名注册

1.4    网页的概念

1.5  HTML概述

1.5.1 HTML超文本标记语言

1.5.2  HTML文档的结构

​编辑 1.6  网页基本标签

1.7   Web概述 

1.7.1  web 介绍

1.7.3  Web2.0

1.8   静态网页

1.8.1  静态网页的特点

1.9 动态网页

1.9.1  动态网页的特点

二、 HTTP协议

2.1 HTTP协议介绍

2.2 HTTP方法

2.3   GET和POST 比较

2.4 HTTP 状态码

生产环境常见的HTTP状态码

2.5 HTTP请求流程分析

2.5.1  请求报文

2.5.2  响应报文

2.6   HTTP请求流程

 三、总结


前言

对于我们学习云计算的人来说,服务是很重要的知识,这章将详细介绍一下web基础知识和HTTP协议的概念和作用。

一、Web基础

1.1 域名概述

域名的概念

IP地址不易记忆


早期使用Hosts文件解析域名、

主机名称重复
主机维护困难

/etc/hosts#配置文件
IP地址 主机名/域名 ……#组成Hosts文件

DNS (Domain Name System域名系统)

分布式
层次性

Web基础与HTTP协议_第1张图片

扩展:DNS解析的三种方法

① /etc/hosts
linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS服务器的情况下,
使用本地/etc/hosts完成解析/映射,实现快速访问
PS: 主要用于主机之间(IP和主机名)的映射/解析关系,示例:
192.168.111.15 ceshi
192.168.111.100 node1
192.168.111.120 node2

② /etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,
这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
PS:主要用与匹配DNS服务器,示例:
nameserver 114.114.114.114
nameserver 8.8.8.8

③ /etc/sysconfig/network-scripts/ifcfg-ens33
我们也可以在网卡配置文件中定义DNS1= DNS2=

生效顺序 1 hosts文件 2 网卡配置文件 3 /etc/resolv.conf

1.2 域名空间结构

定义:表示一组主机并提供它们的有关信息的树形结构

www.baidu.com

域名服务器(分布式,每台主机维护一个部分):

① 保持和维护域名空间的程序

② 响应解析器的请求

域名空间结构(从右网左看)

  • 根域
  • 顶级域
    • 组织域
    • 国家/地区域名
  • 二级域名
  • FQDN=主机名.DNS后缀

1.3   域名注册

域名注册是Internet中用于解决地址对应问题的一种方法

遵循先申请先注册原则

域名注册步骤

Web基础与HTTP协议_第2张图片注:域名注册是Internet  中用于解决地址对应问题的一种方法 ; 遵循先申请先注册原则

扩展:阿里云域名怎么申请的?

申请--》查询重名--》给钱(20-60元)--》备案(阿里云)拍照(负责人拍照人)--》 10-20天   申请之后就可以解析和使用,但是如果有问题就会被封

1.4    网页的概念

网页
●纯文本格式文件
●编写语言为HTML
在用户的浏览器中被“ 翻译”成网页形式显示出来

网站
●由一个一个页面构成的,是多个网页的结合体主页
●打开网站后出现的第一个网页称为网站主页(或首页)

域名
●浏览网页时输入的网址
HTTP
●用来传输网页的通信协议

URL
●是一种万维网寻址系统

HTML
●用来编写网页的超文本标记语言

超链接
●超链接是将网站中不同网页链接起来的功能

发布
●是一种万维网寻址系统

1.5  HTML概述

1.5.1 HTML超文本标记语言

  • Hyper text markup language
  • 网页的“源码”

浏览器:“解释和执行” HTML源码的工具

1.5.2  HTML文档的结构

HTML网页
       头部部分
       标题部分
       主体部分
       网页内容,包括文本、图像等



我的第一个网页
#标签内容
#主题代码部分    

    Hello World!


Web基础与HTTP协议_第3张图片

Web基础与HTTP协议_第4张图片 1.6  网页基本标签

 网页摘要信息的作用

            有利于浏览器解析
            有利于搜索引擎搜索

标签</code></pre> 
  <pre><code><meta> 标签</code></pre> 
  <pre><code><head>
 <title> 搜狐-中国最大的门户网站
 

 
 content="挖掘机哪家强!"/>

标题标签

行控制相关标签

范围标签

图像标签

超链接标签

特殊符号



	
		
		第一个网页
	
	
		

静夜思

床前明月光

疑是地上霜

举头望明月

低头思故乡

Web基础与HTTP协议_第5张图片

头标签中常用标签:

标签        描述
       定义了文档的标题
<base>        定义了页面链接标签的默认链接地址
<link>        定义了一个文档和外部资源之间的关系
<meta>        定义了 HTML 文档中的元数据
<script>      定义了客户端的脚本文件
<style>       定义了 HTML 文档的样式文件</code></pre> 
  <p><strong>内容标签常用标签:</strong></p> 
  <pre><code><table>       定义一个表格
<tr>        定义了表格中的一行
<td>        定义了表格中某一行的一列
<img>       定义了一个图像
<a>         定义了一个超链接
<p>         定义了一行
<br>        定义了换行
<font>        定义了字体</code></pre> 
  <h2 id="1.7%C2%A0%C2%A0%C2%A0Web%E6%A6%82%E8%BF%B0%C2%A0">1.7   Web概述 </h2> 
  <h3 id="1.7.1%C2%A0%20web%20%E4%BB%8B%E7%BB%8D">1.7.1  web 介绍</h3> 
  <p><strong>Web (World Wide Web)即全球广域网,也称为万维网</strong></p> 
  <p><strong>一种分布式图形信息系统。</strong></p> 
  <p><strong>建立在Internet上的一种网络服务</strong><br><br><strong>1.7.2 Web 1.0 </strong></p> 
  <p>以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容</p> 
  <p><strong>这个过程是网站到用户的单向行为</strong></p> 
  <h3 id="1.7.3%C2%A0%C2%A0Web2.0"><strong>1.7.3  Web2.0</strong></h3> 
  <p>更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者</p> 
  <p>加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与</p> 
  <p><strong>Web2.0特征</strong></p> 
  <p><span style="background-color:#ffd900;">用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户</span></p> 
  <h2 id="1.8%C2%A0%20%C2%A0%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5">1.8   静态网页</h2> 
  <p><strong> 静态网页是标准的HTML文件</strong></p> 
  <ul> 
   <li>扩展名是<span style="background-color:#ffd900;">.htm、.html</span></li> 
   <li>             文本、图像、声音、FLASH动画、客户端脚本和Activex控件及JAVA小程序等</li> 
   <li>是网站建设的基础,早期网站一般都有静态网页制作</li> 
   <li>没有后台数据库、不含程序和不可交互的网页</li> 
   <li>相对更新起来比较麻烦,适用于一般更新较少的展示型网站</li> 
  </ul> 
  <h3 id="1.8.1%C2%A0%20%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5%E7%9A%84%E7%89%B9%E7%82%B9">1.8.1  静态网页的特点</h3> 
  <ul> 
   <li>每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”</li> 
   <li>网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件</li> 
   <li>静态网友的内容相对稳定,因此容易被搜索引擎检索</li> 
  </ul> 
  <p></p> 
  <ul> 
   <li>静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难</li> 
   <li>静态网页的交互性较差,在功能方面有较大的限制</li> 
   <li>页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面</li> 
  </ul> 
  <h2 id="1.9%20%E5%8A%A8%E6%80%81%E7%BD%91%E9%A1%B5">1.9 动态网页</h2> 
  <ul> 
   <li>网页URL不固定,能通过后台与用户交互</li> 
   <li>在动态网页网址中有一个标志性的符号——“?”</li> 
   <li>常用的语言有PHP、JSP、Python、Ruby等</li> 
  </ul> 
  <p><a href="http://img.e-com-net.com/image/info8/e290a49e871345dea7ffc0b0b314e965.jpg" target="_blank"><img alt="Web基础与HTTP协议_第6张图片" height="266" src="http://img.e-com-net.com/image/info8/e290a49e871345dea7ffc0b0b314e965.jpg" width="458" style="border:1px solid black;"></a></p> 
  <h3 id="1.9.1%C2%A0%20%E5%8A%A8%E6%80%81%E7%BD%91%E9%A1%B5%E7%9A%84%E7%89%B9%E7%82%B9">1.9.1  动态网页的特点</h3> 
  <p><strong>交互性</strong></p> 
  <ul> 
   <li>即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋</li> 
  </ul> 
  <p><strong>自动更新</strong></p> 
  <ul> 
   <li>无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量</li> 
  </ul> 
  <p><strong>因时因人而变</strong></p> 
  <ul> 
   <li>当不同的时间,不同的人访问同一网址时会产生不同的页面</li> 
  </ul> 
  <p>扩展:<span style="background-color:#ffd900;">目前常用的动态网页编程语言如下:</span></p> 
  <p>●<strong>PHP</strong><br> 即Hypertext Preprocessor (超文本预处理器),它是当今Internet上最为火热的脚本语言,其语法借鉴了C、 Java、PERL<br> 等语言,但只需要很少的编程知识你就能使用PHP 建立一个真正交互的Web站点。<br> ●<strong>JSP</strong><br> 即Java Server Pages (Java服务器页面),它是由Sun Microsystem 公司于1999 年6月推出的新技术,是基于Java Servlet<br> 以及整个Java 体系的Web开发技术。<br> ●<strong>Python</strong><br> 是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添<br> 加,越来越多被用于独立的大型项目开发。</p> 
  <p>●<strong>Ruby</strong><br> 是一种简单快捷的面向对象( 面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。 它的灵感与特性来自于Perl、 Smalltalk、 Eiffel、Ada 以及Lisp 语言。</p> 
  <h1 id="%E4%BA%8C%E3%80%81%20HTTP%E5%8D%8F%E8%AE%AE">二、 HTTP协议</h1> 
  <h2 id="2.1%20HTTP%E5%8D%8F%E8%AE%AE%E4%BB%8B%E7%BB%8D">2.1 HTTP协议介绍</h2> 
  <p>HTTP(超文本传输协议HyperText  Transfer   Protocol)协议是互联网上应用最为广泛的一种网络协议,是基于TCP设计的应用层传输协议,这个协议的目的是为了发布和接受web服务器上的HTML页面。</p> 
  <p>HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与服务端进行tcp连接(三次握手),之后发送http请求与接收http响应都是通过socket接口来调用tcp 协议实现。</p> 
  <p>HTTP 是一种无状态(stateless)的协议,它本身不会对发送过的请求和响应的通信状态进行持久化处理(处理,保存)。目的是为了保持HTTP协议的简单性,从而更够快速处理大量事务,提高效率。然而,在许多的应用场景中,我们需要保持用户登录的专题或记录用户购物车中的商品。所以必须引入一些计数来记录管理状态,例如:cookie</p> 
  <p>cookie 和session 都是为了实现HTTP短期的持久化(内存/缓存方式,查询快,效率比较高);</p> 
  <p>cookie 是缓存在用户端浏览器中的(默认缓存一天),当下次客户端通过同一个浏览器访问客户端的时候,会有限读取cookie中的缓存信息,项服务端进行请求,同时服务器收到客户端请求的时候,读取到cookie 文件,知道客户端之前找的是服务器A处理的任务,为了省事,省资源,干脆直接将请求交给服务器A处理。</p> 
  <p>两者对比:</p> 
  <p>cookie : 省服务器性能</p> 
  <p>session : 更安全</p> 
  <p><strong>HTTP协议的版本</strong></p> 
  <ul> 
   <li>HTTP 0.9       已过时</li> 
   <li>HTTP 1.0       完善的请求,响应模型,并且协议补充完整,如:get 、post、head方法</li> 
   <li>HTTP 1.1       在1.0 基础上进行更新,新增无助请求方式:OPTIONS, PUT , DELETTE, TRACE ,  CONNECT</li> 
   <li>HTTP 2.0</li> 
  </ul> 
  <h2 id="2.2%C2%A0HTTP%E6%96%B9%E6%B3%95">2.2 HTTP方法</h2> 
  <p><strong>HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method)</strong></p> 
  <p><strong>每条HTTP请求报文都包含一个方法,告诉服务器要执行什么动作</strong><br> 获取一个Web页面<br> 运行一个网关程序<br> 删除一个文件等</p> 
  <p><strong>HTTP协议有多种获得Web资源的方法</strong></p> 
  <p>常用的方法:GET和POST</p> 
  <table border="1"> 
   <tbody> 
    <tr> 
     <td style="background-color:#8db3e2;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">HTTP方法</p> </td> 
     <td style="background-color:#8db3e2;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:center;">描述</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">GET</p> </td> 
     <td style="background-color:#fdeada;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求获取Request-URI所标识的资源</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">PUT</p> </td> 
     <td style="background-color:#fdeada;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求服务器存储一个资源,并用Request-URI作为其标识</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">DELETE</p> </td> 
     <td style="background-color:#fdeada;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求服务器删除Request-URI所1标识的资源</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">POST</p> </td> 
     <td style="background-color:#fdeada;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:justify;">在Request-URI所标识的资源后附加新的数据</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:87.95pt;"> <p style="margin-left:.0001pt;text-align:center;">HEAD</p> </td> 
     <td style="background-color:#fdeada;width:338.15pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求获取由Request-URI所标识的资源的响应消息报头</p> </td> 
    </tr> 
   </tbody> 
  </table> 
  <p><span style="background-color:#ffd900;">1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样, 只是用来查询一 下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。</span><br> 2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作–样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。<br><span style="background-color:#ffd900;">3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样, 会创建新的内容。几乎目前所有的提交操作都是用POST请求的。</span><br> 4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作</p> 
  <h2 id="2.3%C2%A0%20%C2%A0GET%E5%92%8CPOST%20%E6%AF%94%E8%BE%83">2.3   GET和POST 比较</h2> 
  <p><strong>GET方法:从指定的服务器上获得数据</strong></p> 
  <ul> 
   <li>GET请求能被缓存</li> 
   <li>GET请求会保存在浏览器的浏览纪录里</li> 
   <li>GET请求有长度的限制</li> 
   <li>主要用于获取数据</li> 
   <li>查询的字符串会显示在URL中,不安全</li> 
  </ul> 
  <p><strong>POST方法:提交数据给指定服务器处理</strong></p> 
  <ul> 
   <li>POST请求不能被缓存</li> 
   <li>POST请求不会保存在浏览器的浏览纪录里</li> 
   <li>POST请求没有长度长度限制</li> 
   <li>查询的字符串不会显示在URL中,比较安全</li> 
  </ul> 
  <h2 id="2.4%20HTTP%20%E7%8A%B6%E6%80%81%E7%A0%81">2.4 HTTP 状态码</h2> 
  <p>HTTP状态码(HTTP Status Code) 是用以表示网页服务器HTTP 响应状态的3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态。<br> 通常正常的状态码为2xx,3xx (如200),如果出现异常会返回4xx,5xx (如404) 。</p> 
  <table border="1" style="margin-left:6.75pt;width:507.95pt;"> 
   <tbody> 
    <tr> 
     <td style="background-color:#8db3e2;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><strong><span style="color:#4f4f4f;"><strong>状态码首位</strong></span></strong></p> </td> 
     <td style="background-color:#8db3e2;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><strong><span style="color:#4f4f4f;"><strong>已定义范围</strong></span></strong></p> </td> 
     <td style="background-color:#8db3e2;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><strong><span style="color:#4f4f4f;"><strong>分类</strong></span></strong></p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">1xx</span></p> </td> 
     <td style="background-color:#d6e3bc;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">100-101</span></p> </td> 
     <td style="background-color:#d6e3bc;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">信息提示</span></p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">2xx</span></p> </td> 
     <td style="background-color:#d6e3bc;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">200-206</span></p> </td> 
     <td style="background-color:#d6e3bc;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">成功</span></p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">3xx</span></p> </td> 
     <td style="background-color:#d6e3bc;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">300-305</span></p> </td> 
     <td style="background-color:#d6e3bc;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">重定向</span></p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">4xx</span></p> </td> 
     <td style="background-color:#d6e3bc;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">400-415</span></p> </td> 
     <td style="background-color:#d6e3bc;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">客户端错误</span></p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:155.75pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">5xx</span></p> </td> 
     <td style="background-color:#d6e3bc;width:189pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">500-505</span></p> </td> 
     <td style="background-color:#d6e3bc;width:163.2pt;"> <p style="margin-left:.0001pt;text-align:center;"><span style="color:#4f4f4f;">服务器错误</span></p> </td> 
    </tr> 
   </tbody> 
  </table> 
  <h2 id="%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%B8%B8%E8%A7%81%E7%9A%84HTTP%E7%8A%B6%E6%80%81%E7%A0%81">生产环境常见的HTTP状态码</h2> 
  <table border="1"> 
   <tbody> 
    <tr> 
     <td style="background-color:#548dd4;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:center;">消息</p> </td> 
     <td style="background-color:#548dd4;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:center;">描述</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">200 OK</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求成功</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">301  Moved Permantly</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">请求的永久页面跳转</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">403  Forbidden</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">禁止访问该页面</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">404  Not Found</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">服务器无法找到被请求的页面</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">500 Internal Server Error</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">内部服务器错误</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">502  Bad Gateway</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">无效网关</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">503 Service Unavailable</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">当前服务器不可用</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#d6e3bc;width:130.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">504  Gateway Timeout</p> </td> 
     <td style="background-color:#d6e3bc;width:295.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">网关请求超时</p> </td> 
    </tr> 
   </tbody> 
  </table> 
  <h2 id="2.5%C2%A0HTTP%E8%AF%B7%E6%B1%82%E6%B5%81%E7%A8%8B%E5%88%86%E6%9E%90">2.5 HTTP请求流程分析</h2> 
  <p>用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。</p> 
  <h3 id="2.5.1%C2%A0%20%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87">2.5.1  请求报文</h3> 
  <p>请求行:请求行由请求方法、URL 以及协议版本三部分组成。<br> 请求头:请求头为请求报文添加了- -些附加信息,由“名/值"对组成,每行一-对,名和值之间使用冒号分隔。<br> 空行:请求头部的最后会有一-个空行,表示请求头部结束,接下来为请求体,这- -行非常重要,必不可少。<br> 请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。</p> 
  <p><strong>常用的请求头:</strong></p> 
  <table border="1"> 
   <tbody> 
    <tr> 
     <td style="background-color:#8db3e2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:center;">请求头</p> </td> 
     <td style="background-color:#8db3e2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:center;">描述</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">Host</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">接受请求的服务器地址,可以是 IP:端口号,也可以是域名</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">User-Agent</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">发送请求的应用程序名称</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">Connection</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">指定与连接相关的属性,如 Connection:Keep-Alive</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">Accept-Charset</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">通知服务端可以发送的编码格式</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">Accept-Encoding</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">通知服务端可以发送的数据压缩格式</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#dce6f2;width:98.75pt;"> <p style="margin-left:.0001pt;text-align:justify;">Accept-Language</p> </td> 
     <td style="background-color:#dce6f2;width:327.35pt;"> <p style="margin-left:.0001pt;text-align:justify;">通知服务端可以发送的语言</p> </td> 
    </tr> 
   </tbody> 
  </table> 
  <h3 id="2.5.2%C2%A0%C2%A0%E5%93%8D%E5%BA%94%E6%8A%A5%E6%96%87">2.5.2  响应报文</h3> 
  <p>状态行:状态行由协议版本,状态码,状态码描述三部分组成。<br> 响应头:响应头与请求头部类似,为响应报文添加了–些附加信息。<br> 空行:响应头部的最后会有一一个空行,表示响应头部结束。<br> 响应体:服务器返回的相应HTML数据,浏览器对其解析后显示页面。</p> 
  <p><strong>常见响应头:</strong></p> 
  <table border="1"> 
   <tbody> 
    <tr> 
     <td style="background-color:#8db3e2;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:center;">响应头</p> </td> 
     <td style="background-color:#8db3e2;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:center;">描述</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Server</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">服务器应用程序软件的名称和版本</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Content-Type</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">响应正文的类型(是图片还是二进制字符串)</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Content-Length</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">响应正文长度</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Content-Charset</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">响应正文使用的编码</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Content-Encoding</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">响应正文使用的数据压缩格式</p> </td> 
    </tr> 
    <tr> 
     <td style="background-color:#fdeada;width:127.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">Content-Language</p> </td> 
     <td style="background-color:#fdeada;width:298.55pt;"> <p style="margin-left:.0001pt;text-align:justify;">响应正文使用的语言</p> </td> 
    </tr> 
   </tbody> 
  </table> 
  <p><a href="http://img.e-com-net.com/image/info8/8f5eafb88d8e48f588a463a9fe7327c7.jpg" target="_blank"><img alt="Web基础与HTTP协议_第7张图片" height="333" src="http://img.e-com-net.com/image/info8/8f5eafb88d8e48f588a463a9fe7327c7.jpg" width="650" style="border:1px solid black;"></a></p> 
  <h2 id="2.6%C2%A0%C2%A0%C2%A0HTTP%E8%AF%B7%E6%B1%82%E6%B5%81%E7%A8%8B">2.6   HTTP请求流程</h2> 
  <p> HTTP请求是指 : <br> 客户端通过发送 HTTP 请求向服务器请求对资源的访问。 <br> 它向服务器传递了一个数据块,也就是请求信息,<br> HTTP 请求由三部分组成:请求行、请求头和请求正文。</p> 
  <p><a href="http://img.e-com-net.com/image/info8/d30c27e012994ec38ecfc452b13f2a18.jpg" target="_blank"><img alt="Web基础与HTTP协议_第8张图片" height="390" src="http://img.e-com-net.com/image/info8/d30c27e012994ec38ecfc452b13f2a18.jpg" width="650" style="border:1px solid black;"></a></p> 
  <p>用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用<span style="background-color:#ffd900;">DNS解析域名</span>,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。</p> 
  <p><span style="background-color:#ffd900;">客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接</span>,首先客户端向服务器发送请求连接报文,SYN=1初始序号seq为x,这时客户端进入<span style="background-color:#ffd900;">SYN-SENT状态</span>,服务器确认请求报文ACK=1,SYN=1,确认序号ACK=X+1,服务器产生的初始序号seq=y,回复客户端确认连接,此时服务器进入<span style="background-color:#ffd900;">SYN-RCVD</span>状态,客户端接受后确认报文ACK=1,ACK=y+1,客户端又重组序号为x+1。TCP连接已经建立,客户端进入<span style="background-color:#ffd900;">ESTABLISHED</span> 状态,当服务器收到客户端的确认后,也会进入 ESTABLISHED 状态。客户端连接到IP地址,发送httpGET的请求,从服务器读取http响应。</p> 
  <p>之后断开连接时,需要通过TCP的四次挥手完成,客户端向服务器发送断开连接请求报文,FIN=1,ACK=1,序号为u,客户端处于<span style="background-color:#38d8f0;">FIN—WAIT-1(终止等待1)状态</span>,服务器确认报文ACK=1,确认序号为ACK=u+1,服务器的序号为v,回复客户端,服务器服务端处于<span style="background-color:#38d8f0;">CLOSE—WAIT(关闭等待)状态</span>,客户端接受确认报文ACK=1,确认序号ACK=v+1,客户端重组序号为seq=u+1,客户端处于<span style="background-color:#38d8f0;">FIN—WAIT-2(终止等待2)状态</span>,然后服务器也想让客户端断开连接,就发送了断开连接请求,FIN=1,ACK=1,服务器重组序号为w,服务器服务端处于<span style="background-color:#38d8f0;">LAST—ACK(最后确认)状态</span>,客户端接受后确认报文ACK=1.确认序号为ACK=w+1,客户端序号为u+1,客户端进入<span style="background-color:#38d8f0;">CLOSED(时间等待)状态</span>,等待最长报文段寿命2*MSL,服务器确认后,立即进入关闭状态。然后进行关闭连接。</p> 
  <h1 id="%C2%A0%E4%B8%89%E3%80%81%E6%80%BB%E7%BB%93"> 三、总结</h1> 
  <p>1.  域名空间结构</p> 
  <p>2. HTML 文档结构</p> 
  <p>3.  网页的基本标签</p> 
  <p>4. Web1.0 与Web 2.0 区别</p> 
  <p>5. Post 与Get 方法区别</p> 
  <p>6. HTTP协议报文格式</p> 
  <p></p> 
  <p></p> 
  <p></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1527251986926338048"></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">你可能感兴趣的:(http,网络协议,网络)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1835511912843014144.htm"
                           title="理解Gunicorn:Python WSGI服务器的基石" target="_blank">理解Gunicorn:Python WSGI服务器的基石</a>
                        <span class="text-muted">范范0825</span>
<a class="tag" taget="_blank" href="/search/ipython/1.htm">ipython</a><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>
                        <div>理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico</div>
                    </li>
                    <li><a href="/article/1835509770287673344.htm"
                           title="swagger访问路径" target="_blank">swagger访问路径</a>
                        <span class="text-muted">igotyback</span>
<a class="tag" taget="_blank" href="/search/swagger/1.htm">swagger</a>
                        <div>Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip</div>
                    </li>
                    <li><a href="/article/1835504218178416640.htm"
                           title="Google earth studio 简介" target="_blank">Google earth studio 简介</a>
                        <span class="text-muted">陟彼高冈yu</span>
<a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a>
                        <div>GoogleEarthStudio是一个基于Web的动画工具,专为创作使用GoogleEarth数据的动画和视频而设计。它利用了GoogleEarth强大的三维地图和卫星影像数据库,使用户能够轻松地创建逼真的地球动画、航拍视频和动态地图可视化。网址为https://www.google.com/earth/studio/。GoogleEarthStudio是一个基于Web的动画工具,专为创作使用G</div>
                    </li>
                    <li><a href="/article/1835502451877310464.htm"
                           title="基于社交网络算法优化的二维最大熵图像分割" target="_blank">基于社交网络算法优化的二维最大熵图像分割</a>
                        <span class="text-muted">智能算法研学社(Jack旭)</span>
<a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95%E5%BA%94%E7%94%A8/1.htm">智能优化算法应用</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2/1.htm">图像分割</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</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.Matlab代码摘要:本文介绍基于最大熵的图像分割,并且应用社交网络算法进行阈值寻优。1.前言阅读此文章前,请阅读《图像分割:直方图区域划分及信息统计介绍》htt</div>
                    </li>
                    <li><a href="/article/1835499615491813376.htm"
                           title="四章-32-点要素的聚合" target="_blank">四章-32-点要素的聚合</a>
                        <span class="text-muted">彩云飘过</span>

                        <div>本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.</div>
                    </li>
                    <li><a href="/article/1835499052125483008.htm"
                           title="Git常用命令-修改远程仓库地址" target="_blank">Git常用命令-修改远程仓库地址</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/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>查看远程仓库地址gitremote-v返回结果originhttps://git.coding.net/*****.git(fetch)originhttps://git.coding.net/*****.git(push)修改远程仓库地址gitremoteset-urloriginhttps://git.coding.net/*****.git先删除后增加远程仓库地址gitremotermori</div>
                    </li>
                    <li><a href="/article/1835498349264990208.htm"
                           title="2023-04-17|篮球女孩" target="_blank">2023-04-17|篮球女孩</a>
                        <span class="text-muted">长一木</span>

                        <div>1小学抑或初中阶段,在课外书了解到她的故事。“篮球女孩”。当时佩服她的顽强,也对生命多了一丝敬畏。今天刚好在公众号看到,长大后的“篮球女孩”。佩服之余又满是心疼。网络侵删祝那素未蒙面的女孩,未来一切顺遂。</div>
                    </li>
                    <li><a href="/article/1835497537369370624.htm"
                           title="利用Requests Toolkit轻松完成HTTP请求" target="_blank">利用Requests Toolkit轻松完成HTTP请求</a>
                        <span class="text-muted">nseejrukjhad</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</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/python/1.htm">python</a>
                        <div>RequestsToolkit的力量:轻松构建HTTP请求Agent在现代软件开发中,API请求是与外部服务交互的核心。RequestsToolkit提供了一种便捷的方式,帮助开发者构建自动化的HTTP请求Agent。本文旨在详细介绍RequestsToolkit的设置、使用和潜在挑战。引言RequestsToolkit是一个强大的工具包,可用于构建执行HTTP请求的智能代理。这对于想要自动化与外</div>
                    </li>
                    <li><a href="/article/1835496780066811904.htm"
                           title="在一台Ubuntu计算机上构建Hyperledger Fabric网络" target="_blank">在一台Ubuntu计算机上构建Hyperledger Fabric网络</a>
                        <span class="text-muted">落叶无声9</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E8%B6%85%E7%BA%A7%E8%B4%A6%E6%9C%AC/1.htm">超级账本</a><a class="tag" taget="_blank" href="/search/Hyperledger/1.htm">Hyperledger</a><a class="tag" taget="_blank" href="/search/fabric/1.htm">fabric</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/%E6%9E%84%E5%BB%BA/1.htm">构建</a><a class="tag" taget="_blank" href="/search/hyperledger/1.htm">hyperledger</a><a class="tag" taget="_blank" href="/search/fabric/1.htm">fabric</a>
                        <div>在一台Ubuntu计算机上构建HyperledgerFabric网络Hyperledgerfabric是一个开源的区块链应用程序平台,为开发基于区块链的应用程序提供了一个起点。当我们提到HyperledgerFabric网络时,我们指的是使用HyperledgerFabric的正在运行的系统。即使只使用最少数量的组件,部署Fabric网络也不是一件容易的事。Fabric社区创建了一个名为Cello</div>
                    </li>
                    <li><a href="/article/1835496402042580992.htm"
                           title="GitHub上克隆项目" target="_blank">GitHub上克隆项目</a>
                        <span class="text-muted">bigbig猩猩</span>
<a class="tag" taget="_blank" href="/search/github/1.htm">github</a>
                        <div>从GitHub上克隆项目是一个简单且直接的过程,它允许你将远程仓库中的项目复制到你的本地计算机上,以便进行进一步的开发、测试或学习。以下是一个详细的步骤指南,帮助你从GitHub上克隆项目。一、准备工作1.安装Git在克隆GitHub项目之前,你需要在你的计算机上安装Git工具。Git是一个开源的分布式版本控制系统,用于跟踪和管理代码变更。你可以从Git的官方网站(https://git-scm.</div>
                    </li>
                    <li><a href="/article/1835493373906087936.htm"
                           title="libyuv之linux编译" target="_blank">libyuv之linux编译</a>
                        <span class="text-muted">jaronho</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><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>文章目录一、下载源码二、编译源码三、注意事项1、银河麒麟系统(aarch64)(1)解决armv8-a+dotprod+i8mm指令集支持问题(2)解决armv9-a+sve2指令集支持问题一、下载源码到GitHub网站下载https://github.com/lemenkov/libyuv源码,或者用直接用git克隆到本地,如:gitclonehttps://github.com/lemenko</div>
                    </li>
                    <li><a href="/article/1835493247179386880.htm"
                           title="Faiss Tips:高效向量搜索与聚类的利器" target="_blank">Faiss Tips:高效向量搜索与聚类的利器</a>
                        <span class="text-muted">焦习娜Samantha</span>

                        <div>FaissTips:高效向量搜索与聚类的利器faiss_tipsSomeusefultipsforfaiss项目地址:https://gitcode.com/gh_mirrors/fa/faiss_tips项目介绍Faiss是由FacebookAIResearch开发的一个用于高效相似性搜索和密集向量聚类的库。它支持多种硬件平台,包括CPU和GPU,能够在海量数据集上实现快速的近似最近邻搜索(AN</div>
                    </li>
                    <li><a href="/article/1835491859351302144.htm"
                           title="Python 实现图片裁剪(附代码) | Python工具" target="_blank">Python 实现图片裁剪(附代码) | Python工具</a>
                        <span class="text-muted">剑客阿良_ALiang</span>

                        <div>前言本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考我的另一篇文章:windowsffmpeg安装部署_阿良的博客-CSDN博客本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。ffmpy安装:pipinstallffmpy-ihttps://pypi.douban.com/simple代码不废话了,上代码</div>
                    </li>
                    <li><a href="/article/1835491354004779008.htm"
                           title="【华为OD技术面试真题 - 技术面】-测试八股文真题题库(1)" target="_blank">【华为OD技术面试真题 - 技术面】-测试八股文真题题库(1)</a>
                        <span class="text-muted">算法大师</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.黑盒测试和白盒测试的区别2.假设我们公司现在开发一个类似于微信的软件1.0版本,现在要你测试这个功能:打开聊天窗口,输入文本,限制字数在200字以内。问你怎么提取测试点。功能测试性能测试安全性测试可用性测试跨平台兼容性测试网络环境测试3.接口测试的工具你了解哪些</div>
                    </li>
                    <li><a href="/article/1835486185015832576.htm"
                           title="【无标题】达瓦达瓦" target="_blank">【无标题】达瓦达瓦</a>
                        <span class="text-muted">JhonKI</span>
<a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94/1.htm">考研</a>
                        <div>博客主页:https://blog.csdn.net/2301_779549673欢迎点赞收藏⭐留言如有错误敬请指正!本文由JohnKi原创,首发于CSDN未来很长,值得我们全力奔赴更美好的生活✨文章目录前言111️‍111❤️111111111111111总结111前言111骗骗流量券,嘿嘿111111111111111111111111111️‍111❤️111111111111111总结11</div>
                    </li>
                    <li><a href="/article/1835486185468817408.htm"
                           title="上图为是否色发" target="_blank">上图为是否色发</a>
                        <span class="text-muted">JhonKI</span>
<a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94/1.htm">考研</a>
                        <div>博客主页:https://blog.csdn.net/2301_779549673欢迎点赞收藏⭐留言如有错误敬请指正!本文由JohnKi原创,首发于CSDN未来很长,值得我们全力奔赴更美好的生活✨文章目录前言111️‍111❤️111111111111111总结111前言111骗骗流量券,嘿嘿111111111111111111111111111️‍111❤️111111111111111总结11</div>
                    </li>
                    <li><a href="/article/1835484742221393920.htm"
                           title="《在战“疫”中成长致敬生活》观后感" target="_blank">《在战“疫”中成长致敬生活》观后感</a>
                        <span class="text-muted">梅子刘的刀</span>

                        <div>(作者:周晨)今天上午,我看了“我是接班人”网络大课堂《在战役中成长致敬生活》。有很多人拿出自己攒下的钱,默默地捐给了武汉,有几千块钱的、有几万块钱的,也有十几万块钱的。连小朋友也把自己的压岁钱捐给了武汉。有名环卫工人把自己五年的积蓄全部捐给了武汉。有名外卖小哥为医护人员买鞋子送吃的。还有已经治愈出院的新型肺炎病人捐了400毫升的血浆。还有位叫大树的叔叔,虽然他没有钱,但是他地里有蔬菜,捐了几大卡</div>
                    </li>
                    <li><a href="/article/1835483159140069376.htm"
                           title="143234234123432" target="_blank">143234234123432</a>
                        <span class="text-muted">JhonKI</span>
<a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94/1.htm">考研</a>
                        <div>博客主页:https://blog.csdn.net/2301_779549673欢迎点赞收藏⭐留言如有错误敬请指正!本文由JohnKi原创,首发于CSDN未来很长,值得我们全力奔赴更美好的生活✨文章目录前言111️‍111❤️111111111111111总结111前言111骗骗流量券,嘿嘿111111111111111111111111111️‍111❤️111111111111111总结11</div>
                    </li>
                    <li><a href="/article/1835477362700021760.htm"
                           title="Python中深拷贝与浅拷贝的区别" target="_blank">Python中深拷贝与浅拷贝的区别</a>
                        <span class="text-muted">yuxiaoyu.</span>

                        <div>转自:http://blog.csdn.net/u014745194/article/details/70271868定义:在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复</div>
                    </li>
                    <li><a href="/article/1835476350190841856.htm"
                           title="ExpRe[25] bash外的其它shell:zsh和fish" target="_blank">ExpRe[25] bash外的其它shell:zsh和fish</a>
                        <span class="text-muted">tritone</span>
<a class="tag" taget="_blank" href="/search/ExpRe/1.htm">ExpRe</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a>
                        <div>文章目录zsh基础配置实用特性插件`autojump`语法高亮自动补全fish优点缺点时效性本篇撰写时间为2021.12.15,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。本篇前置:ExpRe[10]Ubuntu[2]准备神秘软件、备份恢复软件https://www.cnblogs</div>
                    </li>
                    <li><a href="/article/1835475963543121920.htm"
                           title="中原焦点团队网络初中级30期阴丽丽坚持分享第三百八十八次2022.10.18分享 约练次数(74) 咨询师(6) 来访者(53) 观察者(15)" target="_blank">中原焦点团队网络初中级30期阴丽丽坚持分享第三百八十八次2022.10.18分享 约练次数(74) 咨询师(6) 来访者(53) 观察者(15)</a>
                        <span class="text-muted">阴丽丽</span>

                        <div>今天是忙碌的一天,一早起来,总想着找点把事情弄完,可总也弄不完。就这样弄着吧!孩子的事,自己的事都在那里搁置着,不想做,有点欧!今天总体还不错,只是在下午起床时走神了俩小时,也算是给自己的放松吧!今日难得1.儿子乖巧、听话,努力配合,一天下来也是忙忙碌碌,这真的很难得!2.儿子今天录的视频被班主任认可,这真的很难得3.我今天早上做核酸时,自己把教案整了一下,这真的很难得</div>
                    </li>
                    <li><a href="/article/1835475216080400384.htm"
                           title="openssl+keepalived安装部署" target="_blank">openssl+keepalived安装部署</a>
                        <span class="text-muted">_小亦_</span>
<a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/1.htm">项目部署</a><a class="tag" taget="_blank" href="/search/keepalived/1.htm">keepalived</a><a class="tag" taget="_blank" href="/search/openssl/1.htm">openssl</a>
                        <div>文章目录OpenSSL安装下载地址编译安装修改系统配置版本Keepalived安装下载地址安装遇到问题安装完成配置文件keepalived运行检查运行状态查看系统日志修改服务service重新加载systemd检查配置文件语法错误OpenSSL安装下载地址考虑到后面设备可能没法连接到外网,所以采用安装包的方式进行部署,下载地址:https://www.openssl.org/source/old/</div>
                    </li>
                    <li><a href="/article/1835473957185220608.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>
                        <div>目录♫什么是网络编程♫Socket套接字♪什么是Socket套接字♪数据报套接字♪流套接字♫数据报套接字通信模型♪数据报套接字通讯模型♪DatagramSocket♪DatagramPacket♪实现UDP的服务端代码♪实现UDP的客户端代码♫流套接字通信模型♪流套接字通讯模型♪ServerSocket♪Socket♪实现TCP的服务端代码♪实现TCP的客户端代码♫什么是网络编程网络编程,指网络上</div>
                    </li>
                    <li><a href="/article/1835471059135066112.htm"
                           title="你可能遗漏的一些C#/.NET/.NET Core知识点" target="_blank">你可能遗漏的一些C#/.NET/.NET Core知识点</a>
                        <span class="text-muted">追逐时光者</span>
<a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/DotNetGuide%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8D%97/1.htm">DotNetGuide编程指南</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/.netcore/1.htm">.netcore</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a>
                        <div>前言在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NETCore拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。拾遗补漏GitHub开源地址https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/D</div>
                    </li>
                    <li><a href="/article/1835470931783413760.htm"
                           title="「豆包Marscode体验官」 | 云端 IDE 启动 & Rust 体验" target="_blank">「豆包Marscode体验官」 | 云端 IDE 启动 & Rust 体验</a>
                        <span class="text-muted">张风捷特烈</span>
<a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</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/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>theme:cyanosis我正在参加「豆包MarsCode初体验」征文活动MarsCode可以看作一个运行在服务端的远程VSCode开发环境。对于我这种想要学习体验某些语言,但不想在电脑里装环境的人来说非常友好。本文就来介绍一下在MarsCode里,我的体验rust开发体验。一、MarsCode是什么它的本质是:提供代码助手和云端IDE服务的web网站,可通过下面的链接访问https://www</div>
                    </li>
                    <li><a href="/article/1835468963086168064.htm"
                           title="多子女家庭问题" target="_blank">多子女家庭问题</a>
                        <span class="text-muted">3e5c5362403c</span>

                        <div>杨宁宁焦点解决网络初17中19坚持分享589天(2021.3.20)本周约练我1次,总计166次,读书打卡第256天案例督导收获:【家有老大篇】被爱与高期待下的独舞家里的第一个孩子往往集万千宠爱于一身。爸爸妈妈、爷爷奶奶、姥姥姥爷的目光都聚焦在他的身上。在这种光环下长大的孩子,就如小皇帝一般,衣来伸手、饭来张口。拥有爱的同时,也意味着拥有了更高的被期待,父母会花血本给你报各种各样的早教班,给你买各</div>
                    </li>
                    <li><a href="/article/1835468833360539648.htm"
                           title="父母教育孩子的方式,将影响孩子一生" target="_blank">父母教育孩子的方式,将影响孩子一生</a>
                        <span class="text-muted">树英教育</span>

                        <div>为什么有些孩子总是充满自信与快乐?独立、有主见又坚强?而有些孩子却自卑、胆怯,软弱又过度依赖父母?为什么有些孩子总是健康、阳光又富于创造力?而有些孩子却悲观、孤僻又思想空乏?一个孩子的行为取决于孩子的思想,思想取决于环境和自己的认知,认知取决于教育。父母是孩子人生中的第一位教育者,父母养育孩子的方式,将决定他们人生的高度,影响他们的一生。网络图,侵权即删优秀的父母就像园丁,既要浇水施肥,又要修剪杂</div>
                    </li>
                    <li><a href="/article/1835466921470947328.htm"
                           title="Some jenkins settings" target="_blank">Some jenkins settings</a>
                        <span class="text-muted">SnC_</span>

                        <div>Jenkins连接到特定gitlabproject的特定branch我采用的方法是在pipeline的script中使用git命令来指定branch。如下:stage('Clonerepository'){steps{gitbranch:'develop',credentialsId:'gitlab-credential-id',url:'http://gitlab.com/repo.git'}}</div>
                    </li>
                    <li><a href="/article/1835463115882459136.htm"
                           title="2024.9.6 Python,华为笔试题总结,字符串格式化,字符串操作,广度优先搜索解决公司组织绩效互评问题,无向图" target="_blank">2024.9.6 Python,华为笔试题总结,字符串格式化,字符串操作,广度优先搜索解决公司组织绩效互评问题,无向图</a>
                        <span class="text-muted">RaidenQ</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8A%9B%E6%89%A3/1.htm">力扣</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">广度优先</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E5%90%91%E5%9B%BE/1.htm">无向图</a>
                        <div>1.字符串格式化name="Alice"age=30formatted_string="Name:{},Age:{}".format(name,age)print(formatted_string)或者name="Alice"age=30formatted_string=f"Name:{name},Age:{age}"print(formatted_string)2.网络健康检查第一行有两个整数m</div>
                    </li>
                    <li><a href="/article/1835463094311153664.htm"
                           title="戴容容 中原焦点团队.网络初级第33期,坚持分享第19天 2022年3月9日" target="_blank">戴容容 中原焦点团队.网络初级第33期,坚持分享第19天 2022年3月9日</a>
                        <span class="text-muted">TessDai</span>

                        <div>《每个人眼中的世界都是不同的》“一千个人眼里有一千个哈姆雷特”世界是多元的,每个人都有自己的道理,人人按照自己的理解去看待这个世界的人和物.我们如此,其他人也是如此.因此,任何事情,我们要放下自己以为的真理,去理解他人认为的真理,只有同频方能共振.孩子在慢慢长大的过程中慢慢学会独立,甚至对抗.尤其当孩子处于青春期的时候,他们开始有很多自己独立的想法,和一些特立独行的做法,家长常常会觉得不可思议,觉</div>
                    </li>
                                <li><a href="/article/42.htm"
                                       title="jQuery 键盘事件keydown ,keypress ,keyup介绍" target="_blank">jQuery 键盘事件keydown ,keypress ,keyup介绍</a>
                                    <span class="text-muted">107x</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/keydown/1.htm">keydown</a><a class="tag" taget="_blank" href="/search/keypress/1.htm">keypress</a><a class="tag" taget="_blank" href="/search/keyup/1.htm">keyup</a>
                                    <div>本文章总结了下些关于jQuery 键盘事件keydown ,keypress ,keyup介绍,有需要了解的朋友可参考。 
一、首先需要知道的是:  1、keydown()  keydown事件会在键盘按下时触发.  2、keyup()     代码如下 复制代码    
$('input').keyup(funciton(){      </div>
                                </li>
                                <li><a href="/article/169.htm"
                                       title="AngularJS中的Promise" target="_blank">AngularJS中的Promise</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Promise/1.htm">Promise</a>
                                    <div>一.Promise 
        Promise是一个接口,它用来处理的对象具有这样的特点:在未来某一时刻(主要是异步调用)会从服务端返回或者被填充属性。其核心是,promise是一个带有then()函数的对象。 
        为了展示它的优点,下面来看一个例子,其中需要获取用户当前的配置文件: 
var cu</div>
                                </li>
                                <li><a href="/article/296.htm"
                                       title="c++ 用数组实现栈类" target="_blank">c++ 用数组实现栈类</a>
                                    <span class="text-muted">CrazyMizzz</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a>
                                    <div>#include<iostream>
#include<cassert>
using namespace std;

template<class T, int SIZE = 50>
class Stack{
private:
	T list[SIZE];//数组存放栈的元素
	int top;//栈顶位置

public:
	Stack(</div>
                                </li>
                                <li><a href="/article/423.htm"
                                       title="java和c语言的雷同" target="_blank">java和c语言的雷同</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/%E9%80%92%E5%BD%92/1.htm">递归</a><a class="tag" taget="_blank" href="/search/scaner/1.htm">scaner</a>
                                    <div>软件启动时的初始化代码,加载用户信息2015年5月27号 
从头学java二 
1、语言的三种基本结构:顺序、选择、循环。废话不多说,需要指出一下几点: 
     a、return语句的功能除了作为函数返回值以外,还起到结束本函数的功能,return后的语句 
不会再继续执行。 
     b、for循环相比于whi</div>
                                </li>
                                <li><a href="/article/550.htm"
                                       title="LINUX环境并发服务器的三种实现模型" target="_blank">LINUX环境并发服务器的三种实现模型</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。 
1  循环服务器与并发服务器模型 
在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。 
目前最常用的服务器模型有: 
·循环服务器:服务器在同一时刻只能响应一个客户端的请求 
·并发服务器:服</div>
                                </li>
                                <li><a href="/article/677.htm"
                                       title="Oracle数据库查询指令" target="_blank">Oracle数据库查询指令</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/oracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oracle数据库</a>
                                    <div>20140920 
  
单表查询 
-- 查询************************************************************************************************************ 
-- 使用scott用户登录 
  
-- 查看emp表 
  
desc emp 
  
</div>
                                </li>
                                <li><a href="/article/804.htm"
                                       title="ext右下角浮动窗口" target="_blank">ext右下角浮动窗口</a>
                                    <span class="text-muted">知了ing</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a>
                                    <div>第一种 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/</div>
                                </li>
                                <li><a href="/article/931.htm"
                                       title="浅谈REDIS数据库的键值设计" target="_blank">浅谈REDIS数据库的键值设计</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>http://www.cnblogs.com/aidandan/ 
原文地址:http://www.hoterran.info/redis_kv_design 
 
丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解使用场景。 
 </div>
                                </li>
                                <li><a href="/article/1058.htm"
                                       title="maven编译可执行jar包" target="_blank">maven编译可执行jar包</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven 
 
 
<build>
  <plugins>
    <plugin>
      <artifactId>maven-asse</div>
                                </li>
                                <li><a href="/article/1185.htm"
                                       title="人力资源在现代企业中的作用" target="_blank">人力资源在现代企业中的作用</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/HR+%E4%BC%81%E4%B8%9A%E7%AE%A1%E7%90%86/1.htm">HR 企业管理</a>
                                    <div>//人力资源在在企业中的作用人力资源为什么会存在,人力资源究竟是干什么的 人力资源管理是对管理模式一次大的创新,人力资源兴起的原因有以下点: 工业时代的国际化竞争,现代市场的风险管控等等。所以人力资源 在现代经济竞争中的优势明显的存在,人力资源在集团类公司中存在着 明显的优势(鸿海集团),有一次笔者亲自去体验过红海集团的招聘,只 知道人力资源是管理企业招聘的 当时我被招聘上了,当时给我们培训 的人</div>
                                </li>
                                <li><a href="/article/1312.htm"
                                       title="Linux自启动设置详解" target="_blank">Linux自启动设置详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。 
阅读之前建议先看一下附图。 
本文中假设inittab中设置的init tree为: 
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc</div>
                                </li>
                                <li><a href="/article/1439.htm"
                                       title="Spring Aop Schema实现" target="_blank">Spring Aop Schema实现</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a>
                                    <div>本例使用的是Spring2.5 
1.Aop配置文件spring-aop.xml 
<?xml version="1.0" encoding="UTF-8"?>  
<beans  
    xmlns="http://www.springframework.org/schema/beans"  
    xmln</div>
                                </li>
                                <li><a href="/article/1566.htm"
                                       title="【Gson七】Gson预定义类型适配器" target="_blank">【Gson七】Gson预定义类型适配器</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/gson/1.htm">gson</a>
                                    <div>Gson提供了丰富的预定义类型适配器,在对象和JSON串之间进行序列化和反序列化时,指定对象和字符串之间的转换方式, 
  DateTypeAdapter 
  
public final class DateTypeAdapter extends TypeAdapter<Date> {
  public static final TypeAdapterFacto</div>
                                </li>
                                <li><a href="/article/1693.htm"
                                       title="【Spark八十八】Spark Streaming累加器操作(updateStateByKey)" target="_blank">【Spark八十八】Spark Streaming累加器操作(updateStateByKey)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/update/1.htm">update</a>
                                    <div>在实时计算的实际应用中,有时除了需要关心一个时间间隔内的数据,有时还可能会对整个实时计算的所有时间间隔内产生的相关数据进行统计。 
比如: 对Nginx的access.log实时监控请求404时,有时除了需要统计某个时间间隔内出现的次数,有时还需要统计一整天出现了多少次404,也就是说404监控横跨多个时间间隔。 
  
Spark Streaming的解决方案是累加器,工作原理是,定义</div>
                                </li>
                                <li><a href="/article/1820.htm"
                                       title="linux系统下通过shell脚本快速找到哪个进程在写文件" target="_blank">linux系统下通过shell脚本快速找到哪个进程在写文件</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>一个文件正在被进程写 我想查看这个进程 文件一直在增大 找不到谁在写 使用lsof也没找到 
这个问题挺有普遍性的,解决方法应该很多,这里我给大家提个比较直观的方法。 
linux下每个文件都会在某个块设备上存放,当然也都有相应的inode, 那么透过vfs.write我们就可以知道谁在不停的写入特定的设备上的inode。 
幸运的是systemtap的安装包里带了inodewatch.stp,位</div>
                                </li>
                                <li><a href="/article/1947.htm"
                                       title="java-两种方法求第一个最长的可重复子串" target="_blank">java-两种方法求第一个最长的可重复子串</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/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>
import java.util.Arrays;
import java.util.Collections;
import java.util.List;


public class MaxPrefix {

	
	public static void main(String[] args) {
		String str="abbdabcdabcx";
</div>
                                </li>
                                <li><a href="/article/2074.htm"
                                       title="Netty源码学习-ServerBootstrap启动及事件处理过程" target="_blank">Netty源码学习-ServerBootstrap启动及事件处理过程</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/netty/1.htm">netty</a>
                                    <div>Netty是采用了Reactor模式的多线程版本,建议先看下面这篇文章了解一下Reactor模式: 
 
http://bylijinnan.iteye.com/blog/1992325 
 
Netty的启动及事件处理的流程,基本上是按照上面这篇文章来走的 
文章里面提到的操作,每一步都能在Netty里面找到对应的代码 
其中Reactor里面的Acceptor就对应Netty的ServerBo</div>
                                </li>
                                <li><a href="/article/2201.htm"
                                       title="servelt filter listener 的生命周期" target="_blank">servelt filter listener 的生命周期</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/filter/1.htm">filter</a><a class="tag" taget="_blank" href="/search/listener/1.htm">listener</a><a class="tag" taget="_blank" href="/search/servelt/1.htm">servelt</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/1.htm">生命周期</a>
                                    <div>1. servlet    当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的 init(ServletConfig config)做一些初始化的工作,然后调用它的service方法处理请求。当第二次请求这个servlet资源时,servlet容器就不在创建实例,而是直接调用它的service方法处理请求,也就是说</div>
                                </li>
                                <li><a href="/article/2328.htm"
                                       title="jmpopups获取input元素值" target="_blank">jmpopups获取input元素值</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>jmpopups 获取弹出层form表单 
首先,我有一个div,里面包含了一个表单,默认是隐藏的,使用jmpopups时,会弹出这个隐藏的div,其实jmpopups是将我们的代码生成一份拷贝。 
当我直接获取这个form表单中的文本框时,使用方法:$('#form input[name=test1]').val();这样是获取不到的。 
我们必须到jmpopups生成的代码中去查找这个值,$(</div>
                                </li>
                                <li><a href="/article/2455.htm"
                                       title="vi查找替换命令详解" target="_blank">vi查找替换命令详解</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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E6%9B%BF%E6%8D%A2/1.htm">替换</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E6%89%BE/1.htm">查找</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a>
                                    <div>一、查找 
 
查找命令 
 
/pattern<Enter> :向下查找pattern匹配字符串 
?pattern<Enter>:向上查找pattern匹配字符串 
使用了查找命令之后,使用如下两个键快速查找: 
n:按照同一方向继续查找 
N:按照反方向查找 
 
字符串匹配 
 
pattern是需要匹配的字符串,例如: 
 
1:  /abc<En</div>
                                </li>
                                <li><a href="/article/2582.htm"
                                       title="对网站中的js,css文件进行打包" target="_blank">对网站中的js,css文件进行打包</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%89%93%E5%8C%85/1.htm">打包</a>
                                    <div>一,为什么要用smarty进行打包 
apache中也有给js,css这样的静态文件进行打包压缩的模块,但是本文所说的不是以这种方式进行的打包,而是和smarty结合的方式来把网站中的js,css文件进行打包。 
为什么要进行打包呢,主要目的是为了合理的管理自己的代码 。现在有好多网站,你查看一下网站的源码的话,你会发现网站的头部有大量的JS文件和CSS文件,网站的尾部也有可能有大量的J</div>
                                </li>
                                <li><a href="/article/2709.htm"
                                       title="php Yii: 出现undefined offset 或者 undefined index解决方案" target="_blank">php Yii: 出现undefined offset 或者 undefined index解决方案</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/undefined/1.htm">undefined</a>
                                    <div>在开发Yii 时,在程序中定义了如下方式: 
       if($this->menuoption[2] === 'test'),那么在运行程序时会报:undefined offset:2,这样的错误主要是由于php.ini 里的错误等级太高了,在windows下错误等级</div>
                                </li>
                                <li><a href="/article/2836.htm"
                                       title="linux 文件格式(1) sed工具" target="_blank">linux 文件格式(1) sed工具</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux+sed%E5%B7%A5%E5%85%B7/1.htm">linux sed工具</a><a class="tag" taget="_blank" href="/search/sed%E5%B7%A5%E5%85%B7/1.htm">sed工具</a><a class="tag" taget="_blank" href="/search/linux+sed%E8%AF%A6%E8%A7%A3/1.htm">linux sed详解</a>
                                    <div>转载请出自出处:
http://eksliang.iteye.com/blog/2106082  
简介 
      sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾</div>
                                </li>
                                <li><a href="/article/2963.htm"
                                       title="Android应用程序获取系统权限" target="_blank">Android应用程序获取系统权限</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>引用   
如何使Android应用程序获取系统权限 
 
 
        第一个方法简单点,不过需要在Android系统源码的环境下用make来编译: 
 
        1. 在应用程序的AndroidManifest.xml中的manifest节点</div>
                                </li>
                                <li><a href="/article/3090.htm"
                                       title="HoverTree开发日志之验证码" target="_blank">HoverTree开发日志之验证码</a>
                                    <span class="text-muted">hvt</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/webform/1.htm">webform</a>
                                    <div>HoverTree是一个ASP.NET的开源CMS,目前包含文章系统,图库和留言板功能。代码完全开放,文章内容页生成了静态的HTM页面,留言板提供留言审核功能,文章可以发布HTML源代码,图片上传同时生成高品质缩略图。推出之后得到许多网友的支持,再此表示感谢!留言板不断收到许多有益留言,但同时也有不少广告,因此决定在提交留言页面增加验证码功能。ASP.NET验证码在网上找,如果不是很多,就是特别多</div>
                                </li>
                                <li><a href="/article/3217.htm"
                                       title="JSON API:用 JSON 构建 API 的标准指南中文版" target="_blank">JSON API:用 JSON 构建 API 的标准指南中文版</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/json/1.htm">json</a>
                                    <div>译文地址:https://github.com/justjavac/json-api-zh_CN 
如果你和你的团队曾经争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 anti-bikeshedding 武器。 
通过遵循共同的约定,可以提高开发效率,利用更普遍的工具,可以是你更加专注于开发重点:你的程序。 
基于 JSON API 的客户端还能够充分利用缓存,</div>
                                </li>
                                <li><a href="/article/3344.htm"
                                       title="数据结构随记_2" target="_blank">数据结构随记_2</a>
                                    <span class="text-muted">lx.asymmetric</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                                    <div>第三章 栈与队列 
一.简答题 
1. 在一个循环队列中,队首指针指向队首元素的  前一个    位置。  
2.在具有n个单元的循环队列中,队满时共有  n-1  个元素。  
3. 向栈中压入元素的操作是先  移动栈顶指针&n</div>
                                </li>
                                <li><a href="/article/3471.htm"
                                       title="Linux下的监控工具dstat" target="_blank">Linux下的监控工具dstat</a>
                                    <span class="text-muted">网络接口</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>1) 工具说明dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是, </div>
                                </li>
                                <li><a href="/article/3598.htm"
                                       title="C 语言初级入门--二维数组和指针" target="_blank">C 语言初级入门--二维数组和指针</a>
                                    <span class="text-muted">1140566087</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/c%2Fc%2B%2B/1.htm">c/c++</a><a class="tag" taget="_blank" href="/search/%E6%8C%87%E9%92%88/1.htm">指针</a>
                                    <div>/* 
 二维数组的定义和二维数组元素的引用 
 
 二维数组的定义: 
 当数组中的每个元素带有两个下标时,称这样的数组为二维数组; 
 (逻辑上把数组看成一个具有行和列的表格或一个矩阵); 
 语法: 
 类型名 数组名[常量表达式1][常量表达式2] 
 
 二维数组的引用: 
 引用二维数组元素时必须带有两个下标,引用形式如下: 
 例如: 
 int a[3][4];  引用:</div>
                                </li>
                                <li><a href="/article/3725.htm"
                                       title="10点睛Spring4.1-Application Event" target="_blank">10点睛Spring4.1-Application Event</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/application/1.htm">application</a>
                                    <div>10.1 Application Event 
 
 Spring使用Application Event给bean之间的消息通讯提供了手段 
 应按照如下部分实现bean之间的消息通讯 
   
   继承ApplicationEvent类实现自己的事件 
   实现继承ApplicationListener接口实现监听事件 
   使用ApplicationContext发布消息 
    
 </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>