简述分离器系统的工作运行过程(从舷外排放和排油两个工况进行阐述),试画出流质流程方框图。
时间: 2024-06-01 14:09:46 浏览: 12
分离器系统是船舶上的重要设备之一,主要用于将船舶上从机舱中排放的油水混合物进行分离,将油和水分离开来,以便进行处理和处理。
从舷外排放的工况下,船舶上的污水、油水混合物等会被排放到船舶的油水分离器中,通过离心力和重力的作用,将油和水分离开来。分离器中的离心鼓会将混合液体分离成三个部分:油、水和固体颗粒。油会被收集并存放在油箱中,水则会被放回海洋中,固体颗粒则会被存放在分离器中的固体收集器中。
排油的工况下,船舶上的油舱中的油会被泵送到分离器中进行处理。分离器中的离心鼓会将油和水分离开来,油会被收集并存放在油箱中,水则会被放回海洋中。
流程方框图如下:
船舶排放 --> 油水分离器 --> 离心鼓分离 --> 收集油 --> 放回海洋的水 --> 固体颗粒收集器
船舶排油 --> 油水分离器 --> 离心鼓分离 --> 收集油 --> 放回海洋的水
相关问题
简述spring mvc单个拦截器和多个拦截器的工作流程
Spring MVC 的拦截器是一种可插拔的组件,它可以在请求到达控制器之前或者返回视图之前对请求进行处理。Spring MVC 支持单个拦截器或者多个拦截器,下面分别介绍它们的工作流程。
1. 单个拦截器的工作流程
单个拦截器的工作流程如下:
- 当一个请求到达 DispatcherServlet 时,DispatcherServlet 会创建一个 HandlerExecutionChain 对象,该对象包含了一个或多个处理器拦截器和一个处理器(即控制器)。
- 在执行处理器之前,DispatcherServlet 会调用拦截器的 preHandle 方法,如果该方法返回 true,则继续执行下一个拦截器或者执行处理器。
- 在执行完处理器之后,DispatcherServlet 会调用拦截器的 postHandle 方法,该方法可以修改 ModelAndView 对象,但不能改变视图。
- 当视图渲染完成后,DispatcherServlet 会调用拦截器的 afterCompletion 方法,该方法可以进行一些资源清理操作。
2. 多个拦截器的工作流程
多个拦截器的工作流程类似于单个拦截器的工作流程,只是多了一些拦截器的调用。
- 当一个请求到达 DispatcherServlet 时,DispatcherServlet 会创建一个 HandlerExecutionChain 对象,该对象包含了多个处理器拦截器和一个处理器(即控制器)。
- 在执行处理器之前,DispatcherServlet 会按照拦截器的声明顺序调用每个拦截器的 preHandle 方法,如果有任何一个拦截器的 preHandle 方法返回 false,则停止拦截器的执行,并返回错误视图。
- 在执行完处理器之后,DispatcherServlet 会按照拦截器的声明顺序倒序调用每个拦截器的 postHandle 方法,该方法可以修改 ModelAndView 对象,但不能改变视图。
- 当视图渲染完成后,DispatcherServlet 会按照拦截器的声明顺序倒序调用每个拦截器的 afterCompletion 方法,该方法可以进行一些资源清理操作。
简述若依框架前后端不分离版本登录功能是如何实现的,代码逻辑和系统流程图是怎样的
若依框架前后端不分离版本的登录功能一般是基于 Spring Security 实现的,具体实现步骤如下:
1. 用户在前端页面输入用户名和密码,点击登录按钮。前端将用户名和密码通过接口请求发送到后端。
2. 后端接收到请求后,首先进行用户名密码的校验。校验通过后,生成一个 Token,并将 Token 存储到 Redis 缓存中,同时将 Token 返回给前端。
3. 前端将 Token 存储到本地存储中,以便后续的请求都可以携带 Token。
4. 用户再次请求时,前端会将 Token 携带在请求头中发送给后端。
5. 后端接收到请求后,首先从 Redis 缓存中验证 Token 的合法性,如果验证通过,就允许用户访问资源,否则拒绝访问。
以下是代码逻辑和系统流程图:
1. 前端代码逻辑:
```
// 登录按钮点击事件
$('#login-btn').click(function() {
// 获取用户名和密码
var username = $('#username').val();
var password = $('#password').val();
// 发送登录请求
$.ajax({
url: '/login',
type: 'post',
data: {
username: username,
password: password
},
success: function(data) {
// 将 Token 存储到本地存储中
localStorage.setItem('token', data.token);
// 跳转到首页
window.location.href = '/index';
},
error: function() {
alert('用户名或密码错误!');
}
});
});
```
2. 后端代码逻辑:
```
// 登录接口
@PostMapping("/login")
public R login(@RequestBody LoginVo loginVo) {
// 校验用户名和密码
boolean isValid = userService.checkLogin(loginVo.getUsername(), loginVo.getPassword());
if (!isValid) {
return R.error("用户名或密码错误!");
}
// 生成 Token
String token = UUID.randomUUID().toString();
// 将 Token 存储到 Redis 缓存中
redisTemplate.opsForValue().set(token, loginVo.getUsername(), 30, TimeUnit.MINUTES);
// 返回 Token
return R.ok().put("token", token);
}
// 接口权限校验
@GetMapping("/user/info")
@PreAuthorize("hasAuthority('sys:user:info')")
public R userInfo() {
// 从请求头中获取 Token
String token = request.getHeader("Authorization");
if (StringUtils.isBlank(token)) {
return R.error(HttpStatus.UNAUTHORIZED.value(), "Token 不能为空!");
}
// 从 Redis 缓存中验证 Token 的合法性
String username = redisTemplate.opsForValue().get(token);
if (StringUtils.isBlank(username)) {
return R.error(HttpStatus.UNAUTHORIZED.value(), "Token 不合法或已过期!");
}
// 返回用户信息
return R.ok().put("username", username);
}
```
3. 系统流程图:
![若依框架前后端不分离版本登录功能系统流程图](https://img-blog.csdnimg.cn/img_convert/9f6c0b7d1c4e7c3c6b5e0876a1eb7dfe.png)
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)