11 2019 档案
摘要:源码分析 public ArrayList() {. //默认构造函数,若初始值指定为null则将赋值为一个空的数组 this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } private static final Object[] DEFAU
        阅读全文
                
摘要:1. HashSet是使用HashMap来实现的 public HashSet() { map = new HashMap<>(); } private transient HashMap<E,Object> map; // Dummy value to associate with an Obje
        阅读全文
                
摘要:1. 先来看一下类构成 public interface Executor { //顶级接口Executor,定义了线程执行的方法 void execute(Runnable command); } public interface ExecutorService extends Executor 
        阅读全文
                
摘要:1. 先来了解ConcurrentHashMap中的几个成员,当然大多数与HashMap中的相似,我们只看独有的成员 /** * The default concurrency level for this table, used when not * otherwise specified in 
        阅读全文
                
摘要:1. 继承Thread类来实现 class MyThread extends Thread{ @Override public void run() { System.out.println("myThread is running"); } } public static void main(St
        阅读全文
                
摘要:1. Redis持久化都有哪些类型? Redis持久化分为两种: RDB持久化与AOF持久化 2. 两种持久化的异同? (1)RDB持久化:RDB持久化是将我们运行过程中Redis数据库中的对象保存到RDB文件中。 a. RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还
        阅读全文
                
摘要:在ConcurrentHashMap(1.8)中与HashMap非常相似,只不过它是线程安全的,在这里主要分析一下putVal()方法,看看与HashMap的区别。 final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == n
        阅读全文
                
摘要:1. 策略模式的作用 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。 2. 为什么要使用策略模式? 我们想象一下最常见的场景:排序。排序无非两种选择,升序或降序。如果我们要封装一个类要自由的切换两种排序要怎么做呢? 最常见的做法是这样的: public cl
        阅读全文
                
摘要:1. 系统调用 为了安全应用程序无法直接调用的硬件的功能,而是将这些功能封装成特定的函数。当应用程序需要硬件功能时(例如读写文件),就需要进行系统调用。当进程进行系统调用后就从用户态装换为内核态。 2. 用户态与内核态 我们可以想象cpu只是一个无情的执行代码的工具,并不关心是谁的代码。 (1)用户
        阅读全文
                
摘要:什么是IO? 在计算机中无时无刻不存在着对数据的访问和读取(数据都存储在物理的媒介上,例如寄存器,高速缓存,内存,磁盘,网卡等等),这些操作被称为IO。 阻塞IO 当用户线程发起IO请求后,会进行系统调用(system call)来让内核(Kernel)进行IO操作 此时用户线程阻塞,等待内核将数据
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号