1.Spring MVC 工作流程

提示:

redis清除全部缓存 redis清除缓存java_面试

  1. Redis 如何实现 key 的过期删除?
    定期删除和惰性删除的形式
    定期删除 :Redis 每隔一段时间从设置过期时间的 key 集合中,随机抽取一些 key ,检查是否过期,如果已经过期做删除处理。
    惰性删除 :Redis 在 key 被访问的时候检查 key 是否过期,如果过期则删除。
    3.** Redis 的持久化机制**
    数据快照(RDB)+ 修改数据语句文件(AOF)
    4、如何解决 Redis 缓存雪崩和缓存穿透?
    缓存雪崩 缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。
    解决方式
    事前:保证 Redis 集群的稳定性,发现机器宕机尽快补上,设置合适的内存淘汰策略。
    事中:本地缓存 + 限流降级,避免大量请求落在数据库上。
    事后:利用 Redis 持久化机制尽快恢复缓存。
    缓存穿透 一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
    解决方式 将不存在的数据列举到一个足够大的 map 上,这样遭到攻击时,直接拦截 map 中的请求,请求到数据库上面。或是把不存在的也做缓存,值为 null ,设置过期时间。
    5、如何使用 Redis 实现消息队列?
    Redis 实现消息队列依赖于 Redis 集群的稳定性,通常不建议使用。
    Redis 自带发布订阅功能,基于 publish 和 subscribe 命令。
    使用 List 存储消息,lpush,rpop 分别发送接收消息。
    6.浏览器输入地址后做了什么?
  2. redis清除全部缓存 redis清除缓存java_面试_02

  3. 7、Object 类相关方法
    getClass 获取当前运行时对象的 Class 对象。
    hashCode 返回对象的 hash 码。
    clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相关属性和方法。两者不同在于深拷贝创建了一个新的对象。
    equals 通过内存地址比较两个对象是否相等,String 类重写了这个方法使用值来比较是否相等。
    toString 返回类名@哈希码的 16 进制。
    notify 唤醒当前对象监视器的任一个线程。
    notifyAll 唤醒当前对象监视器上的所有线程。
    wait 1、暂停线程的执行;2、三个不同参数方法(等待多少毫秒;额外等待多少毫秒;一直等待)3、与 Thread.sleep(long time) 相比,sleep 使当前线程休眠一段时间,并没有释放该对象的锁,wait 释放了锁。
    finalize 对象被垃圾回收器回收时执行的方法。