荣新IT培训中心
全国咨询热线:400-1335-066
您现在的位置:首页>行业新闻 > 正文

Java面试题(5)

时间:2017-11-12 16:05:00 来源:荣新IT教育培训 作者:荣新科技

这是第五部分,也是最后一部分。双十一已过,无论单身的,还是脱单的,已经过去了。生活还要继续,希望就在前方。
 

Java面试题(5)

事务的属性

原子性:事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;

一致性:事务结束后系统状态是一致的;

隔离性:并发执行的事务彼此无法看到对方的中间状态;

持久性:事务完成后所做的改动都会被持久化,

事务可能发生的错误状态

脏读: A事务读取B事务尚未提交的数据并在此基础上操作,而B事务执行回滚(A事务读取时还没有发生回滚,在读取完成时出现错误,B事务回滚)

不可重复读:事务A重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务B修改过了。

幻读:事务A重新执行一个查询,返回一系列符合查询条件的行,发现其中插入了被事务B提交的行。

第一类丢失更新:事务A撤销时,把已经提交的事务B的更新数据覆盖了。

第二类丢失更新:事务A覆盖事务B已经提交的数据,造成事务B所做的操作丢失。
使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?

要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的setFetchSize()方法指定每次抓取的记录数(典型的空间换时间策略)

要提升更新数据的性能可以使用PreparedStatement语句构建批处理,将若干SQL语句置于一个批处理中执行。

连接池有什么作用

为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,

C3P0、Proxool、DBCP、BoneCP、Druid等。
祝愿每一位同学都能获得高薪的职位