目录
hashMap
是不是线程安全的
不是,因为没加锁
什么线程安全
currentHashMap
key value能否为空
可以
什么key values不能为空
hashTable
arraylist
是不是线程安全的
不是,因为扩容机制会造成指针越界
Set、Map、List三种集合的差别
set 无序 不重复
list List接口继承了Collection接口以定义一个允许重复项的有序集合
map 允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)
springboot
aop什么代理的
jdk
@Autowired和@Resource的区别是什么?
共同点:
两者都可以加在属性和setter方法上面,如果都写在属性上,那么就不需要再写setter方法。
不同点:
① @Autowired
是spring提供的注解,需要导入的包是org.springframework.beans.factory.annotation.Autowired;只按照byType注入。@Autowired注解按照类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想要按照名称来装配byName,可以结合@Qulifier注解一起使用。
② @Resource
默认按照byName名称自动注入,由J2EE提供,需要导入的包javax.annotation.Resource。它有两个重要的属性:name和type,而spring将@Resource注解的name属性解析为bean的名称,type属性则被解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,使用type属性时则使用byType自动注入策略。如果两者都不指定,将通过反射机制使用byName自动注入策略。
多线程
多线程中wait和sleep区别
1、wait可以指定时间也可以不指定
sleep必须指定时间。
2、在同步中,对cpu的执行权和锁的处理不同
wait:释 放执行权,释放锁。
sleep:释放执行权,不释放锁。
mysql
事务
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。