java面试day02

软件设计模式的分类

创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。
结构型
用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式adapter、桥接模式bridge、组合器模式component、装饰器模式decorator、门面模式、亨元模式flyweight和代理模式proxy。
行为型
用于帮助系统间各对象的通信,以及如何控制复杂系统中流程。行为型模式主要有命令模式command、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式state、策略模式、模板模式和访问者模式。

http中get和post的区别

GET提交,请求的数据会附在URL之后(放在请求行中),以?分割URL和传输数据,多个参数用&连接。POST提交:把提交的数据放置在是HTTP请求报文的消息体中。

GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。

GET:特定浏览器和服务器对URL长度有限制,一般是不能超过1024个字节。POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制。

POST的安全性要比GET的安全性高。

JDBC六步

1、加载JDBC驱动程序:
2、创建数据库的连接
3、创建一个preparedStatement
4、执行SQL语句
5、遍历结果集
6、处理异常,关闭JDBC对象资源

Jsp和Servlet的相同点和不同点:

相同点:Jsp是在Servlet基础上推出的,即Jsp从本质上来讲是Servlet,所以Jsp具有Servlet的功能,也就理所当然支持Java语句了。

1、Jsp和Servlet两者创建的方式不一样

2、两者都可以形成Html页面,但是Jsp更直观、方便,因为它可以直接用HTML标签和Javascript;而Servlet是采用CGI的方式一句一句输出HTML语言标签的,和JSP相比就显得的笨拙了。

3、现在流行MVC模式,所以都是用Servlet控制业务流程,及Control层,JSP实现View层。

session与cookie的区别

(1)Cookie以文本文件格式存储在浏览器中,而session存储在服务端它存储了限制数据量。它只允许4kb它没有在cookie中保存多个变量。

(2)cookie的存储限制了数据量,只允许4KB,而session是无限量的

(3)我们可以轻松访问cookie值但是我们无法轻松访问会话值,因此它更安全

(4)设置cookie时间可以使cookie过期。但是使用session-destory(),我们将会销毁会话。

总结:如果我们需要经常登录一个站点时,最好用cookie来保存信息,要不然每次登陆都特别麻烦,如果对于需要安全性高的站点以及控制数据的能力时需要用会话效果更佳,当然我们也可以结合两者,使网站按照我们的想法进行运行

数据库三范式

第一范式,要求表中的列具有原子性,也就是说列不能被再次拆分。比如有一个列需要存电话号码,如果要存手机号码和固定电话时,按照本范式的要求,就必须定义两个列,一个用来存储手机号码,一个用来存储固定电话。而不能只使用一个列同时去存取手机号码和固定电话。

第二范式,要求每个表都要有主键,且非主键的列必须完全依赖于主键列,而不是只依赖于部分主键列。比如订单表 (订单id, 折扣,产品id, 产品名称, 成本价),其主键可以是订单id+产品id,但是产品名称列和成本价列都仅仅只依赖于产品id列,所以不符合第二范式。这样会造成数据的冗余。应该定义成两张表:订单表(订单id, 折扣,产品id),产品表(产品id,产品名称,成本价)。这样遵循了第二范式后就不会造成数据的冗余。

第三范式,要求不能出现传递依赖的情况,也就是非主键列A完全依赖于另外非主键的列B,而非主键列B又完全依赖于主键列。比如 订单表(订单id, 折扣,客户id, 客户姓名,客户电话) , 主键是订单id,客户id列完全依赖于主键列订单id,但是客户姓名和客户电话又完全依赖于非主键列客户id。这样不满足第三范式,也会造成数据的冗余。所以应该将客户姓名和客户电话列提取成客户表(客户id,客户姓名,客户电话),这样原来的订单表就变为 订单表(订单id, 折扣, 客户id) 。

事务的四大特性

事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。
原子性
事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 。
一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。比如,当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统在运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
隔离性
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性
指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
事务中的所有操作要么全部执行,要么都不执行; 如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。

springmvc流程

1、 用户发送请求至前端控制器DispatcherServlet。

2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回ModelAndView。

7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、 ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet响应用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值