java面试题记录Ⅰ

本文详细介绍了Redis的过期删除策略,包括定期删除和惰性删除,以及如何应对缓存雪崩和穿透问题。此外,探讨了Redis的持久化机制,如RDB和AOF。在消息队列的实现上,提到了Redis的发布订阅功能和List数据结构的应用。同时,文章还涵盖了Java中Object类的关键方法,如hashCode、equals和wait/notify。
摘要由CSDN通过智能技术生成

1.Spring MVC 工作流程

提示:在这里插入图片描述

  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.浏览器输入地址后做了什么?
    在这里插入图片描述
    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 对象被垃圾回收器回收时执行的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值