常见面试题(一)

缓存系统常见问题

  1. 缓存穿透
    问题描述:
      查询一个一定不存在的数据,因为这个数据不存在,所以永远不会被缓存,所以每次请求都会去请求数据库
    解决方案:
      (1) 采用布隆过滤器:使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤
      (2) 缓存错误值:访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间
  2. 缓存击穿
    问题描述:
      一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增
    解决方案:
      (1) 采用互斥锁:缓存未命中,需要去更新时,先让程序去获取锁,只有获取到锁的线程才有资格去更新缓存KEY。其他没有获取到锁的线程则休眠片刻之后再次去获取最新的缓存数据
      (2) 用不过期:缓存系统不设置过期时间,通过定时任务去同步缓存和数据库的数据
  3. 缓存雪崩
    问题描述:
      设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到数据库,最终导致数据库瞬时压力过大而崩溃。
    解决方案:
      在原有失效时间的基础上增加一个随机时间,这样每个缓存过期时间的重复率就会降低,从而减少缓存雪崩的发生。

Nginx和Tomcat的区别

  1. 存放的文件形式
    Nginx是http服务器,只能解析静态文件(html css js image)。
    Tomcat是web中间件(本质上是一个servlet),能解析jsp和静态文件。
  2. 用途
    nginx可以作为反向代理服务器,负责均衡服务器,静态资源存放服务器。
    tomcat能作为jsp容器使用,静态资源存放服务器。
  3. 性能
    nginx支持5W+并发,tomcat的并发只能在200-400之间。

持续更新…

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JustDoSelf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值