发表于: 2019-12-26 13:52:01
2 1169
啥也不说就是干!!!
今天完成的事情:
1、Http 协议
1)请求与响应
HTTP 定义了 4 种与服务器交互的方式:GET、POST、PUT、DELETE。URL全称为资源描述符,一个 URL 对应着一个网络上的资源,而 HTTP 中的 GET、POST、PUT、DELETE 就对应着这个资源的查询、修改、添加、删除 4 个操作。
HTTP 请求由 3 部分组成,分别是:状态行、请求头(Request Header)、请求正文
HTTP 响应由 3 部分组成,分别是:状态行(状态码)、响应头头(Response Header)、响应正文
2)Http 常见的 Content-Type:
//HTML格式
text/html
//纯文本格式
text/plain
//XML格式
text/xml
//图片格式
image/gif、image/jpeg、image/png
//JSON数据格式
application/json
//二进制流数据(如常见的文件下载)
application/octet-stream
//<form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
application/x-www-form-urlencoded
//需要在表单中进行文件上传时,就需要使用该格式
multipart/form-data
2、任务二深度思考剩余部分
26.Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?
之前日报有略过
27.为什么要用start.sh,stop.sh,deploy.sh 来完成容器的启动,停止和部署,而不是直接用容器自带的命令?
使用脚本比命令更加方便
28.什么是Filter,什么是Interceptor,他们的区别是什么,和AOP又是什么关系?
Java 中常见的 AOP 技术有两个,分别是 Filter 和代理模式(也可以称为过滤器和拦截器),Filter 是基于回调函数(Struts2),代理模式是基于 Java 反射技术(SpringMVC)。
29.使用Annotaion的时候需要有哪些配置,他的加载过程是怎么样的?
配置 <componet-scan /> 标签 加载 @Component @Service @Controller @Autowire @Resource @Required 注解
配置 <mvc:annotation-driven/> 加载 SpringMVC 使用的 @RequestMapping 注解
30.Annotation和XML两种配置的差别,为什么更喜欢使用Annotaion来配置Spring MVC?
参考师兄日志
2. MVC层次较为简单,而url映射也十分简单,哪个网址出错可以立即找到其映射类。
31.web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?
Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。
从Spring MVC上看,实际上在web容器中维护了一系列的IOC容器,其中在ContextLoader中载入的IOC容器作为根上下文而存在于 ServletContext中。
2.完成对ContextLoaderListener的初始化以后,Tomcat开始初始化DispatchServlet。DispatcherServlet会建立自己的ApplicationContext
3. 然后就是DispatchServlet中对Spring MVC的配置过程,首先对配置文件中的定义元素进行配置 - 请注意这个时候我们的WebApplicationContext已经建立起来了,也意味着DispatcherServlet有自己的定义资源,可以需要从web.xml中读取bean的配置信息,通常我们会使用单独的xml文件来配置MVC中各个要素定义,这里和web容器相关的加载过程实际上已经完成了
32.Spring MVC和Struts的区别是什么,为什么更倾向于使用Spring MVC?
SpringMVC 的入口是 Servlet,而 Struts2 入口是 Filter
SpringMVC 会比 Struts2 稍微开些,SpringMVC 是基于方法设计,而 Struts2 是基于类,每次发请求都会实例化一个 ACTION。
SpringMVC 可以跟 Spring 无缝融合,开发效率比 Struts2 高。支持 JSR303,处理 ajax 的请求更方便。
但是 Struts2 的 OGNL 表达式使页面的开发效率相比 SpringMVC 更高
33.什么是WEBService,实现WEBService有哪些框架,为什么WEBService经常被认为太重了,只有银行和大型国企才会使用的更多有一些?
WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。
但是随着SOAP作为WebService的广泛应用,不断地增加附加的内容,使得现在开发人员觉得SOAP很重,使用门槛很高。在SOAP后续的发展过程中,WS-*一系列协议的制定,增加了SOAP的成熟度,也给SOAP增加了负担
最常见的就是 SOAP类型的WebService就是最好的例子,SOAP消息完全就是将Http协议作为消息承载,以至于对于Http协议中的各种参数(例如编码,错误码等)都置之不顾
RESTFUL的 WEBService 速度虽然可以,但安全性上远不如 SOAP。两者的选择还是看应用场景。比如银行国企自然走 SOAP ,对安全要求不高的 web项目适合 RESTFUL。
34.什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。
基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。HTTP 属于应用层
第一次握手:客户端向服务端发送连接请求报文段。该报文段的头部中SYN=1,ACK=0,seq=x。请求发送后,客户端便进入SYN-SENT状态。PS1:SYN=1,ACK=0表示该报文段为连接请求报文。
第二次握手:服务端收到连接请求报文段后,如果同意连接,则会发送一个应答:SYN=1,ACK=1,seq=y,ack=x+1。该应答发送完成后便进入SYN-RCVD状态。
第三次握手:当客户端收到连接同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发来的连接同意应答已经成功收到。
为什么连接建立需要三次握手,而不是两次握手?
防止失效的连接请求报文段被服务端接收,从而产生错误。
若建立连接只需两次握手,客户端并没有太大的变化,仍然需要获得服务端的应答后才进入ESTABLISHED状态,而服务端在收到连接请求后就进入ESTABLISHED状态。
此时如果网络拥塞,客户端发送的连接请求迟迟到不了服务端,客户端便超时重发请求,如果服务端正确接收并确认应答,双方便开始通信,通信结束后释放连接
此时,如果那个失效的连接请求抵达了服务端,由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。
35.什么是http协议?get和post请求有什么区别?http请求content-Type有几种,有什么区别?http适合什么场景?http状态码有哪些?
上面 http 部分有
36.了解maven的module。
创建Maven Module工程必须有存在的父工程,maven就是通过父子工程进行工程管理的
37.为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的?
之前日报有略过
38.生成Json有几种方式,他们之间的好处和坏处分别是什么,为什么推荐使用JsonTaglib来处理Json?
现在
主要使用 @ResponseBody + Jackson 给客户端返回 json 数据
39.一份规范的接口文档应该包括什么内容,衡量接口(API)设计好和坏的准则是什么?
之前日报有,略过
40.Http的Header里面包含哪些字段,每个字段都有哪些含义?
Http 协议部分有,略过
41.如何写shell脚本?尝试自己编写一个简单脚本。
之前日报有
42.在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?
一般需要部署脚本,之前日志有
43.如果有多个WEB服务,都把WEB服务都配置在一个容器里,还是一个WEB配置一个容器,他们的差别是什么,你觉得哪种方式更好?
一个 web 配置一个容器,这样即使一台服务挂掉了,其他服务不受相影响
44.Resin/tomcat/jetty等WEB容器的内存大小,一般应该设置多大合适,怎么估算WEB程度占用内存的大小?
之前日报有
45.jetty,resin,tomcat的常见配置有哪些,内存,端口,日志文件都怎么配置?
之前日报有
46.jetty,resin,tomcat的差别在哪里,在线上服务应该选择哪一种WEB服务器?
之前日报有
47.maven常用的打包插件有哪些?有什么区别?如何使用 ?
1. package,maven自带的命令打包,平时的打包基本够用,但不能打可直接运行的jar包
48.War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?
War 包就是一个web应用的打包格式,一个web应用,需要一个用户交互的界面,负责给用户提供信息输入的地方,即jsp页面。数据需要保存下来,jsp把网页上的数据穿送给后台的java类,java类在得到这些数据之后再进行数据相关的工作,如存入数据库,给出相关统计数据等等。
49.Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?
之前日报有
50.Content-type中的数据类型,在Spring MVC中都怎么接收数据?
1、@PathVariable:接收 Url 中的占位参数 student/list/{id}
2、@RequestParams:接收请求中的参数 name=123&phone=123(application/x-www-form-urlencoded)
目标方法中接受参数
@RequestMapping(value = "/info", method = RequestMethod.POST)
public String saveInfo(@RequestParams String name,@RequestParams String phone) throws Exception {
}
或者实体类对应,如 :User
public class User{
private String name;
private String phone;
...省略 setter/getter
}
目标方法:
@RequestMapping(value = "/info", method = RequestMethod.POST)
public String saveInfo(User user) throws Exception {
}
3、@RequestBody:接收其他类型的参数,如 application/json {"name":"手机","price":"999"}
注意目标方法中要接收这个 JSON 字符串,然后反序列化
@RequestMapping(value = "/toJson2", method = RequestMethod.POST,consumes = "application/json; charset=utf-8")
public String toJson2(@RequestBody String jsonStr) throws Exception {
}
4、对于文件上传 (multipart/form-data):需要使用 CommonsUpload 组件配合使用
51.什么是restful?rest的请求方法有哪些,有什么区别?
之前日报有,略过
明天计划的事情:
开始任务三
遇到的问题:
无
收获:
学习了 Http 协议相关的内容
评论