发表于: 2017-12-02 21:03:42

1 1285


    今天完成的事情:

    任务二的深度思考,看了一部分。贴了一些网上比较好的回答。

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

    restful风格的接口。

    请求方法:

    get: 查询数据 对应数据库SELECT

    Post: 对应数据库UPDATE

     put:对应数据库 INSERT

    Delete:对应数据 DELETE

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

    Rest提供了统一的风格与约束。同时一套接口可以提供给不同的终端使用。

    3.了解mavenmodule

    创建maven工程的父工程,其余子工程都会继承这个父工程的jar包引用。

    4.什么是http协议?

    TTP是一个基于TCP/IP通信协议来传递数据(HTML  文件, 图片文件, 查询结果等)。

    Getpost请求有什么区别?

    get:请求页面的信息,并返回主体。

    post:像服务器发送数据,可能会造成数据的新增或者修改。

    http请求content-Type有几种,有什么区别?

    媒体格式类型:例如text/html  image/gif

    form表单:key/value

    http适合什么场景?

    适合用户向数据库发送请求

    http状态码有哪些?

    常用的200(成功)  400(页面出错) 500(服务器出错)

    5.什么是tcp/ip协议?

    分为四层:应用层、传输层、网络层、数据链路层

    IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media  Access Control  Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。举一个现实生活中的例子,IP地址就如同是我们居住小区的地址,而MAC地址就是我们住的那栋楼那个房间那个人。

    TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。

           按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。

     

     

    来自 <https://www.cnblogs.com/roverliang/p/5176456.html>

     

     

    TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?

    第一次

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize  Sequence Numbers)。

    第二次

    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

    第三次

    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。(转自百度百科)

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

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

    1、Struts2是类级别的拦截,  一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful  url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。

    2、由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码  读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文

    3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的

    4、 拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。

    5、SpringMVC的入口是servlet,而Struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

    6、SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

    7、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。

    8、Spring  MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。

    9、 设计思想上,Struts2更加符合OOP的编程思想,  SpringMVC就比较谨慎,在servlet上扩展。

    10、SpringMVC开发效率和性能高于Struts2。

     

    来自 <http://blog.csdn.net/chenleixing/article/details/44570681>

     

     

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

    <!--spring的配置文件-->

    <context-param>

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

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

    </context-param>

    <!--spring监听器-->

    <listener>

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

    </listener>

    <!--springmvc核心:分发servlet-->

    <servlet>

    <servlet-name>mvc-dispatcher</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!--springmvc的配置文件-->

    <init-param>

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

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

    </init-param>

    <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

    <servlet-name>mvc-dispatcher</servlet-name>

    <url-pattern>/</url-pattern>

    </servlet-mapping>

     

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

    annoation更加简便

    https://www.cnblogs.com/imfjj/p/5962874.html

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

    需要指定对应的controller  指定包过后 系统会自动去包里寻找对应的类,然后自动注入。

    这个时候就不需要配置一下配置了

    <!--  配置hanlderMapping  -->

        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

        <!--   配置 handlerAdapter-->

        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

     

    来自 <https://www.cnblogs.com/imfjj/p/5962874.html>

     

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

    • Filter是基于函数回调的,而Interceptor则是基于Java反射的。
    • Filter依赖于Servlet容器,而Interceptor不依赖于Servlet容器。
    • Filter对几乎所有的请求起作用,而Interceptor只能对action请求起作用。
    • Interceptor可以访问Action的上下文,值栈里的对象,而Filter不能。
    • action的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。

     

    来自 <http://blog.csdn.net/xiaodanjava/article/details/32125687>

     

     

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

    http://blog.csdn.net/pengguojun117/article/details/17339867

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

    四部分:方法、uri、请求参数、返回参数

     

    来自 <https://www.zhihu.com/question/52409287/answer/130390641>

     

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

    >>请求头字段的具体含义

    Accept:浏览器可接受的MIME类型。 

    Accept-Charset:浏览器可接受的字符集。 

    Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。

    Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 

    Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 

    Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP  1.1(HTTP  1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。

     

    来自 <http://blog.csdn.net/melody_day/article/details/53559054>

     

     

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

    https://www.cnblogs.com/caolei1108/p/6203522.html

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

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

    JavaSE程序可以打包成Jar包(J其实可以理解为Java了),而JavaWeb程序可以打包成war包(w其实可以理解为Web了)。然后把war发布到Tomcat的webapps目录下,Tomcat会在启动时自动解压war包。

    http://blog.csdn.net/u012110719/article/details/44260417

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

    详细介绍:

    https://www.cnblogs.com/avivaye/p/5341341.html

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

     

    tomcat:Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

    jetty:是一个开源的servlet容器,它为基于Java的web容器,Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行的Java应用提供网络和web连接。

    resin:server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。

    转自一位师兄的简书:

    作者:标量操纵Leve5

    链接:http://www.jianshu.com/p/8465131bcabf

    來源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

    这个在IDEA中,很容易配置。

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

    一个web配置一个容器,独立出来。鸡蛋不要放在一个篮子里。

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

    我是用的是oneinstack跑的服务。

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

    域名是不能直接绑定到端口的,域名是指向一个IP,所有对域名的访问都是要加端口号的.

    DNS(Domain Name  Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP  address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。

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

    Nginx (engine  x) 是一个高性能的HTTP和反向代理服务器。

    作用:其实就是用来做负载均衡的,把用户请求收集发送给真正的服务器,然后返回给用户,其实用户不知道为自己服务的服务器是哪一个。

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

    直接结果会导致程序性能下降。但是为了稳定性及健壮性,有些时候必须要牺牲掉一部分性能。

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

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

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

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

    非常好用的测试接口的工具。Firefox自带的工具也可以

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

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

    内网IP地址、外网IP地址这个概念并不是固定的,而是相对的。如果用私有IP、公网IP或者局域网IP、互联网IP来理解就容易多了。

     

    来自 <https://www.zhihu.com/question/27714563>

     

    用外网检测。

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

    可以通过 netstat -ano 来查看端口的情况

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

    这个目前来说还没有完全懂得。自己理解应该是通过不同的端口进行访问。

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

    <c:out>

    用于在JSP中显示数据,就像<%= ... >

    <c:set>

    用于保存数据

    <c:remove>

    用于删除数据

    <c:catch>

    用来处理产生错误的异常状况,并且将错误信息储存起来

    <c:if>

    与我们在一般程序中用的if一样

    <c:choose>

    本身只当做<c:when>和<c:otherwise>的父标签

    <c:when>

    <c:choose>的子标签,用来判断条件是否成立

    <c:otherwise>

    <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

    <c:import>

    检索一个绝对或相对 URL,然后将其内容暴露给页面

    <c:forEach>

    基础迭代标签,接受多种集合类型

    <c:forTokens>

    根据指定的分隔符来分隔内容并迭代输出

    <c:param>

    用来给包含或重定向的页面传递参数

    <c:redirect>

    重定向至一个新的URL.

    <c:url>

    使用可选的查询参数来创造一个URL

     

    来自 <http://www.runoob.com/jsp/jsp-jstl.html>

    用maven打包出war包在本地运行:


服务器出了点问题,搞了搞,没搞定。明天继续。

明天计划的事情:搞定服务器跑war包 从本地访问

遇到的问题:没遇到什么大问题,基本都能解决。

收获:熟悉了tomcat的运作方式!~~~


返回列表 返回列表
评论

    分享到