用户中心项目实践笔记
项目实践笔记。
项目来自编程导航知识星球 | 鱼皮的编程宝典 (codefather.cn)
注意事项
一定要提前检查node,npm等的版本和源,不然可能会出现很多问题。
如果视频教程里和文档里写的不一样,请以文档里的为标准,不要抄视频里的代码。
二八定律:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的。
企业做项目流程
- 需求分析。
- 设计(概要设计、详细设计)。
- 技术选型。
- 初始化 / 引入需要的技术。
- 写 Demo。
- 写代码(实现业务逻辑)。
- 先做设计
- 代码实现
- 持续优化
- 测试(单元测试)。
- 代码提交 / 代码评审。
- 部署。
- 发布。
初始化项目
- 官方模板。
- Github代码。
- IDEA等工具生成。
项目模板瘦身
- 移除国际化。
- 移除测试用代码。
- 规整项目目录:
- 删除不必要的目录,如 前后端分离项目,后端删除static等前端的文件。
- 新建目录,如
model
,utils
,service
等。
数据库设计
- 不一定要在刚开始的时候就把所有字段都想好,可以后续补充,盲目添加字段容易过度设计。
- 常用字段
- create_time 创建时间(数据插入时间)datetime
- update_time 更新时间(数据更新时间)datetime
- is_delete 是否删除 0 1(逻辑删除)tinyint
- 经典数据库列名是带
_
(下划线)的
编写接口
- restful接口形式:
- 接收参数
- 请求类型(POST、GET)
- 请求体(JSON)
- 返回值
- 注意鉴权。
控制层封装请求
对参数本身进行校验,而不涉及业务逻辑。
前后端优化
通用返回对象,给对象添加补充信息。类似于
1
2
3
4
5
6
7{
"code": 0, //业务状态码
"data": {
//对象内容
},
"msg": //返回信息
}封装全局异常处理
- 定义业务异常类
- 编写全局异常处理器
!!!做优化前一定要先规范传参形式,否则前后端匹配会非常麻烦,坑巨多!!!
多环境
- 本地环境
- 开发环境
- 测试环境
- 预发布环境
- 正式环境
- 沙箱环境/实验环境
跨域问题解决
浏览器为了用户的安全,仅允许向 同域名、同端口 的服务器发送请求。
如何解决跨域?
最直接的方式:把域名、端口改成相同的
添加跨域头
让服务器告诉浏览器:允许跨域(返回 cross-origin-allow 响应头)
1. 网关支持(Nginx)
1 | # 跨域配置 |
2. 修改后端服务
配置 @CrossOrigin 注解
添加 web 全局请求拦截器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class WebMvcConfg implements WebMvcConfigurer {
public void addCorsMappings(CorsRegistry registry) {
//设置允许跨域的路径
registry.addMapping("/**")
//设置允许跨域请求的域名
//当**Credentials为true时,**Origin不能为星号,需为具体的ip地址【如果接口不带cookie,ip无需设成具体ip】
.allowedOrigins("http://localhost:9527", "http://127.0.0.1:9527", "http://127.0.0.1:8082", "http://127.0.0.1:8083")
//是否允许证书 不再默认开启
.allowCredentials(true)
//设置允许的方法
.allowedMethods("*")
//跨域允许时间
.maxAge(3600);
}
}定义新的 corsFilter Bean,参考:https://www.jianshu.com/p/b02099a435bd
查漏补缺
- java依赖注入
impl
在Java开发中,通常将后台分成几层,常见的是三层mvc:model、view、controller,模型视图控制层三层,而impl通常处于controller层的service下,用来存放接口的实现类,impl的全称为implement,表示实现的意思。
impl用于实现接口QueryWrapper
queryWrapper是mybatis plus中实现查询的对象封装操作类,他的层级关系如下大致可以看成是构建一个sql语句,如何再用这个语句去查询,由这个类来帮我们构建语句。
Matcher
final
开箱错误
userService
注解
@Data
mock
泛型
java程序中加上Serializable的作用
java中大写的类型和小写的类型的的区别,如Integer和int
java强转
类、接口、枚举、注解区别
java类的结构
super
\
ts import里加{}
JUC和JVM
netstat -ntlp
命令
可以查看哪些端口被哪些进程占用了。ps -ef
命令
可以查看运行的进程的用户,和进程的pid。vim /etc/profile
1
export PATH=$PATH:/root/software/apache-maven-3.9.6/bin
配置环境变量,不同环境变量间用:
分隔
source /etc/profile
刷新环境变量java -jar .\user_center-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
这样子可以指定prod环境运行
对应src/resources/application-prod.yml
jobs
命令
用于查看正在执行的后台进程,但只能看当前终端生效的进程,如果关闭当前终端后,在另一个终端下,jobs
已经无法看到后台跑得程序了,此时利用ps(进程查看命令)。