写点什么

第九周作业

用户头像
Geek_a327d3
关注
发布于: 2020 年 08 月 06 日

请简述JVM垃圾回收原理

具体回收原理与选择的JVM垃圾回收器相关,垃圾回收器可分为两种,串行回收与并行回收。

串行垃圾回收器回收原理:

当JVM内存使用达到设置的阈值就会触发垃圾回收器,首先暂停所有用户线程(STW),进行垃圾回收,恢复用户线程运行。

并行垃圾回收器回收原理:

当JVM内存使用达到设置的阈值就会触发垃圾回收器,首先暂停用户所有线程,标记所有根对象(STW),

运行用户线程,并发标记垃圾,暂停用户线程,重新标记垃圾(STW),并发回收垃圾。



垃圾标记算法:

  1. 可达性算法

  2. 引用计数法

JVM使用可达性算法,因为引用计数算法无法处理复杂的循环引用。



垃圾回收算法:

新生代使用复制算法(新生代朝生夕死)

老年代使用标记整理算法(老年代可回收的对象并不多)



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



设计一个秒杀系统主要挑战有、高并发的流量(带宽),高并发(系统性能),安全(必须到达了秒杀时间才能让用户请求URL进行下单)



以商城项目为例



商品详情

将商品数据填充到页面中,生成静态页面分发到后端服务器,用户请求商品时,只请求对应的页面即可。

例如京东 https://item.jd.com/26594752599.html 请求每个商品时访问的路径都是xxx.html,xxx.html应该就是商品对应的静态文件。



将商品文件分发到CDN上,让用户访问就近的服务,提高响应速度。

但是CDN存在缓存,当商品信息更新时,需要经过 定时任务或者其它服务 将商品打包为一个html分发到各服务器节点,并且更新到CDN服务上,商品信息的实时性会特别不好。



根据场景思考,该功能只为秒杀设计,秒杀之前就会把商品信息完善,并不会轻易改变,秒杀结束后该功能就没有什么用了。所以可以使用商品静态化+CDN。



下单操作

商品的数量有限,实际上可以下单的用户并不是很多,下单功能的访问压力并不是特别大。

可以将页面多余功能去掉,将收货人地址等等功能去掉,待用户秒杀到商品后再让其填写。

后端服务做限流。

安全

为了避免用户直接访问下单页面URL,将URL动态化,即使是秒杀系统的开发者也无法在秒杀之前访问下单页面的URL。

在下单页面URL加入服务端生成的随机数作为参数,在秒杀开始的时候才能得到。

用户头像

Geek_a327d3

关注

还未添加个人签名 2020.04.14 加入

还未添加个人简介

评论

发布
暂无评论
第九周作业