学习完整项目

概述

本文档是针对学习培训机构的项目、网上完整项目、公司内接手项目一步一步的了解并掌握这个项目的手册。

技能

培训机构的项目课中一般会掺杂一些你之前已经会的东西,或者我认为这个功能、思想、技能不应该出现在项目的学习过程的,我就放这里了。

Maven聚合工程搭建

maven的一些配置呀、本地仓库、远程仓库、java 版本、.mvngitmodules

提效工具

1
2
3
代码工具:lombok、mybatisPlus、SwaggerUI
插件:mavenhelper apifox 等等
代码生成:自已项目的代码生成(依赖项目规范)

项目规范

1
2
3
4
阿里巴巴代码规范
代码分层:controller、facade、job、listener、application、domain、infrastructure
基础的:service mapper repository dao VO DTO DO PO request responce
方法名: get list page count save insert remove delete update

通用入参出参

1
2
出参:success、code、message
分页入参、分页出参

统一异常处理

1
2
异常code: 可以参考yudao-cloud的异常code设计  
全局的异常处理:兜底异常

单元测试

1
2
可以参考yudao-cloud的单元测试
有些方法什么也不依赖、有些方法依赖mysql、有些方法依赖redis、有些方法只能mock

简单的安全考虑

1
2
3
4
5
6
7
8
9
10
SQL 注入 → 用预编译
XSS → 转义、CSP(内容安全策略)、HttpOnly
越权 → 必校验用户与数据归属
CSRF → Token
文件上传 → 白名单 + 禁执行
SSRF → 禁内网
反序列化 → 白名单、升级依赖
命令执行 → 别拼命令
路径遍历 → 规范化路径
信息泄露 → 脱敏、隐藏堆栈

容器布署

docker 的使用;

Rancher 的使用;

k8s的使用;

理解业务需求

基本上理解业务需求是什么,比如教育电商系统。基本的业务是什么。用户是谁,商品是什么。这些基本的业务功能。使用一遍。

基础框架

这里是基础框架,如果有特殊功能或者用到某个功能时再去单独学习。

1
2
3
4
5
6
7
8
9
spring cloud alibaba

通信⽅式: http restful
服务注册发现: Nacos
服务限流降级: Sentinel
分布配置中⼼: Nacos
服务⽹关: SpringCloud Gateway
服务之间调⽤: Feign、 Ribbon
链路追踪: Sleuth+Zipkin

组件

1
2
3
4
5
6
7
8
基础设施:ECS、DNS、域名服务、oss存储、短信服务、邮箱服务、支付服务
存储:mysql redis elasticSearch
消息队列: rabbitmq rocketmq
定时任务:xxl-job
日志:ELK
网关层:nginx + lvs + keepalive
devops: k8s docker
代码存储:gitlab

画业务、应用、数据、技术架构图

画架构图中就是了解项目的过程,会理解的越来越深。

数据在哪

mysql 是否分库?

分库后每个库存储的是什么?

redis 里存什么?

es里存什么?

有本地缓存?

常用的设计

短信、邮箱(有限资源)防刷

前端加倒计时(防非技术人员)、增加验证码(增加技术人员成本)、加入redis(缓存)、加入短信策略(业务限制包括黑白名单)。

文件上传

上传是直传给oss还是经过应用服务器,下载是否经过应用服务器

分片上传

线程内传参ThreadLocal

一个线程内,比如登录后的信息,不需要方法参数传递,直接使用ThreadLocal传递。

库存扣减

Jmeter 工具的使用。

库存扣减的方案选择。

分布式锁(redisson)使用。

流量漏斗模型

首页访问量 100万;二级详情页 70万;添加购物车 10万;创建订单 1万; 支付 5千;

登录 2万; 注册 1k;

注册后发放积分或优惠劵

方案选择;

消息中间件mq

购物车存储选型

方案一:存储数据库

方案二:存储前端本地存储-localStorage -sessionStorage

方案三:存储到redis

方案四:存储到redis同步到数据库

订单与支付与分布式事务

分布式事务。

订单表、库存表、优惠劵表。

订单与支付的逻辑。

下单、关单、优惠劵使用、优惠劵释放

第三方支付对接与多渠道设计模式(策略设计模式)

微信、支付宝对接。

策略设计模式。


学习完整项目
http://hanqichuan.com/2026/02/13/系统设计/学习完整项目/
作者
韩启川
发布于
2026年2月13日
许可协议