发表于: 2018-03-29 23:29:43

1 681


今天完成的事情:

1.       什么是restfulrest的请求方法有哪些,有什么区别?

答:表征性状态传输(英文:Representational State Transfer,简称REST)是一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件,如果一个架构符合REST原则,我们就称它为RESTful架构。

RESTful架构:(1)每一个URI代表一种资源;(2)客户端和服务器之间,传递这种资源的某种表现层;(3)客户端通过HTTP四个动词,对服务器资源进行操作,实现“表现层状态转化“。

请求方法有:GET,POST,DELETE,PUTGET用来获取资源,POST用来新建资源也可以更新资源,PUT用来更新资源,DELETE用来删除资源。

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

答:网络应用程序,分为前端和后端两个部分,通过互联网通信,具有高延时(high Iatency)、高并发等特点。当前的发展趋势,前端设备层出不穷(手机、平板、电脑、其他专用设备等)。因此需要有一种统一的机制,方便不同的前端设备与后端进行通信,这就导致API架构的流行。

REST是省略了主语resource的,resource就是网络上的一个实体或者是网络上的一个具体信息,比如是文本、图片、歌曲、服务等。在网络上可以用URI(统一资源定位符)指向它,每个资源对应一个特定的URI,要获取这个资源只需要访问它的URI,此时URI就成了每一个资源的地址或独一无二的识别符。

Representation就是资源resource的表现形式,称为“表现层”。

而资源的表现形式就是它的各种状态的体现,不同表现形式的转换就是状态转化(state transfer)。状态转化发生在客户端和服务器交互的过程中。而HTTP协议是无状态协议,所以所有状态都保存在服务器端,因此,客户端想要操作服务器,必须通过某种手段,让服务器端发生state transfer,而这种转化是建立在表现层之上的,所以就是“Representation State Transfer”。

客户端用到的手段,只能是HTTP协议中表示操作方式的动词:GETPOSTPUTDELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源也可以更新资源,PUT用来更新资源,DELETE用来删除资源。

http://www.ruanyifeng.com/blog/2011/09/restful.html

3.       了解mavenmodule

Module是模块的意思。Maven多模块化开发,适用于一些比较大的项目,通过不同功能的模块拆分,实现代码复用,方便解耦,便于维护和管理。每个模块都对应一个POM.xml文件,它们之间通过继承和聚合相互关联。

https://blog.csdn.net/a1049107922/article/details/54347777

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

答:(https://www.cnblogs.com/ranyonsue/p/5984001.html

a.HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW: World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP是基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。HTTP是一个属于应用层的面向对象协议,由于其简洁快速的方式,适用于分布式超媒体信息系统。

b.GETPOST请求方法的区别:

GET            请求指定的页面信息,并返回实体主体。

POST          向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

区别:1.GET提交,请求的数据会在请求行中的URL之后,而POST提交的数据是在放置在HTTP包的包体中。2.传输数据的大小,本身HTTP协议对传输的数据大小没有限制,对URL长度也没有限制。但是特定浏览器和服务器对URL长度有限制,即使不设限的浏览器也应操作系统的是否支持而受限,所以用GET提交时,传输数据就会受到URL长度的限制,而POST不使用URL传值,所以理论上没有限制,但是必须将Content-type设置为:application/x-www-form-urlencodedPost设计用来支持web窗体上的用户字段,其参数作为键值对传输,但是不支持复杂数据类型,因为POST没有定义传输数据结构的语义和规则。这时就可以使用http post专用的一个版本soap,它遵循一种特殊的xml消息格式。Content-type设置为:text/xml任何数据都可以xml化。3.POST安全性比GET高,因为GET利用URL传值,所以用户名和密码会明文出现,而登录页面可能被浏览器缓存,其他人使用历史记录,就会获得。除此之外,GET还会收到Cross-site request forgery攻击。4.GET方式需要使用Request.QueryString来取得变量值,而POST方式通过Request.Form来获取。

c. Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。Content-Type有很多种值吗,每一种值对应一种文件类型或者数据类型。ContentType属性指定响应的 HTTP内容类型。一般会在HTML文件的<mata>中进行定义。如果未指定 ContentType,默认为TEXT/HTML

d.HTTP协议工作于客户端-服务器端架构上支持B/SC/S模式,浏览器作为HTTP客户端通过URLHTTP服务器端发送请求,web服务器根据接收到的请求,向客户端发送响应信息。

e.HTTP状态码,有三位数字组成,第一个数字定义了响应的类型,共分为五种类型:

1xx:指示信息表示请求已接收,继续处理;

2xx:成功表示请求已被成功接收、理解、接受;

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

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

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

常见状态码:

200 ok                                               //客户端请求成功

400 Bad Request                               //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized                             //请求未经授权,这个状态吗必须和WWW-Authenticate一起使用

403 Forbidden                                   //服务器收到请求,但是拒绝提供服务

404 Not Found                                 //请求资源不存在,eg:输入错误的URL

500 Internal Server Error                   //服务器发生不可预期的错误

503 Server Unavailable                      //服务器当前不能处理客户端的请求,一段时间后可能恢复

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

答:(https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014320037768360d53e4e935ca4a1f96eed1c896ad1217000

为了把全世界不同类型的计算机连接在起来,产生了一套全球通用的互联网协议簇(Internet protocol suite),里面包含上百种协议标准,最重要的就是TCP协议和IP协议,简称为TCP/IP协议,后期是不同的通讯协议的大集合。提供已连接互联网是计算机的通信协议,传输控制协议/网际协议,以及电子设备如何连入因特网和数据如何在设备间传输。IP协议(网际协议,计算机间通信)规定互联网中每台计算机的IP地址,通信双方利用各自IP唯一标识对方。负责把数据从一台计算机发送到另一台,数据被分割为很多小块,然后通过IP包发送出去,由于互联网链路复杂,有多条路线可选,所以路由器复杂选择路线,IP包的特点是,按块发送,途径多个录音,但不保证能到达,不保证能顺序到达。TCP协议(传输控制协议,应用程序间通信)建立在IP协议之上,负责计算机间建立可靠连接,保证数据包顺序到达。TCP协议会通过握手建立连接然后对每一个IP包编号,保证对方按顺序收到,如果包对了,就自动重发。

TCP/IP协议是4层模型:应用层,传输层,网络层和链路层。

TCP三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务器端总共发送3个包以确认连接的建立。三次握手可以检验双方是否为目标,第一次客户端发出数据包等待server确认,第二次server收到包后进行更新,在发给客户端,表示确认连接请求,第三次客户端收到确认,再更新包发给server以检验是否可以建立连接,server确认后连接建立。

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

答:WebServiceW3C组织对其定义为:它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。WEB Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。

实现WEBService的框架有,Apache Axis1Apache Axis2Codehaus XFireApache CXFApache WinkJbossRESTEasysun JAX-WS、阿里巴巴的Dubbo等。

Web Service是个很重型的规范,它的应用协议时SOAP(简单对象访问协议),所依赖的不仅仅是HTTP。而银行大型国企的业务逻辑复杂,稳定性和正确性要求高,其他的互联网领域并不需要,他们追求高开发速度和低门槛,同时业务逻辑比较简单。

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

答:a.Struts2是类级别的拦截,一个类对应一个request上下文,springMVC是方法级别的拦截,更易于实现RESTful。同时由于拦截级别的不同,springMVC的方法之间级别上是独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交会给框架,方法间不共享变量,而Struts2就比较乱,所有Action变量是共享的,虽然不影响程序运行,但是给编码读程序带来麻烦,每次来新请求就创建一个Action,一个Action对应一个request上下文。

b.Struts2需要对每个request进行封装,把requestsessionservlet生命周期的变量封装成一个个Map,供每个Action使用,并保证线程安全,所有原则上,比较耗费资源。

c.拦截器实现机制上Struts2有自己的interceptor机制,相比于springMVC独立的AOP方式,配置文件量较之大。

d.springMVC的入口是servlet,而Struts2filter

e.springMVC继承Ajax使用更方便,只需要一个主键@RequestBody就可以实现,然后之间返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用不方便。

f.springMVC支持JSP303,处理相对更灵活方便,而Struts2验证比较繁琐。

g.spring对接无缝,Struts2需要配置。设计思路上Struts2更符合OOPspringMVCservlet上比较严谨。

h.springMVC开发效率和性能高于Struts2Springmvc可以零配置。

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

         答:a.XML头,声明文件可以使用的XML版本并给出文件的字符编码。

                   b.顶层(根)元素web-app。大小写敏感,其他的XML元素都包含在根元素中。

c.主要配置包括:欢迎页,为servletjsp文件命名并定制URL,定制servletJSPContext中的初始化参数,设置过滤器Filter过滤字符编码并做一些逻辑判断等,设置监听器随web应用启动,只初始化一次,做一些初始化添加工作,设置一些基本内容。

加载顺序:listenerfilterservletspring

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

差别:注解适用于简单的配置可以简化配置,提高开发效率。复杂时用XML更好。

springMVC框架有专用注解,便于分层。同时本身层次也很简单,url映射也很简单,哪个网址出错可以立即找到其映射类。

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

答:context:annotation-config标签隐式向spring容器注册各种bean,配置包扫描路径,开启注解驱动annotation-driver

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

         答:filter是比servlet更高级的servlet,主要用于对用户请求进行预处理,接着将请求交给servlet进行预处理并生成响应,最后filter再对服务器响应进行后处理。

                   Interceptor拦截器,在AOP中用于在某个方法或字段被访问请,进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

FilterInterceptor的区别:

a.Filter是基于函数回调的,而Interceptor则是基于Java反射的。

b.Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。

c.Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。

d.Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。

e.action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。(https://blog.csdn.net/xiaodanjava/article/details/32125687)

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

         答:三种方式:适用于googlegson,使用@ResponseBody注解,使用JSON-taglib方式。

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

         答:封皮、修订历史、接口信息、功能参数、接口参数说明、返回值说明、接口调用限制和接口调用安全方面。文档全局要统一规范,文档维护要及时。

         接口检验标准:简洁,表意清晰,功能齐全。

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

         答:之前写过了。

15.   Content-type中的数据类型,在Spring MVC中都怎么接收数据?

         答:配置servlet-mapping

16.   Put请求在Linux下的Tomcat或者是Resin中会收不到数据,怎么解决这个问题,原因是什么?为什么本地使用Jetty的时候往往是正常的?

         答:PUT 请求获取不到参数,是因为 PUT 请求的参数不是存放在 HTTP Header 中的,而是在 HTTP Body 中,所以无法通过 request.getParameter() 方法来获取参数。拿到了 queryString,它是一个“a=1&b=2”格式的字符串,然后可以轻松的转换成一个 Map,最后通过 map.get() 方法获取指定的参数。(https://www.oschina.net/question/201495_102178

17.   War包是什么,为什么WEB服务通常打出来的都是War包?除了War包,还有几种打包格式,他们之间的区别呢?

         答:web achive fileWARSun提出的一种web应用程序格式,是许多文件的一个压缩包。这个包中的文件是按一定目录结构来组织:通常其根目录下包含有HTMLJSP文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录。通常在WEB-INF目录下有一个web.xml文件和classer目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的servlet类和jspservlet所依赖的其他类。

其他打包方式还有:JAREAR

http://blog.csdn.net/kingmax54212008/article/details/52316250

18.   maven常用的打包插件有哪些?有什么区别?如何使用

         答:(https://blog.csdn.net/maozhaoyuan/article/details/52699404

19.   jetty,resin,tomcat的差别在哪里,在线上服务应该选择哪一种WEB服务器?

         答:jetty是在pom.xml文件中添加的插件,热部署比tomcat好很多。

ResinCAUCHO公司的产品,是一个非常流行的支持servletsjsp的引擎,速度非常快。Resin本身包含了一个支持HTTP/1.1web服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,速度它是能和APACHESERVER相比较。

tomcat是一个web服务器,它也是提供jsp的服务,并且是可以与apache合用。

如果是单个应用服务器,则会是选择tomcat,因为它使用起来是比较方便,也是比较易用,文档多,操作起来也是算熟悉

如果做成群集就用nginx+proxy+resin,这个组合使用起来性能不错,也够稳定。

http://www.kokojia.com/article/22769.html

20.   jetty,resin,tomcat的常见配置有哪些,内存,端口,日志文件都怎么配置?

        答:<configuration>
    <
stopPort>9988</stopPort>
    <
stopKey>foo</stopKey>
    <
scanIntervalSeconds>5</scanIntervalSeconds>
    <
connectors>
        <
connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <
port>8080</port>
            <
maxIdleTime>60000</maxIdleTime>
        </
connector>
    </
connectors>
    <
webAppConfig>
        <
contextPath>/</contextPath>
    </
webAppConfig>
</
configuration>

21.   如果有多个WEB服务,都把WEB服务都配置在一个容器里,还是一个WEB配置一个容器,他们的差别是什么,你觉得哪种方式更好?        

答:配置在一个容器中。设置一个根服务器,其他的服务器都设置为独特的专业服务器。

22.   Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?

答:编写的脚本有:停止服务脚本,删除项目脚本,复制war包脚本,启动服务脚本。

23.   域名和端口号是怎么对应起来的?应该通过域名访问吗,从域名服务商到服务器的流程是怎么样的?

答:域名通过DNS域名解析系统解析成IP地址。现代,端口号已经有一部分是固定的,所以可以通过服务器固定的80端口获取HTTP服务,然后通过代理服务器将请求转发,到特定端口。

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

         答:Nginx是一个web服务器也可以用来做负载均衡及反向代理使用。Nginx是一款轻量级的WEB服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。Niginx相较于Apache/lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,niginx使用epoll事件模型,得益于此,niginxLinux操作系统下效率相当高。

反向代理服务器有SquidVarnishApache TSHAProxy

https://blog.csdn.net/liutengteng130/article/details/46700939

25.   Controller里应该怎么处理Service的异常,大段的Try Catch 会有什么坏处?

26.   Service返回的结果是否要判空,为什么?

         答:需要,对于数据肯定有要求。

27.   Service返回的结果是否要打日志,应该打什么样的日志,为什么?

         答:需要,时间点、具体参数需要打印,有据可查。

28.   该怎么模拟假数据,为什么在真实项目中,我们通常都是先定义接口,再写假数据,再去写业务逻辑?

         答:

29.   PostMan是什么,为什么要使用他来测试接口,除了Postman,还有哪些工具可以测试?

         答:PostMan是用于开发接口(API)的完整工具链   用它可以把传送接收的数据看的清清楚楚。

30. Linux服务器上,有哪些工具是可以测试接口的,怎么用Wget或者是Curl分别发送Rest的四种请求?

31.内网IP和外网IP的区别是什么,在服务器上测试接口是否被防火墙屏蔽的时候,该用内网IP检测,还是该用外网IP检测?

    答:外网IP是全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的,而内网的IP地址每个人的都不一样,Internet上的用户也无法直接访问到内网用户。

    用外网IP

32.端口是什么含义,怎么判断一个端口是否被占用了,如何判断一个端口是否被防火墙拦截,怎么用Telnet判断端口号是否打开?

    答:端口是设备与外界通讯交流的出入口。使用telnetsshwget、端口扫描工具。

33.WEB服务器通常要配置哪几个端口,如果一台服务器上有多个不同的WEB服务,该怎么规划端口的使用,修真院的端口分配是怎么样的?

    答:2122803306

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

         答:它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量、重复使用一组项目、测试条件和其他操作(如导入和重定向Web内容)。Core标签按功能可分为4种类型:变量维护(<c: set> <c: remove>),流程控制:分为条件标签(<c: if>,<c: choose>,<c: when>,<c:  otherwise>)和迭代标签(<c: forEach>,<c: forTokens>),URL管理(<c: url>,<a href>,<c: import>,<c: redirect>,<c: param>)<c: out><c: catch>等其他标签。

明天的计划:

开始任务三

遇到的问题:

没有

收获:

写深度思考。


返回列表 返回列表
评论

    分享到