Mynote20241213
MySql 执行顺序
flowchart TD
from子句 --> JOIN子句 --> WHERE子句
--> GROUPBY子句 --> 聚合函数 --> HAVING子句
--> SELECT子句 --> DISTINCT --> ORDER_BY子句 --> LIMIT子句
- FROM子句:
- 首先执行的是
FROM子句,它确定了查询的基本表或派生表(即子查询或连接操作的结果)。
- JOIN子句:
- 接下来,根据
JOIN的类型和条件,执行表之间的连接操作。
- WHERE子句:
WHERE子句在JOIN之后执行,用于过滤结果集,只保留满足条件的行。
- GROUP BY子句:
- 如果有
GROUP BY子句,它将在WHERE子句之后执行,用于将结果集分组。
- 聚合函数:
- 与
GROUP BY子句一起,聚合函数(如COUNT(),SUM(),AVG()等)在WHERE子句之后执行。
- HAVING子句:
HAVING子句在GROUP BY和聚合函数之后执行,用于过滤分组后的结果。
- SELECT子句:
SELECT子句在HAVING子句之后执行,用于选择最终输出的列。
- DISTINCT:
- 如果
SELECT子句中包含DISTINCT关键字,它将在SELECT子句之后执行,用于去除重复的行。
- ORDER BY子句:
ORDER BY子句在SELECT子句之后执行,用于对结果集进行排序。
- LIMIT子句:> - 最后执行的是
LIMIT子句,它用于限制结果集的行数。
Spring Security 认证过程
sequenceDiagram
participant U as 用户
participant S as Spring Security
participant F as 过滤器链
participant A as 认证管理器
participant C as 控制器
participant R as 资源
U->>S: 发起请求 /user
S->>F: 请求到达过滤器链
F->>A: 过滤器链验证认证信息
A->>S: 用户未认证
S->>C: 请求转发到登录页面
C->>U: 返回 /login 页面
U->>S: 用户提交登录表单
S->>A: 认证管理器处理登录
A->>S: 用户认证成功
S->>R: 访问 /user 资源
R->>U: 返回用户数据
在这个时序图中:
U代表用户。S代表Spring Security框架。F代表过滤器链。A代表认证管理器。C代表控制器,负责处理登录页面的逻辑。R代表受保护的/user资源。流程描述如下:
- 用户(U)发起请求访问
/user接口。- Spring Security(S)接收到请求后,将其传递给过滤器链(F)。
- 过滤器链(F)检查请求,并请求认证管理器(A)验证认证信息。
- 认证管理器(A)发现用户未登录,将结果返回给Spring Security(S)。
- Spring Security(S)将请求转发到登录页面的控制器(C)。
- 控制器(C)返回
/login页面给用户(U)。- 用户(U)填写登录表单并提交。
- Spring Security(S)再次将登录请求传递给认证管理器(A)处理。
- 认证管理器(A)验证用户凭证,认证成功后,将结果返回给Spring Security(S)。
- 用户认证成功后,Spring Security(S)允许访问
/user资源(R)。- 资源(R)处理请求并返回用户数据给用户(U)。
这个时序图展示了用户未登录时访问受保护资源的流程,以及用户登录成功后访问资源的过程。请确保你的Markdown渲染器支持Mermaid语法,以便正确显示时序图。