面试
文章平均质量分 74
Coder_wang99
小王的自我更新之旅。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单例模式饿汉式和懒汉式的区别
单例模式: 实例唯一,但是可以有子类来继承的(构造方法为private的不能被继承,其他一些单例模式是可以被继承的),是有状态的. 应用:I/O与数据库的连接池;多线程的线程池;设备管理器(打印机);Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。 1.饿汉式 静态初始化的方式在类被加载的时候就将自己实例化 线程安全 //饿汉式 //利用静态内部类实现单例模式 public class Sin原创 2020-11-23 13:37:38 · 362 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap一些原理与区别
一、HashMap(数组+链表) 继承了AbstractMap类,AbstractMap类实现了map接口; 数据结构:数组+链表,链表中的每个entry有四个属性,是key,value,hash,next; 头插法; **put() : ** 插入<K,V>时,程序首先会计算key的hashCode()值,然后对该值再哈希(为了减少哈希冲突,使元素均匀的分布在数组上,提高存取效率),然后把哈希值和 数组长度-1 进行按位与操作,得到存储数组的下表,如果在该位置没有链表结点,就直接把<K原创 2020-11-11 23:08:59 · 513 阅读 · 0 评论 -
Java中的集合类(ArrayList,LinkedList,Vector)
一、ArrayList 基于数组实现; 默认初始容量是10; 不具有线程安全性,用于单线程中(如果在并发条件下使用它,可以用Collections类中的静态方法synchronizedList进行调用); 在需要进行扩容时,ArrayList会扩容到原来的1.5倍,将之前的数据拷贝到新建的数组; 检索,在集合末尾插入删除一个元素O(1),其他位置增删O(n), 二、LinkedList 基于双向循环链表实现(有头结点); 线程不安全(如果在并发条件下使用它,可以用Collections类中的静态方法sync原创 2020-11-11 21:42:17 · 422 阅读 · 1 评论
分享