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

Maven 依赖坐标与BOM统一管理

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

Maven 依赖坐标与BOM统一管理

引言

在Java生态发展的漫漫长河中,依赖管理始终是项目构建的核心痛点。早期的Ant构建工具虽然提供了灵活的编译能力,但面对依赖管理时,开发者不得不手工维护lib目录下的jar包集合。这种原始的管理方式导致团队协作时频繁出现版本错乱、依赖缺失等问题,甚至出现"项目交接需要附带U盘传jar包"的荒诞场景。

2004年Maven的诞生带来了革命性改变,其首创的坐标体系(Coordinate System)将软件构件抽象为GroupIdArtifactIdVersion三元组,配合中央仓库的自动解析机制,彻底重构了Java世界的依赖管理范式。

时至今日,随着微服务架构和模块化开发的普及,依赖管理面临新的维度挑战。一个典型的中大型Java项目往往包含数十个子模块,依赖上百个第三方库,不同模块间的依赖关系形成复杂的拓扑网络。在这样的背景下,简单声明依赖坐标已无法满足工程需求,开发者频繁遭遇版本冲突、传递依赖失控、多环境配置差异等问题。Maven提供的dependencyManagement机制与BOMBill of Materials)模式,正是解决这类复杂场景的钥匙。通过集中式版本控制、依赖范围约束、父子模块继承等特性,这些机制让依赖管理从分散走向统一,从混乱走向有序。

本文将深入解析Maven依赖管理体系的核心原理,揭示构建稳健依赖治理方案的实践路径。

一、Maven坐标体系解析

1.1 坐标定义与规范

Maven坐标的三要素构成软件构件的唯一标识:

  • GroupId:采用逆向域名规则,体现组织或项目归属
    <!-- 示例:Apache Commons项目 -->
    <groupId>org.apache.commons</groupId>
    
  • ArtifactId:明确构件名称,遵循小写字母和连字符约定
    <artifactId>commons-lang3</artifactId>
    
  • Version:遵循语义化版本规范,推荐[major].[minor].[patch]格式
    <version>3.12.0</version>
    

1.2 仓库路径映射规则

Maven本地仓库(默认~/.m2/repository)通过坐标生成存储路径:

${repository}/${groupId.replace('.', '/')}/${artifactId}/${version}/${artifactId}-${version}.jar

例如org.springframework:spring-core:5.3.23对应路径:

org/springframework/spring-core/5.3.23/spring-core-5.3.23.jar

1.3 版本管理策略

版本类型示例特性说明
正式版本2.5.4稳定版本,仓库永久保留
SNAPSHOT1.0-SNAPSHOT开发中版本,支持动态更新
元数据版本[1.0,2.0)版本范围声明,慎用易引发冲突

二、BOM文件与依赖管理

2.1 BOM核心价值

BOM(材料清单)本质是特殊POM文件,其核心作用包括:

  • 统一管理关联依赖的版本号
  • 声明依赖的exclusion规则
  • 定义插件版本和配置模板
  • 维护依赖兼容性矩阵

Spring Boot的Dependencies BOM是典型代表:

<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.5</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2.2 多BOM集成方案

企业级项目通常需要集成多个BOM,此时需注意加载顺序:

<dependencyManagement><!-- 先加载公司基础BOM --><dependencies><dependency><groupId>com.company</groupId><artifactId>base-bom</artifactId><version>1.2.0</version><type>pom</type><scope>import</scope></dependency><!-- 后加载框架BOM,后者优先级更高 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2.3 版本锁定模式

通过dependencyManagement锁定版本,子模块声明依赖时无需指定版本:

<!-- 父POM -->
<dependencyManagement><dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version></dependency></dependencies>
</dependencyManagement><!-- 子模块 -->
<dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId> <!-- 版本继承自父POM --></dependency>
</dependencies>

三、多模块项目依赖管理

3.1 模块化项目结构

典型多模块项目结构示例:

parent-pom
├── core-module(基础核心)
├── service-api(接口定义)
├── service-impl(实现模块)
└── web-app(Web入口)

依赖流向应遵循:

  • 下层模块不依赖上层模块
  • 公共依赖提升至父POM
  • 避免循环依赖

3.2 聚合项目配置

父POM使用<modules>聚合子模块:

<modules><module>core-module</module><module>service-api</module><module>service-impl</module><module>web-app</module>
</modules>

3.3 依赖范围控制

合理使用scope控制依赖传递:

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> <!-- 容器提供,不打包 -->
</dependency>

四、依赖传递与冲突解决

4.1 依赖传递规则

直接依赖Scope对传递依赖的影响
compile传递compile和runtime范围的依赖
provided不传递任何依赖
runtime只传递runtime范围的依赖
test不传递任何依赖

4.2 冲突解决策略

Maven按以下优先级解决版本冲突:

  1. 最短路径优先:选择依赖树中路径最短的版本
  2. 最先声明优先:POM中先声明的依赖优先级更高
  3. 排除特定依赖:显式排除冲突版本
    <dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions>
    </dependency>
    

4.3 依赖树分析命令

使用Maven命令可视化依赖关系:

mvn dependency:tree -Dverbose
mvn dependency:analyze

五、企业级BOM设计实践

5.1 分层BOM架构

BOM层级管理内容更新频率
基础BOMJDK版本、日志框架、工具库半年/年
中间件BOM数据库驱动、消息队列、缓存季度更新
业务BOM公司内部组件、领域SDK按需发布

5.2 BOM版本规范

推荐采用时间戳版本策略:

[产品线代码]-[年份][季度].R[迭代号]

示例:infra-2023Q3.R2 表示2023年第三季度第2次迭代

5.3 安全审计集成

在CI流水线中集成依赖扫描:

# GitLab CI示例
dependency-check:stage: testimage: owasp/dependency-check:latestscript:- dependency-check.sh --project "MyApp" --scan ./ --format HTMLartifacts:paths:- dependency-check-report.html

六、未来发展趋势

  1. 软件物料清单(SBOM):符合NTIA标准的SBOM输出
  2. 基于内容的寻址:使用SHA256校验码替代版本号
  3. 多语言依赖管理:支持Python、Rust等语言的混合管理
  4. 动态依赖更新:结合NVD数据库的实时漏洞检测

参考文献

  1. Apache Maven Project. (2023). Maven Dependency Mechanism. https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
  2. Sonatype. (2023). Maven Dependency Tree Guide. https://help.sonatype.com/repomanager3/nexus-repository-administration/formats/maven-repositories/maven-dependency-trees
  3. Spring Team. (2023). Using BOM Files. https://spring.io/guides/gs/maven-multi-bom/
  4. OWASP Foundation. (2023). Dependency-Check User Manual. https://jeremylong.github.io/DependencyCheck/
  5. Linux Foundation. (2023). Software Package Data Exchange (SPDX). https://spdx.dev/

相关文章:

Maven 依赖坐标与BOM统一管理

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

UV: Python包和项目管理器(从入门到不放弃教程)

目录 UV: Python包和项目管理器&#xff08;从入门到不放弃教程&#xff09;1. 为什么用uv&#xff0c;而不是conda或者pip2. 安装uv&#xff08;Windows&#xff09;2.1 powershell下载2.2 winget下载2.3 直接下载安装包 3. uv教程3.1 创建虚拟环境 (uv venv) 4. uvx5. 此pip非…...

32单片机——GPIO的工作模式

1、GPIO GPIO&#xff08;General Purpose Input Output&#xff0c;通用输入输出端口&#xff09;是控制或者采集外部器件的信息的外设&#xff0c;即负责输入输出。它按组分配&#xff0c;每组16个IO口&#xff0c;组数视芯片而定。STM32F103ZET6芯片是144脚的芯片&#xff0…...

Science Robotics 新型层级化架构实现250个机器人智能组队,“单点故障”系统仍可稳定运行

近期&#xff0c;比利时布鲁塞尔自由大学博士生朱炜煦与所在团队提出了一种创新的机器人群体架构——“自组织神经系统”&#xff08;SoNS&#xff0c;Self-organizing Nervous System&#xff09;。 它通过模仿自然界中的生物神经系统的组织原理&#xff0c;为机器人群体建立了…...

【HFP】蓝牙HFP协议来电处理机制解析

目录 一、协议概述与技术背景 1.1 HFP协议演进 1.2 核心角色定义 1.3 关键技术指标 二、来电接入的核心交互流程 2.1 基础流程概述&#xff1a;AG 的 RING 通知机制 2.2 HF 的响应&#xff1a;本地提醒与信令交互 三、带内铃声&#xff08;In-Band Ring Tone&#xff0…...

03-谷粒商城笔记

一个插件的install和生命周期的报错是不一样的 Maven找不到ojdbc6和sqljdbc4依赖包 这时候我找到了jar包&#xff0c;然后我就先找到一个jar安装到了本地仓库。 在终端上进行命令了&#xff1a; mvn install:install-file -DfileD:\ojdbc6-11.2.0.4.jar -DgroupIdcom.oracle …...

PHP 反序列化CLI 框架类PHPGGC 生成器TPYiiLaravel 等利用

# 反序列化链项目 -PHPGGC&NotSoSecure -NotSoSecure https://github.com/NotSoSecure/SerializedPayloadGenerator 为了利用反序列化漏洞&#xff0c;需要设置不同的工具&#xff0c;如 YSoSerial(Java) 、 YSoSerial.NET 、 PHPGGC 和它的先决条件。 Deserializati…...

LeetCode热题100——283. 移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出:…...

C++入门小馆: 探寻vector类

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…...

力扣hot100_链表(3)_python版本

一、25. K 个一组翻转链表 1.1、206. 反转链表 py代码 class ListNode:def __init__(self, val0, next node):self.val valself.next next class Solution:def reverseList(self, head):pre Nonecur headwhile cur:next cur.nextcur.next prepre curcur nextreturn p…...

Lua 第9部分 闭包

在 Lua 语言中&#xff0c;函数是严格遵循词法定界的第一类值。 “第一类值”意味着 Lua 语言中的函数与其他常见类型的值&#xff08;例如数值和字符串&#xff09;具有同等权限&#xff1a; 一个程序可以将某个函数保存到变量中&#xff08;全局变量和局部变量均可&a…...

【Linux】冯诺依曼体系结构及操作系统架构图的具体剖析

目录 一、冯诺依曼体系结构 1、结构图 2、结构图介绍&#xff1a; 3、冯诺依曼体系的数据流动介绍 4、为什么在该体系结构中要存在内存&#xff1f; 二、操作系统架构图介绍 1、操作系统架构图 2、解析操作系统架构图 3、为什么要有操作系统&#xff1f; 前些天发现了一…...

解析虚拟机与Docker容器化服务的本质差异及Docker核心价值

解析虚拟机与Docker容器化服务的本质差异及Docker核心价值 1.1 硬件虚拟化与操作系统级虚拟化 虚拟机&#xff08;VM&#xff09;基于硬件级虚拟化技术&#xff08;Hypervisor&#xff09;&#xff0c;通过模拟完整硬件栈&#xff08;CPU、内存、存储、网络&#xff09;创建独…...

FreeRTOS深度解析:队列集(Queue Sets)的原理与应用

FreeRTOS深度解析&#xff1a;队列集&#xff08;Queue Sets&#xff09;的原理与应用 什么是队列集&#xff1f; 在FreeRTOS中&#xff0c;队列集&#xff08;Queue Sets&#xff0c;英文名xQueueSet&#xff09;是一种强大的数据结构&#xff0c;用于高效管理多个队列。它的…...

java将pdf转换成word

1、jar包准备 在项目中新增lib目录&#xff0c;并将如下两个文件放入lib目录下 aspose-words-15.8.0-jdk16.jar aspose-pdf-22.9.jar 2、pom.xml配置 <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><versi…...

网络原理 - 6

目录 4. 滑动窗口 滑动窗口出现丢包 情况一&#xff1a;数据报已经抵达&#xff0c;ACK 被丢了​编辑 情况二&#xff1a;数据报直接就丢了 5. 流量控制 完&#xff01; 4. 滑动窗口 这个滑动窗口是 TCP 中非常有特点的机制。 我们知道&#xff0c;TCP 是通过确认应答&…...

【Linux网络】构建类似XShell功能的TCP服务器

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

Spring AI - Redis缓存对话

先看效果 对话过程被缓存到了Redis 中。 原理 在上一节我们快速入门了SpringAI&#xff0c;具体文章请查看&#xff1a;快速入门Spring AI 创建 ChatClient 的代码如下&#xff1a; this.chatClient ChatClient.builder(chatModel).defaultSystem(DEFAULT_PROMPT).defaultAd…...

rk3588 驱动开发(二)第四章嵌入式 Linux LED 驱动开发实验

4.1 Linux 下 LED 灯驱动原理 Linux 下的任何外设驱动&#xff0c;最终都是要配置相应的硬件寄存器。所以本章的 LED 灯驱动 最终也是对 RK3588 的 IO 口进行配置&#xff0c;与裸机实验不同的是&#xff0c;在 Linux 下编写驱动要符合 Linux 的驱动框架。开发板上的 LED 连接…...

第49讲:AI驱动的农业碳汇估算与生态价值评估 —— 打造更“绿”的智慧农业未来

目录 🌍 一、农业碳汇:我们为什么要关心它? 🤖 二、AI是如何介入农业碳汇评估的? 🛠 三、案例实战:AI估算区域农田碳汇储量 📍 场景设定: 📊 数据来源: 🔁 处理流程: 📈 四、生态价值评估:从碳储量到生态效益 🧭 五、平台与工具推荐 💬 六、…...

springmvc入门案例

目录 前言 springmvc概述 springmvc入门案例&#xff08;使用配置类替代原本的web.xml) 第一步、创建一个web工程 第二步、引入相应的依赖&#xff08;servlet-api、spring-webmvc、&#xff09; 第三步、编写 SpringMVC配置类&#xff0c;并开启包扫描功能 第四步、编写…...

Node.js学习

概述 Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境&#xff0c;允许在服务器端运行 JavaScript 代码。它采用事件驱动和非阻塞 I/O 模型&#xff0c;适合构建高性能、可扩展的网络应用&#xff0c;尤其擅长处理实时应用和大规模数据密集型场景 背景 JavaScri…...

SQL注入漏洞中会使用到的函数

目录 一、信息获取函数 1. 通用函数 2. 元数据查询&#xff08;INFORMATION_SCHEMA&#xff09; 二、字符串操作函数 1. 字符串连接 2. 字符串截取 3. 编码/解码 三、报错注入专用函数 1. MySQL 2. SQL Server 3. PostgreSQL 四、时间盲注函数 1. 通用延迟 2. 计…...

MIT IDSS深度解析:跨学科融合与系统科学实践

麻省理工学院的IDSS(Institute for Data, Systems, and Society, IDSS)是一个致力于通过先进分析方法推动教育与研究的前沿机构。它将工程学、信息科学和数据科学的方法与社会科学的分析方法相结合,以应对复杂的社会挑战。 MIT IDSS 建立在统计学、计算机科学和特定应用领域…...

重塑智慧出行新生态,德赛西威全新战略愿景发布

4月22日&#xff0c;上海车展开幕前夕&#xff0c;德赛西威以“智新境&#xff0c;向远大”为主题&#xff0c;正式对外发布全新发展战略及使命、愿景&#xff1b;同时&#xff0c;代表未来AI出行趋势的智慧出行解决方案Smart Solution 3.0重磅亮相。 一、把握变革节点 创领产…...

全面解析 classification_report:评估分类模型性能的利器

解读 classification_report 的使用&#xff1a;评估分类模型性能的关键工具 在机器学习中&#xff0c;分类任务是最常见的应用场景之一。无论是垃圾邮件过滤、图像识别还是情感分析&#xff0c;分类模型的性能评估都是至关重要的一步。而 classification_report 是 Scikit-le…...

Qt案例 使用QFtpServerLib开源库实现Qt软件搭建FTP服务器,使用QFTP模块访问FTP服务器

本以为搭建和访问FTP服务器的功能已经是被淘汰的技术了&#xff0c;只会在学习新技术的时候才会了解学习学习&#xff0c;WinFrom版本&#xff0c;和windows Api版本访问FTP服务器的功能示例也都写过。没想到这次会在项目中再次遇到&#xff0c; 这里记录下使用Qt开源库QFtpSer…...

图像后处理记录

图像后处理记录 ocr后处理记录 opencv裁剪 编译命令 cmake -S . -B build-x64 -DBUILD_LIST"core,imgproc,imgcodecs,highgui" -DBUILD_SHARED_LIBSOFF -DBUILD_opencv_appsOFF -DBUILD_opencv_jsOFF -DBUILD_ANDROID_PROJECTSOFF -DBUILD_ANDROID_EXAMPLESOFF -…...

解决element中的el-anchor链接被作为路由跳转导致页面404

解决element中的el-anchor链接被作为路由跳转导致页面404 问题&#xff1a; 在使用elementPlus时&#xff0c;el-anchor-link中的href被识别为路由进行跳转&#xff0c;导致不能正常跳转到锚点&#xff0c;且页面显示404。 解决&#xff1a;自定义方法解决 <!--添加hand…...

Mapreduce中maven打包

MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff08;例如&#xff1a;jar包&#xff09;&#xff0c;并发运行在…...

C++初阶——string的使用(下)

C初阶——string的使用&#xff08;下&#xff09; 一、string类对象的容量操作 对于string的容量操作&#xff0c;我们可以通过顺序表来理解&#xff0c;顺序表是通过动态数组来实现的&#xff0c;在数据结构专栏的第一篇就是顺序表的详细讲解&#xff0c;链接如下&#xff…...

AIGC vs 人类创作者:是竞争还是协作?

AIGC vs 人类创作者&#xff1a;是竞争还是协作&#xff1f; 随着人工智能技术的飞速发展&#xff0c;特别是生成式AI&#xff08;AIGC, AI-Generated Content&#xff09;的崛起&#xff0c;越来越多的领域开始出现AI的身影。从文本创作、图像生成到音乐制作&#xff0c;AIGC…...

Stable Baselines3 结合 gym 训练 CartPole 倒立摆

视频讲解&#xff1a; Stable Baselines3 结合 gym 训练 CartPole 倒立摆 今天介绍下stable_baselines3和gym&#xff0c;可以方便实现DL的实现&#xff0c;应用在机械臂catch、reach等场景 测试代码仓库&#xff1a;https://github.com/LitchiCheng/DRL-learning.git https:…...

ctfshow web8

前言 学习内容&#xff1a;简单的盲注脚本的书写 web8 这个题目题目手动注入很麻烦 主要是他过滤了 union 空格和 过滤了union的解决方法 1、使用盲注(报错注入和盲注) 2、使用时间盲注 3、堆叠注入 盲注脚本的书写 首先他是有注入点的 然后熟悉requests包的使用 …...

Linux程序地址空间

目录 研究背景 程序地址空间回顾 来段代码感受一下 进程地址空间 Linux2.6内核进程调度队列 一个CPU拥有一个runqueue 优先级 活跃队列&#xff08;只出不进&#xff09; 过期队列&#xff08;只进不出&#xff09; active指针和expired指针 总结 研究背景 Linux内核版本&#…...

破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代

丝滑升级拥抱大模型&#xff1a;详解AI时代的应用智能化升级路径 破茧成蝶&#xff1a;阿里云应用服务器让传统 J2EE 应用无缝升级AI原生时代 ——十年代码无需重写&#xff0c;三步开启智能化跃迁 作者&#xff1a;孤弋、孚阳 序幕&#xff1a;一场跨越 20 年的技术对话 在杭…...

游戏引擎学习第240天:将渲染器移至第三层

这节又枯燥又无聊简直了 回顾并为今天的内容做铺垫 昨天我们说到&#xff0c;想对渲染器和平台层的集成方式做一些修改。我们之前简单讲了一下修改的目的&#xff1a;我们希望游戏本身不再直接调用 OpenGL 的渲染代码&#xff0c;而是只生成一组渲染指令缓冲区&#xff0c;然…...

2025.04.23华为机考第三题-300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 时空旅行者的最优路径 问题描述 A先生是一名时空旅行者,他可以在不同的时空点之间穿梭。每次从一个时空点跳跃到另一个时空点需要消耗一个时间单位。在每个时空点,都有一些特…...

Kafka 保证多分区的全局顺序性的设计方案和具体实现

Kafka 本身无法直接保证多分区的全局顺序性&#xff0c;因为分区设计旨在并行处理以提升吞吐量。 要实现多分区的顺序性&#xff0c;可尝试通过以下方法在系统层面或业务逻辑上解决&#xff1a; 一、方案设计 单一分区路由&#xff08;还是将消息发送到同一分区&#xff09;&a…...

数据结构初阶:二叉树(四)

概述&#xff1a;本篇博客主要介绍链式结构二叉树的实现。 目录 1.实现链式结构二叉树 1.1 二叉树的头文件&#xff08;tree.h&#xff09; 1.2 创建二叉树 1.3 前中后序遍历 1.3.1 遍历规则 1.3.1.1 前序遍历代码实现 1.3.1.2 中序遍历代码实现 1.3.1.3 后序遍历代…...

华为开发岗暑期实习笔试(2025年4月16日)

刷题小记&#xff1a; 第一题怀疑测试样例不完整&#xff0c;贪心法不应该能够解决该题。第二题使用0-1BFS解决单源最短路径的问题&#xff0c;往往搭配双端队列实现。第三题是运用动态规划解决最大不重叠子区间个数的问题&#xff0c;难点在于满足3重判断规则&#xff0c;所需…...

第一篇:Django简介

第一篇&#xff1a;Django简介 文章目录 第一篇&#xff1a;Django简介一、纯手写一个简易版的web框架1、软件开发架构2、HTTP协议3、简易的socket服务端4、wsgiref模块5、动静态网页6、后端获取当前时间展示到html页面上7、字典数据传给html文件8、数据从数据库中获取的展示到…...

2025年渗透测试面试题总结-拷打题库13(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库13 一、GitHub等三方敏感信息泄漏防御 二、业务逻辑漏洞技术规避 …...

(09)Vue脚手架的使用(Vite、vue-cli、create-vue)

本系列教程目录&#xff1a;Vue3Element Plus全套学习笔记-目录大纲 文章目录 第3章 Vue脚手架3.1 vite3.3.1 Vite使用1&#xff09;创建Vite项目2&#xff09;Vite项目打包 3.1.2 组件化开发3.1.4 Vite工程运行原理1&#xff09;分析main.js2&#xff09;自定义根组件 3.2 vue…...

Unity 将Excel表格中的数据导入到Mysql数据表中

1.Mysql数据表users如下&#xff1a; 2.即将导入的Excel表格如下&#xff1a; 3.代码如下&#xff1a; using System; using System.Data; using System.IO; using Excel; using MySql.Data.MySqlClient; using UnityEngine; using UnityEditor;public class ImportExcel {// …...

【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式

两种方法的对比 方法1&#xff1a;sender() 优点&#xff1a;代码简洁&#xff0c;无需额外参数 缺点&#xff1a;依赖运行时类型转换&#xff0c;安全性较低 适用场景&#xff1a;简单场景&#xff0c;少量按钮 方法2&#xff1a;Lambda (推荐) 优点&#xff1a;安全直观&…...

Python----深度学习(神经网络的过拟合解决方案)

一、正则化 1.1、正则化 正则化是一种用于控制模型复杂度的技术。它通过在损失函数中添加额外的项&#xff08;正则 化项&#xff09;来降低模型的复杂度&#xff0c;以防止过拟合。 在机器学习中&#xff0c;模型的目标是在训练数据上获得较好的拟合效果。然而&#xff0c;过…...

【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路

国产数据库早已实现 “可替代”&#xff0c;但要真正与国际头部厂商掰手腕&#xff0c;必须在 HTAP&#xff08;Hybrid‑Transaction/Analytical Processing&#xff09;与 AI 加速 两条技术赛道上实现跨越。KingbaseES 自 V8R3 调整为多进程架构后&#xff0c;历经 V8R6、KSOn…...

创建第一个Spring Boot项目

什么是Spring Boot 随着Spring的快速发展&#xff0c;项目中的XML文件越来越多&#xff0c;繁琐的配置以及&#xff0c;整合第三方框架的配置问题&#xff0c;导致大大增加了开发和部署的效率&#xff0c;使开发者无法专心于业务的开发。Spring Boot就相当于使Spring框架的脚手…...

Java—— 正则表达式 练习

需求&#xff1a; 请编写正则表达式验证用户输入的手机号码是否满足要求。 请编写正则表达式验证用户输入的邮箱号是否满足要求。 请编写正则表达式验证用户输入的电话号码是否满足要求。 验证手机号码 13112345678 13712345667 13945679027 139456790271 验证座机电话号码 02…...