Skip to content

Commit 59237b8

Browse files
committed
提交代码
1 parent 6f59e5c commit 59237b8

File tree

111 files changed

+14193
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+14193
-1
lines changed

jsDeliver

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Subproject commit 39046118d3b811ccef64cb39532c61c6d0abbc9c
1+
Subproject commit 962ed2e64926fffe23cc13c8306d415611b99d90

seckill/.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/
34+
/.mvn/

seckill/README.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# 高并发秒杀项目
2+
3+
4+
## 项目流程
5+
6+
1. 项目框架搭建
7+
1. SpringBoot环境搭建
8+
2. 集成Thymeleaf,RespBean
9+
3. MyBatis
10+
2. 分布式会话
11+
1. 用户登录
12+
1. 设计数据库
13+
2. 明文密码二次MD5加密
14+
3. 参数校验+全局异常处理
15+
2. 共享Session
16+
1. SpringSession
17+
2. Redis
18+
3. 功能开发
19+
1. 商品列表
20+
2. 商品详情
21+
3. 秒杀
22+
4. 订单详情
23+
4. 系统压测
24+
1. JMeter
25+
2. 自定义变量模拟多用户
26+
3. JMeter命令行的使用
27+
4. 正式压测
28+
1. 商品列表
29+
2. 秒杀
30+
5. 页面优化
31+
1. 页面缓存+URL缓存+对象缓存
32+
2. 页面静态化,前后端分离
33+
3. 静态资源优化
34+
4. CDN优化
35+
6. 接口优化
36+
1. Redis预减库存减少数据库的访问
37+
2. 内存标记减少Redis的访问
38+
3. RabbitMQ异步下单
39+
1. SpringBoot整合RabbitMQ
40+
2. 交换机
41+
7. 安全优化
42+
1. 秒杀接口地址隐藏
43+
2. 算术验证码
44+
3. 接口防刷
45+
8. 主流的秒杀方案
46+
47+
## 软件架构
48+
49+
| 技术 | 版本 | 说明 |
50+
| :---------------------------------------------------: | :---: | :--------------------------------------------------------: |
51+
| Spring Boot | 2.6.4 | |
52+
| MySQL | 8 | |
53+
| [MyBatis Plus](https://github.com/baomidou/generator) | 3.5.1 | |
54+
| Swagger2 | 2.9.2 | Swagger-models2.9.2版本报错,使用的是1.5.22 |
55+
| [Kinfe4j](https://doc.xiaominfo.com) | 2.0.9 | 感觉比Swagger UI漂亮的一个工具,访问地址是ip:端口/doc.html |
56+
| Spring Boot Redis | | |
57+
58+
59+
60+
## 使用说明
61+
62+
登录页面:http://localhost:8080/login/toLogin
63+
64+
接口文档页面:http://localhost:8080/doc.html#/home
65+
66+
代码生成器:https://gitee.com/guizhizhe/code-generator.git
67+
68+
sqldoc:创建表语句和回滚压测数据
69+
70+
sftware:是从B站用户@登就等觉得 下载的一些视频中程序的安装包(我没有使用,我是用的是docker里面)
71+
72+
document:是从B站用户@登就等觉得 下载的系统说明文档,如果根据视频看的话,可以看文档里面,里面的代码是根据视频进度编写的,但是不要复制,pdf会有问题建议手打。
73+
74+
75+
76+
77+
78+
## 注意事项
79+
80+
1. 代码运行时一定要用localhost,原因可以看下CookieUtil类
81+
2. 代码生成时没有加去掉表头,导致代码和视频中不一样,命名也有的不一样,
82+
83+
84+
85+

seckill/pom.xml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>2.6.5</version>
9+
<relativePath/> <!-- lookup parent from repository -->
10+
</parent>
11+
<groupId>com.</groupId>
12+
<artifactId>seckill</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<properties>
15+
<java.version>1.8</java.version>
16+
</properties>
17+
<dependencies>
18+
<dependency>
19+
<groupId>org.springframework.boot</groupId>
20+
<artifactId>spring-boot-starter-thymeleaf</artifactId>
21+
</dependency>
22+
<dependency>
23+
<groupId>org.springframework.boot</groupId>
24+
<artifactId>spring-boot-starter-web</artifactId>
25+
</dependency>
26+
<!-- md5 依赖 -->
27+
<dependency>
28+
<groupId>commons-codec</groupId>
29+
<artifactId>commons-codec</artifactId>
30+
</dependency>
31+
<dependency>
32+
<groupId>org.apache.commons</groupId>
33+
<artifactId>commons-lang3</artifactId>
34+
<version>3.6</version>
35+
</dependency>
36+
37+
<dependency>
38+
<groupId>mysql</groupId>
39+
<artifactId>mysql-connector-java</artifactId>
40+
<scope>runtime</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>com.baomidou</groupId>
44+
<artifactId>mybatis-plus-boot-starter</artifactId>
45+
<version>3.5.1</version>
46+
</dependency>
47+
48+
<dependency>
49+
<groupId>org.projectlombok</groupId>
50+
<artifactId>lombok</artifactId>
51+
<optional>true</optional>
52+
</dependency>
53+
<!-- AMQP依赖 -->
54+
<dependency>
55+
<groupId>org.springframework.boot</groupId>
56+
<artifactId>spring-boot-starter-amqp</artifactId>
57+
</dependency>
58+
<dependency>
59+
<groupId>org.springframework.boot</groupId>
60+
<artifactId>spring-boot-starter-test</artifactId>
61+
<scope>test</scope>
62+
</dependency>
63+
<!-- validation组件 -->
64+
<dependency>
65+
<groupId>org.springframework.boot</groupId>
66+
<artifactId>spring-boot-starter-validation</artifactId>
67+
</dependency>
68+
<!-- spring data redis 依赖 -->
69+
<dependency>
70+
<groupId>org.springframework.boot</groupId>
71+
<artifactId>spring-boot-starter-data-redis</artifactId>
72+
</dependency>
73+
<!-- commons-pool2 对象池依赖 -->
74+
<dependency>
75+
<groupId>org.apache.commons</groupId>
76+
<artifactId>commons-pool2</artifactId>
77+
</dependency>
78+
<!-- spring-session 依赖 -->
79+
<!--<dependency>-->
80+
<!--<groupId>org.springframework.session</groupId>-->
81+
<!--<artifactId>spring-session-data-redis</artifactId>-->
82+
<!--</dependency>-->
83+
</dependencies>
84+
85+
<build>
86+
<plugins>
87+
<plugin>
88+
<groupId>org.springframework.boot</groupId>
89+
<artifactId>spring-boot-maven-plugin</artifactId>
90+
<configuration>
91+
<excludes>
92+
<exclude>
93+
<groupId>org.projectlombok</groupId>
94+
<artifactId>lombok</artifactId>
95+
</exclude>
96+
</excludes>
97+
</configuration>
98+
</plugin>
99+
</plugins>
100+
</build>
101+
102+
</project>

seckill/sqldoc/创建t_user.sql

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
CREATE TABLE t_user(
2+
`id` BIGINT(20) NOT NULL COMMENT '用户ID,手机号码',
3+
`nickname` VARCHAR(255) not NULL,
4+
`password` VARCHAR(32) DEFAULT NULL COMMENT 'MD5(MD5(pass明文+固定salt)+salt)',
5+
`salt` VARCHAR(10) DEFAULT NULL,
6+
`head` VARCHAR(128) DEFAULT NULL COMMENT '头像',
7+
`register_date` datetime DEFAULT NULL COMMENT '注册时间',
8+
`last_login_date` datetime DEFAULT NULL COMMENT '最后一次登录事件',
9+
`login_count` int(11) DEFAULT '0' COMMENT '登录次数',
10+
PRIMARY KEY(`id`)
11+
)
12+
COMMENT '用户表';
13+
------------------------------------------------
14+
CREATE TABLE t_goods(
15+
id BIGINT(20) not NULL AuTO_increment COMMENT '商品ID',
16+
goods_name VARCHAR(16) DEFAULT NULL COMMENT '商品名称',
17+
goods_title VARCHAR(64) DEFAULT NULL COMMENT '商品标题',
18+
goods_img VARCHAR(64) DEFAULT NULL COMMENT '商品图片',
19+
goods_detail LONGTEXT COMMENT '商品详情',
20+
goods_price DECIMAL(10,2) DEFAULT '0.00' COMMENT '商品价格',
21+
goods_stock INT(11) DEFAULT '0' COMMENT '商品库存,-1表示没有限制',
22+
PRIMARY KEY(id)
23+
)
24+
COMMENT '商品表';
25+
------------------------------------------------
26+
CREATE TABLE `t_order` (
27+
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
28+
`user_id` BIGINT(20) DEFAULT NULL COMMENT '用户ID',
29+
`goods_id` BIGINT(20) DEFAULT NULL COMMENT '商品ID',
30+
`delivery_addr_id` BIGINT(20) DEFAULT NULL COMMENT '收获地址ID',
31+
`goods_name` VARCHAR(16) DEFAULT NULL COMMENT '商品名字',
32+
`goods_count` INT(20) DEFAULT '0' COMMENT '商品数量',
33+
`goods_price` DECIMAL(10,2) DEFAULT '0.00' COMMENT '商品价格',
34+
`order_channel` TINYINT(4) DEFAULT '0' COMMENT '1 pc,2 android, 3 ios',
35+
`status` TINYINT(4) DEFAULT '0' COMMENT '订单状态,0新建未支付,1已支付,2已发货,3已收货,4已退货,5已完成',
36+
`create_date` datetime DEFAULT NULL COMMENT '订单创建时间',
37+
`pay_date` datetime DEFAULT NULL COMMENT '支付时间',
38+
PRIMARY KEY(`id`)
39+
)ENGINE = INNODB AUTO_INCREMENT=12 DEFAULT CHARSET = utf8mb4;
40+
COMMENT '订单表'
41+
;
42+
------------------------------------------------
43+
CREATE TABLE `t_seckill_goods`(
44+
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '秒杀商品ID',
45+
`goods_id` BIGINT(20) NOT NULL COMMENT '商品ID',
46+
`seckill_price` DECIMAL(10,2) NOT NULL COMMENT '秒杀家',
47+
`stock_count` INT(10) NOT NULL COMMENT '库存数量',
48+
`start_date` datetime NOT NULL COMMENT '秒杀开始时间',
49+
`end_date` datetime NOT NULL COMMENT '秒杀结束时间',
50+
PRIMARY KEY(`id`)
51+
)ENGINE = INNODB AUTO_INCREMENT=3 DEFAULT CHARSET = utf8mb4
52+
COMMENT '秒杀商品表'
53+
;
54+
------------------------------------------------
55+
CREATE TABLE `t_seckill_order` (
56+
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '秒杀订单ID',
57+
`user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
58+
`order_id` BIGINT(20) NOT NULL COMMENT '订单ID',
59+
`goods_id` BIGINT(20) NOT NULL COMMENT '商品ID',
60+
PRIMARY KEY(`id`)
61+
)ENGINE = INNODB AUTO_INCREMENT=3 DEFAULT CHARSET = utf8mb4
62+
COMMENT '秒杀订单表'
63+
;
64+
------------------------------------------------
65+
-- 添加索引,讲到时在加
66+
ALTER TABLE `seckill`.`t_seckill_order`
67+
ADD UNIQUE INDEX `seckill_uid_gid`(user_id, goods_id) USING BTREE COMMENT '用户ID+商品ID成为唯一索引,';
68+
------------------------------------------------
69+
------------------------------------------------
70+
------------------------------------------------
71+
------------------------------------------------
72+
------------------------------------------------
73+
------------------------------------------------
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-- 删除订单表
2+
DELETE FROM t_order;
3+
DELETE FROM t_seckill_order;
4+
5+
-- 回复订单商品表
6+
UPDATE t_seckill_goods SET stock_count=10;
7+
8+
9+
SELECT * FROM t_seckill_order;
10+
11+
SELECT * FROM t_order;
12+
13+
SELECT * FROM t_seckill_goods;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com;
2+
3+
import org.mybatis.spring.annotation.MapperScan;
4+
import org.springframework.boot.SpringApplication;
5+
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.context.annotation.ComponentScan;
7+
import org.springframework.stereotype.Component;
8+
9+
@SpringBootApplication
10+
@MapperScan("com.mapper")
11+
public class SeckillApplication {
12+
13+
public static void main(String[] args) {
14+
SpringApplication.run(SeckillApplication.class, args);
15+
}
16+
17+
}

0 commit comments

Comments
 (0)