1 介绍项目 1)项目整体设计的感受(可以画架构图) 2)你负责了什么,承担了什么角色,做了什么 3)项目描述,最好体现自己的综合素质:如何协调开发,遇到问题如何解决,用什么技术实现了什么功能 2 缓存雪崩 3 问题:秒杀地址不应该爆漏给用户 写脚本,LRU缓存控制请求数量 4 不同数据库的数据读写 分布式锁,消息队列(提高性能,降低耦合度,流量削峰) 5 分布式事物解决方案 6 数据库与redis缓存如何保持一致性 7 秒杀多个步骤如何保证线程安全性 客观锁,悲观锁 8 用的什么测试工具 Redis缓存服务 缓存商品和商品详情信息,如果不存在,则从数据库查询,并且加入到redis缓存,如果存在,直接返回。 ##### RabbitMQ 1)异步订单 2)异步支付 3)订单超时处理(quartz) #### 缓存的信息:商品信息,商品详情信息,订单信息 #### 查询订单优化 面杀系统架构设计思路 ### 面试经验相关 - https://github.com/AobingJava/JavaFamily - [互联网公司的面试官是如何360°无死角考察候选人的?(上篇)](https://mp.weixin.qq.com/s/vhP-2Jrd0Ow2wOqImavrIQ) - [互联网公司面试官是如何360°无死角考察候选人的?(下篇)](https://mp.weixin.qq.com/s/_NLRJeM1o_QxtsOxmeSTNA) - [记一位朋友斩获BAT技术专家Offer的面试经历](https://mp.weixin.qq.com/s/AENPcDuVdMAUDtlGM-X8zQ) ### 秒杀系统相关 - [分布式架构图](https://juejin.im/post/5a9ced09518825555f0c72c7) #### 秒杀架构设计 - [秒杀架构设计思路详解](https://blog.csdn.net/qq_35190492/article/details/103105780) - **[秒杀关键细节设计](https://blog.csdn.net/fanrenxiang/article/details/85083243)** ### 项目技术点 #### ssm #### activiti #### lombok、日志log4j ### 分布式相关 - [分布式相关面试题](https://juejin.im/post/5e9591dee51d4546cf7785ca?utm_source=gold_browser_extension) - [扎心!线上服务宕机时,如何保证数据100%不丢失?](https://mp.weixin.qq.com/s/HwAc6o8jdIHQTnE3ghXhIA) #### ehcache - [EhCache在项目中的使用](https://blog.csdn.net/feng_an_qi/article/details/41819865) #### Redis - [redis和数据库一致性](https://blog.csdn.net/gly1256288307/article/details/88739612) - [Redis设计与实现总结文章](https://blog.csdn.net/qq_41594698/category_9067680.html) - [Redis面试题必备:基础,面试题](https://mp.weixin.qq.com/s/3Fmv7h5p2QDtLxc9n1dp5A) - [Redis面试相关:其中包含redis知识](https://blog.csdn.net/qq_35190492/article/details/103105780) - [Redis源码分析](http://cmsblogs.com/?p=4570) - [redis其他数据结构](https://blog.csdn.net/c_royi/article/details/82011208) - [redis面试题](https://github.com/AobingJava/JavaFamily/tree/master/docs/redis) 其他 - [gossip协议](https://www.jianshu.com/p/8279d6fd65bb) - [Raft协议](https://www.jianshu.com/p/aa77c8f4cb5c) #### dubbo - [dubbo教程](https://blog.ouyangsihai.cn/dubbo-yi-pian-wen-zhang-jiu-gou-liao-dubbo-yu-dao-chu-lian.html) - [dubbo源码分析](http://cmsblogs.com/?p=5324) - [dubbo面试题](https://mp.weixin.qq.com/s/PdWRHgm83XwPYP08KnkIsw) - [dubbo面试题2](https://mp.weixin.qq.com/s/Kz0s9K3J9Lpvh37oP_CtCA) #### zookeeper - [什么是zookeeper?](https://mp.weixin.qq.com/s/i2_c4A0146B7Ev8QnofbfQ) - [Zookeeper教程](http://cmsblogs.com/?p=4139) - [zookeeper源码分析](http://cmsblogs.com/?p=4190) - [zookeeeper面试题](https://segmentfault.com/a/1190000014479433) - [zookeeper面试题2](https://juejin.im/post/5dbac7a0f265da4d2c5e9b3b) ### 消息队列 - [为什么要用消息队列?](https://mp.weixin.qq.com/s/fJwhfqWy0cxH74qs_YBiIg) - [* 你们的系统架构中为什么要引入消息中间件?](http://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247484149&idx=1&sn=98186297335e13ec7222b3fd43cfae5a&chksm=fba6eaf6ccd163e0c2c3086daa725de224a97814d31e7b3f62dd3ec763b4abbb0689cc7565b0&scene=21#wechat_redirect) - [哥们,那你说说系统架构引入消息中间件有什么缺点?](https://mp.weixin.qq.com/s/DsowfyzYXcD-OyiL1JOFZw) - [哥们,消息中间件在你们项目里是如何落地的?](https://mp.weixin.qq.com/s/ZAWPRToPQFcwzHBf47jZ-A) - [消息中间件集群崩溃,如何保证百万生产数据不丢失?](https://mp.weixin.qq.com/s/AEn3j2lVJOHZx9yegwTsvw) #### RocketMQ - [RocketMQ简单教程](https://juejin.im/post/5af02571f265da0b9e64fcfd) - [RocketMQ教程](https://mp.weixin.qq.com/s/VAZaU1DuKbpnaALjp_-9Qw) - [RocketMQ源码分析](http://cmsblogs.com/?p=3236) - [RocketMQ面试题](https://blog.csdn.net/dingshuo168/article/details/102970988) #### RabbitMQ - [RabbitMQ教程](https://blog.csdn.net/hellozpc/article/details/81436980) - [RabbitMQ面试题](https://blog.csdn.net/qq_42629110/article/details/84965084) - [RabbitMQ面试题2](https://my.oschina.net/u/4162503/blog/3073693) - [RabbitMQ面试题3](https://blog.csdn.net/jerryDzan/article/details/89183625) #### kafka - [全网最通俗易懂的Kafka入门](https://mp.weixin.qq.com/s/FlSsrzu1FwjBjmlNy5QyOg) - [全网最通俗易懂的Kafka入门2](https://mp.weixin.qq.com/s/opAYVXIJoy4tCWaPcX5u6g) - [kafka入门教程](https://www.orchome.com/kafka/index) - [kafka面试题](https://blog.csdn.net/qq_28900249/article/details/90346599) - [kafka面试题2](http://trumandu.github.io/2019/04/13/Kafka%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%8E%E7%AD%94%E6%A1%88%E5%85%A8%E5%A5%97%E6%95%B4%E7%90%86/) ### 分布式解决方案 - [如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?](https://mp.weixin.qq.com/s/RqBla4rg8ut3zEBKhyBo1w) - [高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?](https://mp.weixin.qq.com/s/r2_o5wa6Gn94NY4ViRnjpA) - [从团队自研的百万并发中间件系统的内核设计看Java并发性能优化](https://mp.weixin.qq.com/s/d4qfu2MxESc1YJV4Ud5mnA) - [支撑日活百万用户的高并发系统,应该如何设计其数据库架构?](https://mp.weixin.qq.com/s/lAB4C1sTpZ9mPEdGp-A7Cg) - [支撑百万连接的系统应该如何设计其高并发架构?](https://mp.weixin.qq.com/s/12MVd1i-ZRyohI4rh9P4uw) - [如何保证消息中间件全链路数据100%不丢失(1)](https://mp.weixin.qq.com/s/uqWIf0MAet_StszuOrZCwQ) - [如何保证消息中间件全链路数据100%不丢失(2)](https://mp.weixin.qq.com/s/9SFrwaCCLnNyuCqP_KQ0zw) - [消息中间件如何实现消费吞吐量的百倍优化?](https://mp.weixin.qq.com/s/vZ4KVC2eGmssnQUyIKgzfw) - [优雅的告诉面试官消息中间件该如何实现高可用架构?](https://mp.weixin.qq.com/s/CSLMgoOr8S3Z5DSk86UZ0g) - [消息中间件如何实现每秒几十万的高并发写入?](https://mp.weixin.qq.com/s/sCRC5h0uw2DWD2MixI6pZw) - [请谈谈写入消息中间件的数据,如何保证不丢失?](https://mp.weixin.qq.com/s/wbqA9vZOCQ0M_N9Q0NXWVg) - [如果让你设计一个消息中间件,如何将其网络通信性能优化10倍以上?](https://mp.weixin.qq.com/s/AzNfb7b6MmNUdGcsrwj9Iw) ##### 分布式锁 - [拜托,面试请不要再问我Redis分布式锁的实现原理](https://mp.weixin.qq.com/s/y_Uw3P2Ll7wvk_j5Fdlusw) - [每秒上千订单场景下的分布式锁高并发优化实践!](https://mp.weixin.qq.com/s/RLeujAj5rwZGNYMD0uLbrg) - [彻底讲清楚ZooKeeper分布式锁的实现原理](https://mp.weixin.qq.com/s/jn4LkPKlWJhfUwIKkp3KpQ) ##### 分布式事务 - [拜托,面试请不要再问我TCC分布式事务的实现原理!](https://mp.weixin.qq.com/s/mIW1_K5fAoa2OlSLdXSHpQ) - [分布式事务如何保障实际生产中99.99%高可用?](https://mp.weixin.qq.com/s/yRDUQtVPz5eqCx961xL6nw) - [TCC-Transaction实战](https://blog.csdn.net/qq_43253123/article/details/83277580) #### 微服务 - [拜托!面试请不要再问我Spring Cloud底层原理](https://mp.weixin.qq.com/s/mOk0KuEWQUiugyRA3-FXwg) - [微服务注册中心如何承载大型系统的千万级访问?](https://mp.weixin.qq.com/s/qjMphuPiihBmU2QtFMIfzw) - [每秒上万并发下的Spring Cloud参数优化实战](https://mp.weixin.qq.com/s/aH0LHgfhxpvp1IY-XbEMWA) - [微服务架构如何保障双11狂欢下的99.99%高可用](https://mp.weixin.qq.com/s/lBeQSSPX7OeWO6SmWYf1Mg) ##### 分布式session https://blog.csdn.net/qq_35620501/article/details/95047642 ##### 分库分表 ##### 读写分离 ### 亿级流量架构设计方案 - [分布式主键算法](https://juejin.im/post/6844904065747402759) - [分布式系统的唯一id生成算法你了解吗?](https://mp.weixin.qq.com/s/dhQ8BCPKfQqMMm9QxpFwow) - [用大白话给你讲小白都能看懂的分布式系统容错架构](https://mp.weixin.qq.com/s/DKf63ZDJQKoEiOmGqn3NxQ) - [亿级流量系统架构之如何支撑百亿级数据的存储与计算](https://mp.weixin.qq.com/s/eqtR9QAMIm3F4QnGut1vrA) - [亿级流量系统架构之如何设计高容错分布式计算系统](https://mp.weixin.qq.com/s/Omzkr-9BoL3GjyiWn9Nhdg) - [亿级流量系统架构之如何设计承载百亿流量的高性能架构](https://mp.weixin.qq.com/s/o8rZwDGkJwPxHsPpBcQh9w) - [亿级流量系统架构之如何设计每秒十万查询的高并发架构](https://mp.weixin.qq.com/s/Fw7WL8BiBrQ9osqqWSwqEw) - [亿级流量系统架构之如何设计全链路99.99%高可用架构](https://mp.weixin.qq.com/s/3-eWMVje_PWnwGmsZZBJog) - [亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?](https://mp.weixin.qq.com/s/8zHlTwTQkl3LNS5beOf5AA) - [亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?](https://mp.weixin.qq.com/s/ThoeXs-Dz7xbs-Nl7Mbfag) - [亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?](https://mp.weixin.qq.com/s/f4We1V8EAIyM8wpvwAHmwQ) - [亿级流量系统架构之如何保证百亿流量下的数据一致性(上)](https://mp.weixin.qq.com/s/hh-kpRLwKRLLK8fG-5jzTQ) - [亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?](https://mp.weixin.qq.com/s/suPMfwaXc4ze_csS2WfzHA) - [亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?](https://mp.weixin.qq.com/s/TdGiiBzaOTo1TeY40NpSTw) ### 项目工具 #### git - [实际开发中的git命令大全](https://www.jianshu.com/p/53a00fafbe99) #### maven ### 项目功能点 #### 单点登录 - [什么是单点登录](https://mp.weixin.qq.com/s/J6YJls05t2C4OGOqHVijhw) - [单点登录机制原理](https://mp.weixin.qq.com/s/LGnUueNC-EuoxiF-8b-TeQ) #### 前后端分离 - [前后端分离概述](https://blog.csdn.net/fuzhongmin05/article/details/81591072) - [前后端分离之JWT用户认证](https://www.jianshu.com/p/180a870a308a) #### mysql(优化) - [MySQL高频面试题](https://mp.weixin.qq.com/s/KFCkvfF84l6Eu43CH_TmXA) - [MySQL查询优化过程](https://mp.weixin.qq.com/s/jtuLb8uAIHJNvNpwcIZfpA) >生成数据工具: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。 ⑦用时间进行排序,建立时间索引。 - [MVCC原理](https://liuzhengyang.github.io/2017/04/18/innodb-mvcc/) - [MySQL锁](https://blog.ouyangsihai.cn/mysql-de-you-yi-shen-qi-suo.html) #### 权限控制(设计、shiro) - [权限控制设计](https://mp.weixin.qq.com/s/WTgz07xDIf9FbAfCDyTheQ) - [shiro相关教程](https://blog.csdn.net/sihai12345/category_9268544.html) - [springboot+vue+shiro前后端分离实战项目](https://blog.csdn.net/neuf_soleil/category_9287210.html) - [shiro挺好的教程](https://how2j.cn/k/shiro/shiro-springboot/1728.html) #### 线上问题调优(虚拟机,tomcat) - [垃圾收集器ZGC](https://juejin.im/post/5dc361d3f265da4d1f51c670) - [jvm系列文章](https://crowhawk.github.io/tags/#JVM) - [* 一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!](https://mp.weixin.qq.com/s/5SeGxKtwp6KZhUKn8jXi6A) - [Java虚拟机调优文章](https://blog.ouyangsihai.cn/categories/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA/) - [利用VisualVM对高并发项目进行性能分析](https://blog.ouyangsihai.cn/shen-ru-li-jie-java-xu-ni-ji-ru-he-li-yong-visualvm-dui-gao-bing-fa-xiang-mu-jin-xing-xing-neng-fen-xi.html#toc-heading-8) - [JVM性能调优](https://www.iteye.com/blog/uule-2114697) - [百亿吞吐量服务的JVM性能调优实战](https://mp.weixin.qq.com/s?__biz=MzIwMzY1OTU1NQ==&mid=2247484236&idx=1&sn=b9743b2d7436f84e4617ff34e07abdd8&chksm=96cd4300a1baca1635a137294bc93c518c033ce01f843c9e012a1454b9f3ea3158fa1412e9da&scene=27&ascene=0&devicetype=android-24&version=26060638&nettype=WIFI&abtest_cookie=BAABAAoACwASABMABAAjlx4AUJkeAFmZHgBomR4AAAA%3D&lang=zh_CN&pass_ticket=%2F%2BLqr9N2EZtrEGLFo9vLA6Eqs89DSJ2CBKoAJFZ%2BBngphEP28dwmMQeSZcUB77qZ&wx_header=1) - [一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程](https://blog.csdn.net/cml_blog/article/details/81057966) - [JVM调优工具](https://www.jianshu.com/p/e36fac926539) #### 性能优化 - [记一次接口压力测试与性能调优](https://zhuanlan.zhihu.com/p/45067134) - [下单接口调优实战,性能提高10倍](https://blog.csdn.net/linsongbin1/article/details/82656887) - [接口性能优化怎么做?](https://blog.csdn.net/justnow_/article/details/105905560) - [记一次接口性能优化实践总结:优化接口性能的八个建议](https://www.cnblogs.com/jay-huaxiao/p/12995510.html) #### 架构设计 - [架构演变](https://segmentfault.com/a/1190000018626163) #### 并发问题 #### Tip:本来有很多我准备的资料的,但是都是外链,或者不合适的分享方式,所以大家去公众号回复【资料】好了。 ![](http://image.ouyangsihai.cn/FszE5cIon6eHHexBEgOSBGBWeoyP) 现在免费送给大家,在我的公众号 **好好学java** 回复 **资料** 即可获取。 有收获?希望老铁们来个三连击,给更多的人看到这篇文章 1、老铁们,关注我的原创微信公众号「**好好学java**」,专注于Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。 ![](http://image.ouyangsihai.cn/FgUUPlQOlQtjbbdOs1RZK9gWxitV) 2、给俺一个 **star** 呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。