当前位置: 首页 > news >正文

基于springboot vue 电影推荐系统

博主介绍:专注于Java(springboot  ssm 等开发框架) vue  .net  php python(flask Django)  小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1400+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末有源码下载地址

系统实现预览

第4章  架构设计

4.1  系统体系结构

电影推荐系统的结构图4-1所示:

图4-1 系统结构

登录系统结构图,如图4-2所示:

图4-2 登录结构图

系统结构图,如图4-3所示:

图4-3 系统结构图

4.2  数据库实体设计

数据库的功能就是对系统中所有的数据进行存储和管理。所有的数据可以在数据库中产时间的进行存储,方便用户的使用。而且所有的数据库中的数据也应该具有一定的共享性,任何的系统可以对一些数据进行使用,同时还应该保持一定的独立性,每一个数据库中的数据都有很强的安全性,可以被很好的存放到数据库,没有进行身份的验证是不能对这些数据进行查看和使用的。数据库的设计需要明确每一个实体之间的联系,系统的E-R图如下图所示:

图4-4用户管理实体属性图

电影信息管理实体属性图如图4-5所示。

图4-5电影信息管理实体属性图

4.3  数据库表设计

当电影推荐系统在运行的时候,数据库要能确保自己的独立性,想要哪部分的数据就选择相应的设置选项,对应的数据就会以表格的形式展现出来。当对这一个功能进行设置,他就会与数据库进行连接,会在对话框中弹出相应的数据源。

daily_movie

字段名称

类型

长度

不是null

主键

字段说明

daily_movie_id

int

11

主键

每日电影ID

movie_title

varchar

64

电影名称

alias

varchar

64

别名

director

varchar

64

导演

screenwriter

varchar

64

编剧

performer

varchar

64

演员

type

varchar

64

类型

country

varchar

64

国家

language

varchar

64

语言

particular_year

varchar

64

年份

film_length

varchar

64

片长

release_time

varchar

64

上映时间

official_website

varchar

255

官方网站

idmb_link

varchar

255

IDMB链接

idmb_score

varchar

64

IDMB评分

douban_score

varchar

64

豆瓣评分

awards

varchar

64

获奖情况

movie_poster

varchar

255

影片海报

similar_film_recommendation

varchar

64

相似电影推荐

plot

text

0

剧情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

forum

字段名称

类型

长度

不是null

主键

字段说明

forum_id

mediumint

8

主键

论坛id

display

smallint

5

排序

user_id

mediumint

8

用户ID

nickname

varchar

16

昵称

praise_len

int

10

点赞数

hits

int

10

访问数

title

varchar

125

标题

keywords

varchar

125

关键词

description

varchar

255

描述

url

varchar

255

来源地址

tag

varchar

255

标签

img

text

0

封面图

content

longtext

0

正文

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

avatar

varchar

255

发帖人头像

type

varchar

64

论坛分类

forum_type

字段名称

类型

长度

不是null

主键

字段说明

type_id

smallint

5

主键

分类ID

name

varchar

16

分类名称

description

varchar

255

描述

url

varchar

255

外链地址

father_id

smallint

5

上级分类

icon

varchar

255

分类图标

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

high_score_film

字段名称

类型

长度

不是null

主键

字段说明

high_score_film_id

int

11

主键

高分电影ID

movie_title

varchar

64

电影名称

alias

varchar

64

别名

director

varchar

64

导演

screenwriter

varchar

64

编剧

performer

varchar

64

演员

type

varchar

64

类型

country

varchar

64

国家

language

varchar

64

语言

particular_year

varchar

64

年份

film_length

varchar

64

片长

release_time

varchar

64

上映时间

official_website

varchar

255

官方网站

idmb_link

varchar

255

IDMB链接

idmb_score

varchar

64

IDMB评分

douban_score

varchar

64

豆瓣评分

awards

varchar

64

获奖情况

movie_poster

varchar

255

影片海报

similar_film_recommendation

varchar

64

相似电影推荐

plot

text

0

剧情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

ordinary_users

字段名称

类型

长度

不是null

主键

字段说明

ordinary_users_id

int

11

主键

普通用户ID

user_number

varchar

64

用户编号

user_name

varchar

64

用户姓名

user_gender

varchar

64

用户性别

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

popular_movies

字段名称

类型

长度

不是null

主键

字段说明

popular_movies_id

int

11

主键

热门电影ID

movie_title

varchar

64

电影名称

alias

varchar

64

别名

director

varchar

64

导演

screenwriter

varchar

64

编剧

performer

varchar

64

演员

type

varchar

64

类型

country

varchar

64

国家

language

varchar

64

语言

particular_year

varchar

64

年份

film_length

varchar

64

片长

release_time

varchar

64

上映时间

official_website

varchar

255

官方网站

idmb_link

varchar

255

IDMB链接

idmb_score

varchar

64

IDMB评分

douban_score

varchar

64

豆瓣评分

awards

varchar

64

获奖情况

movie_poster

varchar

255

影片海报

similar_film_recommendation

varchar

64

相似电影推荐

plot

text

0

剧情

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

praise

字段名称

类型

长度

不是null

主键

字段说明

praise_id

int

10

主键

点赞ID

user_id

int

11

点赞人

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

source_table

varchar

255

来源表

source_field

varchar

255

来源字段

source_id

int

10

来源ID

status

tinyint

1

点赞状态1为点赞,0已取消

第5章  系统实现

5.1  系统功能模块

电影推荐系统,在系统的首页可以查看首页、影片交流、公告栏、影片资讯、每日电影、高分电影、热门电影、我的跳转到后台等信息进行相关操作,如图5-1所示。 

图5-1系统首页界面图

核心系统类

package com.project.demo.controller.base;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.project.demo.service.base.BaseService;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/***/
@Slf4j
public class BaseController<E, S extends BaseService<E>> {@Setterprotected S service;@PostMapping("/add")@Transactionalpublic Map<String, Object> add(HttpServletRequest request) throws IOException {service.insert(service.readBody(request.getReader()));return success(1);}@Transactionalpublic Map<String, Object> addMap(Map<String,Object> map){service.insert(map);return success(1);}@PostMapping("/set")@Transactionalpublic Map<String, Object> set(HttpServletRequest request) throws IOException {service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));return success(1);}@RequestMapping(value = "/del")@Transactionalpublic Map<String, Object> del(HttpServletRequest request) {service.delete(service.readQuery(request), service.readConfig(request));return success(1);}@RequestMapping("/get_obj")public Map<String, Object> obj(HttpServletRequest request) {Query select = service.select(service.readQuery(request), service.readConfig(request));List resultList = select.getResultList();if (resultList.size() > 0) {JSONObject jsonObject = new JSONObject();jsonObject.put("obj",resultList.get(0));return success(jsonObject);} else {return success(null);}}@RequestMapping("/get_list")public Map<String, Object> getList(HttpServletRequest request) {Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));return success(map);}@RequestMapping("/list_group")public Map<String, Object> listGroup(HttpServletRequest request) {Map<String, Object> map = service.selectToList(service.readQuery(request), service.readConfig(request));return success(map);}@RequestMapping("/bar_group")public Map<String, Object> barGroup(HttpServletRequest request) {Map<String, Object> map = service.selectBarGroup(service.readQuery(request), service.readConfig(request));return success(map);}@RequestMapping(value = {"/count_group", "/count"})public Map<String, Object> count(HttpServletRequest request) {Query count = service.count(service.readQuery(request), service.readConfig(request));return success(count.getResultList());}@RequestMapping(value = {"/sum_group", "/sum"})public Map<String, Object> sum(HttpServletRequest request) {Query count = service.sum(service.readQuery(request), service.readConfig(request));return success(count.getResultList());}@RequestMapping(value = {"/avg_group", "/avg"})public Map<String, Object> avg(HttpServletRequest request) {Query count = service.avg(service.readQuery(request), service.readConfig(request));return success(count.getResultList());}@PostMapping("/upload")public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {log.info("进入方法");if (file.isEmpty()) {return error(30000, "没有选择文件");}try {//判断有没路径,没有则创建String filePath = System.getProperty("user.dir") + "\\target\\classes\\static\\upload\\";File targetDir = new File(filePath);if (!targetDir.exists() && !targetDir.isDirectory()) {if (targetDir.mkdirs()) {log.info("创建目录成功");} else {log.error("创建目录失败");}}
//            String path = ResourceUtils.getURL("classpath:").getPath() + "static/upload/";
//            String filePath = path.replace('/', '\\').substring(1, path.length());String fileName = file.getOriginalFilename();File dest = new File(filePath + fileName);log.info("文件路径:{}", dest.getPath());log.info("文件名:{}", dest.getName());file.transferTo(dest);JSONObject jsonObject = new JSONObject();jsonObject.put("url", "/api/upload/" + fileName);return success(jsonObject);} catch (IOException e) {log.info("上传失败:{}", e.getMessage());}return error(30000, "上传失败");}@PostMapping("/import_db")public Map<String, Object> importDb(@RequestParam("file") MultipartFile file) throws IOException {service.importDb(file);return success(1);}@RequestMapping("/export_db")public void exportDb(HttpServletRequest request, HttpServletResponse response) throws IOException {HSSFWorkbook sheets = service.exportDb(service.readQuery(request), service.readConfig(request));response.setContentType("application/octet-stream");response.setHeader("Content-disposition", "attachment;filename=employee.xls");response.flushBuffer();sheets.write(response.getOutputStream());sheets.close();}public Map<String, Object> success(Object o) {Map<String, Object> map = new HashMap<>();if (o == null) {map.put("result", null);return map;}if (o instanceof List) {if (((List) o).size() == 1) {o =  ((List) o).get(0);map.put("result", o);}else {String jsonString = JSONObject.toJSONString(o);JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));map.put("result", objects);}} else if (o instanceof Integer || o instanceof String) {map.put("result", o);} else {String jsonString = JSONObject.toJSONString(o);JSONObject jsonObject = JSONObject.parseObject(jsonString);JSONObject j = service.covertObject(jsonObject);map.put("result", j);}return map;}public Map<String, Object> error(Integer code, String message) {Map<String, Object> map = new HashMap<>();map.put("error", new HashMap<String, Object>(4) {{put("code", code);put("message", message);}});return map;}
}

用户注册,在用户注册页面可以填写账号、密码、姓名、昵称、手机等信息进行注册操作,如图5-2所示。在个人中心页面可以填写学号、密码、手机等信息进行更新操作,如图5-3所示。

图5-2学生注册界面图

图5-3个人中心界面图

新闻信息,在新闻信息页面中可以查看新闻信息标题、新闻信息名称、图片、新闻内容、发布时间、账号、社长姓名等信息,如图5-4所示。

图5-4新闻信息界面图

电影信息,在电影信息页面可以查看电影名称、别名、导演、编剧、演员、类型、语言、国家等信息进行添加,如图5-5所示。

图5-5电影信息界面图

5.2  用户功能模块

用户登录进入系统后台可以对首页、影片交流、公告栏、影片资讯、每日电影、高分电影、热门电影、我的等信息进行相应的操作管理,如图5-6所示。

图5-6用户功能界面图

每日电影列表,在每日电影页面中可以查看电影名称、类型、年份、豆瓣评分等信息,如图5-7所示。

图5-7每日电影界面图

大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

相关文章:

基于springboot vue 电影推荐系统

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…...

八、特殊类型异常机制

特殊类型&异常机制 数据类型枚举类型匿名类、单例类和伴生对象匿名类单例类伴生对象 委托模式密封类型异常机制异常的使用异常的处理 数据类型 对于那些只需要保存数据的类型&#xff0c;我们常常需要为其重写toString、equals等函数&#xff0c;针对于这种情况下&#xf…...

虾皮Shopee Android面试题及参考答案

HTTP 状态码有哪些? HTTP 状态码是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。主要分为五大类: 1xx 信息性状态码:表示服务器正在处理请求,这些状态码是临时的响应,主要用于告诉客户端请求已经被接收,正在处理中。例如,100 Continue 表示客户端应当继续…...

Docker Compose 部署大模型GPU集群:高效分配与管理算力资源

Docker Compose 部署大模型GPU集群&#xff1a;高效分配与管理算力资源 文章目录 Docker Compose 部署大模型GPU集群&#xff1a;高效分配与管理算力资源一 Dockerfile 编写二 Dockerfile 示例三 分配GPU资源1&#xff09;GPU分配&#xff1a;指定count2&#xff09;GPU分配&am…...

直立行走机器人技术概述

直立行走机器人技术作为现代机器人领域的重要分支&#xff0c;结合了机械工程、计算机科学、人工智能、传感技术和动态控制等领域的最新研究成果。随着技术的不断发展&#xff0c;直立行走机器人在救灾、医疗、家庭辅助等领域开始发挥重要作用。本文旨在对直立行走机器人的相关…...

【Linux】wsl虚拟机时间和实际时间不符合

本文首发于 ❄️慕雪的寒舍 偶然遇到了这个问题&#xff0c;触发原因是电脑在开启wsl的情况下进入了 休眠 模式&#xff0c;且在无网络情况下几天不使用。 然后开启wsl&#xff0c;发现git log显示最新commit的提交时间是明天&#xff0c;给我吓一跳&#xff0c;然后才发现原来…...

初识算法 · 滑动窗口(1)

目录 前言&#xff1a; 长度最小的子数组 题目解析 算法原理 算法编写 无重复长度的最小字符串 题目解析 算法原理 算法编写 前言&#xff1a; 本文开始&#xff0c;介绍的是滑动窗口算法类型的题目&#xff0c;滑动窗口本质上其实也是双指针&#xff0c;但是呢&#…...

nginx和gateway的关系和区别

在技术选型时&#xff0c;选择 Nginx 和 Spring Cloud Gateway&#xff08;或简称为 Gateway&#xff09;主要取决于具体应用场景和技术需求。下面是两者的一些关键差异和适用场景。 一、Nginx 概念 Nginx 是一个高性能的 Web 服务器和反向代理服务器&#xff0c;常被用作静…...

【算法笔记】滑动窗口算法原理深度剖析

【算法笔记】滑动窗口算法原理深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;算法笔记 文章目录 【算法笔记】滑动窗口算法原理深度剖析前言一.长度最小的子数组1.1题目1.2思路分析1.3算法流程1.4正确性证明1.5代码实现 二.无重复…...

4S店4S店客户管理系统小程序(lw+演示+源码+运行)

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。手机具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要求的操作系统是非…...

rabbitMq------连接管理模块

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言管理的字段连接内存管理对象 前言 我们的网络通信框架使用的muduo库&#xff0c;而在mudu库中是已经有了连接的概念&#xff0c;但是我们呢还有一个信道的概念…...

【部署项目】禹神:前端项目部署上线笔记

1.项目打包 ● 我们开发用的脚手架其实就是一个微型服务器&#xff0c;用于&#xff1a;支撑开发环境、运行代理服务器等。 ● 打包完的文件中不存在&#xff1a;.vue、.jsx、.less 等文件&#xff0c;而是&#xff1a;html、css、js等。 ● 打包后的文件&#xff0c;不再借助…...

力扣10.1

983. 最低票价 在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 &#xff1a; 一张 为期一天 的通行证售…...

TypeScript 算法手册 - 【冒泡排序】

文章目录 TypeScript 算法手册 - 冒泡排序1. 冒泡排序简介1.1 冒泡排序定义1.2 冒泡排序特点 2. 冒泡排序步骤过程拆解2.1 比较相邻元素2.2 交换元素2.3 重复过程 3. 冒泡排序的优化3.1 提前退出3.2 记录最后交换位置案例代码和动态图 4. 冒泡排序的优点5. 冒泡排序的缺点总结 …...

计算机网络——http和web

无状态服务器——不维护客户端 怎么变成有状态连接 所以此时本地建立代理—— 若本地缓存了——但是服务器变了——怎么办&#xff1f;...

使用 Light Chaser 进行大屏数据可视化

引言 在当今数据驱动的世界中&#xff0c;数据可视化变得越来越重要。Light Chaser 是一款基于 React 技术栈的大屏数据可视化设计工具&#xff0c;通过简单的拖拽操作&#xff0c;你可以快速生成漂亮、美观的数据可视化大屏和看板。本文将介绍如何使用 Light Chaser 进行数据…...

Java中的异常概念

在Java编程中&#xff0c;异常&#xff08;Exception&#xff09;是一种特殊的情况&#xff0c;它在程序执行期间发生&#xff0c;会干扰程序正常的流程。 ## 一、异常的产生原因 1. **用户输入错误** - 例如&#xff0c;当一个程序期望用户输入一个整数&#xff0c;而用户…...

flutter_鸿蒙next_Dart基础②List

目录 代码示例 代码逐段解析 1. 创建和打印列表 2. 强类型列表 3. 创建可扩展的空列表 4. 创建填充列表 5. 列表扩展 6. 使用可选展开操作符 7. 获取列表长度 8. 列表反转 9. 添加多个元素 10. 移除元素 11. 根据索引移除元素 12. 在特定位置插入元素 13. 清空列…...

【2024保研经验帖】武汉大学测绘遥感国家重点实验室夏令营(计算机向)

前言 先说本人背景&#xff1a;末211&#xff0c;rk前5%&#xff0c;无科研&#xff0c;有几个竞赛(数模、机器人等) 武大的国重是我参加的第二个夏令营&#xff0c;武大国重这次有提前开几个分会场&#xff0c;一个在中南大学&#xff0c;一个在吉林大学&#xff0c;还有在兰…...

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…...

Ubuntu24.04远程开机

近来在几台机器上鼓捣linux桌面&#xff0c;顺便研究一下远程唤醒主机。 本篇介绍Ubuntu系统的远程唤醒&#xff0c;Windows系统的唤醒可搜索相关资料。 依赖 有远程唤醒功能的路由器&#xff08;当前一般都带这个功能&#xff09;有线连接主机&#xff08;无线连接有兴趣朋友…...

网络编程(12)——完善粘包处理操作(id字段)

十二、day12 之前的粘包处理是基于消息头包含的消息体长度进行对应的切包操作&#xff0c;但并不完整。一般来说&#xff0c;消息头仅包含数据域的长度&#xff0c;但是如果要进行逻辑处理&#xff0c;就需要传递一个id字段表示要处理的消息id&#xff0c;当然可以不在包头传i…...

「3.3」虫洞 Wormholes

多组数据不清零——见祖宗 「3.3」虫洞 Wormholes 问题背景 「一本通3.3 练习2」 题目描述 John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边&#xff0c;并可以使你返回到过去的一个时刻&#xff08;相对你进入虫洞之前&#xff09;。John 的每…...

网页篡改防御方法

网页篡改防御方法 将服务器安全补丁升级到最新版 操作系统、应用程序、数据库等都需要使用最新的安全补丁&#xff0c;打补丁主要是为防止攻击者利用缓冲溢出和设计缺陷等进行攻击。 封闭未使用但已经开放的网络服务端口及未使用的服务 对于Windows Server 2003操作系统&am…...

Pikachu-Cross-Site Scripting-xss盲打

xss盲打&#xff0c;不是一种漏洞类型&#xff0c;而是一个攻击场景&#xff1b;在前端、或者在当前页面是看不到攻击结果&#xff1b;而是在后端、在别的页面才看到结果。 登陆后台&#xff0c;查看结果&#xff1b;...

JAVA思维提升案例5

抢红包案例&#xff1a; 要求&#xff1a; 一个大V直播时发起了抢红包活动&#xff0c;分别有&#xff1a;9、666、188、520、99999五个红包。 请模拟粉丝来抽奖&#xff0c;按照先来先得&#xff0c;随机抽取&#xff0c;抽完即止&#xff0c;注意&#xff1a;一个红包只能被…...

PostgreSQL的字符集

PostgreSQL的字符集 PostgreSQL 支持多种字符集&#xff08;character sets&#xff09;&#xff0c;也称为编码&#xff08;encoding&#xff09;。字符集决定了数据库存储和处理文本数据的方式。在创建数据库时&#xff0c;可以指定数据库的字符集&#xff0c;或者使用默认的…...

CUDA 参考文章

CUDA&#xff1a;NVCC编译过程和兼容性详解_nvcc把cuda代码转换成什么-CSDN博客https://blog.csdn.net/fb_help/article/details/80462853 1、CUDA&#xff1a;NVCC编译过程和兼容性详解 CUDA&#xff1a;NVCC编译过程和兼容性详解 https://codeyarns.com/2014/03/03/how-to-sp…...

强缓存和协商缓存的区别

强缓存和协商缓存是Web开发中用于优化页面加载性能的两种主要缓存机制&#xff0c;它们之间存在显著的区别。以下是对这两种缓存机制的详细比较&#xff1a; 一、定义与工作原理 强缓存 定义&#xff1a;强缓存是指在浏览器发送请求前&#xff0c;先检查本地缓存中是否存在可用…...

工控系统组成与安全需求分析

目录 工控系统安全威胁与需求分析工业控制系统安全需求分析 工控系统安全威胁与需求分析 工业控制系统是由各种控制组件监测组件数据处理与展示组件共同构成的&#xff0c;对工业生产过程进行控制和监控的业务流程管控系统。 就是现在有很多工厂&#xff0c;它比如说要生产鞋…...