1 Star 0 Fork 1

lxw / JavaInterview

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
秒杀项目总结.md 14.14 KB
一键复制 编辑 原始数据 按行查看 历史
sihai 提交于 2020-04-20 12:30 . update

1 介绍项目

1)项目整体设计的感受(可以画架构图) 2)你负责了什么,承担了什么角色,做了什么 3)项目描述,最好体现自己的综合素质:如何协调开发,遇到问题如何解决,用什么技术实现了什么功能

2 缓存雪崩

3 问题:秒杀地址不应该爆漏给用户

写脚本,LRU缓存控制请求数量

4 不同数据库的数据读写

分布式锁,消息队列(提高性能,降低耦合度,流量削峰)

5 分布式事物解决方案

6 数据库与redis缓存如何保持一致性

7 秒杀多个步骤如何保证线程安全性

客观锁,悲观锁

8 用的什么测试工具

Redis缓存服务

缓存商品和商品详情信息,如果不存在,则从数据库查询,并且加入到redis缓存,如果存在,直接返回。

RabbitMQ

1)异步订单 2)异步支付 3)订单超时处理(quartz)

缓存的信息:商品信息,商品详情信息,订单信息

查询订单优化

面杀系统架构设计思路

面试经验相关

秒杀系统相关

秒杀架构设计

项目技术点

ssm

activiti

lombok、日志log4j

分布式相关

ehcache

Redis

其他

dubbo

zookeeper

消息队列

RocketMQ

RabbitMQ

kafka

分布式解决方案

分布式锁
分布式事务

微服务

分布式session
分库分表
读写分离

亿级流量架构设计方案

项目工具

git

maven

项目功能点

单点登录

前后端分离

mysql(优化)

生成数据工具:mockaroo

1、如果有子查询,改为连接语句 2、在where条件建立索引:user的id 3、如果有连接关键词,也建立索引:user的id 4、如果有分组或者排序,建立索引:order by time 5、同时也可以建立联合索引

需求1 某个部门查看审核人员的所有审批信息:先查询某个部门所有的审核人员,根据审批建议、审批时间及审批人查询审批信息(审批数据70w)

select u.* , c.* from user u inner join checklog c 
on c.uid == u.id
where u.deptmentId = 1
and time > {1} and time < {2}
and desc like ' %' 

①子查询:先查询部门的用户id然后再查询相关的审批信息 ②没有加索引:70w数据查询用了3w s。 ③给user的id建立索引,时间减少到了1.003s ④然后考虑到子查询,所以,改成连接操作,时间变为0.057s ⑤再给连接字段建立索引,时间变为0.001s ⑥模拟数据增加到300w时间增加到了0.016s,在部门id和用户id建立联合索引,时间降到了0.005s。 ⑦用时间进行排序,建立时间索引。

权限控制(设计、shiro)

线上问题调优(虚拟机,tomcat)

并发问题

Tip:本来有很多我准备的资料的,但是都是外链,或者不合适的分享方式,所以大家去公众号回复【资料】好了。

现在免费送给大家,在我的公众号 好好学java 回复 资料 即可获取。

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、老铁们,关注我的原创微信公众号「好好学java」,专注于Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

2、给俺一个 star 呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lxw46/JavaInterview.git
git@gitee.com:lxw46/JavaInterview.git
lxw46
JavaInterview
JavaInterview
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891