1. 数据库的隔离级别有哪些?
isolation
隔离级别
名称 | 描述 |
---|---|
default | (默认值)(采用数据库的默认的设置) (建议) |
read-uncommited | 读未提交 |
read-commited | 读提交 (Oracle数据库默认的隔离级别) |
repeatable-read | 可重复读 (MySQL数据库默认的隔离级别) |
serialized-read | 序列化读 |
隔离级别由低到高为:read-uncommited < read-commited < repeatable-read < serialized-read
2. 什么是Dirty Read、Non-repeatable Read、Phantom Read?
问题 | 描述 |
---|---|
脏读 (Dirty Read) | 一个事务读取到另一个事务还未提交的数据。大于等于 read-commited 可防止 |
不可重复读(Non-repeatable Read) | 一个事务内多次读取一行数据的相同内容,其结果不一致。大于等于 repeatable-read 可防止 |
幻读(Phantom Read) | 一个事务内多次读取一张表中的相同内容,其结果不一致。serialized-read 可防止 |
- 脏读:读取了其他事务未提交的数据
- 不可重复读取:在一个事务中读取了另外一个事务中update之后的数据
- 幻读:在一个事务中读取了另外一个事务中insert,delete之后的数据
3. Cookie实现原理
Cookie数据存储在客户端的浏览器中,默认是放在浏览器的缓存中,所以关闭浏览器就被删除了,我们也可以设置Cookie的有效期,这个时候就会将Cookie数据存储在本地磁盘中,通过Http协议实现Cookie的传递。
4. AOP的实现原理?
动态代理:JDK、cglib
5. AOP一般应用在项目的哪些地方?
日志、事务、权限控制
6. Spring中Bean的生命周期
- 单例:启动创建对象 -》set注入 -》后置处理器的前置过程 -》init -》后置处理的后置过程 -》使用 -》destroy
- 多例:使用是创建对象 -》set注入 -》后置处理器的前置过程 -》init -》后置处理的后置过程 -》使用 -》JVM进行对象销毁
7. Spring框架中用到了哪些设计模式
工厂、单例、代理、模板模式
JdbcTemplate
8. java中事务的ACID是什么?
- 原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;
- 一致性(Consistent):事务结束后系统状态是一致的;
- 隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;
- 持久性(Durable):事务完成后所做的改动都会被持久化。即使发生灾难性的失败,通过日志和同步备份可以在故障发生后重建数据。
9. 表单提交中,get和post区别
doGet:GET方法会把键值对追加在请求的URL后面,因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目,并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。
doPost:POST方法通过请求参数值放在请求体中克服GET方法的限制,因此,可以发送的参数的数目是无限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。