全局说明
# 全局说明
## 找内鬼(非常好用)
```bash
netstat -aon|findstr "xxx"
```
## 老文档

## 为什么永远不用外键?
> 如果使用了外键, 每一次添加数据都要数据库去校验一次数据的合法性, 一旦数据量大了, 数据校验就会及其缓慢, 极大影响整体效率, 一定不能用!!!
## 为什么需要逻辑删除?
> 便于数据恢复
### 做法
```yaml
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
logic-delete-value: 0 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)
```
```java
@TableLogic
private Integer showStatus;
@Override
public void logicDeleteCategories(Long[] catIds) {
//TODO: 当该分类没有被使用的时候才能被删除
baseMapper.deleteBatchIds(Arrays.asList(catIds));
}
// 这是两个不同的类!!!
```
## Object的划分
### PO(Persistent Object) 持久对象
> PO对应着数据库中某个表的一条记录, 多条记录可以使用PO的集合表示, PO不能有任何对数据库的操作
### DO(Domain Object) 领域对象
> 将业务实体抽象出来的类对应的对象
### TO(Transfer Object) 数据传输对象
> 微服务之间通信通过TO对象传输
> 在该项目中, TO置于common微服务, 因为TO是数据传输对象, 多个微服务均有引用, 因此需要声明在common中
### DTO(Data Transfer Object) 数据传输对象
> 简要说明: 泛指展示层和服务层的数据传输对象
### VO(View ObjeCt) 视图对象
> 简要说明: 视图层和控制层之间的传输对象
### BO(Business Object) 业务对象
> 简要说明: 业务逻辑封装而成的对象
### POJO(Plain Ordinary Java Object) 简单无规则Java对象
> 简要说明, 只要是对象, 就是POJO对象, 没有任何特性
### DAO(Data Access Object) 数据访问对象
> 简要说明, DAO对象用于访问数据库
## NGINX端口号监听的原理
> 首先明确, 如果想要监听某个端口号, 我们就需要有一个程序去专门占用这个端口号, 然后通过这个程序进行监听
> NGINX实现多端口监听的原因是其在这些端口号上启动了一个WEB服务, 通过这个WEB服务来监听端口号, 从而实现多端口监听