发表于: 2017-10-15 23:09:40

1 746


今日完成:

  深度思考尽量做

    4.Http协议,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,说的简单一点就是对浏览器客户端和服务器端之间数据传输的格式规范

首先因为市面上存在着各式各样的浏览器,那么在向服务器端发送请求信息的时候,格式的不同就会造成服务端接收信息的难度增加,可能要一一对应不同浏览器写不同的接收程序,而服务器端向浏览器端发送响应数据时,不同服务器的输出格式势必也会一样,同样也增加了浏览器的程序的负担,所以Http协议就是规范不同浏览器发送请求和不同服务器端发送响应的规范!

    GET和POST请求区别

在提交时,GET请求传出的值会以?XX=XX&XX=XX&… 方式叠加在url内容中

而在POST请求传出的值会 放在请求头后,增强了数据的隐蔽性,

因上述原因GET请求一次传递的内容有限,而POST能一次传递大量的数据

http请求content-Type常见的几个

application/x-www-form-urlencoded

multipart/form-data

application/json

text/xml

   

http状态码,常见的状态:

          200 :  表示请求处理完成并完美返回

          302:   表示请求需要进一步细化。

          404:   表示客户访问的资源找不到。

          500:   表示服务器的资源发送错误。(服务器内部错误)

    5.TCP/IP是Transmission Control Protocol/Internet Protocol的简写,译名为传输控制协议/因特网协议,是Internet最基本的协议。TCP/IP是这个协议族的统称,它采用了4层的层级结构,而不是指TCP + IP两个协议的总和.

TCP的三次握手指的是

第一次握手:

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

第二次握手 :

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

第三次握手:

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

如果握手2次,那么服务端发出确认包(ACK)应答,服务端连接建立,但是如果客户端没有收到确认包,此时,客户端仍认为连接未建立,服务端会对已建立的连接保存必要的资源,如果大量的这种情况,服务端会崩溃。 

因为完全可靠的通信协议是根本不存在的,我们任何的通信协议都是在接受这样的现实情况之上进行的。 而三次握手后,客户端和服务端至少可以确认之前的通信情况,但无法确认之后的情况。 在这个道理上说,无论是四次还是五次或是更多次都是徒劳的。

    7.spring mvc与struts2的区别

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

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

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

10、SpringMVC可以认为已经100%零配置。

    8. web.xml中配置非常的多推荐博客http://blog.csdn.net/haluoluo211/article/details/52149105

但就目前常用的 如 编码过滤器,Spring监听器,欢迎页面,Spring MVC拦截器.....

加载Spring配置

<!--将spring总配置文件加载-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>

   9.注解和配置文件区别

XML配置的优缺点:

优点有:

1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译。

2. 在处理大的业务量的时候,用XML配置应该更加好一些。因为XML更加清晰的表明了各个对象之间的关系,各个业务类之间的调用。同时spring的相关配置也能一目了然。

当然,有人会说,用XML配置,在大的业务量时候会使得XML文件过大,不容易查看。这一点我们完全可以利用业务分解书写多个XML配置文件就可以了。

缺点有:

配置文件读取和解析需要花费一定的时间,配置文件过多的时候难以管理,无法对配置的正确性进行校验,增加了测试难度。



annotation配置的优缺点:

优点有:

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

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

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

4. 提高开发效率

缺点有:

1. 如果需要对于annotation进行修改,那么要重新编译整个工程

2. 业务类之间的关系不如XML配置那样容易把握。

3. 如果在程序中annotation比较多,直接影响代码质量,对于代码的简洁度有一定的影响。


用一句话来概括就是:写起来比较简单、方便,看起来也直观,但是不方便修改。

而基于xml配置的方式:写起来比较灵活,修改比较方便,但是写起来很烦琐。


   10.注解后需要开启注解扫描

<context:component-scan base-package="cn.ssm"/>

而MVC中还需开启

<mvc:annotation-driven />

<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。 

<context:annotation-config/>是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。 

   11.filter过滤器,就是在你向服务器请求一个资源,在请求之前做检查就是filter,Interceptor拦截器工作原理就是你要干一件事,在干这件事事情做事前准备和事后准备,也就是说不管拦截器怎么运行,事情还是要干的。他们两个都是AOP思想的一种体现。AOP是一种思想

就像登录,fiter能做到过滤你请求的路径是登陆后允许的,而拦截器更加强大,可以在你执行某个方法的时候进行登录验证。

   14.Http的Header里面包含很多字段调几个说下

  1. Accept:                         表示浏览器接受的数据类型
  2. Accept-Encoding:                表示浏览器接受的数据压缩格式
  3. Accept-Language:                表示浏览器接受的语言
  4. Cache-Control:                  表示请求的缓存机制,max-age,表示当访问此网页后的max-age秒内再次访问不会去服务器请求
  5. Connection:                     表示跟服务器的连接状态
  6. Cookie:                         表示浏览器保存的cookie信息
  7. Host:                           表示当前请求的访问目标地址
  8. Upgrade-Insecure-Requests:  1    
  9. 表示让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用
  10. User-Agent:                     表示浏览器端必要的一些信息

    17.所有的包都是用jar打的,只不过目标文件的扩展名不一样。

JAR包:打成JAR包的代码,通常是开发时要引用通用类,一般作为工具类,打成包便于存放管理,在项目中,会应用到N多JAR工具包;


WAR包:JAVA WEB工程,都是打成WAR包,进行发布,是做好一个web应用后,通常是网站,打成包部署到容器中。如果我们的服务器选择TOMCAT等轻量级服务器,一般就打出WAR包进行发布;


EAR包:这针对企业级项目的,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。


     18.

maven-jar-plugin

(我们可以通过mvn help:describe命令来查看插件、命令等操作的详细说明,比如我们在命令行执行mvn help:describe -Dplugin=org.apache.maven.plugins:maven-jar-plugin,便可以看到maven-jar-plugin插件的详细介绍)

jar项目默认的打包工具,默认情况下只会将项目源码编译生成的class文件和资源文件打包进来,不会打包进项目依赖的jar包。


maven-war-plugin

war项目默认的打包工具,默认情况下会打包项目编译生成的.class文件、资源文件以及项目依赖的所有jar包。


maven-assembly-plugin

需要在pom文件的plugin元素中引入才可以使用,功能非常强大,是maven中针对打包任务而提供的标准插件。它是Maven最强大的打包插件,它支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等,通过一个打包描述文件设置(src/main/assembly.xml),它能够帮助用户选择具体打包哪些资源文件集合、依赖、模块,甚至本地仓库文件,每个项的具体打包路径用户也能自由控制。


maven-shade-plugin

需要在pom文件的plugin元素中引入才可以使用,它可以让用户配置Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF文件。关于项目的依赖,它很聪明地将依赖的JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包(可以直接运行的jar包)中,这样,在执行CLI JAR文件的时候,所有需要的类就都在Classpath中了。


暂时就这么多,后面按照http://www.cnblogs.com/armyfai/p/3985660.html   该博客对svn进行学习

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的.

svn服务器,svn客户端,及idea检出svn服务器上项目,基本完成.

明日计划:rest今天没时间看明天再看下然后提交task2

问题:深度思考还有很多不明白的,先欠着

收获:svn的基本使用


返回列表 返回列表
评论

    分享到