面试
闲余小王
细心细心再信心,耐心耐心再耐心
展开
-
深入浅出的多线程
1.悲观锁与乐观锁:悲观的锁就是想到最坏情况,每次去拿数据的时候都会认为该数据会被修改,所以每次拿数据时都会进行阻塞直到其拿到锁,一个线程在使用时其他进入的线程进行阻塞,直到用完后再把资源转让。synchronized和reentrantlock等独占锁都是悲观锁思想。 乐观锁假设最好的情况,每次去都认为没有上锁,使用版本号机制和CAS算法实现。 乐观锁适用于多读场景,其中的冲突很少,省去了锁的开销,加大系统的吞吐量。 悲观锁适用于多写场景,经常发生冲突,降低了性能。 ...原创 2021-09-15 21:53:23 · 69 阅读 · 0 评论 -
自动装箱与拆箱
装箱是将基本类型的数据用其对应的引用类型进行定义 拆箱就是反过来将引用类型转为基本类型原创 2021-09-12 21:31:43 · 60 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别是什么
可变性: String类中保存字符串的value数组是用final关键字修饰的,String对象是不可变的 StringBuilder和StringBuffer对象都是继承AbstractStringBuilder类,其中保存字符串的数组没有final修饰所以这两种对象都是可变的 线程安全性: String对象不可变看作常量所以是线程安全 StringBuffer和StringBuilder可以调用父类提供的一些对于字符串操作的方法,有append、insert、indexof、expandCap原创 2021-09-12 21:31:05 · 84 阅读 · 0 评论 -
重载和重写的区别
重载是在一个类中进行方法的重载,这个方法的名字必须相同,参数类型、个数不同以及返回值和修饰符都可不同。 重写是在父子类中的方法重写,方法对应的名字和参数必须相同,子类的返回值范围、异常范围要小于等于父类,访问范围要大于等于父类,父类的修饰符为private就不能重写 ...原创 2021-09-12 21:27:04 · 52 阅读 · 0 评论