java多态性,父类引用指向子类对象
CAS
数据库的 campare and swapCAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。
cap理论
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
JVM大概由几部分组成的?
讲一讲类加载器的种类和双亲委派机制 和 双亲委派机制的作用。
1.类加载器的种类: 自上而下分别是 1.启动类加载器 2.扩展类加载器 3.系统类加载器 4.自定义类加载器
2. 双亲委派机制, 向上委托向下传递
JMM
指令重排
X锁 (即Excludsive 排他锁) S锁(Share 共享锁)
事务隔离级别: 2.RR mysql默认RR 3. RC oracle等用的RC 1.读未提交(Read uncommitted) 产生脏读
4. 串行化(Serializable ): 可避免脏读、不可重复读、幻读的发生。
解决死锁的方式: detected deadlock; 看日志,定位问题。
rr+悲观锁 rr+悲观锁
MVCC多版本并发控制:
MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
mysql index & lock 杨鲁
业务状态修改接口支持 幂等性
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用
开闭原则
Happens-Before原则
在JMM中,两个线程操作之间存在happens-before关系,则前一个操作的结果对后续操作可见。即使编译器进行指令重排序的优化,如果结果和重排序前一致,也是允许的。
因为允许指令重排序,这也说明 happens-before并不代表操作的时间顺序。
有如下8条规则:
1.程序次序规则:单线程内,按照程序顺序,书写在前面的操作 happens-before 于书写在后面的操作;
2.volatile变量规则:对一个变量的写操作 happens-before 于后面对这个变量的读操作(保证了volatile变量的可见型);
3.传递规则:如果 A happens-before B,而B happens-before C,则A happens-before C;
4.锁定规则:一个unLock操作happens-before 后面对同一个锁的lock操作;
5.线程启动规则:A线程调用B线程的B.start()方法和调用之前的操作 happens-before 于B线程中的任意操作;
6.线程终结规则:线程中所有的操作都 happens-before 于线程的终止检测,如B线程的操作都happens-before 于B.join();
7.线程中断规则:对线程interrupt()方法的调用 happens-before 于被中断线程的代码检测到中断事件的发生;
8.对象终结规则:一个对象的初始化完成 happens-before 他的finalize()方法的开始