suwakokochiya / miaosha Goto Github PK
View Code? Open in Web Editor NEWThis project forked from qiurunze123/miaosha
秒杀系统设计与实现
This project forked from qiurunze123/miaosha
秒杀系统设计与实现
Springboot 秒杀设计: 一: springboot 环境搭建 ① 集成thymleaf + result 结果封装 ② 集成Mybatis + Druid ③ 集成 Jedis + redis + 通用key封装 二: 登录设计 ① 数据库设计 ② 明文密码二次md5加密 + 全局异常处理器 ③ JRS303参数检验 + 全局异常处理器 ④分布式session 三:实现秒杀功能 ① 秒杀数据库设计 ② 商品列表页设计 ③ 商品详情页设计 ④ 订单详情页 四 : 压测jmeter ① jmeter压测入门 ② 自定义变量与用户测试 ③ 页面优化技术 五:缓存优化提高效率 ① 页面优化+ url缓存+对象缓存 ② 页面静态化 ③ 静态资源 ④ cdn优化 六:接口优化 ① redis预减少库存访问 ② 内存标记减少redis访问 ③ rabbitmq安装与springboot集成 ④rabbitmq异步下单 ⑤ 访问Nginx水平扩展 七: 安全优化 ① 秒杀地址隐藏 ② 数学公式验证码 ③ 接口防刷限流 如何应对互联网大并发 , 如何利用缓存, 如何使用异步 , 如何编写优雅的代码 一: springboot 环境搭建 (springmvc会有大量的配置) 1. 新建project -- maven -- 选择 maven-archtype-quickstart 项目 2.pom.xml文件 主要的 springboot的pom文件 項目直接导入就可以 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> 类的构思讲解: Result类: 结果类Result 类封装成一个通用类,用一个codemsg错误码来直接返回,不需要每次返回再去new一个对象,按照模块来定义错误码 Redis类: 自己封装的 jedis ,使用它自带的temple总觉得不好使 , key的定义保证不重复 生成 set--get--exist......方法自己可以添加 密码 --MD5 二次明文加密处理 设计 密码设计: MD5(MD5(pass明文 + 固定salt) + salt) 处理 二次MD5: 用户端: PASS = MD5 (明文 + 固定 Salt) 服务端: PASS = MD5(用户输入 + 随机Salt) Js 前端进行第一个MD5 , 后端进行第二次 , 后端第二次salt随机生成入库,然后登录时取出对比 =============== 注解JSR303与 自定义注解来完成手机号和登录验证,防刷限流等功能 分布式session : 登录成功之后给用户生成一个类似于sessionid的东西 token 标识用户写到cookie当中传递给客户端,客户端在随后的访问中都在cookie中上传这个token , 然后在服务端拿到这个token来取到用户信息!! 把token uuid标识 存到 redis缓存中 ,设置过期时间,然后别的页面访问的时候依旧根据这个cookie token的值拿到用户信息。 接口防刷限流: 如果有缓存的话 这个功能实现起来就和简单,在一个用户访问接口的时候我们把访问次数写到缓存中,在加上一个有效期。 通过拦截器. 做一个注解 @AccessLimit 然后封装这个注解,可以有效的设置每次访问多少次,有效时间是否需要登录! 数据库采用mybatis:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.