服务端考试复习

Charlie

1. 题型

多选题
问答题:5道题

2. 问答题整理

前7个是老师最后一节课讲到,但没给答案。

2.1. web开发框架分层,请求处理过程

  • 分层

    1. 控制器层
    2. 业务逻辑层
    3. 数据访问层
  • 处理过程:

    1. Web容器开发的基本单元是Servlet,请求先到servlet。
    2. mapping根据url把请求转到controller,其中spring框架会做参数解析。
    3. controller拿到请求和请求参数,把请求和请求参数传给业务层
    4. 业务层处理业务逻辑,可能会做数据持久化访问DAO层
    5. 业务层把处理结构返回控制器
    6. 控制器把结果放回给servlet
    7. servlet拿到了数据和逻辑视图名,找到视图解析器的第三方库
    8. 视图解析器渲染视图

Screenshot from 2023-10-07 18-38-55

2.2. AOP编程解决什么问题,开发要点

  • 解决问题
    1. 分离横切关注点,把非业务逻辑分离出来,减少对业务代码的侵入
    2. 降低耦合
  • 开发要点
    1. 通知 Advice:切面要做什么以及何时做
      • 时间:方法前/后…
    2. 切点 Pointcut:指定在何处切
      • Spring只支持在方法的前后切
      • 切点表达式指定逻辑
    3. 切面 Aspect:Advice和Pointcut的结合
      • 包含切的所有逻辑
    4. 连接点 Join point:方法、字段修改、构造方法
    5. 引入 introduction:引入新的行为和状态
      • 给对象加入新的方法/状态,但不需要实现新的子类。在原来的对象上动态加入新的方法/状态。
    6. 织入 Weaving:切面应用到目标对象的过程

[[2-面向切面编程#3. 👍AOP术语]]

2.3. spring security web请求保护

使用servlet容器的filter机制拦截web请求,对请求进行权限控制。

2.4. web请求开发有哪些步骤

  1. 设计REST API
      1. 使用标准HTTP动词:GET、PUT、POST、DELETE,映射到CRUD
    1. 使用URL来传达意图
      • 例:请求一批资源复数,单个资源单数
      • 推荐用名词
    2. 请求和响应使用JSON
    3. 使用HTTP状态码来传达效果
      • Create: 201
      • No content: 204
  2. 创建controller,定义请求映射
  3. 在业务逻辑层处理请求,返回响应

[[8-REST API#2.12. Rest API接口设计👍]]

2.5. OAuth2基于授权码的授权,系统组成,处理流程

  • 系统组成
    1. 客户端,第三方应用程序,API所提供的资源的消费者
      • 后端
    2. 授权服务器,在分布式系统中进行统一权限控制
    3. 资源服务器,提供API资源
  • 处理流程(这里的User应该是指浏览器)
    1. 用户使用第三方应用
    2. 第三方应用发现用户未登录,将用户重定向到授权服务器
    3. 授权服务器向用户索取用户名密码
    4. 用户名密码匹配,则授权服务器请求用户授权
    5. 如果用户授权,授权服务器向客户端返回客户端预设的重定向URI和授权码(code)
      • 这里的code是和重定向URI一起返回给浏览器的,所以不安全
    6. 客户端用授权码向授权服务器申请令牌(token),授权服务器确认令牌(token),给客户端返回令牌(token)
      • token不过浏览器,在应用程序服务端和授权服务器之间处理
    7. 客户端调用资源服务器的api,带上令牌(token)
    8. 资源服务器验证令牌(token),返回结果
    9. 客户端把请求结果返回

2.6. Spring集成流解决了什么问题

企业级应用程序必须要与其他的系统协作才能完成其目标。Spring集成流可以使应用程序跨越本身的边界,与其他的应用程序和企业级服务实现集成。

  • 解决问题
    1. 消息处理
    2. 松耦合
    3. 集成模式实现
    4. 企业服务总线
    5. 系统内外的交互
    6. 消息过滤和转换

2.7. 反应式编程的4个接口

  1. Publisher:数据发布者
  2. Subscriber:数据订阅者
  3. Processor:处理器
  4. Subscription:协调

2.8. 不同消息的区别

  1. 反应式编程
    • 一种面向数据流和变化传播的声明式编程范式
    • 只在JVM中流动
  2. spring集成流
    • header:消息头
    • payload:消息体
    • 只在JVM中流动
  3. 消息队列
    • 也有header和payload
    • 要在网络中流动,所以需要消息转换器(序列化/反序列化)

2.9. docker的三部分

本题由liuyaoli12345 (小希波克拉底号) · GitHub 添加。

  • 哪三部分?
    • docker engine:服务端,管理一系列资源的生命周期
    • Client:一个命令行程序
    • Registry:镜像仓库,管理镜像

image.png

2.10. spring集成流,Java的stream与反应式的流区别

  1. spring集成流是企业集成流,也被称为企业集成模式,是一种用于处理和转换在应用程序或服务之间传递的消息的方式;
  2. Java的stream通常都是同步的,并且只能处理有限的数据集,本质上来说,它们只是使用函数来对集合进行迭代的一种方式;
  3. JDK9中的 Flow API和Reator对应反应式流,是一种面向数据流和变化传播的声明式编程范式,主要处理异步数据流(Mono/Flux)。
  • 标题: 服务端考试复习
  • 作者: Charlie
  • 创建于 : 2023-12-28 21:12:00
  • 更新于 : 2024-04-01 10:15:42
  • 链接: https://chillcharlie357.github.io/posts/9b2534b0/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论