后端面试相关
后端常见面试题
小白想要逆袭
喜欢分享学习的小白,帅
展开
-
java单例模式懒汉式&饿汉式
java单例模式原创 2022-10-21 18:17:41 · 112 阅读 · 0 评论 -
死锁以及如何解决死锁
什么是死锁 两个或多个线程持有当前锁不释放,尝试去申请其他线程的锁,且只有申请到其他线程锁时才可以释放当前锁,因此形成死循环,也即是死锁 死锁例子: // 死锁 public class SolveDeadLockDemo { // 锁A private static final String LOCK_A = "lock_a"; // 锁B private static final String LOCK_B = "lock_b"; // 方法A p原创 2022-05-17 18:12:04 · 238 阅读 · 0 评论 -
不可重入锁编写
不可重入锁 定义:同个线程重复获取锁失败,形成死锁,即不可重入锁 // 不可重入锁 public class UnReentrantLockDemo { // 是否加锁 private static boolean isLock = false; // 加锁 public synchronized void lock() throws InterruptedException { System.out.println("尝试申请锁。。。。"+Threa原创 2022-05-18 12:10:51 · 137 阅读 · 0 评论 -
可重入锁简单编写
可重入锁 也叫递归锁,当前线程的外层方法获取锁成功之后,内层方法依旧可以获取锁,不会形成死锁 // 可重入锁 public class MyReentrantLock { // 是否加锁 private boolean isLocked = false; // 记录当前线程 private Thread threadOwner = null; // 记录加锁次数,重复加1,释放-1 private int state = 0; // 加锁原创 2022-05-18 12:35:48 · 202 阅读 · 0 评论 -
Java 静态代理、JDK动态代理和CGLib动态代理
静态代理 由程序创建或者特定工具生成的源代码,在程序运行前,代理类的.class文件已经生成 通过将目标类与代理类实现同一个接口,让代理类持有真实类对 象,然后在代理类方法中调用真实类方法,在调用真实类方法的前 后添加我们所需要的功能扩展代码来达到增强的目的 public interface ClothFactory { /** * 生产衣服 */ void produceCloth(); } // 被代理类 public class NikeClothFactor原创 2022-05-17 00:25:57 · 172 阅读 · 0 评论