第 9 周作业

用户头像
Vincent
关注
发布于: 2020 年 10 月 11 日



  • 请简述 JVM 垃圾回收原理。

  • 回收堆上的数据

  • 利用大部分对象生命周期很短这个特点,使用分代回收算法

  • 分代回收算法

  • 年轻代

  • 分成伊甸区和生存区,生存区有两部分S0区和S1区

  • 对象首先分配在伊甸区

  • 满了后,进行垃圾回收,把存活的放到生存区S0

  • 后续继续在伊甸区分配

  • 再次满,把伊甸区和S0回收都放入S1区,S1和S0互换

  • 一直重复,每次回收都会对相应的对象标记一次年龄,当年龄到达一次次数就把对象放入老年区

  • 老年区

  • 老年区满了后进行垃圾回收,清理老年区的数据

  • 具体的回收算法有

  • 标记-清除

  • 利用可达性算法找出需要回收和不需要回收的,需要回收的对象进行清除操作

  • 复制

  • 利用可达性算法找出需要回收和不需要回收的,不需要回收的对象整体复制到另一个区域

  • 主要用在年轻代的伊甸区和生存区

  • 压缩

  • 利用可达性算法找出需要回收和不需要回收的,需要回收的对象进行清除操作,不需要回收的压缩到一起,方便后继的对象分配

  • 主要用在老年代

  • 设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?

  • 主要挑战

  • 后端瞬时请求大

  • 服务负载高

  • DB负载高

  • 网络流量大

  • 核心架构方案或思路

  • 减少请求

  • 秒杀的商品数量是有限制的,所有只有前N个请求是有效的,后续的请求可以直接拒绝不需要流转到后端

  • 限频

  • 异步排队

  • 操作极简

  • 秒杀时只处理下单,其它操作可以前置或是后置,如填写收货地址,可以在秒杀前提示用户先填写收货地址。如付款,可以提示用户可以晚点付款。

  • 缓存

  • 对于静态资源秒杀前是可以准备好具不需要改变的,可以提前缓存起来,减少请求流量

  • 浏览器本地缓存

  • CDM缓存

  • 服务端本地缓存

  • 服务端分布式缓存

  • 安全性

  • 防止提前秒杀

  • 前端铵钮置灰,没到时间铵钮是不可用

  • 后端判断时间,没到时间不执行后续流程直接报错

  • 隐藏秒杀信息,秒杀开始时才给出秒杀信息

  • 商品信息放入CDN缓存中,秒杀开始前10分钟再更新缓存



用户头像

Vincent

关注

还未添加个人签名 2018.07.06 加入

上个课还要写作业,哎,挺好,挺好。

评论

发布
暂无评论
第9周作业