2021年8月26日

摘要: 1、区别 工厂模式:解决资源的统一分发将对象的创建完全独立出来,让创建对象和使用方无关。实际使用场景:线程池工厂 策略模式:为了解决策略的切换和扩展,根据不同场景执行不同的策略。实际使用场景:订单计算邮费,按照计件、计重、计尺寸不同策略来算邮费 2、开闭原则 对扩展开放,堆修改关闭。当应用的需求改变 阅读全文
posted @ 2021-08-26 23:48 Iversonstear 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 1、存储引擎 MyISAM:mysql5.1之前作为默认引擎 1)不支持事务,不支持外键 2)非聚集索引:数据文件和索引分开存放,索引存放的是数据文件的地址指针。 主键和辅助索引是独立的,两者没有本质区别,所以主键也是非必需的。 3)保存表的具体行树,所以select count(*)不带条件只需要 阅读全文
posted @ 2021-08-26 23:40 Iversonstear 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1、使用场景 1.1、静态变量如果要考虑线程安全的情况。用作保存每个线程自身的独享对象,以保证线程安全 如下代码:结果报异常了,因为sdf线程不安全,导致部分线程获取的时间不对 // 时间工具 public class DateUtil { private static final SimpleDa 阅读全文
posted @ 2021-08-26 23:34 Iversonstear 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 参考链接:https://blog.csdn.net/liyifan687/article/details/90678729 1、AOP 1.1、面向切面编程,可分为静态代理和动态代理 1.2、3个实现 AspectJ:静态代理,我们在编写一段独立业务代码时可以使用aspectj将逻辑加入 业务方法 阅读全文
posted @ 2021-08-26 23:02 Iversonstear 阅读(2286) 评论(0) 推荐(0) 编辑
摘要: 1、模型 堆、栈、方法区 程序计数器:pc寄存器,存放下一条要执行的指令的地址 虚拟机栈:每个线程拥有独立的栈,存放局部变量、对象引用、操作数栈、方法出口 堆:由所有线程共享,运行时申请内存在堆分配,存放对象、数组,jdk1.8后静态变量和常量池放入堆中 本地方法区:本地方法 方法区:jdk1.8前 阅读全文
posted @ 2021-08-26 21:05 Iversonstear 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1、synchronized锁升级 偏向锁:适用于基本没有锁竞争的场景。大多数情况下都是不存在竞争的,都是同一个线程多次获取锁。 流程: 偏向锁对象会记录线程id,当每次有线程获取锁时会比较线程id如果一致则获得锁, 如不一致则查看原线程是否存活,如没有存活了则新线程获取到偏向锁=并记录新线程id 阅读全文
posted @ 2021-08-26 16:41 Iversonstear 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 1、线程池 1.1、executor接口:只有一个execute()方法 1.2、ExecutorService接口:继承executor,增加了几个重要方法 1.2.1、shutdown():等待正在执行的线程执行完毕,拒绝接受新线程,关闭线程池 1.2.2、shutdownNow():立即关闭线 阅读全文
posted @ 2021-08-26 14:54 Iversonstear 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1、乐观锁和悲观锁区别 悲观锁:悲观认为数据会被别人修改,在操作时会将数据锁住直到操作完成释放锁,被锁期间其他线程无法操作该数据 乐观锁:乐观认为数据不会被别人修改,只在最终执行更新的时候判断下数据是否有被修改,如有则操作失败否则执行更新操作。如cas、版本号机制 2、乐观锁本身是不会加锁的,只在更 阅读全文
posted @ 2021-08-26 00:28 Iversonstear 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1、AQS:AbstractQueuedSynchronizer,抽象队列同步器。是java自带除synchronized关键字外的锁机制 2、是用来构建锁及其他同步器的重要框架,通过内置的CLH队列来完成资源获取线程的排队工作,将每条要去获取资源的线程分装成Node节点来实现锁的分配,有一个int 阅读全文
posted @ 2021-08-26 00:09 Iversonstear 阅读(147) 评论(0) 推荐(0) 编辑

2021年8月25日

摘要: 1、CAS 1.1、以compareAndSwapInt为例: compareAndSwapInt(ojb, offset, expect, update),表示在obj对象offset位置的值是否等于expect,如等于则更新为update。 1.2、存在问题 1.2.1、ABA: 第一步、线程1 阅读全文
posted @ 2021-08-25 21:12 Iversonstear 阅读(391) 评论(0) 推荐(0) 编辑

导航