corejava
放羊的大飞
这个作者很懒,什么都没留下…
展开
-
常用设计模式
23种设计模式总览一、单例模式二、模板方法模式 大部分流程相同,某些个别操作在不同实现类之间不一样(定义一个操作中的算法的骨架,而将一些步骤延迟到子类中)。抽象方法+方法具体实现+定义钩子方法。// IMyFrame接口里面定义一个paint()抽象方法,不同的实现类做不同的实现。使用的时候调这个模板方法,把实现类对象传参进来public static void draw...原创 2020-02-25 02:15:04 · 124 阅读 · 0 评论 -
其他
一、String相关二、final:把对象声明成final仅仅保证了它不会被重新赋上另外一个值,但仍然可以通过此引用来修改引用对象的属性(final User user,可以修改user.name的值)。...原创 2020-01-10 20:12:54 · 189 阅读 · 0 评论 -
单例模式
单例模式介绍:特点: 1.只有一个实例 2.自己创建好这个唯一的实例 3.给整个系统提供这一实例的访问方式。实现方式:构造方法私有化+静态方法返回一个已创建的实例。适用场景:需要生成唯一序列的环境;频繁创建销毁实例的对象;创建实例耗资源多但又经常用到;方便资源互相通信的环境。常见的单例:线程池(方便控制池中的线程)、缓存、日志对象、对话框、打印机、电脑回收站等,...原创 2019-12-29 01:20:39 · 210 阅读 · 1 评论 -
CAS原理
CAS: compare and swap, 实现多线程同步的原子指令,提升并发效率(一般结合volatile一起用)一、CAS原理: 1.三个操作数:内存地址的值(V)、预期原值(A)和新值(B),如果V==A,则将内存地址V的值更新成B,否则什么都不做。 2.CAS的原子性实际上是CPU实现的,通过JNI,需要底层硬件的支持。 3.CAS通过无限循环来获取数...原创 2020-01-13 20:23:54 · 451 阅读 · 0 评论 -
volatile
并发编程三要素(synchronized和Lock都具备,volatile有前两个): 有序性:执行顺序按照代码顺序来.(编译器优化导致有序性问题,volatile禁用优化); 可见性:一个线程对数据的修改,其他线程可见;(缓存导致可见性问题,volatile禁用缓存;) 原子性:一个或多个操作,全成功或者全失败 (i++;非原子操作:从主内存读取i到线程工作内存,进行+...原创 2020-01-03 02:13:50 · 113 阅读 · 0 评论 -
ThreadLocal
一、ThreadLocal详解二、ThreadLocal底层原理原创 2020-02-23 02:23:51 · 114 阅读 · 0 评论 -
synchronized和lock
一、主要区别 1.synchronized是java关键字;Lock是接口。 2.syn是通过JDK实现的,软件层依赖JVM锁定;Lock是硬件层通过CPU指令操作。 3.syn是隐式的获得、释放锁;Lock是显示的调用lock();unlock();在finally处必须手动释放,否则容易死锁。 4.syn未拿到锁的线程只能干等(阻塞未释放锁时效率低);L...原创 2020-01-16 02:27:53 · 624 阅读 · 0 评论 -
java线程池
1.线程池都有什么参数?2.底层如何实现的?原创 2020-02-22 03:20:40 · 133 阅读 · 0 评论 -
HashMap和ConcurrentHashMap
HashMap的底层: 1、transient Node<k,v>[] table; Node对象的属性: final int hash; final K key; V value; Node<k,v> next; 2、查找时,先通过哈希定位,然后遍历链表,对每个key进行equals逐一比对(链表越少性能越高)。 3、默认initial...原创 2020-01-02 02:23:32 · 214 阅读 · 0 评论 -
集合框架
一.介绍集合框架Collection接口: List接口:有序可重复 ArrayList: 底层是数组 transientObject[],查快,增删慢。 LinkedList:底层是链表 Node<E>,查慢,增删快。 Vector:底层Object数组,ArrayList的同步版,线程安全效率低。Stack 栈是...原创 2019-12-30 01:49:07 · 127 阅读 · 0 评论 -
hashcode和equals
1、在HashSet等散列集合中,判断对象相等的步骤: 1.hashcode不相等时,直接false 2.hashcode相等,再equals() [hashcode的主要目的是提高效率]2、在ArrayList等非散列集合中,只根据equals()判断相等3、equals相等,则hashcode一定相等(java要求的),两个对象相等4、hashcode相等,equals不...原创 2019-12-25 01:56:33 · 173 阅读 · 0 评论