发表于: 2021-04-25 20:44:25

4 1239


一,今天完成的事情

任务二深度思考21-40

21.常用的主流数据库有哪些,Mysql有几种安装方式?   

1IBM DB2OracleSQL ServermySQLAccess数据库。RedisHbaseMongodDBMemcached

2,安装MySQL的方式常见的有三种:

rpm包形式

通用二进制形式

源码编译

 

22.有哪些常用的云服务器公司,Linux服务器和Windows服务器的差别是什么,Linux有哪些主流的版本,不同版本之间的差别在哪里?   

1,亚马逊 AWS,微软Azure,谷歌云平台,阿里云,华为云。

21Linux免费,Windows收费。Linux作为资源管理和操作系统来说,是开源、免费的,而正版的Windows的操作系统是收费的。

2)同等压力下,相同的配置的Linux服务器的性能比Windows服务器好一些,Linux服务器占用的资源会少一些。

3Linux是多用户多进程系统,意味着Linux能够一次性处理大量正在运行的进程,比Windows能够处理的数量要多得多。

4Linux的开源软件开发方式有助于暴露错误,集众人智慧解决问题,各种补丁更新得很快,这是Windows服务器不具备的优势。

31Redhat家族主要包括:

**-Redhat Enterprise Linux**红帽企业版(RHEL),收费版本

**-CentOS**RHEL的社区克隆版本,免费。

**-Fedora Core**由原来的Redhat桌面版本发展而来,由社区维护,约6个月发布一个版本,新功能新特性较多,稳定性相对较差,适合做开发环境\桌面。

2Debian家族主要包括:

**-Debian**是迄今为止最遵循GNU规范 的Linux系统,完全由社区维护,没有商业版本。Debian在服务器和桌面电脑领域都有着广泛的应用,最具特色的是apt-get / dpkg包管理方式。

**-Ubuntu**是基于Debianunstable版本加强而来,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome-Ubuntu,基于KDEKubuntu以及基于XfcXubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

Mint linux:基于Ubuntu衍生,专注于个人用户的桌面系统,用户体验非常友好。

3SlackWare家族主要包括:

-SUSE Linux Enterprise Server: 企业版(SLES)

**-OpenSuse**桌面版

SUSE Linux Enterprise Server (SLES), openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, CentOS的关系。SUSE界面非常的华丽,包管理方式与redhat都为rpm

 

23.什么是ssh?如何在linux服务器上从网站下载文件?   

1,如果指Linux sshssh是一种通讯协议,可以实现远程安全登录。可以通过如puttyMobaXterm等工具通过ssh安全登录到虚拟机进行操作。

2,下载文件。Wget或者是Curl

scpsecure copy)命令使用ssh协议在远程服务器和本地服务器之间复制文件。

XShell上传文件

 

24.C标签是什么,为什么要使用C标签,有哪些常见的指令?   

1JSP标准标签库(JSTL)的核心标签:core</p>

2C标签完成JSP的核心功能。JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

31)表达式控制标签:outsetremovecatch

2)流程控制标签:ifchoosewhenotherwise

3)循环标签:forEachforTokens</p>    

4URL操作标签:importurlredirectparam

1.<c:out>

用于计算一个表达式并将结果输出。类似于 JSP <%=%> 表达式,或者是 EL $ ${el-expression}

2.<c:set>

用于设置范围变量的值或者 javabean 对象的属性。

看个实际例子:

<c:set var=”username” value=”lisi” scope=”session”/>

这样就相当于设置了 session

3.<c:remove>

相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>

4.<c:catch>

用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

 

25.什么叫反向代理?为什么要使用反向代理?   

1反向代理代理的对象是服务端,为了隐藏了真实的服务端当我们请求 www.ccc.com 的时候,就像拨打10010一样,背后可能有成千上万台服务器为我们服务,

但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.ccc.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。

21)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击

2负载均衡,通过反向代理服务器来优化网站的负载

 

26.Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?   

1NGINX是用于Web服务,反向代理,缓存,负载平衡,媒体流等的开源软件。它最初是一个旨在实现最高性能和稳定性的Web服务器。 除了HTTP服务器功能外,NGINX还可以用作电子邮件(IMAPPOP3SMTP)的代理服务器以及HTTPTCPUDP服务器的反向代理和负载平衡器。

21)动静分离

指图片,css, js之类的都交给nginx来处理。比如jsp就交给tomcat等容器来处理~ 好处是nginx处理静态内容的吞吐量很高,可以提升性能。

2)负载均衡

web项目开发完成后需要部署在服务器上(tomcatjetty等),当高并发访问时,服务器无法承担,负载均衡就是添加了好几台服务器来分担这些访问从而减少服务器压力的

3SquidVarnish

 

27.为什么要用start.sh,stop.sh,deploy.sh 来完成容器的启动,停止和部署,而不是直接用容器自带的命令?   

1因为脚本部署快,方便管理,能够随时部署重复使用。改动方便,脚本语言可以很好的改动,比较灵活。不易直接使用命令而出错。

2,虽然使用容器自带的命令也可以,但是每个web容器都有自己的规范和配置,所以不方便管理多个web项目。而且容器自带的都是自己默认的属性,更何况有的(比如jetty)还能使用java命令部署,不统一,而且依赖java运行而运行

 

28.什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?   

1filter是过滤器:Servlet 容器中的一个组件,主要负责处理请求和响应,具体来说是负责对请求(HttpServletRequest)进行预处理, 以及对响应(HttpServletResponse)进行后处理,在实现上,基于函数回调,它可以对几乎所有请求进行过滤,所以它是依赖 Servlet 容器的。

2interceptor是拦截器:Spring容器的一个组件,SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter

SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor来实现的。在实现上,基于Java的反射机制。

3Filterinterceptor的区别AOP关系

(1) 接口定义不同

Filter 接口定义在 javax.servlet 包中,接口 HandlerInterceptor 定义在org.springframework.web.servlet 包中

(2) 规范不同

Filter 是在 Servlet 规范中定义的,是 Servlet 容器支持的;拦截器是在 Spring容器内的,是Spring框架支持的

(3) 使用资源不同

拦截器是一个Spring的组件,归Spring管理,因此能使用Spring里的任何资源、对象;

Filter 不能够使用 Spring 容器资源

(4) 深度不同

Filter在只在 Servlet 前后起作用;拦截器能够深入到方法前后、异常抛出前后等。

(5) 调用者不同

Filter 是被 Server 调用;Interceptor 是被 Spring 调用。

因此 Filter 总是优先于 Interceptor 执行

6)应用场景不同

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。 比如过滤非法的 url,过滤敏感词,设置字符编码等。

4Filter (do.chain...)-> Interceptor ...->AOP(spring管理的bean)...->Interceptor...->Filter

 

29.使用Annotaion的时候需要有哪些配置,他的加载过程是怎么样的?   

1,必须在xml文件中配置 <context:componet-scan /> 标签,在标签中配置需要扫描的包名。

2,通过动态代理和反射。在类加载过程中动态生成代理类,当初始化全局变量时,代理类跳到invoke方法,然后通过反射获取field字段对象,在method.invoke()的调用前即可实现注入。Aop,拦截器以及常用注解等功能的实现都是基于动态代理实现的。

 

30.AnnotationXML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC   

1annnotation简洁一些,遵循一些IOCxml通过xml格式文件配置。Springannotation注入机制与XML注入机制本质上是相同的。

21)在class文件中,可以降低维护成本,annotation的配置机制很明显简单

2)不需要第三方的解析工具,利用java反射技术就可以完成任务

3)编辑期可以验证正确性,查错变得容易

4)提高开发效率

 

31.web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?   

1web.xml里的主要配置有上下文监听器前端控制器,字符过滤器。

2配置一个上下文监听器然并且配置上下文属性加载到spring的配置

<listener>

   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

<context-param>

   <param-name>contextConfigLocation</param-name>

   <param-value>classpath:spring/applicationContext.xml</param-value>

</context-param>

 

32.Spring MVCStruts的区别是什么,为什么更倾向于使用Spring MVC   

1SpringMVC基于方法开发,Struts基于类开发。

21Struts比起SpringMVC不安全。因为Struts是基于类开发的,网页每发一次请求过来,都会调用整个类,包括其中的成员变量,而当有多个请求同时发送时,由于没有像SpringMVC一样,每个请求都会生成一个新的service对象,所以Struts处理请求时的类会同时被两个请求调用,所以就需要多线程开发。成员变量同时被几个请求去运行,难免会发生混乱,另外由于Struts中没有像SpringMVC一样把各个层封装分离,导致会把代码暴露给用户,发布到网上时很容易受到攻击。

2struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。

 

33.什么是WEBService,实现WEBService有哪些框架,为什么WEBService经常被认为太重了,只有银行和大型国企才会使用的更多有一些?   

1Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序。Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。

2,框架:JWSAxis2XFireCXFcfxjwxXFireAxis2jwx也就是jax-ws,是java6提供的对webservice的一种实现。cxf框架则简化了服务发布过程。AxisXFire已随着技术不断的更替慢慢落幕,而目前也只有axis2cxf官方有更新,AxisXFire都已不再更新。

3,总的来说,基于soap协议的webservice,在安全性和扩展性上增强了很多,而且使用xml解析。相应地效率也不如rest式的。但restfulwebservice速度虽然可以,但安全性上远不如上一个。所以没必要一定分是非高下,关键还是看应用场景。比如银行国企自然走soap协议的,对安全要求不高的web项目自然去追求速度。

 

34.什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?   

1TCP/IP 是供已连接因特网的计算机进行通信的通信协议。. TCP/IP 指传输控制协议/网际协议 ( T ransmission C ontrol P rotocol / I nternet P rotocol). TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

2,三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

第一次握手:

客户端发送一个TCPSYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N1。即X+1

第三次握手:

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN+1

31)四次握手的过程:

1.1 A 发送同步信号SYN + A's Initial sequence number

1.2 B 确认收到A的同步信号,并记录 A's ISN 到本地,命名 B's ACK sequence number

1.3 B发送同步信号SYN + B's Initial sequence number

1.4 A确认收到B的同步信号,并记录 B's ISN 到本地,命名 A's ACK sequence number

很显然1.21.3 这两个步骤可以合并,只需要三次握手,可以提高连接的速度与效率。

2)二次握手的过程:

2.1 A 发送同步信号SYN + A's Initial sequence number

2.2 B发送同步信号SYN + B's Initial sequence number + B's ACK sequence number

这里有一个问题,ABA的初始序列号达成了一致,这里是1000。但是B无法知道A是否已经接收到自己的同步信号,如果这个同步信号丢失了,ABB的初始序列号将无法达成一致。

 

35.什么是http协议?getpost请求有什么区别?http请求content-Type有几种,有什么区别?http适合什么场景?http状态码有哪些?   

1HTTP协议,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果)的。HTTP是一个属于应用层的面向对象的协议,由于其简单、快捷的方式,适用于分布式超媒体信息系统。HTTP协议工作于客户端-服务端架构之上,浏览器作为HTTP客户端通过URLHTTP服务端即web服务器发送请求,web服务器根据接收到的请求,向客户端发送响应信息。

2GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body.

GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

3HTTP主要的三种Content-Type以及区别

1application/x-www-form-urlencoded:在最开始的请求方式中,请求参数都是放在url中,表单提交的时候,

都是以key=&value=的方式写在url后面。这也是浏览器表单提交的默认方式。

2multipart/form-data: 此种方式多用于文件上传,表单数据都保存在http的正文部分,各个表单项之间用boundary分开。

3.application/json: 它用来告诉服务端消息主体是序列化后的 JSON 字符串。

4http适用1)基于应用级的接口使用方便

2)要求的开发水平不高,容错性强

5http常用状态码:

1XX Informational(信息性状态码) 接受的请求正在处理

2XX Success(成功状态码) 请求正常处理完毕

3XX Redirection(重定向状态码) 需要进行附加操作以完成请求

4XX Client Error(客户端错误状态码) 服务器无法处理请求

5XX Server Error(服务器错误状态码) 服务器处理请求出错

 

36.了解mavenmodule   

1从字面意思来说,module就是模块,而pom.xml中的modules也是这个意思,用来管理同个项目中的各个模块;如果maven用的比较简单,或者说项目的模块在pom.xml没进行划分,那么此元素是用不到的;不过一般大一点的项目是要用到的。

如果我们的项目分成了好几个模块,构建的时候逐个构建没问题(到每个模块的目录下执行mvn命令)但是简单的做法就是使用聚合,一次构建全部模块

2Maven Module也是一个maven 工程,但是却是一个子工程,必须有父工程存在并依赖,Maven Module不能抛弃父工程单独存在。

Maven Project可以理解为一个单独、独立的工程,在打包为jar或者war时,可以单独运行。如果在pom文件中添加了对父工程的依赖,此时作为父工程的子工程。

 

37.为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的?   

1RESTful可以通过一套统一的接口为 WebiOSAndroid提供服务。解决各种类型的Client层出不穷的问题。有了RESTful结构,不管是电脑端还是手机端,或者是APP,按照REST的接口来进行数据交互,完全不用关心后端实现,也就是说,前端和后端真正的实现了完全的分离设计。

2URL一般不用动词,PUTGETPOSTDELETE方法,其它如常。

3,重定向可以带数据过去,转发不能。重定向是客户端行为。转发是服务器行为。

 

38.生成Json有几种方式,他们之间的好处和坏处分别是什么,为什么推荐使用JsonTaglib来处理Json   

1, 以下介绍3种生成方式

1)使用JsonTaglibjsp中设置字段或者嵌套生成。

2)使用注解ResponseBody返回java对象或集合,自动转化生成;

3)使用json工具类库转化生成,如FastJson(阿里巴巴)、Gson(谷歌)、Jackson等。

2,在使用@ResponseBody注解的方式时,如果在控制器方法上标注该注解, 那么方法返回的对象不会经过视图解析器的渲染,而是根据HTTP Request HeaderAccept字段的内容, 转换为指定的格式, 写入到Response对象的body数据区中,如果没有额外的配置,那么就会返回json格式的数据这种方法,我们需要在controller中写更多的代码,而且要保证不会轻易改动。

Jackson对于复杂类型的json转换bean会出现问题,一些集合MapList的转换出现问题。

3JsonTaglib相比其他方式,更加灵活,修改更加方便。如果以后需要更改json数据格式,只需要更改jsp页面即可,不需要改动控制器代码

并且,在项目简单的情况下,controller中的代码简洁度并不明显,但是当项目复杂时,可以很清晰的认识到代码的简洁、易读。而这其实也就是Json诞生原因之一。

 

39.一份规范的接口文档应该包括什么内容,衡量接口(API)设计好和坏的准则是什么?   

1,方法、uri、请求参数、返回参数

1)方法:常用的方法就是下面的四种:GET PUT POST DELETE

2uri:以/a开头,如果需要登录才能调用的接口(如新增、修改;前台的用户个人信息,资金信息等)后面需要加/u,即:/a/u;中间一般放表名或者能表达这个接口的单词。get方法,若果是后台通过搜索查询列表,那么以/search结尾,如果是前台的查询列表,以/list结尾。uri地址里不逊于出现大写字母,如果是两个单词拼接,用/分开

3)请求参数和返回参数:请求参数和返回参数都分为:字段、说明、类型、备注、是否必填这5

字段:类的属性

说明:解释,意义

类型:属性的类型,只有StringNumberObjectArray四大类

备注:一些解释语,或者写简单的示例

4)返回参数,要分两种情况讨论:

只返回接口调用成功或者失败:codereason

返回参数:字段、类型

2,好接口的标准:

1易使用:没有复杂的程序、复杂的细节,易于学习;灵活的API允许按字段排序、可自定义分页、 排序和筛选等。一个完整的API意味着被期望的功能都包含在内。

2难误用:对详细的错误提示,有些经验的用户可以直接使用API而不需要阅读文档。

而对于开发人员来说,要求又是不一样的:

3易开发:个最小化的接口是使用尽可能少的类以及尽可能少的类成员。这样使得理解、记忆、调试以及改变API更容易。

4易阅读:代码的编写只需要一次一次,但是当调试或者修改的时候都需要对代码进行阅读。

 

40.HttpHeader里面包含哪些字段,每个字段都有哪些含义?   

1HTTP 首部字段根据实际用途被分为以下 4 种类型:

通用首部字段(General Header Fields

请求报文和响应报文两方都会使用的首部。

请求首部字段(Request Header Fields

从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

响应首部字段(Response Header Fields

从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

实体首部字段(Entity Header Fields

针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

2 常用的HTTP请求头

协议头

说明

示例

状态

Accept

可接受的响应内容类型(Content-Types)。

Accept: text/plain

固定

Accept-Charset

可接受的字符集

Accept-Charset: utf-8

固定

Accept-Encoding

可接受的响应内容的编码方式。

Accept-Encoding: gzip, deflate

固定

Accept-Language

可接受的响应内容语言列表。

Accept-Language: en-US

固定

Accept-Datetime

可接受的按照时间来表示的响应内容版本

Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT

临时

Authorization

用于表示HTTP协议中需要认证资源的认证信息

Authorization: Basic OSdjJGRpbjpvcGVuIANlc2SdDE==

固定

Cache-Control

用来指定当前的请求/回复中的,是否使用缓存机制。

Cache-Control: no-cache

固定

Connection

客户端(浏览器)想要优先使用的连接类型

Connection: keep-alive

Connection: Upgrade

固定

Cookie

由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie

Cookie: $Version=1; Skin=new;

固定:标准

Content-Length

以8进制表示的请求体的长度

Content-Length: 348

固定

Content-MD5

请求体的内容的二进制 MD5 散列值(数字签名),以 Base64 编码的结果

Content-MD5: oD8dH2sgSW50ZWdyaIEd9D==

废弃

Content-Type

请求体的MIME类型 (用于POST和PUT请求中)

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

固定

Date

发送该消息的日期和时间(以RFC 7231中定义的"HTTP日期"格式来发送)

Date: Dec, 26 Dec 2015 17:30:00 GMT

固定

Expect

表示客户端要求服务器做出特定的行为

Expect: 100-continue

固定

From

发起此请求的用户的邮件地址

From: user@itbilu.com

固定

Host

表示服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务的标准端口(80),则端口号可以省略。

Host: www.itbilu.com:80

Host: www.itbilu.com

固定

If-Match

仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要用于像 PUT 这样的方法中,仅当从用户上次更新某个资源后,该资源未被修改的情况下,才更新该资源。

If-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Modified-Since

允许在对应的资源未被修改的情况下返回304未修改

If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT

固定

If-None-Match

允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考 超文本传输协议 的实体标记

If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Range

如果该实体未被修改过,则向返回所缺少的那一个或多个部分。否则,返回整个新的实体

If-Range: "9jd00cdj34pss9ejqiw39d82f20d0ikd"

固定

If-Unmodified-Since

仅当该实体自某个特定时间以来未被修改的情况下,才发送回应。

If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT

固定

Max-Forwards

限制该消息可被代理及网关转发的次数。

Max-Forwards: 10

固定

Origin

发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)。

Origin: http://www.itbilu.com

固定: 标准

Pragma

与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生。

Pragma: no-cache

固定

Proxy-Authorization

用于向代理进行认证的认证信息。

Proxy-Authorization: Basic IOoDZRgDOi0vcGVuIHNlNidJi2==

固定

Range

表示请求某个实体的一部分,字节偏移以0开始。

Range: bytes=500-999

固定

Referer

表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。Referer其实是Referrer这个单词,但RFC制作标准时给拼错了,后来也就将错就错使用Referer了。

Referer: http://itbilu.com/nodejs

固定

TE

浏览器预期接受的传输时的编码方式:可使用回应协议头Transfer-Encoding中的值(还可以使用"trailers"表示数据传输时的分块方式)用来表示浏览器希望在最后一个大小为0的块之后还接收到一些额外的字段。

TE: trailers,deflate

固定

User-Agent

浏览器的身份标识字符串

User-Agent: Mozilla/……

固定

Upgrade

要求服务器升级到一个高版本协议。

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

固定

Via

告诉服务器,这个请求是由哪些代理发出的。

Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1)

固定

Warning

一个一般性的警告,表示在实体内容体中可能存在错误。

Warning: 199 Miscellaneous warning

固定

 

3,常用的HTTP响应头

响应头

说明

示例

状态

Access-Control-Allow-Origin

指定哪些网站可以跨域源资源共享

Access-Control-Allow-Origin: *

临时

Accept-Patch

指定服务器所支持的文档补丁格式

Accept-Patch: text/example;charset=utf-8

固定

Accept-Ranges

服务器所支持的内容范围

Accept-Ranges: bytes

固定

Age

响应对象在代理缓存中存在的时间,以秒为单位

Age: 12

固定

Allow

对于特定资源的有效动作;

Allow: GET, HEAD

固定

Cache-Control

通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒

Cache-Control: max-age=3600

固定

Connection

针对该连接所预期的选项

Connection: close

固定

Content-Disposition

对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开。

Content-Disposition: attachment; filename="fname.ext"

固定

Content-Encoding

响应资源所使用的编码类型。

Content-Encoding: gzip

固定

Content-Language

响就内容所使用的语言

Content-Language: zh-cn

固定

Content-Length

响应消息体的长度,用8进制字节表示

Content-Length: 348

固定

Content-Location

所返回的数据的一个候选位置

Content-Location: /index.htm

固定

Content-MD5

响应内容的二进制 MD5 散列值,以 Base64 方式编码

Content-MD5: IDK0iSsgSW50ZWd0DiJUi==

已淘汰

Content-Range

如果是响应部分消息,表示属于完整消息的哪个部分

Content-Range: bytes 21010-47021/47022

固定

Content-Type

当前内容的MIME类型

Content-Type: text/html; charset=utf-8

固定

Date

此条消息被发送时的日期和时间(以RFC 7231中定义的"HTTP日期"格式来表示)

Date: Tue, 15 Nov 1994 08:12:31 GMT

固定

ETag

对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列

ETag: "737060cd8c284d8af7ad3082f209582d"

固定

Expires

指定一个日期/时间,超过该时间则认为此回应已经过期

Expires: Thu, 01 Dec 1994 16:00:00 GMT

固定: 标准

Last-Modified

所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)

Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT

固定

Link

用来表示与另一个资源之间的类型关系,此类型关系是在RFC 5988中定义

Link: ; rel="alternate"

固定

Location

用于在进行重定向,或在创建了某个新资源时使用。

Location: http://www.itbilu.com/nodejs

固定

P3P

P3P策略相关设置

P3P: CP="This is not a P3P policy!

固定

Pragma

与具体的实现相关,这些响应头可能在请求/回应链中的不同时候产生不同的效果

Pragma: no-cache

固定

Proxy-Authenticate

要求在访问代理时提供身份认证信息。

Proxy-Authenticate: Basic

固定

Public-Key-Pins

用于防止中间攻击,声明网站认证中传输层安全协议的证书散列值

Public-Key-Pins: max-age=2592000; pin-sha256="……";

固定

Refresh

用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。

Refresh: 5; url=http://itbilu.com

 

Retry-After

如果某个实体临时不可用,那么此协议头用于告知客户端稍后重试。其值可以是一个特定的时间段(以秒为单位)或一个超文本传输协议日期。

· 示例1:Retry-After: 120

· 示例2: Retry-After: Dec, 26 Dec 2015 17:30:00 GMT

固定

Server

服务器的名称

Server: nginx/1.6.3

固定

Set-Cookie

设置HTTP cookie

Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1

固定: 标准

Status

通用网关接口的响应头字段,用来说明当前HTTP连接的响应状态。

Status: 200 OK

 

Trailer

Trailer用户说明传输中分块编码的编码信息

Trailer: Max-Forwards

固定

Transfer-Encoding

用表示实体传输给用户的编码形式。包括:chunkedcompress、 deflategzipidentity

Transfer-Encoding: chunked

固定

Upgrade

要求客户端升级到另一个高版本协议。

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

固定

Vary

告知下游的代理服务器,应当如何对以后的请求协议头进行匹配,以决定是否可使用已缓存的响应内容而不是重新从原服务器请求新的内容。

Vary: *

固定

Via

告知代理服务器的客户端,当前响应是通过什么途径发送的。

Via: 1.0 fred, 1.1 itbilu.com (nginx/1.6.3)

固定

Warning

一般性警告,告知在实体内容体中可能存在错误。

Warning: 199 Miscellaneous warning

固定

WWW-Authenticate

表示在请求获取这个实体时应当使用的认证模式。

WWW-Authenticate: Basic

固定



二,今天问题

任务三如何呈现,如何写得快。准备借助什么工具。头像侵删,狗头保命。


三,今天的收获

MySQL安装方式。Linux版本。C标签。反向代理。部署代码。Filter,Interceptor,AOP关系。

SpringMVC配置。TCP三次握手,HTTP。


四,明天的计划

任务二深度思考41-50。任务二小结。



返回列表 返回列表
评论

    分享到