工具类源码
hashcode: 在创建类的时候要覆盖equal 和 hash 方法
ArrayList :基础数组来实现的,遍历查找快,但是删除需要移动数组数据,处理会慢。
LinkedList :实现原理通过链表实现,插入快,查找和删除慢。
HashMap:非线程安全的,通过链表实现的,查找速度回快很多,通过key取Hash直接找到数据值的位置,如果数据Hash位置
有多个值,则通过对key的equal对比找到对应的值。
两个对象相等则hash一定相等,但hash相同不一定equal。
Hashtable 线程安全的,key和value都不可以是空,
HashSet :基于HashMap 的key实现的,对象不能重也是通过对比hashCode和equals来实现的。
StringBuilder 非线程安全的,在没有线程问题的情况下,使用速度快。
StringBuffer :线程安全的,在有线程安全的问题考量的使用,使用避免出现线程安全问题。
@autowire 类型查找
resource 区别 , 根据名称查找匹配
事务的隔离机制 :在并发的网络环境中,线程的并发问题呗servlet容器基本解决,但基本上数据都是存储到数据库中的,数据库只有一个,
多线程访问的时候会出现并发问题,那数据库是怎么处理并发的问题呢? 也是通过锁机制,mysql中锁按照锁的数据多少分为行锁,表锁。
InnoDB有两种模式的行锁:共享锁,排它锁
未提交读,提交读,可重复读,序列化 ,主要解决的问题:脏读,不可重复读,幻读
未提交读:两个事务操作数据,一个事务更改了数据但是没有提交,另一个事务在没有锁的情况下可以读到这个事务没有提交的数据,这是脏数据。
不可重复读:两个事物操作数据,一个事务读取了一条数据然后另一事务也读取然后修改了这条数据,并且修改后提交了数据,这时候第一个事务
进行第二次数据读取,则读到的是第二个事务新提交的数据,两次读取的数据不一致,数据出现不可重复读的问题。
幻读:两个事务操作数据,第一个事务读取一个数据列表,然后第二个事务这时候插入一条数据并且提交了事务,这是第一个事务在重新读这个
数据列表,列表中就会多出来一行数据,像出现了幻觉一样。
上述三个问题可以用事务的隔离级别来处理。
Mysql的默认隔离级别是不可重复读。