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

maven的基本学习

maven

https://www.bilibili.com/video/BV14j411S76G?p=1&vd_source=5c648979fd92a0f7ba8de0cde4f02a6e

1.简介

1.1介绍

Maven翻译为"专家"、“内行”,是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目,现为由Apache 软件基金会主持的独立Apache 项目。

通过Maven,可以帮助我们做:

  • 项目的自动构建,包括代码的编译、测试、打包、安装、部署等操作。
  • 依赖管理,项目使用到哪些依赖,可以快速完成导入。
    我们之前并没有讲解如何将我们的项目打包为Jar文件运行,同时,我们导入依赖的时候,每次都要去下载对应的Jar包,这样其实是很麻烦的,并且还有可能一个Jar包依赖于另一个Jar包,就像之前使用JUnit一样,因此我们需要一个更加方便的包管理机制。

Maven也需要安装环境,但是IDEA已经自带了Maven环境,因此我们不需要再去进行额外的环境安装((无IDEA也能使用Maven,但是配置过程很麻烦,并且我们现在使用的都是IDEA的集成开发环境,所以这里就不讲解Maven命令行操作了)我们直接创建一个新的Maven项目即可。

1.2创建一个maven项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9m7b332o-1690375786144)(maven学习.assets/image-20230726165124192.png)]

其实本身就是一个Java项目。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1OMCZvc-1690375786145)(maven学习.assets/image-20230726165304209.png)]

maven的项目结构

  • test是集合junit结合在一起进行使用的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5yrges6P-1690375786145)(maven学习.assets/image-20230726165319415.png)]

1.3组成

groupId 、artifactId 、 version这三个元素合在一起,用于唯一区别每个项目,别人如果需要将我们编写的代码作为依赖,那么就必须通过这三个元素来定位我们的项目,我们称为一个项目的基本坐标,所有的项目一般都有自己的Maven坐标,因此我们通过
Maven导入其他的依赖只需要填写这三个基本元素就可以了,无需再下载Jar文件,而是Maven自动帮助我们下载依赖并导入。

  • groupId一般用于指定组名称,命名规则一般和包名一致,比如我们这里使用的是org.example ,一个组下面可以有很多个项目。
  • artifactId 一般用于指定项目在当前组中的唯一名称,也就是说在组中用于区分于其他项目的标记。定0 –
  • version 代表项目版本,随着我们项目的开发和改进,版本号也会不断更新,就像LOL一样,每次赛季更新都会有一个大版本更新,我们的Maven项目也是这样,我们可以手动指定当前项目的版本号,其他人使用我们的项目作为依赖时,也可以根本版本号进行选择(这里的SNAPSHOT代表快照,一般表示这是一个处于开发中的项目,正式发布项目一般只带版本号)

基本的参数

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>maven_study</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties></project>

导入别的依赖的话本质就是导入

<groupId>xxx</groupId>
<artifactId>xx</artifactId>
<version>xxx</version>

创建一个结点,可以导入我们需要的依赖。

<dependencies></dependencies>

下载个依赖为例

  • 中心仓库几乎存储了所有的依赖
  • 一般的话都会找到的
  • 必须是联网的
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version><scope>provided</scope></dependency></dependencies>

使用我们的导入的依赖

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String password;}

创建测试文件

public class TestMain {public static void main(String[] args) {System.out.println("你好");User user=new User();user.setName("张三");user.setPassword("123465");user.setId(1);System.out.println(user.toString());}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNZiG99u-1690375786146)(maven学习.assets/image-20230726170347115.png)]

1.4仓库

下面的这个网站可以告诉你常见的依赖的地址,用到什么就可以搜索什么。

https://mvnrepository.com/

仓库的基本原理图

  • 本地仓库就是我们默认配置的:默认是m2。可以配置成自己的仓库的地址。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OC7lH1z5-1690375786146)(maven学习.assets/image-20230726170056199.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6lANXvK-1690375786147)(maven学习.assets/image-20230726165929502.png)]

本地有的话,下次用到的时候会自动地进行导入地,不需要再去下载了。默认先去本地仓库中去寻找依赖进行导入。

原先maven设置的仓库的地址是远程的,现在需要换成国内的地址。

   	 <!--配置案例云的镜像--><mirror><id>nexus-aliyun</id><mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>

或者是下面的形式都是一样的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fT2DZuSZ-1690375786147)(maven学习.assets/image-20230726170818427.png)]

此时下载依赖的时候全部的依赖全部是从国内的地址中去下载不需要从国外的地址中去下载了。

1.5依赖的作用域

1.依赖的基本属性

前面了解到了依赖的基本的形式

        <dependency><groupId></groupId><artifactId></artifactId><version></version></dependency>

下面将会了解更多的属性

  • type:依赖的类型默认就是jar
  • scope:依赖的范围,重点。
  • optional:依赖是不是可选的。
  • exclusions:用来排除传递依赖的。b项目导入了a依赖,但是我们不需要a中的xx依赖就需要进行排除

2.scope属性内容。决定了依赖的作用域的范围。

compile:编译、运行和测试均有效。

provided:在编译和测试的时候有效,运行的时候无效。也就是说运行的时候不需要该依赖。像lombox在编译的时候用到,编译完成之后生成代码了之后,就转换成代码了,不需要进行使用了。

runtime:运行和测试有效。编译时候无效,像jdbc。

test:仅仅在测试时候有效。像junit依赖。

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version><scope>test</scope>
</dependency>

3.编写测试类

public class TestJava {@Testvoid test(){System.out.println("测试");}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVzkCEvA-1690375786147)(maven学习.assets/image-20230726172113396.png)]

4.添加连接数据库的文件

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version><scope>runtime</scope>
</dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version>
</dependency>

5.资源文件夹下内容的创建。

mybatis的基本教程

http://c.biancheng.net/mybatis/config.html

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 配置 --><settings><setting name="mapUnderscoreToCamelCase" value="true"/><setting name="cacheEnabled" value="true"/></settings><typeAliases><package name = "com.test.entity"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- MySQL数据库驱动 --><property name="driver" value="com.mysql.jdbc.Driver" /><!-- 连接数据库的URL --><property name="url"  value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper class="com.test.mapper.UserMapper"/></mappers>
</configuration>

6.编写mapper

@Mapper
public interface UserMapper {@Select("select * from user where id=#{id}")User getUserById (String id);
}

7.编写测试类

public class TestMain {public static void main(String[] args) throws Exception{SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));SqlSession session=factory.openSession(true);UserMapper userMapper=session.getMapper(UserMapper.class);System.out.println(userMapper.getUserById("1"));}
}

补充一个要是只是一个本地jar怎么办呢。也就是远程没有这个jar的依赖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSLPO6NM-1690375786148)(maven学习.assets/image-20230726174619121.png)]

1.6可选依赖

当项目中的某些依赖不希望被使用此项目作为依赖的项目使用时,我们可以给依赖添加optional标签表示此依赖是可选的,默认在导入依赖时,不会导瓜可选的依赖:

https://www.bilibili.com/video/BV14j411S76G/?p=3&spm_id_from=pageDriver&vd_source=5c648979fd92a0f7ba8de0cde4f02a6e

  • 表示为true的话可以不导入这个依赖
  • scope为test的话根本不需要设置
<optional>true</optional>

exclusions可以设置排除依赖。排除某个依赖。

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions>
</dependency>

1.7创建父子项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vn4YVMJg-1690375786148)(maven学习.assets/image-20230726202031575.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXeyMifr-1690375786148)(maven学习.assets/image-20230726202210902.png)]

要是父子项目,夫设置option为true不耽误子项目的继承。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h3RUFtvV-1690375786149)(maven学习.assets/image-20230726202250475.png)]

放到dependencies的全部都是强制继承的。

但是放到dependencyManagement不是强制继承的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yh7kD3GD-1690375786149)(maven学习.assets/image-20230726202634362.png)]

子项目导入的时候不需要指定对应的版本号就可以。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nn1C8Qs-1690375786149)(maven学习.assets/image-20230726202729991.png)]

1.8maven常用的命令

可以避免写命令行了

  • clean:清理项目
  • compile:编译
  • install:是把项目构建下载到本地仓库
  • validate:验证项目的可用性。
  • test:测试所有位于test目录下的测试案例
    • 测试类的名字必须是Test结尾,例如MainTest
    • 测试方法上必须标注@Test注解
  • package:先跑测试方法,执行完成之后才进行打包,生成jar文件。如何将jar打包成一个可执行的文件。将第三方的依赖也打包到依赖包里面。需要配置插件的内容。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HmtqI985-1690375786150)(maven学习.assets/image-20230726204229538.png)]

  • verify:

  • deploy:发布到本地和远程仓库的,公司一般有私服的。

  • site:生成当前项目的发布站点。

对于存在依赖关系的项目的话,a依赖于b,打包a的话,同时会把b打包进去。会生成两个jar文件

相关文章:

maven的基本学习

maven https://www.bilibili.com/video/BV14j411S76G?p1&vd_source5c648979fd92a0f7ba8de0cde4f02a6e 1.简介 1.1介绍 Maven翻译为"专家"、“内行”&#xff0c;是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念&#xff0c;Maven利用一…...

疲劳驾驶检测和识别2:Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码)

疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 目录 疲劳驾驶检测和识别2&#xff1a;Pytorch实现疲劳驾驶检测和识别(含疲劳驾驶数据集和训练代码) 1.疲劳驾驶检测和识别方法 2.疲劳驾驶数据集 &#xff08;1&#xff09;疲…...

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…...

EXCEL数据自动web网页查询----高效工作,做个监工

目的 自动将excel将数据填充到web网页&#xff0c;将反馈的数据粘贴到excel表 准备 24KB的鼠标连点器软件&#xff08;文末附链接&#xff09;、Excel 宏模块 优势 不需要编程、web验证、爬虫等风险提示。轻量、稳定、安全。 缺点 效率没那么快 演示 宏环境 ht…...

visual studio 2022换背景遇到的问题

如果要自定义背景图&#xff0c;则可以下载ClaudialIDE 1.在拓展->点击拓展管理->右上角搜索background->点击下载ClaudialIDE->加载完之后需要关闭vs界面进行下载&#xff0c;下载失败&#xff0c;弹出“由于出现以下错误 无法安装一个或多个扩展”。 解决&#x…...

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备&#xff1a;欧姆龙PLC&#xff0c;捷米特JM-EIP-TCP网关&#xff0c; ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法&#xff0c;支持直连和交叉接…...

Go重写Redis中间件 - GO实现TCP服务器

GO实现TCP服务器 首先新建一个项目go-redis,将config和lib包放到项目中,config.go用来解析配置,比如端口、功能、DB数;lib包有两个文件夹,分别是logger和sync,其中logger.go是一个日志框架,sync包中的bool.go包装了atomic操作,因为atomic原生没有bool类型,所以将uint…...

使用Kmeans算法完成聚类任务

聚类任务 聚类任务是一种无监督学习任务&#xff0c;其目的是将一组数据点划分成若干个类别或簇&#xff0c;使得同一个簇内的数据点之间的相似度尽可能高&#xff0c;而不同簇之间的相似度尽可能低。聚类算法可以帮助我们发现数据中的内在结构和模式&#xff0c;发现异常点和离…...

内网穿透技术 - 带你玩转NATAPP

前言 使用内网穿透工具&#xff0c;我们就可以在公网中直接访问在局域网内搭建的服务器网页&#xff0c;也可以直接远程连接到局域网内的机器。本文章主要介绍下NATAPP内网穿透工具的使用。 NATAPP使用教程 官网 在官网先注册&#xff0c;然后登录。登录后&#xff0c;会有一…...

SQL server 简介

SQL server 简介 学习目的 SQL Server 是由微软公司开发的一种关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储和检索数据。它提供了一个可扩展的、安全的和可靠的数据存储和管理解决方案。 SQL Server 主要用于构建企业级应用程序&#xff0c;支持…...

springboot 之以enable开头的注解

Spring​ 有很多 Enable 开头的注解&#xff0c;平时在使用的时候也没有注意过为什么会有这些注解 Enable 注解 首先我们先看一下有哪些常用的 Enable 开头的注解&#xff0c;以及都是干什么用的。 EnableRetry​&#xff1a;开启Spring 的重试功能&#xff1b; EnableSch…...

#P1007. [NOIP2007提高组] 矩阵取数游戏

题目描述 帅帅经常跟同学玩一个矩阵取数游戏&#xff1a;对于一个给定的 n \times mnm 的矩阵&#xff0c;矩阵中的每个元素 a_{i,j}ai,j​ 均为非负整数。游戏规则如下&#xff1a; 每次取数时须从每行各取走一个元素&#xff0c;共 nn 个。经过 mm 次后取完矩阵内所有元素&…...

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…...

安卓:Picasso——加载网络图片的库

目录 一、Picasso介绍及其优势 二、Picasso的使用方法 1、添加依赖&#xff1a; 2、Picasso常用方法&#xff1a; 1、加载图像&#xff1a; 2、图像显示&#xff1a; 3、图像处理&#xff1a; 4、图像占位符和错误处理&#xff1a; 5、缓存控制&#xff1a; 6、清除缓…...

1468-PIPI的魔咒

题目描述: 大魔术师PIPI有N个转换魔咒&#xff0c;每个转换魔咒可以将一个字符串变成另一个字符串。 比如说&#xff1a; “PIPI”->“POPO” “boy”->“girl” “boy”->“u” “isau”->“OJ” 那么对于字符串"PIPIisaboy"&#xff0c;大魔术师PIPI可…...

3d激光slam建图与定位(1)_基于ndt算法定位

一.代码实现流程 二.ndt算法原理 一.该算法定位有三个进程文件 1.map_loader.cpp用于点云地图的读取&#xff0c;从文件中读取点云后对这个点云地图进行旋转平移后发布点云地图到ros #include "map_loader.h"MapLoader::MapLoader(ros::NodeHandle &nh){std::st…...

云安全攻防(二)之 云原生安全

云原生安全 什么是云原生安全&#xff1f;云原生安全包含两层含义&#xff1a;面向云原生环境的安全和具有云原生特征的安全 面向云原生环境的安全 面向云原生环境的安全的目标是防护云原生环境中的基础设施、编排系统和微服务系统的安全。这类安全机制不一定会具有云原生的…...

最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践

前言 知识点 定级&#xff1a;入门级GlusterFS 和 Heketi 简介GlusterFS 安装部署Heketi 安装部署Kubernetes 命令行对接 GlusterFS 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100…...

笙默考试管理系统-MyExamTest(16)

笙默考试管理系统-MyExamTest&#xff08;16&#xff09; 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试管理系统-MyExa…...

初级算法-树

文章目录 二叉树的最大深度题意&#xff1a;解&#xff1a;代码&#xff1a; 验证二叉搜索树题意&#xff1a;解&#xff1a;代码&#xff1a; 对称二叉树题意&#xff1a;解&#xff1a;代码&#xff1a; 二叉树的层序遍历题意&#xff1a;解&#xff1a;代码&#xff1a; 将有…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...