Maven 多模块项目(如微服务架构)中,父 POM(最外层) 和 子模块 POM(具体业务模块)的区别和联系
文章目录
- **1. 父 POM 的核心职责**
- **1.1 依赖管理 (`dependencyManagement`)**
- **1.2 插件管理 (`pluginManagement`)**
- **1.3 其他公共配置**
- **2. 子模块 POM 的核心职责**
- **2.1 依赖声明 (`dependencies`)**
- **2.2 插件启用与覆盖 (`plugins`)**
- **3. 核心对比表**
- **4. 使用场景示例**
- **场景 1:统一管理 Spring Boot 依赖**
- **场景 2:覆盖插件配置**
- **5. 最佳实践**
- **6:总结**
- 7:完整父子pom实例
- 1、父pom
- 2、子pom
1. 父 POM 的核心职责
父 POM 是项目的 全局配置中心,负责统一管理依赖版本、插件版本和公共配置,确保所有子模块的一致性。
1.1 依赖管理 (dependencyManagement
)
-
作用:集中定义依赖的版本和范围,子模块引用时无需重复指定版本。
-
示例:
<!-- 父 POM --> <dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.1.5</version></dependency></dependencies> </dependencyManagement>
1.2 插件管理 (pluginManagement
)
-
作用:统一插件版本和默认配置,子模块按需启用。
-
示例:
<!-- 父 POM --> <build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>17</source><target>17</target></configuration></plugin></plugins></pluginManagement> </build>
1.3 其他公共配置
- 定义全局属性(如
<properties>
中的 Java 版本)。 - 声明模块聚合(
<modules>
)。<modules><module>auth</module><module>gateway</module><module>modules</module><module>api</module><module>common</module> </modules>
2. 子模块 POM 的核心职责
子模块 POM 负责 具体模块的实现配置,继承父 POM 的依赖和插件模板,并按需覆盖或扩展。
2.1 依赖声明 (dependencies
)
-
规则:
- 如果依赖在父 POM 的
dependencyManagement
中定义,子模块只需声明groupId
和artifactId
。 - 如果依赖未在父 POM 中定义,需在子模块中完整声明(含版本)。
- 如果依赖在父 POM 的
-
示例:
<!-- 子模块 POM --> <dependencies><!-- 继承父 POM 的版本 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 独立声明新依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.33</version></dependency> </dependencies>
2.2 插件启用与覆盖 (plugins
)
-
规则:
- 如果插件在父 POM 的
pluginManagement
中定义,子模块只需声明插件坐标即可继承配置。 - 子模块可覆盖父 POM 的插件配置(如修改参数、绑定生命周期)。
- 如果插件在父 POM 的
-
示例:
<!-- 子模块 POM --> <build><plugins><!-- 继承父 POM 的编译插件配置 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId></plugin><!-- 覆盖父 POM 的配置 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests> <!-- 禁用测试 --></configuration></plugin></plugins> </build>
3. 核心对比表
配置项 | 父 POM | 子模块 POM |
---|---|---|
依赖管理 | <dependencyManagement> 定义版本 | <dependencies> 声明具体依赖 |
插件管理 | <pluginManagement> 定义版本和配置 | <plugins> 启用插件或覆盖配置 |
版本控制 | 集中管理,避免冲突 | 继承父版本或独立声明 |
配置覆盖 | 不可覆盖 | 可覆盖父 POM 的配置(如插件参数) |
强制性 | 可选(但推荐) | 必须显式声明需要的依赖或插件 |
4. 使用场景示例
场景 1:统一管理 Spring Boot 依赖
-
父 POM:
<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.1.5</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>
-
子模块:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>
场景 2:覆盖插件配置
-
父 POM:
<pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.2.1</version><configuration><skipTests>false</skipTests></configuration></plugin></plugins> </pluginManagement>
-
子模块:
<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests> <!-- 覆盖父 POM 配置 --></configuration></plugin> </plugins>
5. 最佳实践
- 父 POM 原则:
- 仅在
dependencyManagement
和pluginManagement
中定义版本,不直接使用<dependencies>
或<plugins>
。 - 通过
<properties>
统一管理版本号,避免硬编码。
- 仅在
- 子模块原则:
- 仅声明需要的依赖和插件,避免冗余配置。
- 覆盖父 POM 配置时需明确标注(如注释说明)。
- 版本一致性:
- 公共依赖(如 Spring Boot、Lombok)应在父 POM 中统一管理。
- 业务特定依赖(如某个工具类库)可在子模块中独立声明。
6:总结
- 父 POM 是 模板,负责定义“用什么版本”。
- 子模块 POM 是 实例,负责声明“具体用哪些”。
- 通过合理分工,既能保证一致性,又能满足模块个性化需求。
7:完整父子pom实例
1、父pom
<?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>com.wkl</groupId><artifactId></artifactId><version>3.6.5</version><name></name><url>http://www..vip</url><description>开发系统</description><properties><version>3.6.5</version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-boot.version>2.7.18</spring-boot.version><spring-cloud.version>2021.0.9</spring-cloud.version><spring-cloud-alibaba.version>2021.0.6.1</spring-cloud-alibaba.version><spring-boot-admin.version>2.7.16</spring-boot-admin.version><tobato.version>1.27.2</tobato.version><kaptcha.version>2.3.3</kaptcha.version><pagehelper.boot.version>2.0.0</pagehelper.boot.version><druid.version>1.2.23</druid.version><namic-ds.version>4.3.1</namic-ds.version><commons.io.version>2.13.0</commons.io.version><velocity.version>2.3</velocity.version><fastjson.version>2.0.53</fastjson.version><jjwt.version>0.9.1</jjwt.version><minio.version>8.2.2</minio.version><poi.version>4.1.2</poi.version><springdoc.version>1.6.9</springdoc.version><transmittable-thread-local.version>2.14.4</transmittable-thread-local.version><org.mapstruct.version>1.6.3</org.mapstruct.version><hutool.version>5.8.25</hutool.version><lombok.version>1.18.30</lombok.version><!-- override dependency version --><tomcat.version>9.0.98</tomcat.version><logback.version>1.2.13</logback.version><spring-framework.version>5.3.39</spring-framework.version></properties><!-- 依赖声明 --><dependencyManagement><dependencies><!-- 覆盖SpringFramework的依赖配置--><dependency><groupId>org.springframework</groupId><artifactId>spring-framework-bom</artifactId><version>${spring-framework.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud 微服务 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud Alibaba 微服务 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- 覆盖logback的依赖配置--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency><!-- 覆盖tomcat的依赖配置--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId><version>${tomcat.version}</version></dependency><!-- FastDFS 分布式文件系统 --><dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>${tobato.version}</version></dependency><!-- Springdoc webmvc 依赖配置 --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>${springdoc.version}</version></dependency><!-- 验证码 --><dependency><groupId>pro.fessional</groupId><artifactId>kaptcha</artifactId><version>${kaptcha.version}</version></dependency><!-- pagehelper 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.boot.version}</version></dependency><!-- io常用工具类 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons.io.version}</version></dependency><!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><!-- 代码生成使用模板 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>${velocity.version}</version></dependency><!-- JSON 解析器和生成器 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>${fastjson.version}</version></dependency><!-- JWT --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- 线程传递值 --><dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId><version>${transmittable-thread-local.version}</version></dependency><!-- 核心模块 --><dependency><groupId>com.wkl</groupId><artifactId>-common-core</artifactId><version>${.version}</version></dependency><!-- 接口模块 --><dependency><groupId>com.wkl</groupId><artifactId>-common-swagger</artifactId><version>${.version}</version></dependency><!-- 安全模块 --><dependency><groupId>com.wkl</groupId><artifactId>-common-security</artifactId><version>${.version}</version></dependency><!-- 权限范围 --><dependency><groupId>com.wkl</groupId><artifactId>-common-datascope</artifactId><version>${.version}</version></dependency><!-- 多数据源 --><dependency><groupId>com.wkl</groupId><artifactId>-common-datasource</artifactId><version>${.version}</version></dependency><!-- 分布式事务 --><dependency><groupId>com.wkl</groupId><artifactId>-common-seata</artifactId><version>${.version}</version></dependency><!-- 日志记录 --><dependency><groupId>com.wkl</groupId><artifactId>-common-log</artifactId><version>${.version}</version></dependency><!-- 缓存服务 --><dependency><groupId>com.wkl</groupId><artifactId>-common-redis</artifactId><version>${.version}</version></dependency><!-- 系统接口 --><dependency><groupId>com.wkl</groupId><artifactId>-api-system</artifactId><version>${.version}</version></dependency><!-- map转换 --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>${org.mapstruct.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency><!-- <dependency>-->
<!-- <groupId>cn.hutool</groupId>-->
<!-- <artifactId>hutool-all</artifactId>-->
<!-- <version>${hutool.version}</version>-->
<!-- </dependency>--></dependencies></dependencyManagement><modules><module>auth</module><module>gateway</module><module>modules</module><module>api</module><module>common</module></modules><packaging>pom</packaging><dependencies><!-- bootstrap 启动器 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><annotationProcessorPaths><!-- Lombok 处理器 --><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></path><!-- MapStruct 处理器 --><path><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.5.Final</version></path></annotationProcessorPaths></configuration></plugin></plugins></pluginManagement></build><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>
2、子pom
<?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"><parent><artifactId>-modules</artifactId><groupId>com.wkl</groupId><version>3.6.5</version></parent><modelVersion>4.0.0</modelVersion><artifactId>business</artifactId><description>modules-bus业务模块</description><dependencies><!-- SpringCloud Alibaba Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringCloud Alibaba Nacos Config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- SpringCloud Alibaba Sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- SpringBoot Actuator --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Mysql Connector --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!-- RuoYi Common DataSource --><dependency><groupId>com.wkl</groupId><artifactId>-common-datasource</artifactId></dependency><!-- RuoYi Common DataScope --><dependency><groupId>com.wkl</groupId><artifactId>-common-datascope</artifactId></dependency><!-- RuoYi Common Log --><dependency><groupId>com.wkl</groupId><artifactId>-common-log</artifactId></dependency><!-- RuoYi Common Swagger --><dependency><groupId>com.wkl</groupId><artifactId>-common-swagger</artifactId></dependency><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.15.5</version><exclusions><exclusion><artifactId>elasticsearch-rest-client</artifactId><groupId>org.elasticsearch.client</groupId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>8.15.5</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.17.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.17.0</version></dependency><dependency><groupId>jakarta.json</groupId><artifactId>jakarta.json-api</artifactId><version>2.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- starter-test:junit + spring-test + mockito --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>
相关文章:
Maven 多模块项目(如微服务架构)中,父 POM(最外层) 和 子模块 POM(具体业务模块)的区别和联系
文章目录 **1. 父 POM 的核心职责****1.1 依赖管理 (dependencyManagement)****1.2 插件管理 (pluginManagement)****1.3 其他公共配置** **2. 子模块 POM 的核心职责****2.1 依赖声明 (dependencies)****2.2 插件启用与覆盖 (plugins)** **3. 核心对比表****4. 使用场景示例**…...
【AIGC】图片变视频 - SD ComfyUI视频生成
效果图 完整过程 SD ComfyUI 下载 下载 https://pan.quark.cn/s/64b808baa960 解压密码:bilibili-秋葉aaaki 完整 https://www.bilibili.com/video/BV1Ew411776J/ SD ComfyUI 安装 1.解压 2.将controlnet内部文件复制到 ComfyUI-aki-v1.6\ComfyUI\models\control…...
思考我的未来职业
李升伟 编译 关于我 我是一名专注于后端开发的软件工程师,拥有十年专业编程经验。从学生时代起,编程就是我的热情所在,并一直保持着这个长期爱好。此外,我也热爱动漫和电影。 然而过去几年,婚姻、家庭责任和育儿让生…...
StarRocks数据导入
文章目录 StarRocks数据导入Broker LoadETL 集群导数非 ETL 集群导数Broker Load 任务查看BrokerLoad⼤数据量导⼊优化参数推荐配置BrokerLoad 排查思路 Insert IntoInsert Into大数据量导入优化参数 Stream LoadStreamLoad⼤数据量导⼊优化参数推荐配置Stream Load 排查思路 R…...
mmdetection安装
链接: link...
光学像差的类型与消除方法
### **光学像差的类型、理解与消除方法** 光学像差是指实际光学系统成像时,由于透镜或反射镜的非理想特性导致的光线偏离理想路径,从而影响成像质量的现象。像差可分为**单色像差**(与波长无关)和**色差**(与波长相关…...
Manus AI 破局多语言手写识别,解锁智能新天地
Manus AI 破局多语言手写识别,解锁智能新天地 前言 在人工智能技术不断渗透各行各业的背景下,手写识别领域长期面临多语言适配难、复杂场景泛化能力弱等挑战。ManusAI凭借其创新的算法架构和多模态融合技术,成功突破传统OCR(光学…...
文字颜色的渐变(svg实现)
一 上下渐变(有底部阴影) 效果如图: svg代码如下: <svg width"300" height"100" xmlns"http://www.w3.org/2000/svg"><defs><linearGradient id"textGradient" x1"…...
Java-设计模式
Java-设计模式 ⓪设计模式基础 ❶设计模式分类 创建型模式 用于描述对象实例化(创建对象)的模式,即用于解耦对象的实例化过程 GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 …...
“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验
“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验 哈喽小伙伴们好,我是Stark-C~ 曾几何时,哪怕是现在,估计依然有很多小伙伴沉迷于开放性和自由度极高的《我的世界》这种沙盒游戏吧~。 我个人到现在手机上还有这款游戏…...
K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志
k8s中pod默认时区不是中国的,挂载一个时区可以解决 vi pod.yaml apiVersion: v1 kind: Pod metadata:name: counter spec:containers:- name: countimage: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentargs: [/bin/sh,-c,i0;while true;do …...
光电效应及普朗克常数的测定数据处理 Python实现
内容仅供参考,如有错误,欢迎指正,如有疑问,欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP (分段三次埃尔米特插值多项式) 因为实验时记录的数…...
hyperf中关于时间的设定
下面我来总结这三者的用法和它们之间的关系: 1. protected ?string $dateFormat U; 作用: 定义数据库日期字段的存储格式‘U’ 表示使用 Unix 时间戳格式(秒级,10位数字) 影响范围: 决定了模型从数据…...
编程实现自我指涉(self-reference)
从计算机的组成原理出发,编程实现自我指涉(self-reference)本质上是通过代码操纵代码,形成逻辑上的闭环。这种能力不仅是编程语言设计中的一个奇妙现象,更是计算理论、计算机架构、乃至哲学层面的一种深刻映射。让我们…...
数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充
前言 以矩阵图类型和像素图类型作为图像类数据的基础,但在使用过程中有个问题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析. 引入 原帖数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计(前端架构)-CSDN博客里有对…...
php写入\查询influxdb数据
namespace app\index\controller;use InfluxDB2\Client; use InfluxDB2\Model\WritePrecision; use InfluxDB2\Point;class Demo {/*** 显示资源列表** return \think\Response*/public function index(){$token 你的TOKEN;$org zzlichi;$bucket initdb;$client new Client…...
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布 伯努利分布在逻辑回归中的潜在含义及其与后续推导的因果关系 1. 伯努利分布作为逻辑回归的理论基础 ⭐️ 逻辑回归的核心目标是: 建模二分类问题中 目标变量 y y y 的概率分布。 伯努利分布(…...
Python正则表达式(一)
目录 一、正则表达式的基本概念 1、基本概念 2、正则表达式的特殊字符 二、范围符号和量词 1、范围符号 2、匹配汉字 3、量词 三、正则表达式函数 1、使用正则表达式: 2、re.match()函数 3、re.search()函数 4、findall()函数 5、re.finditer()函数 6…...
JavaScript基础-事件委托(代理、委派)
在Web开发中,处理用户交互时经常需要监听DOM元素上的事件。然而,当页面上存在大量的动态生成的元素时,直接给每个元素绑定事件处理器可能会导致性能问题和代码管理复杂度增加。这时,事件委托提供了一种更加高效且易于维护的解决方…...
《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型
《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型 《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型理解重叠 I/O 模型重叠 I/O本章讨论的重叠 I/O 的重点不在于 I/O 创建重叠 I/O 套接字执行重叠 I/O 的 WSASend 函数进行重叠 I/O 的 WSA…...
【区块链安全 | 第二篇】区块链概念详解
文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点(Node)5. 区块(Block)6. 区块链(Blockchain)7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易(Transaction&am…...
Android实践开发制作小猴子摘桃小游戏
Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取:Android可以存在版本差异项目如果不能正确运行,可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…...
“11.9元“引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 ✨
💥 "11.9元"引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 🎯 🔍 用 Mermaid原生防御体系图 #mermaid-svg-XZtcYBnmHrF9bFjc {font-family:"trebuchet ms",verdana,arial,sans-serif;fon…...
【C++】回调函数和回调对象
文章目录 回调可调用对象函数指针作回调函数对象作回调函数对象的使用std::function【C11】作回调使用 【C11】Lambda表达式作回调【C11】bind对象作回调std::bind的使用作回调使用 回调 当发生某种事件时需要调用或触发另一个事件即为回调,回调的核心即为将可调用…...
电子产品可靠性预计怎么做?
目录 1、电子产品可靠性预计的目的 2、电子产品可靠性预计的常用方法 2.1、基于统计数据的预计方法 2.2、物理模型预计方法 2.3、加速寿命试验 2.4、基于仿真的预计方法 3、电子产品可靠性预计的步骤 3.1、定义可靠性指标 3.2、收集数据 3.3、建立模型 3.4、进行仿真…...
Ubuntu20.0.4创建ssh key以及repo命令的使用
创建ssh key ssh-keygen //一路回车,不用输入任何东西cat ~/.ssh/id_rsa.pub 配置git config git config --global user.name xxx // 设置git用户名git config --global user.email xxx.com.cn //设置git 邮箱git config --list// remove the git config// rm -fr …...
Java动态代理的使用和安全问题
前言: java的动态代理是指进行明确的分工的操作(多接口 比如我是酒店的老板 有人找我合作 需要先经过前台 我的助理 而不是直接找我) 序列化 :为什么序列化 序列化的对象是一个类 我们也叫对象 class一堆东西里面有很多函…...
Linux云计算SRE-第二十一周
构建单节点prometheus,部署node exporter和mongo exporter。构建kibana大盘。包含主机PU使用率,主机MEM使用率,主机网络包速度。mongo db大盘,包含节点在线状态,读操作延迟等 一、实验环境准备 - 节点信息࿱…...
《Python实战进阶》第33集:PyTorch 入门-动态计算图的优势
第33集:PyTorch 入门-动态计算图的优势 摘要 PyTorch 是一个灵活且强大的深度学习框架,其核心特性是动态计算图机制。本集将带您探索 PyTorch 的张量操作、自动求导系统以及动态计算图的特点与优势,并通过实战案例演示如何使用 PyTorch 实现…...
python dict转换成json格式
一开始你变成字典格式 data [ { a : 1, b : 2, c : 3, d : 4, e : 5 } ] import json data [ { a : 1, b : 2, c : 3, d : 4, e : 5 } ] data2 json.dumps(data) print(data2)json.dumps(data) 是将数组json化。 json格式化输出 data2 json.dumps({a: Runoob, b: 7…...
美亚科技业绩波动明显:现金流为负,四起未决诉讼涉金额1700万
《港湾商业观察》施子夫 近期,广东美亚旅游科技集团股份有限公司(以下简称,美亚科技)披露第二轮审核问询函的回复。从两轮问询函监管层提出的问题来看,有关美亚科技业绩增长的合理性、募投项目的必要性及合理性、经营…...
Java面试总结+算法
目录 Java 中 和 equals 的区别是什么? 什么是类加载器,Java 中有哪些类加载器?它们的职责分别是什么? Redis 有哪些数据结构?它们分别适用于哪些场景? 什么是索引?MySQL 有哪些常见的索引类…...
深度优先搜索(DFS)在排列组合问题中的应用详解:C++实现与优化
一、排列问题(Permutations) 目标:生成所有可能的排列(元素顺序不同视为不同结果)。 示例:输入 [1,2,3],输出所有长度为3的排列,共6种。 C实现代码 #include <iostream> #i…...
GeoChat : Grounded Large Vision-Language Model for Remote Sensing论文精读
GeoChat : Grounded Large Vision-Language Model for Remote Sensing 是一个针对遥感场景的llm,提供支持多任务对话(对高分辨率遥感图像)。也造了个数据集。 一些思考: 文中提到的局限性:小物体和多框预测较难。小物…...
Postman使用02、断点、fiddler弱网测试
脚本操作 一、脚本导出 1.导出json脚本 2.打包json文件 3.下载的文件 二 .导入脚本 1.选择文件 2.点击导入 3.导入的接口 三.多接口运行 1.集合右键,点击run ,运行多个接口 2.编辑环境,集合,执行次数等 3.运行多个接口 四.运行…...
深入解析 C++20 中的 std::bind_front:高效函数绑定与参数前置
文章目录 1. 什么是 std::bind_front?2. 使用 std::bind_front2.1 基本用法2.2 绑定多个参数 3. 优势与特点3.1 简化代码3.2 支持可调用对象3.3 支持完美转发 4. 实际应用场景4.1 事件处理4.2 算法通用化4.3 成员函数调用 5. 总结 在现代 C 编程中,函数绑…...
Opencv计算机视觉编程攻略-第三节 图像颜色处理
第三节 图像颜色处理 1.颜色比较2.GrabCut分割图像3.色调、饱和度以及亮度 1.颜色比较 主要实现逐像素的颜色比较,其中注意BGR颜色空间不连续,不利于颜色提取和区分,转换到Lab空间: int getColorDistance(const cv::Vec3b& c…...
第十七章:Future Directions_《C++ Templates》notes
Future Directions 核心重难点:示例代码: 设计题多选题答案设计题详解 核心重难点: 泛型非类型模板参数 允许任意类型作为非类型模板参数(如template<typename T, auto N>)需解决类型推导和链接问题 编译期控制…...
ComfyUI-PSD-Replace: 海报与壁纸批量生成
ComfyUI-PSD-Replace: 海报与壁纸批量生成 🚀 插件介绍 ComfyUI-PSD-Replace 是一款强大的图像批量处理插件,专为设计师和创意工作者打造。无论你是想快速生成多款海报、定制壁纸,还是批量更新设计模板,本插件都能帮你轻松实现&a…...
图解预训练模型 ELMo 和 BERT
一、ELMo 二、BERT 以上笔记参考自b站up主 自然卷小蛮(自然卷小蛮的个人空间-自然卷小蛮个人主页-哔哩哔哩视频),感兴趣的可以去深入了解。...
YoloV8训练和平精英人物检测模型
概述 和平精英人物检测,可以识别游戏中所有人物角色,并通过绘制框将人物选中,训练的模型仅仅具有识别功能,可以识别游戏中的视频、图片等文件,搭配Autox.js可以推理,实现实时绘制,但是对手机性…...
基于物联网的智能蔬菜仓库设计(论文+源码)
1系统功能分析 由于蔬菜仓库内部环境直接影响到内部货物的正常存储工作,因此对蔬菜仓库内部环境进行智能化的监控具有重要意义。本次基于物联网的智能蔬菜仓库设计,系统实现的功能如下: (1)对蔬菜仓库内部进行温度检测…...
Java 字符流全解析:核心类实战指南
一、FileReader 与 FileWriter:文本文件基础操作 功能:直接基于字符处理文本文件,自动完成字节到字符的解码(默认使用系统编码)。 适用场景:读写简单的文本文件(如 .txt、.csv)。 …...
SQL Server 2022 安装问题
一、安装与配置问题 1. SQL Server 2022 安装失败怎么办? 常见原因: 硬件或操作系统不满足最低要求(如内存、磁盘空间不足)。未关闭防火墙或杀毒软件。之前版本的 SQL Server 残留文件未清理。 解决方案: 确保硬件配…...
Vue3 实现pdf预览
1.使用到的插件 vue3-pdf-app 以及预览效果 2.下载依赖 // 可以使用npm 以及pnpm // 下载版本1.0.3 pnpm install vue3-pdf-app^1.0.3 3.封装pdfModel组件复用 <template><VuePdfApp :page-scale"pageScale" :theme"theme" :style"width: …...
python网络爬虫开发实战之网页数据的解析提取
目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…...
GitHub Copilot平替:CodeGeeX 2.0实测报告
本文基于20个真实开发场景对CodeGeeX 2.0进行深度评测,涵盖代码生成质量、上下文理解能力、多语言支持度等关键维度。通过Python数据分析、Java微服务、React前端开发三大核心场景的对比实验,揭示其相比GitHub Copilot在中文语境支持、本地化部署、隐私保…...
QT对象模型
信号,槽,函数执行顺序 首先,拖入一个按钮,在转到槽,在click() 转到widget.cpp 在widget.h中 然后在widget.cpp中 运行结果 当发出信号后,先执行槽函数,再执行信号后面的函数(单线程) 在widget.h…...
C++:类型推导规则 unsigned short + 1
在 C/C 中,整数提升(Integer Promotion) 规则决定了 vlan_id 1 的类型: unsigned short 的值在运算时会被 提升(promote) 到 int 或 unsigned int(取决于平台)。 默认情况下&#x…...
PHP接口开发:从基础到高级的全面指南
一、接口基础与核心概念(约800字) 1.1 接口的本质定义 在PHP中,接口(Interface)是一种特殊的抽象结构,它通过interface关键字定义一组方法的契约规范,不包含具体实现。这种设计强制实现类必须遵循统一的调用标准,如: interface PaymentGateway {public function proc…...