面试试答0516
主键和唯一索引的区别,什么时候用主键,什么时候用唯一索引
- 主键是数据约束,唯一索引是一种索引
- 主键一定是一个唯一索引,唯一索引不一定是主键
- 唯一索引列允许空值,主键不允许空值
- 一个表只有一个主键,可以创建多个唯一索引
nginx 有哪些使用场景
- 静态资源服务器
- 反向代理
- 负载均衡
- 动静分离
- 跨域 proxy 代理
最终一致性是什么,强一致性和最终一致性有什么区别
分库分表后怎么查询分页
https://juejin.cn/post/6981996965353488415#heading-6 #TODO
全局视野法
- 将
order by time offset X limit Y
,改写成order by time offset 0 limit X+Y
; - 服务层将改写后的 SQL 语句发往各个分库;
- 假设共分为 N 个库,服务层将得到
N * (X + Y)
条数据; - 服务层对得到的
N * (X + Y)
条数据进行内存排序,内存排序后再取偏移量 X 后的 Y 条记录,就是全局视野所需的一页数据。
分库分表后如何保证主键是递增的
- 数据库自增:每次需要 ID 的时候,就往一个库的一个表插入数据,获取数据库的自增 ID
- UUID:优点是本地生成。缺点是太长,作为主键性能太差;并且不具有时序性,会造成过多的随机写操作,影响性能
- 获取系统当前时间:并发过高的时候,会导致重复
- snowflake 算法:雪花算法
spring 中 bean 的生命周期和 bean 的作用域
spring web 容器的启动过程
IOC 的实现原理
hashmap 有几种构造函数
hashmap 有四种构造函数:
// 默认初始容量16,默认负载因子0.75
public HashMap();
public HashMap(int initialCapacity);
public HashMap(int initialCapacity, float loadFactor);
// 根据已有的 Map 接口创建所含元素相同的 HashMap,使用默认初始容量与默认负载因子
public HashMap(Map<? extends K, ? extends V> m);
hashmap 的遍历有几种方式,分别适合哪些场景
Springboot 是怎么运行起来的
AQS
公平锁和非公平锁
NoClassDefFoundError 和 ClassNotFoundException 有什么区别
ClassNotFoundException
是在使用Class.forName()
或loadClass()
方法时,找不到对应的 JAR 文件导致的。如果有两个ClassLoader
,用一个ClassLoader
去访问另一个ClassLoader
创建的类时,也会报这个错误。
NoClassDefFoundError
指,当类 A 对类 B 具有某些依赖项,并且类 A 编译后,类 B 发生了一些变化时,发生的错误。
class GeeksForGeeks {
void greeting() {
System.out.println("hello!");
}
}
class GFG {
public static void main(String args[]) {
GeeksForGeeks geeks = new GeeksForGeeks();
geeks.greeting();
}
}
上述代码创建了两个对象:GeeksForGeeks
和GFG
。当上述代码成功编译后,如果删除GeeksForGeeks
class,运行 GFG
,就会报NoClassDefFoundError
错误。