Http系列---HTTP/1.1全面分析

目录

一、HTTP协议简介

二、URL详解

四、HTTP1.1请求方法

五、HTTP1.1消息结构

六、HTTP1.1浏览器缓存

七、重要参考


一、HTTP协议简介

    网络协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。
    HTTP(HyperText Transfer Protocol ,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
    在我们如今的网络时代。我们每天浏览着万万千千的网页,图片,文字,这些都离不开Http,他是我们快速可靠访问世界各地的web服务器资源地基础。Http使用的是可靠地数据传输协议TCP协议。这样就是保证了我们所访问资源的万无一失,不会产生数据丢失或者损坏。这也可以使我们开发人员把更多的经历放在程序业务细节上得编写。避免了考虑一些数据传输途中的缺陷。

1.1.网络基础TCP/IP
    为了理解HTTP,我们有必要先了解一下TCP/IP协议族。
    通常使用的网络(包括互联网)是在TCP/IP协议族的基础上动作的。而HTTP属于它的内部的一个子集。

1.1.1.TCP/IP协议族
    计算机与网络设备要相互通信,需要一种规则来满足各种情况,这种规则称为协议(protocol)
    TCP/IP协议是互联网相关的各类协议族的总称。

1.1.2.TCP/IP的分层管理
    TCP/IP协议族里重要的一点就是分层,好处是解藕。TCP/IP协议族层次分别为以下4层:应用层、传输层、网络层和数据链路层。
应用层:
    应用层决定了向用户提供应用服务时通信的活动。
    TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol, 文件传输协议)和DNS(Domain Name System, 域名系统)服务就是其中两类。
    HTTP协议也处于该层。
传输层:
    传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
    在传输层有两个性质不同的协议:TCP(Transmission Control Protocol, 传输控制协议)和UDP(User Data Protocol, 用户数据报)
网络层(又名网络互连层):
    网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
    与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
    IP协议处于该层。
链路层(又名数据链路层,网络接口层):
    用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card, 网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

1.4.与HTTP关系密切的协议:IP、TCP和DNS
下面分别针对在TCP/IP协议族与HTTP密不可分的3个协议IP、TCP和DNS。

1.4.1 负责传输的IP协议
    IP(Internet Protocol)网际协议位于网络层,也就是网际协议,几乎所有使用网络的系统都会用到IP协议。
    IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address).
    IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。

使用ARP协议凭借MAC地址进行通信
    IP间的通信依赖MAC地址。在网络上,通常是多台计算机和网络设备中转才能连接到对方。而在中转时,会利用下一站中转设备的MAC地址来收索下一个中转目标。这地,会采用ARP协议(Address Resolution Protocol).ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

没有人能全面掌握互联网中的传输状况
    在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线,这种机制称为路由选择(routing),有点像快递公司的送货过程。

1.4.2.确保可靠性的TCP协议
    TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。也就是说,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
确保数据能到达目标
    为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略(three-way handshaking)。用TCP协议把数据包送出去后,TCP一定会向对方确认是否成功送达。握手过程中使用了TCP的标志----SYN(synchronize)和ACK(acknowledgement)。
    若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

    除了三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

持久连接节省通信量
    HTTP协议的初始版本中,每次进行一次通信都要断开一次TCP连接。但是由于传输信息量的增大(如一个页面里有多张图片请求),每次请求都造成的无谓TCP连接建立和断开,增加了通信量的开销。
    因此,为解决上述TCP连接的问题,提出了持久连接(或HTTP keep-alive)方法。特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。
    持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。 
    在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并未标准化。虽然有一部分服务器通过非标准的手段实现了持久连接,但服务器端不一定能够支持持久连接。毫无疑问,除了服务器端,客户端也需要支持持久连接。

管线化
    背景:持久连接技术使得管线化方式发送成为可能
    特点:管线化技术出现后使得不用等待响应即可直接发送下一个请求(从前发送请求后需要等待并接收响应),这样就可以做到同时并行发送多个请求,而不需要一个接一个等待响应。

 

1.5.负责域名解析的DNS服务
    DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。

各种协议与HTTP协议的关系

 

二、URL详解

   统一资源定位符(Uniform Resource Locator, URL),又叫做网页地址,是互联网上标准的资源的地址(Address),用于描述一个网络上的资源。统一资源定位符的开始,一般会标志着一个计算机网络所使用的网络协议。URI(Uniform Resource Identifier,统一资源标识符)用于标识某一资源 
   基本格式为:
   schema://host[:port]/path/[;url-params][?query-string][#anchor]

格式说明  
  scheme:指定底层使用的协议(例如:http, https, ftp, mailto,file,telnet)
  host:  HTTP服务器的IP地址或者域名
  port:  HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明。例如http://www.cnblogs.com:8080/
  path:  由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
  url-params:用于指定特殊参数的可选项
  query-string:可选,用于给动态网页(如使用CGI、ISAPI、PHP、JSP、ASP、ASP.NET等技术制作的网页)传递参数,多个参数用“&”符号隔开,每个参数的名和值用“=”符号隔开。  
  anchor(锚用):于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释

URL的一个例子(使用http协议)
  http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff

  schema: http
  host:   www.mywebsite.com
  port:   80,没有端口号时默认为80
  path:   /sj/test
  url-params:   id=8079
  query-string: name=sviergn&x=true
  anchor:       stuff

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受

1)200 OK:表示从客户端发来的请求在服务器端被正常处理  

2)204 No Content:请求处理成功,但无资源可返回。代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面不发生更新。  

3)206 Partial Content:对资源某一部分的请求。表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。  

3xx:重定向--要完成请求必须进行更进一步的操作

1)301 Moved Permanently   

永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。  

也就是说,如果已经把资源对应的URI保存为书签了,这时应该按Location 首部字段提示的 URI 重新保存。  

2)302 Found   

临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。  

和 301 Mov ed Permanently 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。换句话说,已移动的资源对应的 URI 将来还有可能发生改变。比如,用户把 URI 保存成书签,但不会像 301 状态码出现时那样去更新书签,而是仍旧保留返回 302 状态码的页面对应的 URI。  

3)303 See Other   

表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。  

303 状态码和 302 Found 状态码有着相同的功能,但 303 状态码明确表示客户端应当采用 GET 方法获取资源,这点与 302 状态码有区别。  

4)304 Not Modified   

资源已找到,但未复合条件请求。该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。  

5)307 Temporary Redirect   

临时重定向。该状态码与 302 Found 有着相同的含义。尽管 302 标准禁止 POST 变换成 GET,但实际使用时大家并不遵守。307 会遵照浏览器标准,不会从 POST 变成 GET。但是,对于处理响应时的行为,每种浏览器有可能出现不同的情况。  

4xx:客户端错误--请求有语法错误或请求无法实现

1)400 Bad Request   

该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。  

2)401 Unauthorized   

该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外,若之前已进行过一次请求,则表示用户认证失败。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口。  

3)403 Forbidden   

表示请求资源的访问被服务器拒绝。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因。  

4)404 Not Found   

表示服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。  

5xx:服务器端错误--服务器未能实现合法的请求


1)500 Internal Sever Error 表示服务器端执行请求时发生了错误。也有可能是 Web 应用存在的 bug或某些临时的故障。2)503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入 Retry After 首部字段再返回给客户端。

 常见状态代码、状态描述、说明:
  200 OK //客户端请求成功
  400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
  403 Forbidden //服务器收到请求,但是拒绝提供服务
  404 Not Found //请求资源不存在,eg:输入了错误的URL
  500 Internal Server Error //服务器发生不可预期的错误
  503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

三、HTTP1.1请求处理流程

    首先,http属于TCP/IP模型中的应用层协议,而两个应用程序(我们这里指的就是浏览器与服务器)之间要进行互相通信,首先得建立TCP连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求信息后,返回相应的应答信息,浏览器接收到来自服务器的应答信息后,对这些数据进行解释执行。
    在http 1.0的版本中,浏览器的每次请求(也就是对每一个页面的访问)都要求建立一次单独的TCP连接,在处理完每一次的请求后,就自动释放连接。如下图

    http 1.1则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

HTTP工作过程
  1).客户机(Web浏览器)与服务器建立TCP连接(TCP的三次握手)
  2).Web浏览器向Web服务器发送请求HTTP命令
  3).Wed服务器接受请求并返回HTTP响应
  4).[服务器关闭TCP连接(TCP的四次挥手)]
  5).客户端浏览器解析HTML内容
注意:如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽
 

四、HTTP1.1请求方法

HTTP是不保存状态的协议
    HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快的处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。
    但是无状态也会导致业务处理变得有时棘手:比如,用户登录到一家购物网站,即使他跳转到该站的其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能够掌握是谁送出的请求,需要保存用户的状态。
   因此,引入了Cookie技术用以实现保持状态功能。

使用Cookie的状态管理
1、引入原因:
    1)无状态优点:减少服务器cpu及内存资源的消耗
    2)缺点:HTTP是无状态协议,无法根据之前的状态进行本次的请求处理。登录认证的web页面不能管理状态,每次跳转需要在请求报文添加参数来管理信息
    3)如果让服务器管理全部客户端状态则会成为负担,保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入了 Cookie 技术。
2、Cookie特点:
    Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态,Cookie会根据从服务器端发送的响应报文内的一个叫Set-Cookie的首部字段,通知客户端保存Cookie,当下次客户端再次往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器会去检查是从哪个客户端发来的请求,然后对比服务器上的记录,得到之前的状态信息。

    在 HTTP 协议中,HTTP 请求可以使用多种请求方法,这些方法指明了要以何种方式来访问 Request-URI 所标识的资源。HTTP1.1 支持的请求方法如下
 (1)GET    
    GET 方法用于获取由 Request-URI 所标识的资源的信息 

    GET方法是默认的HTTP请求方法,例如当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是 GET 方法向服务器获取资源。  
    我们可以使用GET方法来提交表单数据,用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。例如:http://localhost/login.php?username=aa&password=1234
从上面的URL请求中,很容易就可以辩认出表单提交的内容(?之后的内容)。另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太,这是因为浏览器对url的长度有限制。    
   该方法的响应是可缓存的(如果此响应满足HTTP缓存的要求) 

 (2)POST
    请求服务器,让其接受请求中的实体,以作为被请求资源的一个新的从属物

    POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。
    该方法的响应是不可缓存的,除非响应里有合适的Cache-Control或者Expires头域

 (3)PUT
     PUT方法请求服务器去把请求里的实体存储在请求URI(Request-URI)标识下

     如果请求URI(Request-URI)指定的的资源已经在源服务器上存在,那么此请求里的实体应该被当作是源服务器关于此URI所指定资源实体的最新修改版本。如果请求URI(Request-URI)指定的资源不存在,并且此URI被用户代理定义为一个新资源,那么源服务器就应该根据请求里的实体创建一个此URI所标识下的资源。
    该方法的响应是不可缓存的。
 
(4)DELETE    
    DELETE方法请求源服务器删除请求URI指定的资源 

    该方法的响应是不能被缓存的。

(5)HEAD
    获取请求实体的头域信息而不需要传输实体主体  

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

 (6)OPTIONS
    用来查询针对请求URI指定的资源支持的方法。(响应Allow:GET,POST)

    该方法的响应是不能缓存的。

(7)TRACE
    用于激发一个远程的,应用层的请求消息回路

    TRACE方法让客户端测试到服务器的网络通路,回路的意思如发送一个请求返回一个响应,这就是一个请求响应回路
    该方法的响应是不能被缓存的。
 
(8)CONNECT 
   动态切换到隧道的代理 
   注意
:这是HTTP 1.1协议规范保留的一个方法。

GET和POST的区别
     1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
    2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
    3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
    4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

五、HTTP1.1消息结构

1、HTTP报文
    用于HTTP协议交互的信息被称为HTTP报文,请求端的称之为请求报文,响应端的称之为响应报文。
    组成:HTTP报文本身是由多行(用CR+LF作换行符)数据结构构成的字符串文本,大致可以分为报文首部和报文主体两块。 

1.1.请求报文和响应报文的首部内容由以下数据组成: 
    1)请求行:包含用于请求的方法,请求URI和HTTP版本
    2)状态行:包含表明响应结果的状态码,原因短语和HTTP版本
    3)首部字段:包含表示请求和响应的各种条件和属性的各类首部,一般分为4种首部,通用首部、请求首部、响应首部、实体首部。
    4)其他:可能是包含HTTP的RFC里未定义的首部(Cookie 等)

2、编码提升传输速率
    HTTP在传输数据时可以按照数据原貌直接传输,也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的CPU等资源。
2.1.1.报文主体和实体主体的差别
    1)报文:是HTTP通信汇总的基本单位,由8位组字节流组成,通过HTTP通信传输。 
    2)实体:作为请求或者响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。
    报文的主体用于传输请求或响应的实体主体。通常报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才与报文主体产生差异。
2.1.2.压缩传输的内容编码
     向待发送邮件内增加附件时,为了使邮件容量变小,我们会先用zip压缩文件之后再添加附件发送。
     HTTP协议中有一种被称为内容编码的功能也能进行类似的操作。内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。 
     常见的内容编码有以下几种:gzip(GUN zip),compress(UNIX 系统的标准压缩),deflate(zlib), identity(不进行编码)
2.1.3.分割发送的分块传输编码
    在HTTP通信过程中,请求的编码实体资源未全部传输完成之前,浏览器无法显示请求页面。但传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。这种把实体主体分块的功能称为分块传输编码。
    分块传输编码会将实体主体分成多个部分(块)。每一块都会用16进制来标记块的大小,而实体主体的最后一块会使用"0(CR+LF)"来标记。使用分块传输编码的实体主体由接受的客户端负责解码,恢复编码前的实体主体。
    HTTP/1.1中存在一种称为传输编码的机制,它可以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。 

3、发送多种数据的多部分对象集合
    发送邮件时,我们可以在邮件里写入文字并添加多份附件,这是因为采用MIME(Multipurpose Internet Mail Extensions, 多用途因特网邮件扩展)机制,它允许邮件处理文本、图片、视频等多个不同类型的数据。在MIME扩展中会使用一种称为多部分对象集合(Multipart)的方法,来容纳多份不同类型的数据。
    相应地,HTTP协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。
    多部分对象集合包含的对象如下:
      1).multipart/form-data:在Web表单文件上传时使用。
      2).multipart/byteranges:状态码206(Partial Content, 部分内容)响应报文包含了多个范围的内部时使用。
      在HTTP报文中使用多部分对象集合时,需要在首部字段里加上Content-type。
    多部分对象集合的每个部分类型中,都可以含有首部字段。另外,可以在某个部分中嵌套多部分对象集合。
    
4、获取部分内容的范围请求
    以前,用户不能使用现在这种高速的带宽访问互联网,如果下载过程中遇到网络中断的情况,那就必须重头开始。为了解决上述问题,需要一种可恢复的机制。所谓恢复是指能从之前下载中断处恢复下载。
    要实现这种功能需要指定下载的实体范围,这种指定范围发送的请求叫做范围请求。
    执行范围请求时,会用到首部字段Range来指定资源的byte范围。byte范围的指定形式如下:
    Range: bytes=5001-10000  # 5001~10000字节
    Range: bytes=5001-  # 从5001字节之后全部的
    Range: bytes=-3000, 5000-7000  # 从一开始到3000字节和5000~7000字节的多重范围
    针对范围请求,响应会返回状态码206(Partial Content, 部分内容)的响应报文。另外,对于多重范围的范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回响应报文

5、内容协商返回最适合的内容
    同一个web网站可能存在多份相同内容的页面,比如英文/中文,它们内容上虽相同,但使用的语言却不同。
    当浏览器的默认语言为英文/中文,访问相同URI的WEB页面则会显示对应的英文版/中文版的web页面,这样的机制称为内容协商(Content Negotiation)。
    内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。
    包含在请求报文中的某些首部字段(如下)就是判断的基准。
    Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Language
    内部协商技术有以下3种类型:
    1).服务器驱动协商(Server-driven Negotiation)
    由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容。
    2),客户端驱动协商(Agent-driven Negotiation)
    由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用JavaScript脚本在Web页面上自动进行上述选择。比如按OS的类型或浏览器类型,自行切换成PC版页面或手机版页面。
    3).透明协商(Transparent Negotiation)
    是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。

  5.1、HTTP请求格式

    当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:请求方法URI协议/版本、请求头(Request Header)、请求正文

(1)请求方法URI协议/版本
    请求的第一行是“方法URL议/版本”:GET /sample.jsp HTTP/1.1
    以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。   
    根据HTTP标准,HTTP请求可以使用多种请求方法,详情见“HTTP1.1请求方法”章节

 (3)请求正文   
    请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:    
    username=jinqiao&password=1234    
    在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

(2) 请求头(Request Header)    
    每个头域由一个域名,冒号和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

  HTTP最常见的请求头如下: 
  1.Transport 头域

    ①.Connection
    作用:表示是否需要持久连接。
    Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
    Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。

    ②.Host
    作用:发送请求时,该报头域是必需的,主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的
    例如: Host: 192.168.42.237:8181

  2.Client 头域
    ①.Accept
    作用:浏览器可以接受的媒体类型(MIME类型)。通配符 * 代表任意类型。例如  Accept: */*  代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)
    ②.Accept-Encoding
    作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
    例如: Accept-Encoding: gzip, deflate。Server能够向支持gzip/deflate的浏览器返回经gzip或者deflate编码的HTML页面。许多情形下这可以减少5到10倍的下载时间,也节省带宽。
    ③.Accept-Language
    作用: 浏览器申明自己接收的语言。
    例如: Accept-Language:zh-cn 。如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
    ④.User-Agent
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
    作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本等信息
    ⑤.Accept-Charset
    作用:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案)

  3.Cookie/Login 头域    
    ①.Cookie
    作用: 最重要的header, 将cookie的值发送给HTTP 服务器

  4.Entity头域
    ①.Content-Length
    作用:发送给HTTP服务器数据的长度,即请求消息正文的长度;
    例如: Content-Length: 38
    ②.Content-Type
    作用:指明发送给接收者的实体正文的媒体类型(MIME TYPE)

  5.Miscellaneous 头域
    ①.Referer
    作用: 提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
    例如: Referer:http://translate.google.cn/?hl=zh-cn&tab=wT

  6.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
    作用: 这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下
    Cache-Control:Public    可以被任何缓存所缓存,多用户间共享
    Cache-Control:Private   内容只缓存到私有缓存中,不能在用户间共享
    Cache-Control:no-cache   所有内容都不会被缓存
    Cache-Control: max-age=x:缓存时间 以秒为单位
 

  5.2、HTTP响应格式  

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

(1)状态行    
    状态行由协议版本、数字形式的状态代码,及相应的状态描述组成,各元素之间以空格分隔,结尾时回车换行符,格式如下:    
    HTTP-Version Status-Code Reason-Phrase CRLF
    
    HTTP-Version 表示服务器 HTTP 协议的版本,
    Status-Code 表示服务器发回的响应代码,
    Reason-Phrase 表示状态代码的文本描述,
    CRLF 表示回车换行。例如:HTTP/1.1 200 OK (CRLF)

(3)响应正文    
    响应正文就是服务器返回的资源的内容,响应头和正文之间也必须用空行分隔。

(2)响应头信息  
     HTTP最常见的响应头如下所示:

  1.Cache头域
    ①.Date
    作用:生成消息的具体时间和日期,即当前的GMT时间。
    例如: Date: Sun, 17 Mar 2013 08:12:54 GMT
    ②.Expires
    作用: Expires字段声明了一个网页或URL地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。
    例如: Expires: Thu, 19 Nov 1981 08:52:00 GMT(指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问。有时候仅仅设置Pragma: no-cache Cache-Control: no-cache 还是不保险,需要将过期时间设置成过去的时间就确保了对象不被缓存)

  2.Cookie/Login 头域
    ①.P3P
    作用: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题
    例如: P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR
    ②.Set-Cookie
    作用: 非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.
    例如: Set-Cookie: PORT-8181-JSESSIONID=x5vixfyb0r8r1payckxoieww3;Path=/

  3.Entity实体头域
    ①.Etag
    作用: 和If-None-Match 配合使用。响应中资源的校验值,在服务器上某个时段是唯一标识的。ETag是一个可以 与Web资源关联的记号(token),和Last-Modified功能差不多,也是一个标识符,一般和Last-Modified一起使用,加强服务器判断的准确度。
    例如: ETag: "03f2b33c0bfcc1:0"
    ②.Last-Modified
    作用: 用于指示资源的最后修改日期和时间。(实例请看上节的If-Modified-Since的实例)
    例如: Last-Modified: Wed, 21 Dec 2011 09:09:10 GMT
    ③.Content-Type
    作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集,
    例如:Content-Type:application/json;charset=UTF-8
    ④.Content-Length
    指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端。
    例如:  Content-Length:124
    ⑤.Content-Encoding
    作用:文档的编码(Encode)方法。一般是压缩方式。
    WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。利用gzip压缩文档能够显著地减少HTML文档的下载时间。
    例如:Content-Encoding:gzip
    ⑥.Content-Language
    作用: WEB服务器告诉浏览器自己响应对象的语言
    例如: Content-Language: en

  4.Miscellaneous 头域
    ①.Server
    作用:指明HTTP服务器的软件信息
    例如: Server: Jetty(9.2.8.v20150217)
    ②.X-Powered-By
    作用:表示网站是用什么技术开发的
    例如: X-Powered-By: PHP/5.2.5

  5.Transport头域
    ①.Connection   
    Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接   
    Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

  6.Location头域
    ①.Location
    作用: 用于重定向一个新的位置, 包含新的URL地址
 

六、HTTP1.1浏览器缓存

  浏览器缓存:包括页面html,image,js,css等资源的缓存
  6.1、缓存工作原理   
    1)第一次请求:浏览器通过http的header报头,附带Expires,Cache-Control,Last-Modified/Etag向服务器请求,此时服务器记录第一次请求的Last-Modified/Etag                     
    2)再次请求:当浏览器再次请求的时候,请求头附带Expires,Cache-Control,If-Modified-Since/Etag向服务器请求   
    3)服务器根据第一次记录的Last-Modified/Etag和再次请求的If-Modified-Since/Etag做对比,判断是否需要更新,服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回304响应

  6.2、缓存的优点:   
    1)服务器响应更快:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让服务器看上去响应更快。    
    2)减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

七、重要参考

HTTP1.1 基础: 请求和响应的消息交互细节  推荐

HTTP1.1总结

HTTP1.0、HTTP 1.1、HTTP 2.0主要区别

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此为第002部分 基本信息 原书名: OCA/OCP Oracle Database 11g All-in-One Exam Guide with CD-ROM: Exams 1Z0-051, 1Z0-052, 1Z0-053 原出版社: McGraw-Hill Osborne Media 作者: (美)John Watson    Roopesh Ramklass    Bob Bryla 译者: 宁洪 吴云洁 李梦汶 出版社:清华大学出版社 ISBN:9787302242505 上架时间:2010-12-24 出版日期:2011 年1月 开本:16开 页码:829 版次:1-1 内容简介   《ocp/oca认证考试指南全册:oracle database 11g(1z0—051,120-052,120-053)》是为oca和ocp考试准备的独家权威指南。本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。    本书全面覆盖了1z0-051、1z0-052和1z0-053考试的所有要点:    ●实例管理    ●oracle网络和存储结构    ●安全性    ●sql    ●oracle恢复管理器和oracle闪回技术    ●资源管理器    ●oracle自动存储管理    ●oracle调度程序    ●自动工作负荷知识库    ●性能调整 作译者   John Watson就职于BPLC Management Consultants,负责公司欧洲和非洲的教学和咨询工作。他拥有数据库和应用服务器管理方面的OCP资格,以及长达25年的IT从业经验,曾撰著过多本技术书籍并发表了大量的技术论文。   Roopesh Ramklass是一名熟悉多种环境的Oracle专家。他创办了自己的咨询公司,作为一名独立的顾问,他围绕大量的Oracle技术设计并开发了软件和培训课程,内容涉及数据库、应用服务器和商业智能产品,拥有12年的IT从业经验。   Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. 目录 封面 -24 封底 -23 扉页 -22 版权 -21 前言 -20 目录 -10 第Ⅰ部分 Oracle Database 11g管理 1 第1章 Oracle Database 11g体系结构概述 3 1.1 Oracle产品系列 4 1.1.1 Oracle服务器系列 4 1.1.2 Oracle开发工具 7 1.1.3 Oracle应用程序 9 1.2 预备知识 9 1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 日志缓冲区 17 1.4.3 共享池 18 1.4.4 大池 21 1.4.5 Java池 21 1.4.6 流池 22 1.5 实例进程结构 23 1.5.1 SMON 24 1.5.2 PMON 24 1.5.3 DBWn 24 1.5.4 LGWR 26 1.5.5 CKPT 27 1.5.6 MMON 27 1.5.7 MMNL 28 1.5.8 MMAN 28 1.5.9 ARCn 28 1.5.10 RECO 29 1.5.11 其他一些后台进程 29 1.6 数据库存储结构 32 1.6.1 物理数据库结构 32 1.6.2 逻辑数据库结构 35 1.6.3 数据字典 37 1.7 本章知识点回顾 39 1.8 自测题 39 1.9 自测题答案 41 第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 Oracle Enterprise Manager 52 2.1.5 其他管理工具 53 2.2 规划Oracle数据库的安装 54 2.2.1 选择操作系统 54 2.2.2 硬件和操作系统资源 55 2.2.3 Optimal Flexible Architecture 57 2.2.4 环境变量 57 2.3 使用OUI安装Oracle软件 59 2.4 使用DBCA创建数据库 62 2.4.1 实例、数据库和数据字典 62 2.4.2 使用DBCA创建一个数据库 63 2.4.3 DBCA 创建的脚本和其他文件 67 2.4.4 DBCA的其他功能 73 2.5 本章知识点回顾 74 2.6 自测题 75 2.7 自测题答案 78 第3章 实例管理 81 3.1 设置数据库初始化参数 82 3.1.1 静态参数和动态参数以及初始化参数文件 82 3.1.2 基本参数 84 3.2 描述启动和关闭数据库时的多个阶段 88 3.2.1 Database Control的启动和连接 88 3.2.2 启动数据库侦听器 90 3.2.3 启动SQL*Plus 91 3.2.4 启动和关闭数据库 92 3.3 使用警报日志和跟踪文件 100 3.4 使用数据字典和动态性能视图 101 3.4.1 数据字典视图 101 3.4.2 动态性能视图 102 3.5 本章知识点回顾 104 3.6 自测题 105 3.7 自测题答案 107 第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116 4.1.6 解析名称的技术 117 4.1.7 侦听器控制实用程序 119 4.1.8 配置服务别名 121 4.1.9 文件名和TNSADMIN环境变量 123 4.1.10 数据库链接 125 4.2 使用Oracle共享服务器体系结构 128 4.2.1 专用服务器体系结构的局限性 129 4.2.2 共享服务器体系结构 130 4.2.3 配置共享服务器 132 4.2.4 使用共享服务器的场合 132 4.3 本章知识点回顾 134 4.4 自测题 135 4.5 自测题答案 137 第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 154 5.2.4 OMF 154 5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户账户属性 166 6.1.2 身份验证方法 170 6.1.3 创建账户 173 6.2 授予和撤销权限 176 6.2.1 系统权限 176 6.2.2 对象权限 178 6.3 创建和管理角色 182 6.3.1 创建角色并授予角色权限 182 6.3.2 预先定义的角色 183 6.3.3 启用角色 184 6.4 创建和管理配置文件 187 6.4.1 管理口令 187 6.4.2 资源限制 188 6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201 6.7 本章知识点回顾 204 6.8 自测题 205 6.9 自测题答案 208 第Ⅱ部分 SQL 211 第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 220 7.3.2 使用子查询创建表 221 7.3.3 在创建之后更改表定义 222 7.3.4 删除和截断表 222 7.4 创建和使用临时表 225 7.5 索引 227 7.5.1 为什么说索引是必需的 227 7.5.2 索引类型 228 7.5.3 创建和使用索引 232 7.5.4 修改和删除索引 233 7.6 约束 234 7.6.1 约束类型 234 7.6.2 定义约束 236 7.6.3 约束状态 237 7.6.4 检查约束 238 7.7 视图 239 7.7.1 使用视图的原因 240 7.7.2 简单视图和复杂视图 242 7.7.3 创建、更改和删除视图 243 7.8 同义词 244 7.9 序列 246 7.9.1 创建序列 247 7.9.2 使用序列 248 7.10 本章知识点回顾 252 7.11 自测题 253 7.12 自测题答案 258 第8章 DML与并发性 261 8.1 数据操作语言(DML)语句 262 8.1.1 INSERT 262 8.1.2 UPDATE 265 8.1.3 DELETE 268 8.1.4 TRUNCATE 270 8.1.5 MERGE 271 8.1.6 DML语句失败 272 8.2 控制事务 273 8.2.1 数据库事务 273 8.2.2 执行SQL语句 274 8.2.3 事务控制:COMMIT、ROLLBACK、SAVEPOINT和SELECT FOR UPDATE 277 8.3 识别和管理PL/SQL对象 281 8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与撤销数据 292 8.7 管理撤销 293 8.7.1 与撤销相关的错误条件 294 8.7.2 用于撤销管理与保留保证的参数 294 8.7.3 调整与监视撤销表空间 295 8.7.4 创建和管理撤销表空间 297 8.8 本章知识点回顾 297 8.9 自测题 299 8.10 自测题答案 301 第9章 使用SQL检索、限制和排序数据 305 9.1 列出SQL SELECT语句的功能 306 9.1.1 SQL SELECT语句的介绍 306 9.1.2 DESCRIBE表命令 306 9.1.3 SELECT语句的功能 307 9.1.4 数据规范化 308 9.2 创建演示模式 311 9.2.1 HR和WEBSTORE模式 311 9.2.2 演示模式的创建 314 9.3 执行基本的SELECT语句 317 9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4 优先规则 334 9.5 排序查询检索的行 335 9.6 &符号替换 337 9.6.1 替换变量 337 9.6.2 定义和验证 339 9.7 本章知识点回顾 342 9.8 自测题 343 9.9 自测题答案 345 第10章 单行函数与转换函数 347 10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11章 分组函数 379 11.1 分组函数 380 11.1.1 分组函数的定义 380 11.1.2 使用分组函数 381 11.2 使用GROUP BY子句分组数据 384 11.2.1 创建数据组 384 11.2.2 GROUP BY子句 385 11.2.3 按多列分组 387 11.2.4 嵌套的分组函数 388 11.3 使用HAVING子句包含或者排除分组行 389 11.3.1 限制分组结果 389 11.3.2 HAVING子句 390 11.4 本章知识点回顾 392 11.5 自测题 392 11.6 自测题答案 395 第12章 SQL联接 397 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 使用SQL:1999语法联接表 402 12.1.3 限定模糊的列名 402 12.1.4 NATURAL JOIN子句 403 12.1.5 自然JOIN USING子句 406 12.1.6 自然JOIN ON子句 407 12.1.7 N路联接和其他联接条件 408 12.1.8 非同等联接 410 12.2 使用自联接将表联接到自身 411 12.3 使用外联接查看不满足联接条件的数据 413 12.3.1 内联接和外联接 413 12.3.2 左外联接 413 12.3.3 右外联接 415 12.3.4 全外联接 416 12.4 生成两个或者更多表的笛卡尔乘积 417 12.5 本章知识点回顾 419 12.6 自测题 420 12.7 自测题答案 422 第13章 子查询和集合运算符 425 13.1 定义子查询 426 13.2 描述子查询能够解决的问题的类型 427 13.2.1 将子查询的结果集用于比较 427 13.2.2 生成对其执行SELECT语句的表 428 13.2.3 生成投影值 428 13.2.4 生成传递给DML语句的行 428 13.3 列举子查询的类型 430 13.3.1 单行和多行子查询 430 13.3.2 关联子查询 431 13.4 写单行和多行子查询 433 13.5 描述集合运算符 434 13.5.1 集合和维恩图 434 13.5.2 集合运算符的一般原则 434 13.6 使用集合运算符将多个查询合并为一个查询 437 13.6.1 UNION ALL运算符 437 13.6.2 UNION运算符 437 13.6.3 INTERSECT运算符 438 13.6.4 MINUS运算符 439 13.6.5 更复杂的示例 439 13.7 控制返回行的顺序 440 13.8 本章知识点回顾 440 13.9 自测题 441 13.10 自测题答案 445 第Ⅲ部分 高级数据库管理 447 第14章 数据库备份和恢复配置 449 14.1 备份和恢复问题 450 14.2 失败类型 451 14.2.1 语句失败 451 14.2.2 用户进程失败 453 14.2.3 网络故障 453 14.2.4 用户错误 453 14.2.5 介质失败 455 14.2.6 实例失败 456 14.3 实例恢复 456 14.3.1 实例恢复机制 457 14.3.2 数据库不可能受到损坏 457 14.3.3 调整实例恢复 458 14.3.4 MTTR顾问程序和检查点自动调整 459 14.3.5 检查点 460 14.4 为数据库的可恢复性作准备 461 14.4.1 保护控制文件 461 14.4.2 保护联机重做日志文件 463 14.4.3 归档日志模式和归档器进程 466 14.4.4 保护归档重做日志文件 468 14.5 闪回恢复区 469 14.5.1 恢复文件 469 14.5.2 配置闪回恢复区 469 14.5.3 闪回恢复区的空间使用 470 14.6 本章知识点回顾 472 14.7 自测题 473 14.8 自测题答案 475 第15章 使用RMAN进行备份 477 15.1 备份的概念和术语 478 15.2 使用RMAN BACKUP命令创建备份 479 15.2.1 服务器管理的一致备份 479 15.2.2 服务器管理的打开状态的备份 481 15.2.3 增量备份 482 15.2.4 映像副本 486 15.2.5 保护备份 487 15.2.6 并行化备份操作 487 15.2.7 加密备份 489 15.3 配置RMAN默认值 490 15.4 管理和监视RMAN备份 491 15.4.1 LIST、REPORT和DELETE命令 491 15.4.2 归档备份 493 15.4.3 动态性能视图 493 15.4.4 交叉检查备份 494 15.5 本章知识点回顾 495 15.6 自测题 497 15.7 自测题答案 499 第16章 使用RMAN还原和恢复 501 16.1 数据恢复顾问 502 16.1.1 Health Monitor和ADR 502 16.1.2 DRA的功能和局限性 503 16.1.3 使用数据恢复顾问 504 16.2 数据库还原和恢复 507 16.3 在数据文件丢失时,使用RMAN执行完整恢复 508 16.3.1 非归档日志模式下的数据文件恢复 508 16.3.2 归档日志模式下的非关键文件恢复 509 16.3.3 在丢失关键数据文件时恢复 511 16.4 不完整恢复 512 16.5 控制文件的自动备份和还原 514 16.6 使用映像副本恢复 518 16.7 块恢复 519 16.7.1 受损块的检测 520 16.7.2 块介质恢复 520 16.7.3 BLOCK RECOVER命令 520 16.8 本章知识点回顾 521 16.9 自测题 522 16.10 自测题答案 526 第17章 高级RMAN功能 529 17.1 恢复目录 530 17.1.1 恢复目录的必要性 530 17.1.2 创建并连接到目录 531 17.1.3 虚拟专用目录 533 17.1.4 保护和重建目录 533 17.2 存储脚本 536 17.3 使用RMAN来创建数据库 537 17.4 表空间时间点恢复(TSPITR) 540 17.4.1 TSPITR方法 540 17.4.2 自动执行TSPITR 541 17.5 RMAN性能和监视 543 17.5.1 监视RMAN会话和作业 544 17.5.2 调整RMAN 547 17.5.3 为异步I/O配置RMAN 550 17.6 本章知识点回顾 551 17.7 自测题 554 17.8 自测题答案 556 第18章 用户管理的备份、还原和恢复 559 18.1 备份和恢复 560 18.2 用户管理的数据库备份 561 18.2.1 以非归档日志模式备份 561 18.2.2 以归档日志模式备份 562 18.3 备份口令和参数文件 564 18.4 不影响数据文件的介质失败 564 18.4.1 在丢失多路复用的控制文件后进行恢复 565 18.4.2 在丢失多路复用的联机重做日志文件后进行恢复 566 18.4.3 丢失临时文件后进行恢复 569 18.5 丢失数据文件后进行恢复 569 18.5.1 以非归档日志模式恢复数据文件 569 18.5.2 以归档日志模式恢复非关键的数据文件 570 18.5.3 以归档日志模式恢复关键的数据文件 571 18.6 执行用户管理的不完整恢复 571 18.7 本章知识点回顾 574 18.8 自测题 575 18.9 自测题答案 576 第19章 闪回技术 579 19.1 各种不同的闪回技术 580 19.1.1 闪回数据库 580 19.1.2 闪回查询、事务和表 580 19.1.3 闪回删除 581 19.1.4 Flashback Data Archive 581 19.1.5 使用闪回技术的时机 582 19.2 闪回数据库 582 19.2.1 闪回数据库体系结构 583 19.2.2 配置闪回数据库 584 19.2.3 监视闪回数据库 585 19.2.4 使用闪回数据库 586 19.2.5 限制生成的闪回数据量 590 19.3 Flashback Drop 591 19.3.1 实现闪回删除 592 19.3.2 使用闪回删除 593 19.3.3 管理回收站 596 19.3.4 对回收站的空间进行回收 597 19.4 闪回查询 598 19.4.1 基本的闪回查询 599 19.4.2 闪回表查询 600 19.4.3 闪回版本查询 602 19.4.4 闪回事务查询 603 19.4.5 闪回和撤销数据 608 19.5 闪回数据归档 609 19.6 本章知识点回顾 611 19.7 自测题 612 19.8 自测题答案 615 第20章 自动存储管理 619 20.1 逻辑卷管理器的作用 620 20.1.1 RAID级别 620 20.1.2 卷大小 621 20.1.3 选择RAID级别 621 20.1.4 ASM与第三方LVM的比较 621 20.2 ASM体系结构 622 20.2.1 群集同步服务 622 20.2.2 ASM磁盘和磁盘组 622 20.2.3 ASM实例 624 20.2.4 RDBMS实例 625 20.2.5 ASM文件 625 20.3 创建原始设备 626 20.4 创建、启动和停止ASM实例 627 20.5 创建ASM磁盘组 630 20.6 创建和使用ASM文件 632 20.7 ASM和RMAN 633 20.8 ASMCMD实用程序 634 20.9 本章知识点回顾 636 20.10 自测题 637 20.11 自测题答案 639 第21章 资源管理器 641 21.1 资源管理器的必要性 642 21.2 资源管理器体系结构 643 21.2.1 使用者组 643 21.2.2 资源管理器计划 644 21.2.3 资源管理器配置工具 646 21.3 管理用户和使用者组 647 21.4 资源管理器计划 648 21.4.1 CPU方法 648 21.4.2 使用比例CPU方法 653 21.4.3 活动会话池方法 654 21.4.4 限制并行程度 655 21.4.5 通过执行时间控制作业 656 21.4.6 依据空闲时间终止会话 657 21.4.7 限制撤销数据的产生 658 21.5 使用者组自动切换 659 21.6 使用者组自适应映射 660 21.7 本章知识点回顾 663 21.8 自测题 664 21.9 自测题答案 666 第22章 调度程序 669 22.1 调度程序体系结构 670 22.2 调度程序对象 671 22.2.1 作业 671 22.2.2 程序 672 22.2.3 时间表 673 22.2.4 作业类 674 22.2.5 窗口 674 22.2.6 权限 675 22.3 创建和调度作业 676 22.3.1 自包含作业 676 22.3.2 使用程序和时间表 677 22.3.3 事件驱动的作业 679 22.3.4 作业链 681 22.3.5 轻量级作业 682 22.4 使用类、窗口与Resource Manager 684 22.4.1 使用作业类 684 22.4.2 使用窗口 685 22.5 本章知识点回顾 687 22.6 自测题 688 22.7 自测题答案 690 第23章 移动和重组数据 691 23.1 SQL*Loader 692 23.2 外部表 694 23.2.1 目录 694 23.2.2 使用外部表 695 23.3 Data Pump 698 23.3.1 Data Pump的体系结构 698 23.3.2 目录和文件位置 699 23.3.3 在直接路径或外部表路径之间作出抉择 700 23.4 使用Data Pump导出和导入 700 23.4.1 功能 700 23.4.2 将Data Pump与命令行实用程序一起使用 701 23.4.3 将Data Pump与Database Control一起使用 702 23.4.4 表空间导出和导入 703 23.5 可恢复空间分配 707 23.6 段重组 710 23.6.1 行链接和行迁移 710 23.6.2 段收缩 712 23.7 本章知识点回顾 715 23.8 自测题 717 23.9 自测题答案 718 第24章 AWR与警报系统 721 24.1 自动工作负荷知识库 722 24.1.1 收集AWR统计信息 722 24.1.2 管理AWR 723 24.1.3 统计信息、指标和基准 724 24.1.4 DBMS_WORKLOAD_REPOSI TORY包 724 24.2 数据库顾问框架 726 24.2.1 自动数据库诊断监视器 726 24.2.2 顾问 728 24.2.3 自动维护作业 729 24.3 使用服务器生成的警报系统 733 24.3.1 警报条件监视和通知 733 24.3.2 设置阈值 734 24.3.3 通知系统 735 24.4 本章知识点回顾 738 24.5 自测题 739 24.6 自测题答案 740 第25章 性能调整 741 25.1 内存管理 742 25.1.1 PGA内存管理 742 25.1.2 SGA内存管理 744 25.1.3 自动内存管理 745 25.2 内存顾问 746 25.3 SQL调整顾问 749 25.3.1 SQL调整顾问的功能 749 25.3.2 通过Enterprise Manager 使用SQL Tuning Advisor 749 25.3.3 SQL Tuning Advisor API:DBMS_SQLTUNE包 754 25.4 SQL访问顾问 755 25.4.1 通过Database Control使用SQL Access Advisor 755 25.4.2 通过DBMS_ADVISOR 使用SQL Access Advisor 759 25.5 识别和修复无效对象和不可用对象 761 25.5.1 无效对象 761 25.5.2 不可用索引 763 25.6 Database Replay 766 25.6.1 捕获工作负荷 766 25.6.2 预处理工作负荷 767 25.6.3 启动重放 767 25.6.4 分析和报告 768 25.7 本章知识点回顾 771 25.8 自测题 773 25.9 自测题答案 776 第26章 全球化 779 26.1 全球化要求和功能 780 26.1.1 字符集 780 26.1.2 语言支持 781 26.1.3 地区支持 783 26.1.4 其他NLS设置 784 26.2 使用全球化支持功能 785 26.2.1 选择字符集 786 26.2.2 改变字符集 787 26.2.3 数据库中的全球化 787 26.2.4 实例级别的全球化 788 26.2.5 客户端环境设置 788 26.2.6 会话级别的全球化设置 790 26.2.7 语句级别的全球化设置 791 26.3 语言和时区 792 26.3.1 语言排序与选择 792 26.3.2 Locale Builder 794 26.3.3 使用时区 794 26.4 本章知识点回顾 796 26.5 自测题 797 26.6 自测题答案 799 第27章 智能基础结构 801 27.1 Enterprise Manager Support Workbench 802 27.1.1 自动诊断知识库 802 27.1.2 问题和事件 803 27.1.3 ADRCI 803 27.1.4 Support Workbench 804 27.2 补丁程序 806 27.2.1 补丁程序的类型 806 27.2.2 与MetaLink和Patch Advisor集成 806 27.2.3 应用补丁程序 807 27.3 本章知识点回顾 812 27.4 自测题 813 27.5 自测题答案 814 附录A 本书提供的OCA/OCP考试资料 817 术语表 819
欢迎大家! 智能配电网-PPT全文共28页,当前为第1页。 智能配电网 智能配电网-PPT全文共28页,当前为第2页。 PART 01 PART 02 智能配电网关键技术 概 述 智能配电网-PPT全文共28页,当前为第3页。 01 PART ONE 智能配电网的概述 智能配电网-PPT全文共28页,当前为第4页。 1.1 国内外智能电网的研究现状 重点放在了配电侧以及用电侧,有意加快了可再生能源的发展,另外比较注重在商业运营模式方面的创新以及对用户用电服务质量的提升。 根据自身国情,主要围绕大规模开发太阳能等新能源,确保电网系统稳定,构建智能电网。 为了促进太阳能、生物质能等一大批可再生能源 发展和满足负荷需要,主要把可再生能源和各种分布式电源的 接入以及二氧化碳排放等一系列环境问题作为关注的重点。。 全面建设以特高压电网为骨干网架,各级电网协调发展的坚强电网为基础, 以信息化、自动化、互动化为特征的自主创新、国际领先的坚强智能电网。 配电网 美国 欧洲 日本 中国 目前世界上各个国家针对本国的能源以及电网现状制定了不尽相同的智能 电网发展目标,重点基本都在配电侧。 智能配电网-PPT全文共28页,当前为第5页。 1.2 智能配电网的概述 智能配电网是以传统配电网为基础逐步发展而来的,是在传统的物理实体电网的基础之上,整合了众多的高新技术(如高级传感测量技术、自动化技术、 通信技术、信息技术以及计算机技术等)而形成的一种现代化的高度智能的配电网络。 与传统配电网相比较,智能配电网在供电可靠性以及供电质量方面有了很大的提高。智能配电网的运行方式更加灵活,对能源的利用效率有所提高,对社会经济效益的发展也有所促进。从大的方面来讲,智能配电网相比传统配电网更加先进和完善。 智能配电网-PPT全文共28页,当前为第6页。 智能电网结构图 1.3 我国智能配电网的发展进程 早在2009年,国家电网公司就率先提出了以建设统一坚强智能电网为目标的发展战略。 在2011年的时候,国家电网公司的坚强智能电网建设已经顺利进入了全面建设阶段。其中,主要目标是加快特高压电网以及城乡配电网的建设。 目前,一些省市都相继完成了"十二五"电网智能化规划并开始投入建设,同时也对发电、输电、变电、配电、用电以及调度和通讯信息等环节的智能化建设提出了相应的发展目标。 智能配电网-PPT全文共28页,当前为第7页。 1.3 我国配电网的发展历程 配电自 动化 智能 配电 高级配电自动化 完全依靠人工操控发展到简单的自动化 配电网可靠性和供电质量。。。 智能配电网-PPT全文共28页,当前为第8页。 1.4 智能配电网的主要特征 集成 涉及的内容 智能配电网系统的运行将会与电力市场之问进行紧密的衔接 兼容更多的分布式电源,实现与负荷侧的无障碍交互,使电网与自然环境和谐共处。 实现对配电资产等环节实现管理和优化,提高资产利用率,降低成本,减少损耗,实现经济运行 对配电网的运行状态实时在线监测和评估,预防故障;故障后,快速的对故障隔离、自我恢复 不断对流程进行优化和对信息进行整合,把对企业、生产、调度自动化和市场的管理等各种业务进行高度的集成 自愈 互动 兼容 优化 智能配电网-PPT全文共28页,当前为第9页。 1.5 智能配电网的优势 (1)非常容易因为自然灾害或者其他外部因素的影响而发生故障。重点在故障发生时对配电设备或电网资产的保护 (2)只在扰动或故障发生后才能有所反应,多靠经验判断,速度较慢。物理架构没有后备支持,信息通信方面缺乏安全机制。 (3)基本没有分布式发电装置以及储能装置。 (4)配电装置、控制中心和用户三者之间缺乏协调,局部与全局、集中与分布之间无法协调。电网中数据不能共享,各个系统之间基本是独立的。 (5)供电质量不高,尤其是广大农村地区,辐射网线路长,电压质量不高。 (6)电网缺乏统一的标准,造成了很多资源的浪费和重复的工作。- 1)能够进行实时的、连续的、在线的运行评价以及预测分析,可以预防故障、诊断故障并及时恢复故障,降低扰动以及停电事故对用户的影响。 (2)除了比较关注对配电设备和电网资产的保护外,更加地重视对用户供电质量的提高。 (3)加强基于数字化和信息化平台的防火墙建设,能够保证电力流、信息流和业务流的传输安全。保证物理架构安全以及信息网络的安全, (4)强调了各个子系统之间的协调问题,通过建立信息平台使各种数据和信息更加地公开透明,电网中 各种装置、配电设备、控制中心、用户可随时调用实现协调,使配电网和电力市场实现了无缝对接。 (5)够支持可再生的分布式能源大量的接入,具有很大的环保效益,同时有效的弥 补了无源配电系统的缺点 传统配电网 智能配电网 智能配电网-PPT全文共28页,当前为第10页。 1.5 智能配电网的优势 (
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此为第001部分 基本信息 原书名: OCA/OCP Oracle Database 11g All-in-One Exam Guide with CD-ROM: Exams 1Z0-051, 1Z0-052, 1Z0-053 原出版社: McGraw-Hill Osborne Media 作者: (美)John Watson    Roopesh Ramklass    Bob Bryla 译者: 宁洪 吴云洁 李梦汶 出版社:清华大学出版社 ISBN:9787302242505 上架时间:2010-12-24 出版日期:2011 年1月 开本:16开 页码:829 版次:1-1 内容简介   《ocp/oca认证考试指南全册:oracle database 11g(1z0—051,120-052,120-053)》是为oca和ocp考试准备的独家权威指南。本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。    本书全面覆盖了1z0-051、1z0-052和1z0-053考试的所有要点:    ●实例管理    ●oracle网络和存储结构    ●安全性    ●sql    ●oracle恢复管理器和oracle闪回技术    ●资源管理器    ●oracle自动存储管理    ●oracle调度程序    ●自动工作负荷知识库    ●性能调整 作译者   John Watson就职于BPLC Management Consultants,负责公司欧洲和非洲的教学和咨询工作。他拥有数据库和应用服务器管理方面的OCP资格,以及长达25年的IT从业经验,曾撰著过多本技术书籍并发表了大量的技术论文。   Roopesh Ramklass是一名熟悉多种环境的Oracle专家。他创办了自己的咨询公司,作为一名独立的顾问,他围绕大量的Oracle技术设计并开发了软件和培训课程,内容涉及数据库、应用服务器和商业智能产品,拥有12年的IT从业经验。   Bob Bryla是Oracle 9i和10g的认证专家,他在数据库设计、数据库应用程序开发、培训和Oracle数据库管理等方面拥有20多年的工作经验,他也足Dodgeville的Land'End公司的首席Internet数据库设计师和Oracle DBA. 目录 封面 -24 封底 -23 扉页 -22 版权 -21 前言 -20 目录 -10 第Ⅰ部分 Oracle Database 11g管理 1 第1章 Oracle Database 11g体系结构概述 3 1.1 Oracle产品系列 4 1.1.1 Oracle服务器系列 4 1.1.2 Oracle开发工具 7 1.1.3 Oracle应用程序 9 1.2 预备知识 9 1.2.1 Oracle概念 10 1.2.2 SQL概念 10 1.2.3 操作系统概念 11 1.3 单实例体系结构 11 1.3.1 单实例数据库体系结构 11 1.3.2 分布式系统体系结构 13 1.4 实例内存结构 15 1.4.1 数据库缓冲区缓存 16 1.4.2 日志缓冲区 17 1.4.3 共享池 18 1.4.4 大池 21 1.4.5 Java池 21 1.4.6 流池 22 1.5 实例进程结构 23 1.5.1 SMON 24 1.5.2 PMON 24 1.5.3 DBWn 24 1.5.4 LGWR 26 1.5.5 CKPT 27 1.5.6 MMON 27 1.5.7 MMNL 28 1.5.8 MMAN 28 1.5.9 ARCn 28 1.5.10 RECO 29 1.5.11 其他一些后台进程 29 1.6 数据库存储结构 32 1.6.1 物理数据库结构 32 1.6.2 逻辑数据库结构 35 1.6.3 数据字典 37 1.7 本章知识点回顾 39 1.8 自测题 39 1.9 自测题答案 41 第2章 安装和创建数据库 43 2.1 了解Oracle数据库管理工具 44 2.1.1 Oracle Universal Installer 44 2.1.2 创建数据库和升级数据库的工具 48 2.1.3 发送即席SQL的工具:SQL*Plus和SQL Developer 48 2.1.4 Oracle Enterprise Manager 52 2.1.5 其他管理工具 53 2.2 规划Oracle数据库的安装 54 2.2.1 选择操作系统 54 2.2.2 硬件和操作系统资源 55 2.2.3 Optimal Flexible Architecture 57 2.2.4 环境变量 57 2.3 使用OUI安装Oracle软件 59 2.4 使用DBCA创建数据库 62 2.4.1 实例、数据库和数据字典 62 2.4.2 使用DBCA创建一个数据库 63 2.4.3 DBCA 创建的脚本和其他文件 67 2.4.4 DBCA的其他功能 73 2.5 本章知识点回顾 74 2.6 自测题 75 2.7 自测题答案 78 第3章 实例管理 81 3.1 设置数据库初始化参数 82 3.1.1 静态参数和动态参数以及初始化参数文件 82 3.1.2 基本参数 84 3.2 描述启动和关闭数据库时的多个阶段 88 3.2.1 Database Control的启动和连接 88 3.2.2 启动数据库侦听器 90 3.2.3 启动SQL*Plus 91 3.2.4 启动和关闭数据库 92 3.3 使用警报日志和跟踪文件 100 3.4 使用数据字典和动态性能视图 101 3.4.1 数据字典视图 101 3.4.2 动态性能视图 102 3.5 本章知识点回顾 104 3.6 自测题 105 3.7 自测题答案 107 第4章 配置Oracle网络环境 109 4.1 配置和管理Oracle网络 110 4.1.1 Oracle Net和客户端-服务器范例 110 4.1.2 Oracle Net与通信协议简介 111 4.1.3 建立会话 112 4.1.4 创建侦听器 114 4.1.5 数据库注册 116 4.1.6 解析名称的技术 117 4.1.7 侦听器控制实用程序 119 4.1.8 配置服务别名 121 4.1.9 文件名和TNSADMIN环境变量 123 4.1.10 数据库链接 125 4.2 使用Oracle共享服务器体系结构 128 4.2.1 专用服务器体系结构的局限性 129 4.2.2 共享服务器体系结构 130 4.2.3 配置共享服务器 132 4.2.4 使用共享服务器的场合 132 4.3 本章知识点回顾 134 4.4 自测题 135 4.5 自测题答案 137 第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 154 5.2.4 OMF 154 5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户账户属性 166 6.1.2 身份验证方法 170 6.1.3 创建账户 173 6.2 授予和撤销权限 176 6.2.1 系统权限 176 6.2.2 对象权限 178 6.3 创建和管理角色 182 6.3.1 创建角色并授予角色权限 182 6.3.2 预先定义的角色 183 6.3.3 启用角色 184 6.4 创建和管理配置文件 187 6.4.1 管理口令 187 6.4.2 资源限制 188 6.4.3 配置文件的创建和分配 189 6.5 数据库安全和最小权限原则 192 6.5.1 PUBLIC权限 192 6.5.2 对安全性至关重要的实例参数 193 6.6 使用标准数据库审核 197 6.6.1 审核SYSDBA活动 198 6.6.2 数据库审核 198 6.6.3 使用触发器执行基于值的审核 200 6.6.4 细粒度审核(FGA) 201 6.7 本章知识点回顾 204 6.8 自测题 205 6.9 自测题答案 208 第Ⅱ部分 SQL 211 第7章 DDL和模式对象 213 7.1 分类主要的数据库对象 214 7.1.1 对象类型 214 7.1.2 命名模式对象 215 7.1.3 对象名称空间 216 7.2 列举列可用的数据类型 217 7.3 创建简单的表 219 7.3.1 使用列规范创建表 220 7.3.2 使用子查询创建表 221 7.3.3 在创建之后更改表定义 222 7.3.4 删除和截断表 222 7.4 创建和使用临时表 225 7.5 索引 227 7.5.1 为什么说索引是必需的 227 7.5.2 索引类型 228 7.5.3 创建和使用索引 232 7.5.4 修改和删除索引 233 7.6 约束 234 7.6.1 约束类型 234 7.6.2 定义约束 236 7.6.3 约束状态 237 7.6.4 检查约束 238 7.7 视图 239 7.7.1 使用视图的原因 240 7.7.2 简单视图和复杂视图 242 7.7.3 创建、更改和删除视图 243 7.8 同义词 244 7.9 序列 246 7.9.1 创建序列 247 7.9.2 使用序列 248 7.10 本章知识点回顾 252 7.11 自测题 253 7.12 自测题答案 258 第8章 DML与并发性 261 8.1 数据操作语言(DML)语句 262 8.1.1 INSERT 262 8.1.2 UPDATE 265 8.1.3 DELETE 268 8.1.4 TRUNCATE 270 8.1.5 MERGE 271 8.1.6 DML语句失败 272 8.2 控制事务 273 8.2.1 数据库事务 273 8.2.2 执行SQL语句 274 8.2.3 事务控制:COMMIT、ROLLBACK、SAVEPOINT和SELECT FOR UPDATE 277 8.3 识别和管理PL/SQL对象 281 8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与撤销数据 292 8.7 管理撤销 293 8.7.1 与撤销相关的错误条件 294 8.7.2 用于撤销管理与保留保证的参数 294 8.7.3 调整与监视撤销表空间 295 8.7.4 创建和管理撤销表空间 297 8.8 本章知识点回顾 297 8.9 自测题 299 8.10 自测题答案 301 第9章 使用SQL检索、限制和排序数据 305 9.1 列出SQL SELECT语句的功能 306 9.1.1 SQL SELECT语句的介绍 306 9.1.2 DESCRIBE表命令 306 9.1.3 SELECT语句的功能 307 9.1.4 数据规范化 308 9.2 创建演示模式 311 9.2.1 HR和WEBSTORE模式 311 9.2.2 演示模式的创建 314 9.3 执行基本的SELECT语句 317 9.3.1 基本SELECT语句的语法 317 9.3.2 必须遵守的规则 318 9.3.3 SQL表达式和运算符 321 9.3.4 NULL 324 9.4 限制查询检索的行 325 9.4.1 WHERE子句 325 9.4.2 比较运算符 328 9.4.3 布尔运算符 332 9.4.4 优先规则 334 9.5 排序查询检索的行 335 9.6 &符号替换 337 9.6.1 替换变量 337 9.6.2 定义和验证 339 9.7 本章知识点回顾 342 9.8 自测题 343 9.9 自测题答案 345 第10章 单行函数与转换函数 347 10.1 描述和使用SQL中的字符、数字和日期函数 348 10.1.1 定义函数 348 10.1.2 函数类型 348 10.1.3 使用大小写转换函数 349 10.1.4 使用字符操作函数 350 10.1.5 使用数字函数 353 10.1.6 使用日期 355 10.2 描述SQL中可用的各种类型的转换函数 359 10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11章 分组函数 379 11.1 分组函数 380 11.1.1 分组函数的定义 380 11.1.2 使用分组函数 381 11.2 使用GROUP BY子句分组数据 384 11.2.1 创建数据组 384 11.2.2 GROUP BY子句 385 11.2.3 按多列分组 387 11.2.4 嵌套的分组函数 388 11.3 使用HAVING子句包含或者排除分组行 389 11.3.1 限制分组结果 389 11.3.2 HAVING子句 390 11.4 本章知识点回顾 392 11.5 自测题 392 11.6 自测题答案 395 第12章 SQL联接 397 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 使用SQL:1999语法联接表 402 12.1.3 限定模糊的列名 402 12.1.4 NATURAL JOIN子句 403 12.1.5 自然JOIN USING子句 406 12.1.6 自然JOIN ON子句 407 12.1.7 N路联接和其他联接条件 408 12.1.8 非同等联接 410 12.2 使用自联接将表联接到自身 411 12.3 使用外联接查看不满足联接条件的数据 413 12.3.1 内联接和外联接 413 12.3.2 左外联接 413 12.3.3 右外联接 415 12.3.4 全外联接 416 12.4 生成两个或者更多表的笛卡尔乘积 417 12.5 本章知识点回顾 419 12.6 自测题 420 12.7 自测题答案 422 第13章 子查询和集合运算符 425 13.1 定义子查询 426 13.2 描述子查询能够解决的问题的类型 427 13.2.1 将子查询的结果集用于比较 427 13.2.2 生成对其执行SELECT语句的表 428 13.2.3 生成投影值 428 13.2.4 生成传递给DML语句的行 428 13.3 列举子查询的类型 430 13.3.1 单行和多行子查询 430 13.3.2 关联子查询 431 13.4 写单行和多行子查询 433 13.5 描述集合运算符 434 13.5.1 集合和维恩图 434 13.5.2 集合运算符的一般原则 434 13.6 使用集合运算符将多个查询合并为一个查询 437 13.6.1 UNION ALL运算符 437 13.6.2 UNION运算符 437 13.6.3 INTERSECT运算符 438 13.6.4 MINUS运算符 439 13.6.5 更复杂的示例 439 13.7 控制返回行的顺序 440 13.8 本章知识点回顾 440 13.9 自测题 441 13.10 自测题答案 445 第Ⅲ部分 高级数据库管理 447 第14章 数据库备份和恢复配置 449 14.1 备份和恢复问题 450 14.2 失败类型 451 14.2.1 语句失败 451 14.2.2 用户进程失败 453 14.2.3 网络故障 453 14.2.4 用户错误 453 14.2.5 介质失败 455 14.2.6 实例失败 456 14.3 实例恢复 456 14.3.1 实例恢复机制 457 14.3.2 数据库不可能受到损坏 457 14.3.3 调整实例恢复 458 14.3.4 MTTR顾问程序和检查点自动调整 459 14.3.5 检查点 460 14.4 为数据库的可恢复性作准备 461 14.4.1 保护控制文件 461 14.4.2 保护联机重做日志文件 463 14.4.3 归档日志模式和归档器进程 466 14.4.4 保护归档重做日志文件 468 14.5 闪回恢复区 469 14.5.1 恢复文件 469 14.5.2 配置闪回恢复区 469 14.5.3 闪回恢复区的空间使用 470 14.6 本章知识点回顾 472 14.7 自测题 473 14.8 自测题答案 475 第15章 使用RMAN进行备份 477 15.1 备份的概念和术语 478 15.2 使用RMAN BACKUP命令创建备份 479 15.2.1 服务器管理的一致备份 479 15.2.2 服务器管理的打开状态的备份 481 15.2.3 增量备份 482 15.2.4 映像副本 486 15.2.5 保护备份 487 15.2.6 并行化备份操作 487 15.2.7 加密备份 489 15.3 配置RMAN默认值 490 15.4 管理和监视RMAN备份 491 15.4.1 LIST、REPORT和DELETE命令 491 15.4.2 归档备份 493 15.4.3 动态性能视图 493 15.4.4 交叉检查备份 494 15.5 本章知识点回顾 495 15.6 自测题 497 15.7 自测题答案 499 第16章 使用RMAN还原和恢复 501 16.1 数据恢复顾问 502 16.1.1 Health Monitor和ADR 502 16.1.2 DRA的功能和局限性 503 16.1.3 使用数据恢复顾问 504 16.2 数据库还原和恢复 507 16.3 在数据文件丢失时,使用RMAN执行完整恢复 508 16.3.1 非归档日志模式下的数据文件恢复 508 16.3.2 归档日志模式下的非关键文件恢复 509 16.3.3 在丢失关键数据文件时恢复 511 16.4 不完整恢复 512 16.5 控制文件的自动备份和还原 514 16.6 使用映像副本恢复 518 16.7 块恢复 519 16.7.1 受损块的检测 520 16.7.2 块介质恢复 520 16.7.3 BLOCK RECOVER命令 520 16.8 本章知识点回顾 521 16.9 自测题 522 16.10 自测题答案 526 第17章 高级RMAN功能 529 17.1 恢复目录 530 17.1.1 恢复目录的必要性 530 17.1.2 创建并连接到目录 531 17.1.3 虚拟专用目录 533 17.1.4 保护和重建目录 533 17.2 存储脚本 536 17.3 使用RMAN来创建数据库 537 17.4 表空间时间点恢复(TSPITR) 540 17.4.1 TSPITR方法 540 17.4.2 自动执行TSPITR 541 17.5 RMAN性能和监视 543 17.5.1 监视RMAN会话和作业 544 17.5.2 调整RMAN 547 17.5.3 为异步I/O配置RMAN 550 17.6 本章知识点回顾 551 17.7 自测题 554 17.8 自测题答案 556 第18章 用户管理的备份、还原和恢复 559 18.1 备份和恢复 560 18.2 用户管理的数据库备份 561 18.2.1 以非归档日志模式备份 561 18.2.2 以归档日志模式备份 562 18.3 备份口令和参数文件 564 18.4 不影响数据文件的介质失败 564 18.4.1 在丢失多路复用的控制文件后进行恢复 565 18.4.2 在丢失多路复用的联机重做日志文件后进行恢复 566 18.4.3 丢失临时文件后进行恢复 569 18.5 丢失数据文件后进行恢复 569 18.5.1 以非归档日志模式恢复数据文件 569 18.5.2 以归档日志模式恢复非关键的数据文件 570 18.5.3 以归档日志模式恢复关键的数据文件 571 18.6 执行用户管理的不完整恢复 571 18.7 本章知识点回顾 574 18.8 自测题 575 18.9 自测题答案 576 第19章 闪回技术 579 19.1 各种不同的闪回技术 580 19.1.1 闪回数据库 580 19.1.2 闪回查询、事务和表 580 19.1.3 闪回删除 581 19.1.4 Flashback Data Archive 581 19.1.5 使用闪回技术的时机 582 19.2 闪回数据库 582 19.2.1 闪回数据库体系结构 583 19.2.2 配置闪回数据库 584 19.2.3 监视闪回数据库 585 19.2.4 使用闪回数据库 586 19.2.5 限制生成的闪回数据量 590 19.3 Flashback Drop 591 19.3.1 实现闪回删除 592 19.3.2 使用闪回删除 593 19.3.3 管理回收站 596 19.3.4 对回收站的空间进行回收 597 19.4 闪回查询 598 19.4.1 基本的闪回查询 599 19.4.2 闪回表查询 600 19.4.3 闪回版本查询 602 19.4.4 闪回事务查询 603 19.4.5 闪回和撤销数据 608 19.5 闪回数据归档 609 19.6 本章知识点回顾 611 19.7 自测题 612 19.8 自测题答案 615 第20章 自动存储管理 619 20.1 逻辑卷管理器的作用 620 20.1.1 RAID级别 620 20.1.2 卷大小 621 20.1.3 选择RAID级别 621 20.1.4 ASM与第三方LVM的比较 621 20.2 ASM体系结构 622 20.2.1 群集同步服务 622 20.2.2 ASM磁盘和磁盘组 622 20.2.3 ASM实例 624 20.2.4 RDBMS实例 625 20.2.5 ASM文件 625 20.3 创建原始设备 626 20.4 创建、启动和停止ASM实例 627 20.5 创建ASM磁盘组 630 20.6 创建和使用ASM文件 632 20.7 ASM和RMAN 633 20.8 ASMCMD实用程序 634 20.9 本章知识点回顾 636 20.10 自测题 637 20.11 自测题答案 639 第21章 资源管理器 641 21.1 资源管理器的必要性 642 21.2 资源管理器体系结构 643 21.2.1 使用者组 643 21.2.2 资源管理器计划 644 21.2.3 资源管理器配置工具 646 21.3 管理用户和使用者组 647 21.4 资源管理器计划 648 21.4.1 CPU方法 648 21.4.2 使用比例CPU方法 653 21.4.3 活动会话池方法 654 21.4.4 限制并行程度 655 21.4.5 通过执行时间控制作业 656 21.4.6 依据空闲时间终止会话 657 21.4.7 限制撤销数据的产生 658 21.5 使用者组自动切换 659 21.6 使用者组自适应映射 660 21.7 本章知识点回顾 663 21.8 自测题 664 21.9 自测题答案 666 第22章 调度程序 669 22.1 调度程序体系结构 670 22.2 调度程序对象 671 22.2.1 作业 671 22.2.2 程序 672 22.2.3 时间表 673 22.2.4 作业类 674 22.2.5 窗口 674 22.2.6 权限 675 22.3 创建和调度作业 676 22.3.1 自包含作业 676 22.3.2 使用程序和时间表 677 22.3.3 事件驱动的作业 679 22.3.4 作业链 681 22.3.5 轻量级作业 682 22.4 使用类、窗口与Resource Manager 684 22.4.1 使用作业类 684 22.4.2 使用窗口 685 22.5 本章知识点回顾 687 22.6 自测题 688 22.7 自测题答案 690 第23章 移动和重组数据 691 23.1 SQL*Loader 692 23.2 外部表 694 23.2.1 目录 694 23.2.2 使用外部表 695 23.3 Data Pump 698 23.3.1 Data Pump的体系结构 698 23.3.2 目录和文件位置 699 23.3.3 在直接路径或外部表路径之间作出抉择 700 23.4 使用Data Pump导出和导入 700 23.4.1 功能 700 23.4.2 将Data Pump与命令行实用程序一起使用 701 23.4.3 将Data Pump与Database Control一起使用 702 23.4.4 表空间导出和导入 703 23.5 可恢复空间分配 707 23.6 段重组 710 23.6.1 行链接和行迁移 710 23.6.2 段收缩 712 23.7 本章知识点回顾 715 23.8 自测题 717 23.9 自测题答案 718 第24章 AWR与警报系统 721 24.1 自动工作负荷知识库 722 24.1.1 收集AWR统计信息 722 24.1.2 管理AWR 723 24.1.3 统计信息、指标和基准 724 24.1.4 DBMS_WORKLOAD_REPOSI TORY包 724 24.2 数据库顾问框架 726 24.2.1 自动数据库诊断监视器 726 24.2.2 顾问 728 24.2.3 自动维护作业 729 24.3 使用服务器生成的警报系统 733 24.3.1 警报条件监视和通知 733 24.3.2 设置阈值 734 24.3.3 通知系统 735 24.4 本章知识点回顾 738 24.5 自测题 739 24.6 自测题答案 740 第25章 性能调整 741 25.1 内存管理 742 25.1.1 PGA内存管理 742 25.1.2 SGA内存管理 744 25.1.3 自动内存管理 745 25.2 内存顾问 746 25.3 SQL调整顾问 749 25.3.1 SQL调整顾问的功能 749 25.3.2 通过Enterprise Manager 使用SQL Tuning Advisor 749 25.3.3 SQL Tuning Advisor API:DBMS_SQLTUNE包 754 25.4 SQL访问顾问 755 25.4.1 通过Database Control使用SQL Access Advisor 755 25.4.2 通过DBMS_ADVISOR 使用SQL Access Advisor 759 25.5 识别和修复无效对象和不可用对象 761 25.5.1 无效对象 761 25.5.2 不可用索引 763 25.6 Database Replay 766 25.6.1 捕获工作负荷 766 25.6.2 预处理工作负荷 767 25.6.3 启动重放 767 25.6.4 分析和报告 768 25.7 本章知识点回顾 771 25.8 自测题 773 25.9 自测题答案 776 第26章 全球化 779 26.1 全球化要求和功能 780 26.1.1 字符集 780 26.1.2 语言支持 781 26.1.3 地区支持 783 26.1.4 其他NLS设置 784 26.2 使用全球化支持功能 785 26.2.1 选择字符集 786 26.2.2 改变字符集 787 26.2.3 数据库中的全球化 787 26.2.4 实例级别的全球化 788 26.2.5 客户端环境设置 788 26.2.6 会话级别的全球化设置 790 26.2.7 语句级别的全球化设置 791 26.3 语言和时区 792 26.3.1 语言排序与选择 792 26.3.2 Locale Builder 794 26.3.3 使用时区 794 26.4 本章知识点回顾 796 26.5 自测题 797 26.6 自测题答案 799 第27章 智能基础结构 801 27.1 Enterprise Manager Support Workbench 802 27.1.1 自动诊断知识库 802 27.1.2 问题和事件 803 27.1.3 ADRCI 803 27.1.4 Support Workbench 804 27.2 补丁程序 806 27.2.1 补丁程序的类型 806 27.2.2 与MetaLink和Patch Advisor集成 806 27.2.3 应用补丁程序 807 27.3 本章知识点回顾 812 27.4 自测题 813 27.5 自测题答案 814 附录A 本书提供的OCA/OCP考试资料 817 术语表 819
《单片机应用技术》课程标准 1、课程概述 1.1课程性质 本课程是机电一体化专业的专业核心课程,通过本课程的学习,使学生能够掌握以 MCS- 51系列为主的单片机的基本结构、指令系统、存储系统及输入输出接口电路、中断系统 、系统扩展等方面知识;了解单片机组成和工作原理,具备一定的汇编语言程序设计能 力。以及观察和分析问题、团队协助、沟通表达等能力和综合素质。 1.2课程定位 本课程是机电一体化专业的专业核心课程,是一门理论与实践紧密结合,实践性很强 的学科基础课程,通过把课堂教学、实验教学、单片机综合实验设计和毕业设计、电子 竞赛有机地结合一体,提高单片机技术理论与应用实践应用能力。 1.2.1本课程在专业人才培养过程中的地位及作用: 本课程以模块化教学为基点,学习情境按照难易程度依次递进的思路设计的。通过 该系列项目的学习,反复训练,学生不但能够掌握51系列单片机的汇编语言的编写能力 ,设计小型产品的设计能力,还能够全面培养其职业规范、职业道德和纪律等综合素质 ,通过学习的过程掌握工作岗位需要的各项技能和相关专业知识。 1.2.2与其他课程的关系 (1)与前导课程的联系:学生在学习本课程前,具备基本模拟电路、数字电路的分析 与设计基础,对计算机应用系统应具有一定的了解,通过本课程的学习,要求熟练掌握 典型单片机系统的设计方法,能利用C51单片机组成实际系统,具备硬件和软件编程能力 。 (2)与后续课程的联系:使学生通过本课程的学习,使学生掌握51系列单片机的汇编 语言的编写能力和设计小型产品的设计能力,为后续独立分析和设计单片机测控系统的 打下基础。 2、课程目标: 通过本学习领域的学习,培养学生以下目标: 2.1知识目标: (1)熟悉常用的单元电路及其功能。 (2)掌握keilC51软件和proteus软件的相关知识,熟知常用命令的功能。 (3)掌握设计流程。 (4)掌握典型应用程序的编制方法。 2.2技能目标: (1)培养学生识读单片机相关的硬件电路图以及汇编语言。 (2)能设计单片机简单音调发生器器、交通灯控制系统、存储器扩展等电路。 (3)能设计端口扩展等外围电路。 (4)能设计需求进行单片机选型。 (5)能进行开发板选型。 (6)能利用开发板设计电子产品。 (7)能根据需求设计程序流程图。 (8)能识读单片机相关的程序代码。 (9)能运用keilC51和Proteus集成开发环境,编写、编译、调试源程序并能设计绘 制硬件电路图。 (10)能运用仿真器对单片机系统进行仿真设计。 (11)能进行经典算法的编程,并学会优化算法的相关技巧。 2.3情感与态度目标: (1)培养学生乐与思考、敢于实践、做事认真的工作作风 (2)培养学生好学、严谨、谦虚的学习态度 (3)培养学生健康向上、不畏难、不怕苦的工作态度 (4)培养学生良好的职业道德,职业纪律 (5)培养学生遵循严格的安全、质量、标准等规范的意识 (6)培养学生自我检查、自我学习、自我促进、自我发展的能力 (7)培养学生善于沟通交流和团队协助的能力 (8)培养学生培养学生敢于创新、敢于发现的能力 (9)培养学生项目管理应用的能力 3、课程内容与要求、参考学时、教学方法建议 本课程包含6个学习项目,每个项目包含的主要教学知识点,分配课时,以及学生应 具备的能力如下: "编 "能力训练"相关支撑知识 "实现的能力目标 "训练方式手段及步 " "号 "项目名称" " "骤 " " " "认识keil和proteus软件 "理解P1口亮灯工作原理;"4MAT教学设计 " " " "P1口亮灯的硬件电路原理;"认识单片机的调用指令、"多媒体演示 " "1 "信号灯控"P1口八灯变幻闪烁所需的指"返回指令、跳转指令、循"师生互动、提问引 " " "制系统的"令; "环指令,会用传送指令、"导 " " "设计 "利用传送指令、调用指令、"调用指令、返回指令、跳"动手实验、巡回指 " " " "返回指令、跳转指令等编写"转指令及循环指令编程实"导、结果说明与分 " " " "实际的单片机程序; "现亮灯的变幻闪烁; "析 " " " "软件仿真调试及程序固化。"掌握软件仿真调试及程序" " " " " "固化的方法。 " " " " " "掌握keil和proteus的联 " " " " " "调 " " " " " "掌握硬件电路检测的方法"4MAT教学设计 " " "音调发生"1、认识单片机的开发系统 "掌握软件的调试方法 "多媒体演示 " "2 "器系统的"2、认识子程序及调用 "掌握软件的联调 "师生互动、提问引 " " "设计 " " "导 " " " " " "动手实验、巡回指 " " " " " "导、结果说明与分 " " " " " "析 " " " "1、了解抢答器的
11 1 1 II I I 22 2 2 单片机-简易数字电压表设计全文共17页,当前为第1页。单片机-简易数字电压表设计全文共17页,当前为第1页。 单片机-简易数字电压表设计全文共17页,当前为第1页。 单片机-简易数字电压表设计全文共17页,当前为第1页。 湖南科技大学 课 程 设 计 课程设计名称: 简易数字电压表设计 学 生 姓 名: 李 系 部: 机电工程系 专业及班级: 机械设计制造及自动化二班 学 号: 指导教师: 2017 年 12 月 20 日 单片机-简易数字电压表设计全文共17页,当前为第2页。单片机-简易数字电压表设计全文共17页,当前为第2页。 单片机-简易数字电压表设计全文共17页,当前为第2页。 单片机-简易数字电压表设计全文共17页,当前为第2页。 目录 前言 1 一、 课程设计的目的和要求 2 1.1、 课程设计的目的 2 1.2、 课程设计的基本要求 2 二、 总体设计 2 2.1、基本工作原理 2 2.2、硬件总体设计 3 2.3、软件总体设计 3 三、 硬件设计 3 3.1模数转换芯片ADC0809 3 3.2 数据处理及控制芯片AT89S51 5 3.3AT89S51与ADC0809的连接 8 3.4 4位一体7段LED 数码管 8 3.5 整机电路及工作原理 8 四、 软件设计 9 4.1 主程序设计 9 4.2 各子程序设计 10 五、 结束语 10 六、 参考文献 11 单片机-简易数字电压表设计全文共17页,当前为第3页。单片机-简易数字电压表设计全文共17页,当前为第3页。前言 单片机-简易数字电压表设计全文共17页,当前为第3页。 单片机-简易数字电压表设计全文共17页,当前为第3页。 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。而51系列单片机是各单片机中最为典型和最有代表性的一种,通过本次课程设计进一步对单片机学习和应用,从而更熟悉单片机的原理和相关设计并提高了开发软、硬件的能力。 单片机-简易数字电压表设计全文共17页,当前为第4页。单片机-简易数字电压表设计全文共17页,当前为第4页。课程设计的目的和要求 单片机-简易数字电压表设计全文共17页,当前为第4页。 单片机-简易数字电压表设计全文共17页,当前为第4页。 课程设计的目的 《单片机与接口技术》课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的小型单片机系统,并在实践的基本技能方面进行一次系统的训练。能够较全面地巩固和应用"单片机"课程中所学的基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。培养独立思考、独立收集资料、独立设计规定功能的单片机系统的能力;培养分析、总结及撰写技术报告的能力。 课程设计的基本要求 1.简易数字电压表可以测量0-5V内的8路输入电压值,并在4位LED数码管上轮流显示或路选择显示。 2.其测量最小分辨率为0.02V。(用欢动电阻模拟电压传感器输出的模拟量,用ADC0809进行模数转换)。 总体设计 系统总体设计: a、控制模块选用AT89C51单片机。 b、放大模块选择 OP07芯片实现。 c、A/D转换模块选择ADC0809芯片,从分利用其在仪表中的应用特性。 d、显示模块选择与控制模块相配套的LCD液晶显示。 2.1、基本工作原理 设计采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理框图如图1所示。该电路通过ADC0809芯片采样输入口IN0输入的0~5 V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S51芯片的P0口。AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经三极管驱动,再传送给数码管。同时它还通过其三位I/O口P3.0、P3.1、P3.2产生位选信号,控制数码管的亮灭。另外,AT89S51还控制着ADC0809的工作。其ALE 管脚为ADC0809提供了1MHz 工作的时钟脉冲;P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START);P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。 单片机-简易数字电压表设计全文共17页,当前为
192.168.85.1 - - [26/Jun/2022:06:07:07 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 14 192.168.85.1 - - [26/Jun/2022:06:08:06 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 15 192.168.85.1 - - [26/Jun/2022:06:08:16 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 1227 192.168.85.1 - - [26/Jun/2022:06:10:15 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 79 192.168.85.1 - - [26/Jun/2022:06:13:25 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 404 752 192.168.85.1 - - [26/Jun/2022:06:16:42 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:16:57 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:18:55 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:02 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:09 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:19:34 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 400 192.168.85.1 - - [26/Jun/2022:06:20:37 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 5 192.168.85.1 - - [26/Jun/2022:06:20:42 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:46 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:51 -0400] "GET /struts2-showcase/hhh.jsp HTTP/1.1" 403 642
最新发布
07-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeelTouch Labs

一杯咖啡的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值