Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
目录
1. 🧩Maven插件
2. 🏗️构建Maven工程
3. 📄 pom文件配置
4. ✍️编写代码
5. 🔗依赖范围
6. 📝总结
💡【开发哲学共勉】
pom 文件作为 Maven 项目的核心,以简洁的标签和精准的配置,掌控着依赖的全局,如同船长依据航海图引领巨轮在复杂的海洋中航行,确保项目在正确的航道上前行。
🎉 前言
在 Java 生态中,Maven 是工程化开发的核心基石。它以标准化流程解决依赖管理与构建繁琐问题,让项目从代码到交付的链路清晰可控
本文聚焦 Maven 工程开发核心环节:从 Maven 插件配置、工程构建步骤,到 pom 文件关键配置逻辑,再到代码编写要点与依赖范围规则。掌握这套体系,不仅能驾驭工具,更能建立工程化思维,在团队协作与项目迭代中实现高效开发个人主页:艺杯羹 🌿
系列专栏:Maven 🚀
1. 🧩Maven插件
Maven 插件用于扩展 Maven 核心能力
setting --> 输入 maven --> 修改安装路径,配置文件路径,修改本地仓库路径
其中的第二个“配置文件路径”,要配置到Settings.xml
这就配置好Maven插件了
但是这个配置好了后,只能在当前项目中有用,在新的项目中又要重新配置了
新建新项目时,就会自动配置好maven插件的方法
file ---> New Projects Setup ---> Settings for New Projects...
再按照刚刚那个方法配置一遍
之后再创建项目时,就会沿用这个Maven配置(๑•̀ㅂ•́)و✧
maven工程,就是可以使用Maven来管理的工程
2. 🏗️构建Maven工程
接下来我们构建一个Maven的Web工程:
-
打开 idea,选择创建一个新工程
-
选择Maven工程,并使用maven的web工程模板
项目组:公司名 -
手动添加src/main/java目录,此时该目录还不能写Java代码
可以看到这个目录和之前讲的目录还有一些没有创建出来,那么我们就要手动创建了
要给每个文件夹功能 -
添加文件
如果main下的java文件夹里不能用写java文件
那么就右击文件夹,在最下方选择“Sources Root”,就可以写java文件了
test中的文件夹一般是会自动配置为测试文件夹
Sources Root | 源码根,存放 .java 等可编译代码(如 src/main/java ) |
Test Sources Root | 测试源码根,存放 JUnit 测试类(如 src/test/java ) |
Resources Root | 资源根,存放配置(.properties )、静态资源(如图片) |
Test Resources Root | 测试资源根,存放测试配置文件(如 src/test/resources ) |
Excluded | 排除目录,忽略构建输出(如 target )以提升性能 |
3. 📄 pom文件配置
pom文件,简单来说他的作用:
pom.xml 是 Maven 项目的 “说明书”,用来写清楚项目要啥依赖、怎么打包,让大家按统一规矩干活,避免版本混乱和重复操作
pom文件最上方是项目基本信息:
解释标签含义
参数 | 定义内容 | 规则 / 说明 | 示例 |
---|---|---|---|
groupId | 项目组名 | 反向域名格式 | com.yibeigen |
artifactId | 项目名 | 小写字母 | my-project |
version | 版本号 | 三段式:重大升级。新功能.bug 修复 | 1.2.3 |
packaging | 打包方式 | 如 jar、war 等 | jar |
3.1. ⚙️<properties> 中定义一些配置信息
没有的话,就添加进去即可,这里的第二个是java版本,根据自己的java版本来改,我这里是1.8版本的就写1.8, 如果你是jdk11,那就把1.8改成 11 就OK了
<properties><!-- 编码格式 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 编译时使用的JAVA版本 --><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target>
</properties>
3.2. 📦<dependencies>中定义依赖的jar包坐标
因为javaweb项目,所以要用到servlet 和 jsp的jar包,因此就要这两个的坐标
由于项目是web项目,需要写Servlet和JSP,所以需要引入Servlet和JSP的依赖。查找依赖坐标的网站:https://mvnrepository.com/
1. 搜索Servlet ---> 单击Java Servlet API
2. 里面的版本可以自己选,我选的是3.0.1的
单击进去复制如图的代码即可
往下划一下
3. 复制到pom文件的 dependencies 标签中,这里先删除最后一个
jsp也是一样的操作,也可以直接复制我写的这个代码,因为都是写死的代码(๑•̀ㅂ•́)و✧
放到pom文件中后,还要让 maven 来做加载
一般在右侧可以打开maven
<!-- 依赖的jar包坐标 --><dependencies><!-- servlet依赖 --><dependency><!-- 项目组名 --><groupId>javax.servlet</groupId><!-- 项目名 --><artifactId>javax.servlet-api</artifactId><version>3.0.1</version></dependency><!-- jsp依赖 --><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency></dependencies>
为什么之前的web项目中没有引入jsp和servlet的jar包?
因为之前项目中使用的是tomcat中的jsp和servlet中的jar包,在项目中没有引入
我们会用Tomcat插件,而不是完整的Tomcat
3.3. 🔌<plugins>中定义第三方插件
放在 <build> 下
web项目依赖tomcat运行,所以添加 tomcat7插件 ---> 在 maven 中刷新,就会自动下载Tomcat插件了
<plugins><!-- tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8080</port><path>/</path><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin>
</plugins>
4. ✍️编写代码
接下来编写Servlet和Jsp代码,来通过idea来运行一下
servlet代码
@WebServlet("/demo1")
public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 跳转页面req.getRequestDispatcher("hello.jsp").forward(req,resp);}
}jsp代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>大家好,感谢支持艺杯羹!</h1>
</body>
</html>
这样就运行成功了
但是这要每次都输入命令,现在提供一个直接可以运行的配置
单击右上角的当前文件 ---> Edit Configurations……
单击左上角的加号 ---> Maven
填写项目名和执行的命令:tomcat7:run
点击OK后配置完成,点击Idea的运行符号即可使用maven中的tomcat7插件运行项目
5. 🔗依赖范围
上面的运行后,在浏览器访问servlet时,发现报500异常,这是为什么呢?
这是由于项目中引入了 Servlet 和 Jsp 的jar包
而在项目运行时,Tomcat要使用它自带的Servlet和Jsp的jar包,这样就造成了jar包冲突
但如果项目不引入 Servlet 和 Jsp 的 jar 包,则根本无法通过编译。
此时可以设置依赖的作用范围解决该问题,设置Servlet和Jsp的jar包只在编译期起作用,运行时不起作用,这样不仅可以通过编译,还能在运行时避免jar包冲突。
通过在<dependency>中添加<scope>,可以设置依赖的作用范围,有以下取值:
依赖范围 | 生效阶段 | 特点 / 典型例子 |
---|---|---|
compile | 编译、运行、打包 | 默认范围,项目打包会包含,如常规业务代码依赖 |
provided | 编译 | 运行时容器等已提供,无需打包,如 servlet - api |
runtime | 运行 | 编译不用,运行需要,如 JDBC 驱动包 |
test | 编译和运行测试代码 | 正常运行无需,如 JUnit |
system | 编译、运行(需手动处理) | 依赖无 Maven 坐标,本地硬盘引入,不推荐 |
所以对于Servlet和Jsp依赖,我们在pom.xml中添加依赖范围为provided即可,因为只需要在编译时生效就可以了
注意是放在<dependencies>标签里的
<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><!-- 作用范围 --><scope>provided</scope>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><!-- 作用范围 --><scope>provided</scope>
</dependency>
配置完后就可以访问了
6. 📝总结
希望本文能够帮助到你(๑•̀ㅂ•́)و✧
相关文章:
Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
目录 1. 🧩Maven插件 2. 🏗️构建Maven工程 3. 📄 pom文件配置 3.1. ⚙️ 中定义一些配置信息 3.2. 📦 中定义依赖的jar包坐标 3.3. 🔌 中定义第三方插件 4. ✍️编写代码 5. 🔗依赖范…...
分布式系统中的 Kafka:流量削峰与异步解耦(二)
Kafka 在分布式系统中的应用案例 电商订单系统 在电商领域,订单系统是核心业务模块之一,涉及多个复杂的业务环节和系统组件之间的交互。以常见的电商购物流程为例,当用户在电商平台上下单后,订单创建服务会首先接收到用户的订单…...
从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页
如果php.ini已经加入了如下的内容还是报错 : upload_max_filesize 1024M post_max_size 1024M 那就是因为阿帕奇导致:...
FramePack 安装指南(中文)
FramePack 安装指南(中文) -Windows FramePack 是最前沿的 AI 视频生成框架,以极小的硬件需求颠覆视频创作!它能在仅 6GB 笔记本 GPU 内存上,驱动 13B 模型以 30 FPS 生成超长 120 秒视频,几乎无内容限制&…...
【NLP入门系列三】NLP文本嵌入(以Embedding和EmbeddingBag为例)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 博主简介:努力学习的22级本科生一枚 🌟;探索AI算法,C,go语言的世界;在迷茫中寻找光芒…...
电子电气架构 --- 软件供应商如何进入OEM体系
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望
检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望 摘要 检索增强生成(RAG)通过融合外部知识库与大型语言模型,已成为解决知识密集型自然语言处理(NLP)任务的关键范式。高质量…...
CFD仿真计算革命:基于GPU的格子玻尔兹曼方法(LBM)算子优化——利用Tensor Core加速碰撞核计算(性能提升3倍实测)
点击 “AladdinEdu,同学们用得起的【H卡】算力平台,注册即送H800算力”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 在计算流体动力学领域,格子玻尔兹曼方法正以介观模…...
【蓝牙】Qt4中向已配对的手机发送PDF文件
在Qt 4中实现通过蓝牙向已配对的设备发送文件(例如PDF文件),你可以使用Qt Bluetooth模块。Qt 4的蓝牙模块提供了基本的蓝牙功能,包括设备发现、配对管理和数据传输。下面是一些步骤和示例代码,帮助你通过蓝牙发送PDF文…...
Vue + AbortController 请求取消弹窗 hook 封装
背景 实际业务开发场景中,往往存在有些大数据请求的需求,一旦请求发起加载遮罩后用户就无法操作了,直接尬住,所以提供一个支持取消查询的功能还是很有必要的,为了在全业务接口都能使用封装一个hook。 ✋为什么要用 A…...
在小程序中实现上下左右拖动表格
在小程序的开发中,不可避免会出现上下左右拖动表格的类似需求,下面将把这个简单实现一下 其中主要使用到了overflow: scroll;来使得横向和纵向可以滚动,并且使用负边距 父容器截断的方法来同时隐藏横向和纵向滚动条,从而实现该效…...
Spark 以及 spark streaming 核心原理及实践
导语 spark 已经成为广告、报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spark技术的使用有一些自己的经验积累以及心得体会&…...
数据融合平台是什么?如何搭建数据融合平台?
目录 一、数据融合是什么 1. 定义 2. 作用 二、数据融合平台的功能是什么 1. 数据抽取 2. 数据清洗 3. 数据转换 4. 数据关联 5. 数据存储 三、如何让搭建数据融合平台 1. 需求分析 2. 选择合适的技术和工具 3. 设计平台架构 4. 开发和部署平台 5. 数据迁移和融…...
Linux之线程同步与互斥
目录 一、线程互斥 1.1、进程线程间的互斥相关背景概念 1.2、互斥量mutex 1.2.1、互斥量的接⼝ 1.3、互斥量实现原理探究 1.4、互斥量的封装 二、线程同步 2.1、条件变量 2.2、同步概念与竞态条件 2.3、条件变量函数 2.4、⽣产者消费者模型 2.4.1、为何要使⽤⽣产者…...
uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开
uniapp开发小程序,导出文件打开并保存 实现思路 1、调用请求获取到后端接口返回的下载文件的url路径 (注意必须是https的路径,域名需要配置在微信小程序后台的合法域名里面) 2、使用 uni.downloadFile 方法 (下载文件…...
腾讯云COS“私有桶”下,App如何安全获得音频调用流程
流程图 #mermaid-svg-Phy4VCltBRZ90UH8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-icon{fill:#552222;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-text{fill:#552222;stroke:#552222;}#me…...
简单的 Flask 后端应用
from flask import Flask, request, jsonify, session import os app Flask(__name__) app.secret_key os.urandom(24) users { 123: admin, admin: admin } # 登录接口 app.route(/login, methods[POST]) def login(): data request.get_json() username data.get(usern…...
Android 中 解析 XML 字符串的几种方式
在 Android 开发中,解析 XML 文件有多种方式,每种方式都有其特点和适用场景。常见的 XML 解析方式有 DOM 解析、SAX 解析 和 XmlPullParser 解析。 1、DOM 解析 DOM(Document Object Model)解析是一种基于树结构的解析方式&#…...
git commit
git commit 是版本控制的核心操作之一,用于将暂存区的修改记录为新的版本提交。以下是关键步骤和最佳实践: 基础操作 提交单个文件: bash Copy Code git commit -m “提交信息” 提交多个文件: bash Copy Code …...
【新手向】GitHub Desktop 的使用说明(含 GitHub Desktop 和 Git 的功能对比)
GitHub Desktop 是 GitHub 公司推出的一款桌面应用程序,旨在帮助开发人员更轻松地使用 GitHub,以下是其简单的使用说明: 安装与登录 下载 GitHub Desktop |GitHub 桌面 访问GitHub Desktop 官方网站,根据自己的操作系统下载对应的…...
Tomcat项目本地部署(Servlet为例)
在Windows上部署 在idea中打开项目 首先我们需要准备一个Servlet项目,我之前的Servlet项目是用eclipse写的,这种情况下如果用idea直接打开的话会出现左侧目录无法显示的情况,这个时候我们就需要用别的方法打开 打开项目管理 如下图&#…...
Linux——linux的基本命令
目录 一、linux的目录结构 二、绝对路径和相对路径 三、文件类型(linux下所有东西都可看作文件) 四、文件的权限 五、文件权限的修改(chmod) 六、linux常用的命令 七、文件查看命令 八、文件编辑命令 九、文件压缩与解压…...
wireshark过滤显示rtmp协议
wireshark中抓包显示的数据报文中,明明可以看到有 rtmp 协议的报文,但是过滤的时候却显示一条都没有 查看选项中的配置,已经没有 RTMP 这个协议了,已经被 RTMPT 替换了,过滤框中输入 rtmpt 过滤即可...
Fiddler抓包工具使用技巧:如何结合Charles和Wireshark提升开发调试效率
在开发过程中,网络调试工具是每个程序员的必备利器,特别是当涉及到Web应用和移动应用的调试时,抓包工具的作用尤为突出。无论是处理复杂的API调用、分析性能瓶颈,还是排查网络通信问题,抓包工具都能够帮助开发者精准地…...
LVS负载均衡群集
这里写目录标题 案例:部署Tomcat案例分析案例概述案例前置知识点Tomcat 简介应用场景 案例环境 案例实施实施准备关闭 firewalld 防火墙在安装Tomcat之前必须先安装JDK 查看JDK是否安装安装配置 TomcatTomcat 的安装和配置步骤如下:解压后生成 apache-tomcat-9.0.8文件夹&#…...
【unitrix】 3.5 类型级别的比较系统(cmp.rs)
一、源码 这段代码定义了一个类型级别的比较系统,主要用于在编译时比较类型并得出比较结果。它使用了 Rust 的类型系统和标记特征(trait)来实现这一功能。 use crate::sealed::Sealed; use crate::number::{Z0, P1, N1}; use core::cmp::Ordering;// 比较结果类型…...
防御式编程:防止 XSS 攻击
对用户输入进行编码和过滤是防止 XSS 攻击的关键。以下是改进后的代码示例: from flask import Flask, request, escape from markupsafe import Markup app Flask(__name__) app.route(/comment, methods[POST]) def comment(): user_comment escape(re…...
【Java项目设计】基于Springboot+Vue的OA办公自动化系统
介绍: 基于Springboot为后端,vue为前端的企业综合性OA办公自动化平台,涵盖九大核心模块,全方位解决企业日常办公需求,提升工作效率和管理水平。系统采用模块化设计,功能全面且易于扩展,从基础登…...
WebServer实现:muduo库的主丛Reactor架构
前言 作为服务器,核心自然是高效的处理来自client的多个连接啦,那问题在于,如何高效的处理client的连接呢?这里就介绍两种架构:单Reactor架构和主丛Reactor架构。 单Reactor架构 单Reactor架构的核心为,由一个主线程监…...
每天一个前端小知识 Day 7 - 现代前端工程化与构建工具体系
现代前端工程化与构建工具体系 1. 为什么要工程化?(面试高频问题) 问题痛点: 模块太多、无法组织;代码冗长、性能差;浏览器兼容性差;团队协作混乱,缺少规范与自动化。 工程化目标…...
nginx的下载与安装 mac
1. 下载 方法一:本地下载 链接:https://nginx.org/en/download.html(可直接搜官网) 下载到本地后,上传到linux的某个文件夹中 方法二:直接linux上下载(推荐) wget -c http://ngi…...
[持续集成]
学习目标 能够使用 Git 代码托管平台管理代码能够实现 jenkinspostman 的持续集成能够实现 jenkins代码 的持续集成 持续集成 概念 : 将自己工作成果持续不断地把代码聚集在一起,成员可以每天集成一次或多次相关工具 : git : 代码管理工具,自带本地仓库gitee : 远程代码管理…...
Spring Aop @AfterThrowing (异常通知): 使用场景
核心定义 AfterThrowing 是 Spring AOP 中专门用于处理异常场景的**通知(Advice)**类型。它的核心作用是: 仅在目标方法(连接点)的执行过程中抛出异常时,执行一段特定的逻辑。如果目标方法成功执行并正常…...
【赵渝强老师】Kubernetes的安全框架
Kubernetes集群的安全框架主要由以下认证、鉴权和准入控制三个阶段组成。这三个阶段的关系如下图所示。 视频讲解如下 【赵渝强老师】Kubernetes的安全框架 认证(Authentication) 当客户端与Kubernetes集群建立HTTP通信时,首先HTTP请求会进…...
【Python小练习】3D散点图
资产风险收益三维分析 背景 王老师是一名金融工程研究员,需要对多个资产的预期收益、风险(波动率)和与市场的相关性进行综合分析,以便为投资组合优化提供决策依据。 代码实现 import matplotlib.pyplot as plt from mpl_toolk…...
腾讯混元3D制作简单模型教程-2
以下是腾讯混元3D制作简单模型的详细教程,整合最新版本特性(截至2025年6月),操作门槛低且无需专业基础: 🖥 一、在线生成(最快30秒完成) 访问平台 打开 腾讯混元3D创作引擎官网…...
NVIDIA开源Fast-dLLM!解析分块KV缓存与置信度感知并行解码技术
Talk主页:http://qingkeai.online/ 文章原文:https://mp.weixin.qq.com/s/P0PIAMo1GVYH4mdWdIde_Q Fast-dLLM 是NVIDIA联合香港大学、MIT等机构推出的扩散大语言模型推理加速方案。 论文:Fast-dLLM: Training-free Acceleration of Diffusion…...
大白话说目标检测中的IOU(Intersection over Union)
很多同学在学习目标检测时都会遇到IoU这个概念,但总觉得理解不透彻。这其实很正常,因为IoU就像个"多面手",在目标检测的各个阶段都要"打工",而且每个阶段的"工作内容"还不太一样。 今天我就让IoU自…...
CentOS 8解决ssh连接github时sign_and_send_pubkey失败问题
我在一台centos8机器上安装git环境以连接到github,首先第一步需配置好ssh环境,因为我已经有一台Ubuntu机器已经配置好ssh环境,所以我ftp Ubuntu机器取得id_rsa id_rsa.pub known_hosts三个文件,然后执行命令: $ git …...
回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务
需要dns代理 1 配置需求或说明 1.1 适用的产品系列 本案例适用于软件平台为Comware V7系列防火墙:本案例适用于如F5080、F5060、F5030、F5000-M等F5000、F5000-X系列的防火墙。 注:本案例是在F100-C-G2的Version 7.1.064, Release 9510P08版本上进行…...
OpenCV实现二值图细化(骨架提取)
对二值图进行细化(骨架提取),也就是把每根线条细化到一个像素的宽度。有两个比较成熟的算法实现此功能,分别是Zhang-Suen算法和Guo-Hall算法。 我们下面使用OpenCVSharp,使用C#实现上述两个算法: private…...
Excel常用公式大全
资源宝整理分享:https://www.httple.net Excel常用公式大全可以帮助用户提高工作效率,掌握常用的Excel公式,让数据处理和计算工作更加便捷高效。了解公式学习方法、用途,不再死记硬背,拒绝漫无目的。 命令用途注释说…...
在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 环境(附详细部署教程)
言简意赅的讲解Docker Desktop for Windows搭建Kubernetes解决的痛点 目标读者: 对 Docker Desktop 有一定了解,能在 Windows 上成功安装和使用 Docker Desktop。想要在本地快速搭建一套 Kubernetes 环境进行测试或学习的开发者。 一、准备工作 安装 Doc…...
Python设计模式终极指南:18种模式详解+正反案例对比+框架源码剖析
下面我将全面解析18种Python设计模式,每种模式都包含实际应用场景、优缺点分析、框架引用案例、可运行代码示例以及正反案例对比,帮助您深入理解设计模式的价值。 一、创建型模式(5种) 1. 单例模式(Singleton&#x…...
第1章: 伯努利模型的极大似然估计与贝叶斯估计
伯努利模型的极大似然估计与贝叶斯估计 import numpy as np import matplotlib.pyplot as plt from scipy.stats import beta, bernoulli from scipy.optimize import minimize_scalar# 设置中文字体 plt.rcParams[font.sans-serif] [SimHei] # 使用黑体 plt.rcParams[axes.…...
IPv4编址及IPv4路由基础
一、实验目的 掌握接口 IPv4 地址的配置方法理解 LoopBack 接口的作用与含义理解直连路由的产生原则掌握静态路由的配置方法并理解其生效的条件掌握通过 PING 工具测试网络层连通性掌握并理解特殊静态路由的配置方法与应用场景 二、实验环境 安装有eNSP模拟器的PC一台&#…...
基于Python的机动车辆推荐及预测分析系统
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言࿰…...
SpringBoot扩展——发送邮件!
发送邮件 在日常工作和生活中经常会用到电子邮件。例如,当注册一个新账户时,系统会自动给注册邮箱发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等。邮箱的使用基本包括这几步:先打开浏览器并登录邮箱&…...
啊啊啊啊啊啊啊啊code
前序遍历和中序遍历构建二叉树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNod…...
不同程度多径效应影响下的无线通信网络电磁信号仿真数据生成程序
生成.mat数据: %创建时间:2025年6月19日 %zhouzhichao %遍历生成不同程度多径效应影响的无线通信网络拓扑推理数据用于测试close all clearsnr 40; n 30;dataset_n 100;for bias 0.1:0.1:0.9nodes_P ones(n,1);Sampling_M 3000;%获取一帧信号及对…...