1. Java中有几种类型的流
字符流、字节流
输入流、输出流
节点流、处理流
2 .Spring支持的几种bean的作用域
五种:
1.singleton
bean在每个ioc容器中只有一个实例
2.prototype
可以有多个实例
3-5在web环境中才生效
3.request
每次请求才创建bean
4.session
在一个HTTP session中,一个bean定义对应的一个实例
5.application
应用程序启动时创建bean,销毁时销毁bean。
3. synchronized和Lock有什么区别?加锁的方式有哪些
语法层面
synchronized 是关键字,隐式加锁,源码在 jvm 中,用 c++ 语言实现
Lock 是接口,显式加锁,源码由 jdk 提供,用 java 语言实现
使用 synchronized 时,退出同步代码块锁会自动释放,而使用 Lock 时,需要手动调用 unlock 方法释放锁
功能层面
二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能
Lock 提供了许多 synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时、多条件变量
Lock 有适合不同场景的实现,如 ReentrantLock,ReentrantReadWriteLock
性能层面
在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
在竞争激烈时,Lock 的实现通常会提供更好的性能
4.Java提供的常见集合
单列集合
Collection -- List -- ArrayList
│ ┖ -- LinkedList
┖ -- Set -- HashSet
┖ -- TreeSet
双列集合
Map -- HashMap
┖ -- TreeMap
┖ -- ConcurrentHashMap
5.事务的四大特性是什么
1.原子性
事务是最小单位原子,同成同败
2.一致性
理解1:数据变化、保存一致 eg 银行里存500得500
理解2:预期值和实际值一致
3.隔离性
多个事务之间不要产生影响
4.持久性
操作最终会持久化到数据库中
补充:隔离性拓展-隔离级别
读未提交
一个事务可读取另一未提交的数据
安全性差
读已提交
只能读取另一已提交的数据
可重复读
一个事务同时只有一个事务操作当前表
其他事务在当前事务提交后还是看不到修改后的查询结果
年度财务报表可能用得到。
串行化
锁表,同时只有一个事务操作当前表
只有事务提交后,别的事务才能操作