介绍一下系统的架构:
如何保证发短信如何保证能够不重复发送短信:
concurrenthashMap 介绍一下
hashtable
锁用的多吗?
reentrantLock 源码介绍 不要介绍的太细节,把大概的思路讲出来
加减乘除复制 的命令的原子性?
加减乘除不是原子性的,只有赋值是原子性的
int是4字节 是原子性 long是8字节不是原子性
单核cpu是安全的吗?
垃圾清理算法的标记过程
三色标记算法:
白色:尚未被GC访问过的对象,如果全部标记已完成依旧为白色的,称为不可达对象,既垃圾对象。
黑色:本对象已经被GC访问过,且本对象的子引用对象也已经被访问过了(本对象的孩子节点也都被访问过)。
灰色:本对象已访问过,但是本对象的子引用对象还没有被访问过,全部访问完会变成黑色,属于中间态(本对象的孩子节点还没有访问)。
标记过程:
初始时,所有对象都在 【白色集合】中;
将GC Roots 直接引用到的对象 挪到 【灰色集合】中;
从灰色集合中获取对象:
3.1. 将本对象 引用到的 其他对象 全部挪到 【灰色集合】中;
3.2. 将本对象 挪到 【黑色集合】里面。
重复步骤3,直至【灰色集合】为空时结束。
结束后,仍在【白色集合】的对象即为GC Roots 不可达,可以进行回收
线程安全问题是由于多个线程使用了共享变量引起的
ioc是通过使用者配置的扫描路径(类限定名)去过去一个对象然后封装成beandefinition添加到spring规定的一个map中以供全局调用