首先POST和GET都是在客户端和服务端进行请求-响应的两种方法,它们具体的区别有以下几点:
1.当数据被回退或数据刷新时,GET请求是无害的,而POST请求则会重新提交数据
2.GET请求的数据会被缓存,而POST请求则不会
3.GET请求的数据会在url地址栏中显示出来,而POST请求则不会显示
4.GET请求的数据会保存在浏览器的历史记录中,而POST不会保存
5.GET请求对数据是有长度限制的,url长度不超过2048个字符,而POST请求无限制
6.POST相比较于GET更安全,因为参数不会被保存在历史记录中或web的服务器日志中,而GET发送的数据是url的一部分,无保密性可言
7.GET请求对数据类型是有限制的,只允许使用ASCII字符,而POST则无限制
1.ArrayList底层是基于数组来实现的,而LinkedList底层是基于双向循环链表结构实现的
2.对于数据的访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针
3.对于数据的增加add和删除remove,LinkedList要优于ArrayList,因为ArrayList要移动数据
4.ArrayList和LinkedList都是线程不安全的
5.ArrayList和LinkedList都是List接口的实现类,都实现了List所以方法,只是实现的方式不同
1.第一次握手时,Client什么信息都不能确认,而Server接收到Client的信息能够确认对方发送是正常的,其他不能确认。
2.第二次握手,Client接收到Server发送的信息,确认自己发送正常,接收正常,确认对方发送正常,接收正常;而Server则能确认对方发送正常,自己接收正常,其他不能确认。
3.第三次握手,Client能够确认自己和对方发送,接收均正常,而Server也能够确认自己和对方接收发送都正常。
4.第一次挥手,Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
5.第二次挥手,Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。
6.第三次挥手,Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
7.第四次挥手,Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次挥手。
1.Cookie是在客户端记录信息确认用户身份,而Session则是在服务器端录信息确认用户身份
2.Cookies的存储限制了数据的量,只允许4KB,且一般浏览器都限制一个站点最多保存20个Cookie,而Session无限制
3.Cookie相对于Session是不安全的,因为别人可以通过本地Cookie获取用户信息
4.Session数据是存储在服务器端的,当访问量增多时,会占用过多资源,影响服务器的性能
? IOC是inversion of control的简称,即控制反转,它是Spring框架的核心思想之一。所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。简单来说,就是所有的类都会被Spring框架统一管理,当你用到某个类时,Spring就自会把你所需要的东西交给你,同时也会把你交给需要你的其他类或对象。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
? IOC是通过DI(依赖注入)来具体实现的,即由容器动态的将某个依赖关系注入到组件中。通过依赖注入,我们只需要通过简单的配置,无需任何代码就可以指定目标需要的资源,实现自身业务逻辑,而不需要关注具体的资源来自何处,由谁实现的。
? 所以说,控制反转IoC(Inversion of Control)是创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。
? AOP即面向切面编程,是编程中的一个重要思想。spring用代理类包裹切面,把他们织入到Spring管理的bean中。也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成调用伪装类,伪装类中就先执行了切面,再把调用转发给真正的目标bean。Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。
AOP的核心概念:
通知(Advice)
连接点(JoinPoint)
切入点(Pointcut)
切面(Aspect)
引入(Introduction)
目标(target)
代理(Proxy)
织入(Weaving)
面向切面编程在spring中主要表现:
1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面
ajax 主要是实现页面和 web 服务器之间数据的异步传输,是一种创建交互式网页应用的网页开发技术。
具体的实现步骤为:
? MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
Spring:
@Controller:一般用于表现层的注解
@Service:一般用于业务层的注解
@Repository:一般用于持久层的注解
@Component:把资源让Spring 来管理。相当于在 xml 中配置一个 bean
@Autowired:自动按照类型注入。当使用注解注入属性时, set 方法可以省略
@Value:注入基本数据类型和 String 类型数据的
@Bean:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入 spring 容器
@Aspect:表示当前类是一个切面类
@Before:前置通知
@Afterreturning:后置通知
@After:最终通知
@Around:环绕通知
@Pointcut:切入点
SpringMVC:
@RequestMapping:用于建立请求 URL 和处理请求方法之间的对应关系。请求路径
@RequestParam:把请求中指定名称的参数给控制器中的形参赋值
@RequestBody:用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。实现将 controller 方法返回对象转换为 json 响应给客户端
@PathVaribale:用于绑定 url 中的占位符
Mybatis:
@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result 一起使用,封装多个结果集
@ResultMap:实现引用@Results 定义的封装
@One:实现一对一结果集封装
@Many:实现一对多结果集封装
? HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。
HTTP的特点:
1.HTTP协议是无状态的,就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。
2.HTTP可以多次请求,在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。
3.基于TCP协议,HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。
1.HEAD:与GET相同,但只返回HTTP的报头,不返回文档的主体
2.DETELE:删除指定的资源
3.PUT:上传指定的url表示
4.OPTIONS:返回服务器支持的HTTP方法
5.CONNECT:把请求连接转换的透明的TCP/IP通道
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
原文:https://www.cnblogs.com/y-u-p/p/10493394.html