java1

ACID是靠什么保证的?
原子性由undolog日志来保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql一致性是由其他三大特性保证,程序代码要保证业务上的一致性
隔离性是由MVCC来保证
持久性由redplog来保证,mysql修改数据的时候会在redolog中记录一份日志数据,就算数据没有保存成功,只要日志保存成功了,数据仍然不会丢失

BeanFactory和ApplicationContext有什么区别

相同:
 Spring提供了两种不同的IOC容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Javainterface,ApplicationContext继承于BeanFactory(ApplicationContext继承ListableBeanFactory,
·它们都可以用来配置XML属性,也支持属性的自动注入。
而ListableBeanFactory继承BeanFactory),BeanFactory和ApplicationContext都提供了一种方式,使用getBean("bean name")获取bean。
不同:
·当你调用getBean()方法时,BeanFactory仅实例化bean,而ApplicationContext在启动容器的时候实例化单例bean,不会等待调用getBean()方法时再实例化。
BeanFactory不支持国际化,即i18n,但ApplicationContext提供了对它的支持。
 BeanFactory与ApplicationContext之间的另一个区别是能够将事件发布到注册为监听器的bean。
BeanFactory的一个核心实现是XMLBeanFactory而ApplicationContext的一个核心实现是ClassPathXmIApplicationContext,Web容器的环境我们使用WebApplicationContext并且增加了getServletContext方法。
·如果使用自动注入并使用BeanFactory,则需要使用API注册AutoWiredBeanPostProcessor
如果使用ApplicationContext,则可以使用XML进行配置。

简而言之,BeanFactory提供基本的IOC和DI功能,而ApplicationContext提供高级功能,BeanFactory可用于测试和非生产使用,但ApplicationContext是功能更丰富的容器实现,应该优于BeanFactory

HashMap和HashTable的区别是什么?


1.HashTable线程同步,HashMap非线程同步。工
2.HashTable不允许<键,值>有空值,HashMap允许<键,值>有空值。                                      3.HashTable使用Enumeration,HashMap使用lterator。
4.HashTable中hash数组的默认大小是11,增加方式的old*2+1,HashMap中hash数组的默认大小是16,增长方式是2的指数倍。
5. hashtable继承与Dictionary类,hashmap继承自AbstractMap类

HashMap在扩容上有哪些优化?


在jdk1.7版本的时候,扩容的计算每次都是对元素进行rehash算法,计算原来每个元素在扩容之后的哈希表中的位置,而在jdk1.8之后借助④倍扩容机制,元素不需要进行重新计算位置
hashmap使用的是2次幂的扩展(指长度扩为原来2倍),所以,元素的位置要么是在原位置,要么是在原位置再移动2次幂的位置。看下图可以明白这句话的意思,n为table的长度,图(a)表示扩容前的key1和key2两种key确定索引位置的示例,图(b)表示扩容后key1和key2两种key确定索引位置的示例,其中hash1是key1对应的哈希与高位运算结果。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值