Mynote20241213

MySql 执行顺序

flowchart TD from子句 --> JOIN子句 --> WHERE子句 --> GROUPBY子句 --> 聚合函数 --> HAVING子句 --> SELECT子句 --> DISTINCT --> ORDER_BY子句 --> LIMIT子句
  1. FROM子句
  • 首先执行的是FROM子句,它确定了查询的基本表或派生表(即子查询或连接操作的结果)。
  1. JOIN子句
  • 接下来,根据JOIN的类型和条件,执行表之间的连接操作。
  1. WHERE子句
  • WHERE子句在JOIN之后执行,用于过滤结果集,只保留满足条件的行。
  1. GROUP BY子句
  • 如果有GROUP BY子句,它将在WHERE子句之后执行,用于将结果集分组。
  1. 聚合函数
  • GROUP BY子句一起,聚合函数(如COUNT(), SUM(), AVG()等)在WHERE子句之后执行。
  1. HAVING子句
  • HAVING子句在GROUP BY和聚合函数之后执行,用于过滤分组后的结果。
  1. SELECT子句
  • SELECT子句在HAVING子句之后执行,用于选择最终输出的列。
  1. DISTINCT
  • 如果SELECT子句中包含DISTINCT关键字,它将在SELECT子句之后执行,用于去除重复的行。
  1. ORDER BY子句
  • ORDER BY子句在SELECT子句之后执行,用于对结果集进行排序。
  1. 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资源。

流程描述如下:

  1. 用户(U)发起请求访问/user接口。
  2. Spring Security(S)接收到请求后,将其传递给过滤器链(F)。
  3. 过滤器链(F)检查请求,并请求认证管理器(A)验证认证信息。
  4. 认证管理器(A)发现用户未登录,将结果返回给Spring Security(S)。
  5. Spring Security(S)将请求转发到登录页面的控制器(C)。
  6. 控制器(C)返回/login页面给用户(U)。
  7. 用户(U)填写登录表单并提交。
  8. Spring Security(S)再次将登录请求传递给认证管理器(A)处理。
  9. 认证管理器(A)验证用户凭证,认证成功后,将结果返回给Spring Security(S)。
  10. 用户认证成功后,Spring Security(S)允许访问/user资源(R)。
  11. 资源(R)处理请求并返回用户数据给用户(U)。

这个时序图展示了用户未登录时访问受保护资源的流程,以及用户登录成功后访问资源的过程。请确保你的Markdown渲染器支持Mermaid语法,以便正确显示时序图。