阿里一面准备

G1&&CMS

单例模式手写

饿汉模式

public class Singleton {
    // 首先,将 new Singleton() 堵死
    private Singleton() {};
    // 创建私有静态实例,意味着这个类第一次使用的时候就会进行创建
    private static Singleton instance = new Singleton();

    public static Singleton getInstance() {
        return instance;
    }
}

饱汉模式最容易出错

public class Singleton {
    // 首先,也是先堵死 new Singleton() 这条路
    private Singleton() {};
    // 和饿汉模式相比,这边不需要先实例化出来,注意这里的 volatile,它是必须的
    private static volatile Singleton instance = null;

    public static Singleton getInstance() {
        if (instance == null) {
            // 加锁
            synchronized (Singleton.class) {
                // 这一次判断也是必须的,不然会有并发问题
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

嵌套类最经典,以后大家就用它吧:

public class Singleton3 {

    private Singleton3() {}
    // 主要是使用了 嵌套类可以访问外部类的静态属性和静态方法 的特性
    private static class Holder {
        private static Singleton3 instance = new Singleton3();
    }
    public static Singleton3 getInstance() {
        return Holder.instance;
    }
}

单例模式优缺点
破坏单例模式和防止手段(反射==》枚举 序列化==》implements Serializable+readResolve() )
https://javadoop.com/post/singleton-not-single

HashTable Linkedhashmap concurrenthashmap源码(包括AQS等等)

hashmap怎么保证线程安全
如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
fail-fast机制
就是集合类在Iterator遍历的时候不要用集合类的remove方法因为Iterator接口实现的itr类中会检查是否对其size进行了修改,如果非要remove 可以使用Iterator的remove方法,这样会把modCount和expectedModCount,若两个不相等就会fail-fast并且报ConcurrentModificationException这个异常
方法2
使用java并发包(java.util.concurrent)中的类来代替 ArrayList 和hashMap。
hash没看懂
https://blog.csdn.net/huzhigenlaohu/article/details/51802457
AQS
https://blog.csdn.net/disiwei1012/article/details/78596731

redis为什么不可以作为专业的消息队列 redis多路复用

不支持重复消费 
消费者拉取到消息后,如果发生异常宕机,那这条消息就丢失了
BRPOP / BLPOP 阻塞式拉取
Pub/Sub 这种方案解决了重复消费但是有其他问题
Pub/Sub 的相关操作,不会写入到 RDB 和 AOF 中
消费者下线
Redis 宕机
消息堆积
Redis中的Stream可以满足大部分需求但是

一个专业的消息队列,必须要做到两大块:

消息不丢
消息可堆积
把 Redis 当作队列来使用时,始终面临的 2 个问题:

Redis 本身可能会丢数据
面对消息积压,Redis 内存资源紧张
redis作者看不下去自己写了一个disque

如何进入内核态

1629250150(1).jpg

Jenkins Docker

http https


多了一个ssl协议

https://www.cnblogs.com/hjbf/p/10248388.html

CGLIB JDK动态代理

Guarded Suspension的多线程设计模式。

Callable和Runnable 适配器模式互相转换

薄弱块 计算机网络 操作系统 spring

你可能感兴趣的:(阿里一面准备)