重写和重载
重写是 子类继承父类, 然后子类可以重写父类的方法
重写时,参数类型,参数个数,方法名都要和被重写的方法完全一致!
重写时,父类private方法不能被重写(爸爸的隐私,孩子不能看)
子类重写的方法不能比父类的修饰符更严格
重载发生在一个类中,方法名相同,参数个数,参数类型,参数顺序 不相同
Redis持久化方式 -RDB和AOF的优缺点
RDB是快照方式
需要恢复数据的时候直接把RDB快照加载就行
如果数据较多, 保存快照的时间比较久
AOF是写命令追加到日志, 日志文件会越来越大
RDB的缺点
RDB快照一般都是每五分钟或者更长时间更新一次,如果Redis宕机 可能会丢失近几分钟的数据. 这个问题就是RDB最大的缺点, 不适合做第一恢复方案
RDB fork子进程进行数据备份,如果数据量特别大,等待时间变久,.
所以 一般不要让RDB备份时间间隔太久, 否则每次生成的RDB文件太大了,对Redis本身的性能可能会有影响的;
AOF优缺点
一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据,Redis进程挂了,最多丢掉1秒钟的数据;
AOF日志文件以append-only模式写入,所以没有任何磁盘寻址的开销,写入性能非常高,而且文件不容易破损,即使文件尾部破损,也很容易修;
MySQL主键索引有什么用
主键保证唯一性 && 主键列不为NULL
MySQL表主键是必须的吗
主键不是必须的,简单的表可以不设置主键, 设置主键能提高表的查询效率
如果没有定义主键,innoDB会选择唯一非空索引作为主键,如果没有的话 innoDB会自动生成一个包含了ROW_ID值的列作为聚簇索引,行都会根据这个ROW_ID排序。
callable接口的返回值用什么接收
Callable相比Runnable接口的好处
Callable接口 有返回值,返回值用FutureTask的get方法接收
Callable接口可以抛出异常
1 | class CallTest implements Callable{ |
sleep() 方法 和wait() 方法
sleep方法是Thread类下的
线程调用sleep方法虽然休眠了 但是不会释放锁对象
wait() 方法是Object类下的
wait方法会让出CPU的执行权, 调用wait方法后 需要用notify/notifyall 来唤醒线程
1 | /** |
子类可以重写父类的构造方法吗
不能!!
每个类的构造方法和类名都是相同的,
如果重写了构造方法 相当于子类和父类名是相同的, 不可实现
MySQL排序关键字 和分组关键字
排序关键字order by
分组关键字group by
Redis 缓存雪崩讲一下
缓存雪崩指的是大面积key值在同一时间段失效,大量的请求落到数据库上,导致数据库宕机