基础5 --zlyl
Java
- 在java中如何保证多线程的运行安全?
1) 使用安全类。比如Java.util.concurrent下的类
2) 使用自动锁synchronized
3) 使用手动锁Lock
注意:最好不要把获取锁的过程写到try块中,因为如果在获取锁时发生了异常,异常抛出的同时也会导致锁无法被释放。
因为Lock是接口所以使用时要结合它的实现类,另外在finall语句块中释放锁的目的是保证获取到锁之后,最终能够被释放。
注意: 最好不要把获取锁的过程写在try语句块中,因为
Lock lock = new ReentrantLock();
lock.lock();
try{
System.out.println("获得锁");
}catch (Exception e){
//TODO: handle exception
}finally {
System.out.println("释放锁");
lock.unlock();
}
- Java中的引用类型?(笔试)
- 强引用:发生GC的时候不会被回收
- 软引用:有用但不是必须的对象,在发生内存溢出之前会被回收
- 弱引用:跟软引用很像,级别更低,有用但不是必须的对象,在下一次GC时会被回收。不管系统内存是否足够,当垃圾回收机制运行时,总会回收该对象所占用的内存。
- 虚引用:(幽灵引用、幻影引用):类似于没有引用,无法通过虚引用获得对象,用PhantomReference实现虚引用,虚引用的用途是在GC时返回一个通知。
数据库
- 什么是事务?
事务是由一步或者几步数据库操作序列组成的逻辑执行单元。这系列要么全部执行,要么全部放弃执行。
事务具备4个特性(ACID):
1)原子性(Atomicity):事务是应用中最小的执行单位,就如原子是自然界的最小颗粒,具有不可再分的特征一样,事务是应用中不可再分的最小逻辑执行体。
2)一致性(Consistency):事务的执行结果,必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库只包含事务成功提交的结果时,数据库就处于一致性状态。
3)隔离性(Isolation) :各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务都是隔离的。也就是说,并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间不能互相影响。
4)持续性(Durability):也为“持久性”,指事务一旦提交,对数据所做的任何改变都要记录到永久存储器中,通常是保存进物理数据库。
总结:
对好多知识点理解的不深入。
人生如此艰难。