理解pom.xml中的parent标签
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏: 循序渐进学SpringBoot
✨特色专栏: MySQL学习
🥭本文内容:理解pom.xml中的parent标签
📚个人知识库: Leo知识库,欢迎大家访问
1.前言☕
大家好,我是Leo哥🫣🫣🫣,今天给大家带来关于精品SpringBoot专栏,暂且就给他起名为循序渐进学SpringBoot,这里我参考了我上一个专栏:循序渐进学SpringSecurity6。有需要的朋友可以抓紧学习来哈,带你从SpringSecurity从零到实战项目。好了,我们进入正题,为什么会有SpringBoot这个专栏呢,是这样的,今年Leo哥也是正在重塑知识体系,从基础到框架,而SpringBoot又是我们框架中的核心,我觉得很有必要通过以博客的形式将我的知识系列进行输出,同时也锻炼一下自己的写作能力,如果能帮到大家那就更好啦!!!本地系列教程会从SpringBoot基础讲起,会以知识点+实例+项目的学习模式由浅入深对Spring Boot框架进行学习&使用。好了,话不多说让我们开始吧😎😎😎。
2.回顾
上一篇文章 我们学习了Spring Boot 项目的几种创建方式,这几种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/>
</parent>
有同学可能要问,Leo哥,这个不就是在Parent中去锁定版本嘛,没啥大不了了的嘛。
确实,但是Parent里面的门道可不止于此,我们这篇文章就一起来探索一下。
3.Parent概述
在Maven项目中的pom.xml
文件是这个项目的核心配置文件。parent
标签在这个配置文件中有着特殊的作用。简单来说,parent
标签是用来指明当前Maven项目继承自哪个父项目的。这里涉及到Maven的继承机制,我们可以从几个方面来理解这个标签的意义和作用:
3.1 继承
在Maven中,通过使用parent
标签,可以使得当前项目继承父项目的配置。这里的配置可以是依赖管理、插件配置、属性等。例如,如果很多模块都需要用到同样的版本管理或者构建配置,可以通过一个公共的父项目来管理这些共享配置,子项目通过指定父项目来继承这些配置。
3.2 聚合和继承的区别
在Maven中,有两种常见的多模块的项目结构 - 聚合(Aggregation)和继承(Inheritance)。parent
标签通常是继承的体现。如果一个项目只是简单地聚合其他模块,不一定用到parent
标签;它会用modules
标签列出所有子模块。但是,当这些模块需要共享配置时,通常会有一个父项目,各个子项目通过parent
标签来指定这个父项目,从而实现配置的继承。
3.3 parent标签的内容
parent
标签通常包含以下几个主要元素:
groupId
: 父项目的group ID。artifactId
: 父项目的artifact ID。version
: 父项目的版本号。relativePath
: 父POM的相对路径。如果不指定,默认查找../pom.xml
。
例如:
<parent><groupId>com.example</groupId><artifactId>example-parent</artifactId><version>1.0.0</version>
</parent>
这段代码表示当前项目的父项目有groupId
为com.example
,artifactId
为example-parent
,版本为1.0.0
。
3.4 版本管理
在父项目中定义的<dependencyManagement>
部分可以设定依赖的版本,这样子模块只需声明要使用的依赖,而不需要每个子模块单独指定版本号,这大大方便了版本管理。
3.5 插件管理
父项目同样可以定义<pluginManagement>
来设定插件的版本和配置,子项目也可以继承父项目中的插件配置。
4.Parent的作用
使用 Maven 是为了更好的帮项目管理包依赖,Maven 的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上就可以从仓库中依赖到相应的jar包。
现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:example.jar
。如果分别在三个项目的pom文件中定义各自对example.jar
的依赖,那么当example.jar
的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对example.jar
的依赖,ABC三个子项目中只需要定义,parent标签中写上parent项目的pom坐标就可以引用到example.jar
了。
5.Parent的功能
当我们创建一个SpringBoot项目的时候,可以继承自一个 spring-boot-starter-parent
,也可以不继承自它。那么他到底有哪些功能呢
- 定义了 Java 编译版本为 1.8 。
- 使用 UTF-8 格式编码。
- 继承自
spring-boot-dependencies
,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。 - 执行打包操作的配置。
- 自动化的资源过滤。
- 自动化的插件配置。
- 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
我们下面来看一个实例:
<?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.javatop</groupId><artifactId>Leo-springboot-tutorial</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>springboot-init</module><module>springboot-demo</module></modules><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><revision>2.3.12.RELEASE</revision></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${revision}</version><type>pom</type><scope>import</scope></dependency><!--spring-boot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${revision}</version></dependency><!--SpringBootTest--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${revision}</version><scope>test</scope></dependency></dependencies></dependencyManagement></project>
这里是我们上一篇创建SpringBoot项目对应的POM文件。
可以看出来,我们并没有直接去继承 spring-boot-starter-parent
,而是通过dependencyMangement,然后再properties标签中去锁定他的版本。
这样的话,以后我们创建的子项目一旦继承了我们父项目,我们就不需要再去考虑各种版本问题了,所有的版本信息只需要在父项目的dependencyMangement进行锁定即可。
6.Parent源码
我们创建SpringBoot项目之后,我们可以在本地 Maven 仓库中看到看到这个具体的 parent 文件。
笔者这里的路径是:D:\software\maven-repository\org\springframework\boot\spring-boot-dependencies\2.3.12.RELEASE
,大家可以按需查找。
当然也可以通过我们POM中的代码点击过去。
就能看到以下源码了。
我们可以看到,它继承自 spring-boot-dependencies
,这里保存了基本的依赖信息,另外我们也可以看到项目的编码格式,JDK 的版本等信息,当然也有我们前面提到的数据过滤信息。最后,我们再根据它的 parent 中指定的 spring-boot-dependencies
位置,来看看 spring-boot-dependencies
中的定义:
<properties><activemq.version>5.15.15</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.89</appengine-sdk.version><artemis.version>2.12.0</artemis.version><aspectj.version>1.9.6</aspectj.version><assertj.version>3.16.1</assertj.version><atomikos.version>4.0.6</atomikos.version><awaitility.version>4.0.3</awaitility.version><bitronix.version>2.1.4</bitronix.version><build-helper-maven-plugin.version>3.1.0</build-helper-maven-plugin.version><byte-buddy.version>1.10.22</byte-buddy.version><caffeine.version>2.8.8</caffeine.version><cassandra-driver.version>4.6.1</cassandra-driver.version><classmate.version>1.5.1</classmate.version><commons-codec.version>1.14</commons-codec.version><commons-dbcp2.version>2.7.0</commons-dbcp2.version><commons-lang3.version>3.10</commons-lang3.version><commons-pool.version>1.6</commons-pool.version><commons-pool2.version>2.8.1</commons-pool2.version><couchbase-client.version>3.0.10</couchbase-client.version><db2-jdbc.version>11.5.5.0</db2-jdbc.version><dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version><derby.version>10.14.2.0</derby.version><dropwizard-metrics.version>4.1.22</dropwizard-metrics.version><ehcache.version>2.10.9.2</ehcache.version><ehcache3.version>3.8.1</ehcache3.version><elasticsearch.version>7.6.2</elasticsearch.version><embedded-mongo.version>2.2.0</embedded-mongo.version><exec-maven-plugin.version>1.6.0</exec-maven-plugin.version><flatten-maven-plugin.version>1.2.7</flatten-maven-plugin.version><flyway.version>6.4.4</flyway.version><freemarker.version>2.3.31</freemarker.version><git-commit-id-plugin.version>3.0.1</git-commit-id-plugin.version><glassfish-el.version>3.0.3</glassfish-el.version><glassfish-jaxb.version>2.3.4</glassfish-jaxb.version><groovy.version>2.5.14</groovy.version><gson.version>2.8.7</gson.version><h2.version>1.4.200</h2.version><hamcrest.version>2.2</hamcrest.version><hazelcast.version>3.12.12</hazelcast.version><hazelcast-hibernate5.version>1.3.2</hazelcast-hibernate5.version><hibernate.version>5.4.32.Final</hibernate.version><hibernate-validator.version>6.1.7.Final</hibernate-validator.version><hikaricp.version>3.4.5</hikaricp.version><hsqldb.version>2.5.2</hsqldb.version><htmlunit.version>2.40.0</htmlunit.version><httpasyncclient.version>4.1.4</httpasyncclient.version><httpclient.version>4.5.13</httpclient.version><httpcore.version>4.4.14</httpcore.version><infinispan.version>10.1.8.Final</infinispan.version><influxdb-java.version>2.18</influxdb-java.version><jackson-bom.version>2.11.4</jackson-bom.version><jakarta-activation.version>1.2.2</jakarta-activation.version><jakarta-annotation.version>1.3.5</jakarta-annotation.version><jakarta-jms.version>2.0.3</jakarta-jms.version><jakarta-json.version>1.1.6</jakarta-json.version><jakarta-json-bind.version>1.0.2</jakarta-json-bind.version><jakarta-mail.version>1.6.7</jakarta-mail.version><jakarta-persistence.version>2.2.3</jakarta-persistence.version><jakarta-servlet.version>4.0.4</jakarta-servlet.version><jakarta-servlet-jsp-jstl.version>1.2.7</jakarta-servlet-jsp-jstl.version><jakarta-transaction.version>1.3.3</jakarta-transaction.version><jakarta-validation.version>2.0.2</jakarta-validation.version><jakarta-websocket.version>1.1.2</jakarta-websocket.version><jakarta-ws-rs.version>2.1.6</jakarta-ws-rs.version><jakarta-xml-bind.version>2.3.3</jakarta-xml-bind.version><jakarta-xml-soap.version>1.4.2</jakarta-xml-soap.version><jakarta-xml-ws.version>2.3.3</jakarta-xml-ws.version><janino.version>3.1.4</janino.version><javax-activation.version>1.2.0</javax-activation.version><javax-annotation.version>1.3.2</javax-annotation.version><javax-cache.version>1.1.1</javax-cache.version><javax-jaxb.version>2.3.1</javax-jaxb.version><javax-jaxws.version>2.3.1</javax-jaxws.version><javax-jms.version>2.0.1</javax-jms.version><javax-json.version>1.1.4</javax-json.version><javax-jsonb.version>1.0</javax-jsonb.version><javax-mail.version>1.6.2</javax-mail.version><javax-money.version>1.0.3</javax-money.version><javax-persistence.version>2.2</javax-persistence.version><javax-transaction.version>1.3</javax-transaction.version><javax-validation.version>2.0.1.Final</javax-validation.version><javax-websocket.version>1.1</javax-websocket.version><jaxen.version>1.2.0</jaxen.version><jaybird.version>3.0.11</jaybird.version><jboss-logging.version>3.4.2.Final</jboss-logging.version><jboss-transaction-spi.version>7.6.1.Final</jboss-transaction-spi.version><jdom2.version>2.0.6</jdom2.version><jedis.version>3.3.0</jedis.version><jersey.version>2.30.1</jersey.version><jetty-el.version>8.5.54</jetty-el.version><jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version><jetty-reactive-httpclient.version>1.1.9</jetty-reactive-httpclient.version><jetty.version>9.4.42.v20210604</jetty.version><jmustache.version>1.15</jmustache.version><johnzon.version>1.2.13</johnzon.version><jolokia.version>1.6.2</jolokia.version><jooq.version>3.13.6</jooq.version><json-path.version>2.4.0</json-path.version><json-smart.version>2.3.1</json-smart.version><jsonassert.version>1.5.0</jsonassert.version><jstl.version>1.2</jstl.version><jtds.version>1.3.1</jtds.version><junit.version>4.13.2</junit.version><junit-jupiter.version>5.6.3</junit-jupiter.version><kafka.version>2.5.1</kafka.version><kotlin.version>1.3.72</kotlin.version><kotlin-coroutines.version>1.3.8</kotlin-coroutines.version><lettuce.version>5.3.7.RELEASE</lettuce.version><liquibase.version>3.8.9</liquibase.version><log4j2.version>2.13.3</log4j2.version><logback.version>1.2.3</logback.version><lombok.version>1.18.20</lombok.version><mariadb.version>2.6.2</mariadb.version><maven-antrun-plugin.version>1.8</maven-antrun-plugin.version><maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version><maven-clean-plugin.version>3.1.0</maven-clean-plugin.version><maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version><maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version><maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version><maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version><maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version><maven-help-plugin.version>3.2.0</maven-help-plugin.version><maven-install-plugin.version>2.5.2</maven-install-plugin.version><maven-invoker-plugin.version>3.2.2</maven-invoker-plugin.version><maven-jar-plugin.version>3.2.0</maven-jar-plugin.version><maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version><maven-resources-plugin.version>3.1.0</maven-resources-plugin.version><maven-shade-plugin.version>3.2.4</maven-shade-plugin.version><maven-source-plugin.version>3.2.1</maven-source-plugin.version><maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version><maven-war-plugin.version>3.2.3</maven-war-plugin.version><micrometer.version>1.5.14</micrometer.version><mimepull.version>1.9.14</mimepull.version><mockito.version>3.3.3</mockito.version><mongodb.version>4.0.6</mongodb.version><mssql-jdbc.version>7.4.1.jre8</mssql-jdbc.version><mysql.version>8.0.25</mysql.version><nekohtml.version>1.9.22</nekohtml.version><neo4j-ogm.version>3.2.24</neo4j-ogm.version><netty.version>4.1.65.Final</netty.version><netty-tcnative.version>2.0.39.Final</netty-tcnative.version><nio-multipart-parser.version>1.1.0</nio-multipart-parser.version><oauth2-oidc-sdk.version>7.1.3</oauth2-oidc-sdk.version><nimbus-jose-jwt.version>8.19</nimbus-jose-jwt.version><ojdbc.version>19.3.0.0</ojdbc.version><okhttp3.version>3.14.9</okhttp3.version><oracle-database.version>19.3.0.0</oracle-database.version><pooled-jms.version>1.1.2</pooled-jms.version><postgresql.version>42.2.20</postgresql.version><prometheus-pushgateway.version>0.9.0</prometheus-pushgateway.version><quartz.version>2.3.2</quartz.version><querydsl.version>4.3.1</querydsl.version><r2dbc-bom.version>Arabba-SR10</r2dbc-bom.version><rabbit-amqp-client.version>5.9.0</rabbit-amqp-client.version><reactive-streams.version>1.0.3</reactive-streams.version><reactor-bom.version>Dysprosium-SR20</reactor-bom.version><rest-assured.version>3.3.0</rest-assured.version><rsocket.version>1.0.5</rsocket.version><rxjava.version>1.3.8</rxjava.version><rxjava-adapter.version>1.2.1</rxjava-adapter.version><rxjava2.version>2.2.21</rxjava2.version><saaj-impl.version>1.5.3</saaj-impl.version><selenium.version>3.141.59</selenium.version><selenium-htmlunit.version>2.40.0</selenium-htmlunit.version><sendgrid.version>4.4.8</sendgrid.version><servlet-api.version>4.0.1</servlet-api.version><slf4j.version>1.7.30</slf4j.version><snakeyaml.version>1.26</snakeyaml.version><solr.version>8.5.2</solr.version><spring-amqp.version>2.2.18.RELEASE</spring-amqp.version><spring-batch.version>4.2.7.RELEASE</spring-batch.version><spring-data-releasetrain.version>Neumann-SR9</spring-data-releasetrain.version><spring-framework.version>5.2.15.RELEASE</spring-framework.version><spring-hateoas.version>1.1.5.RELEASE</spring-hateoas.version><spring-integration.version>5.3.8.RELEASE</spring-integration.version><spring-kafka.version>2.5.14.RELEASE</spring-kafka.version><spring-ldap.version>2.3.4.RELEASE</spring-ldap.version><spring-restdocs.version>2.0.5.RELEASE</spring-restdocs.version><spring-retry.version>1.2.5.RELEASE</spring-retry.version><spring-security.version>5.3.9.RELEASE</spring-security.version><spring-session-bom.version>Dragonfruit-SR3</spring-session-bom.version><spring-ws.version>3.0.10.RELEASE</spring-ws.version><sqlite-jdbc.version>3.31.1</sqlite-jdbc.version><sun-mail.version>1.6.7</sun-mail.version><thymeleaf.version>3.0.12.RELEASE</thymeleaf.version><thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version><thymeleaf-extras-java8time.version>3.0.4.RELEASE</thymeleaf-extras-java8time.version><thymeleaf-extras-springsecurity.version>3.0.4.RELEASE</thymeleaf-extras-springsecurity.version><thymeleaf-layout-dialect.version>2.4.1</thymeleaf-layout-dialect.version><tomcat.version>9.0.46</tomcat.version><unboundid-ldapsdk.version>4.0.14</unboundid-ldapsdk.version><undertow.version>2.1.7.Final</undertow.version><versions-maven-plugin.version>2.7</versions-maven-plugin.version><webjars-hal-browser.version>3325375</webjars-hal-browser.version><webjars-locator-core.version>0.45</webjars-locator-core.version><wsdl4j.version>1.6.3</wsdl4j.version><xml-maven-plugin.version>1.0.2</xml-maven-plugin.version><xmlunit2.version>2.7.0</xmlunit2.version></properties>
这就是我们为什么可以在dependencyManagement可以直接锁定版本的原因了。
7.文末推荐🍭
如果你是刚学完SSM框架,如果你想学系统的学习SpringBoot,如果你想使用SpringBoot去集成各种其他组件,那么我这份循序渐进学SpringBoot一定是首选,带你从零到深入学习SpringBoot。抓紧订阅起来吧。用知识点+案例+项目解读的学习模式由浅入深对Spring Boot框架进行学习&使用。
相关文章:
理解pom.xml中的parent标签
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏&…...
element ui el-avatar 源码解析零基础逐行解析
avatar功能介绍 快捷配置头像的样式 avatar 的参数配置 属性说明参数size尺寸type string 类型 (‘large’,‘medium’,‘small’)number类型 validator 校验shape形状circle (原型) square(方形)icon传入的iconsrc传入的图片st…...
Linux下c语言实现动态库的动态调用
在Linux操作系统下,有时候需要在不重新编译程序的情况下,运行时动态地加载库,这时可以通过Linux操作系统提供的API可以实现,涉及到的API主要有dlopen、dlsym和dlclose。使用时,需要加上头文件#include <dlfcn.h>…...
为什么MCU在ADC采样时IO口有毛刺?
大家在使用MCU内部ADC进行信号采样一个静态电压时,可能在IO口上看到这样的波形。这个时候大家一般会认识是信号源有问题,但仔细观察会发现这个毛刺的频率是和ADC触发频率一样的。 那么为什么MCU在ADC采样时IO口会出现毛刺呢?这个毛刺对结果有…...
C# 将 Word 转化分享为电子期刊
目录 需求 方案分析 相关库引入 关键代码 Word 转 Pdf Pdf 转批量 Jpeg Jpeg 转为电子书 实现效果演示 小结 需求 曾经的一个项目,要求实现制作电子期刊定期发送给企业进行阅读,基本的需求如下: 1、由编辑人员使用 Microsoft Word…...
网络世界的黑暗角落:常见漏洞攻防大揭秘
网络世界的黑暗角落:常见漏洞攻防大揭秘 今天带来了网站常见的漏洞总结,大家在自己的服务器上也需要好好进行防护,密码不要过于简单.不然非常容易遭到攻击,最终达到不可挽回的损失.很多黑客想网络乞丐一样将你服务器打宕机,然后要求你进行付费.不知道大家有没有遇到…...
通信领域发展方向
5G网络技术:随着5G网络的建设和商用推广,各家运营商、厂商和研究机构都在探索5G技术的应用场景和解决方案,如网络切片、毫米波通信、多用户MIMO等。 物联网技术:物联网技术已经成为通信行业的重点发展领域,包括传感器…...
21 3GPP中 5G NR高速列车通信标准化
文章目录 信道模型实验——物理层设计相关元素μ(与子载波间隔有关)设计参考信号(DMRS) 本文提出初始接入、移动性管理、线性小区设计等高层技术。描述3GPP采用HST场景的评估参数,阐释了HST应用的物理层技术,包括数字通信和参考信号设计,链路…...
【网络安全】-Linux操作系统—CentOS安装、配置
文章目录 准备工作下载CentOS创建启动盘确保硬件兼容 安装CentOS启动安装程序分区硬盘网络和主机名设置开始安装完成安装 初次登录和配置更新系统安装额外的软件仓库安装网络工具配置防火墙设置SELinux安装文本编辑器配置SSH服务 总结 CentOS是一个基于Red Hat Enterprise Linu…...
CCNP课程实验-OSPF-CFG
目录 实验条件网络拓朴需求 配置实现基础配置1. 配置所有设备的IP地址 实现目标1. 要求按照下列标准配置一个OSPF网络。 路由协议采用OSPF,进程ID为89 ,RID为loopback0地址。3. R4/R5/R6相连的三个站点链路OSPF网络类型配置成广播型,其中R5路…...
【Spring Security】打造安全无忧的Web应用--入门篇
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Spring Security是什么 1.概…...
【每日一题】【12.20】2828.判别首字母缩略词
🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.题目链接 2828. 判别首字母缩略词https://leetcode.cn/problems/check-if-a-string-is-an-acronym-of-words/ 2.题目描述 今天…...
LabVIEW开发振动数据分析系统
LabVIEW开发振动数据分析系统 自动测试系统基于LabVIEW平台设计,采用了多种高级硬件设备。系统的硬件组成包括PCB振动加速度传感器,这是一种集成了传统压电加速度传感器和电荷放大器的先进设备,能够直接与采集仪器连接。此外,系统…...
去掉乘法运算的加法移位神经网络架构
[CVPR 2020] AdderNet: Do We Really Need Multiplications in Deep Learning? 代码:https://github.com/huawei-noah/AdderNet/tree/master 核心贡献 用filter与input feature之间的L1-范数距离作为“卷积层”的输出为了提升模型性能,提出全精度梯度…...
【TB作品】51单片机,具有报时报温功能的电子钟
2.具有报时报温功能的电子钟 一、功能要求: 1.显示室温。 2.具有实时时间显示。 3.具有实时年月日显示和校对功能。 4.具有整点语音播报时间和温度功能。 5.定闹功能,闹钟音乐可选。 6.操作简单、界面友好。 二、设计建议: 1.单片机自选(C51、STM32或其他单片机)。 2.时钟日历芯…...
了解C++工作机制
基于hello.cpp对C的运行进行一个初步认识,并介绍国外C大佬Cherno常用的项目结构和调试Tips C是如何工作的 C工作流程1.实用工程(project)结构(1)Microsoft Visual Studio2022新建项目后,自动生成的原始文件…...
力扣题目学习笔记(OC + Swift) 14. 最长公共前缀
14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 方法一 竖向扫描法 个人感觉纵向扫描方式比较直观,符合人类理解方式,从前往后遍历所有字符串的每一列,比较相同列上的…...
WinSW设置应用程序开机启动
前言 由于使用windows自动的自启方法,不管是将程序启动服务放到开机自启文件夹中,还是创建任务计划程序,都没有很好的实现程序的开机自启效果,而WinSW很好的解决了这个问题。 下载 WinSW下载地址 注意:不同版本&#…...
Leetcode—96.不同的二叉搜索树【中等】
2023每日刷题(六十四) Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …...
正则表达式零宽断言
正则表达式零宽断言 工具类,正则表达式匹配文本内容正则表达式语法例子例子01零宽断言?< 不包含左边值? 不包含右边值例子 常用正则表达式校验数字的表达式校验字符的表达式 工具类,正则表达式匹配文本内容 /*** 正则表达式工具类*/ public class…...
uni-app学习记录
uni-app注意点记录 跳转到 tabBar 页面只能使用 switchTab 跳转路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url,在App平台可以使用 plus.runtime.openURL或web-view组件;H5平台使用 window.open;小程序平台使用web…...
API资源对象StorageClass;Ceph存储;搭建Ceph集群;k8s使用ceph
API资源对象StorageClass;Ceph存储;搭建Ceph集群;k8s使用ceph API资源对象StorageClass SC的主要作用在于,自动创建PV,从而实现PVC按需自动绑定PV。 下面我们通过创建一个基于NFS的SC来演示SC的作用。 要想使用NFS的SC,还需要安装一个NFS…...
Databend 开源周报第 124 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 新增对 Delta 和…...
Arduino开发实例-液体流量测量
液体流量测量 文章目录 液体流量测量1、流量传感器介绍2、硬件准备及接线3、代码实现在本文中,将介绍如何流量传感器进行测量液体流量。 流量传感器用于测量液体流速。 市场上有不同类型的流量传感器,在本文中,我们将使用霍尔效应流量传感器。 这些类型的流量传感器是非侵入…...
【idea】解决sprintboot项目创建遇到的问题
目录 一、报错Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found 二、报错java: 错误: 无效的源发行版:17 三、java: 无法访问org.springframework.web.bind.annotation.CrossOrigin 四、整合mybatis的时候,报java.lang.Ill…...
ADC芯片CS1237在电子秤方案的优势
随着科技的不断发展,电子秤已经成为我们日常生活中不可或缺的测量工具。为了满足用户对于高精度、高稳定性的需求,芯海ADC芯片CS1237应运而生,为电子秤方案带来了革命性的变革。 一、芯海ADC芯片CS1237介绍 芯海ADC芯片CS1237是一款高性能…...
Leetcode的AC指南 —— 哈希表:202. 快乐数
摘要: Leetcode的AC指南 —— 哈希表:202. 快乐数。题目介绍:编写一个算法来判断一个数 n 是不是快乐数。 文章目录 一、题目二、解析1、哈希表 一、题目 题目介绍:编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为…...
机器学习 项目结构 数据预测 实验报告
需求: 我经过处理得到了测试值,然后进一步得到预测和真实值的比较,然后再把之前的所有相关的参数、评估指标、预测值、比较结果都存入excel,另外我还打算做测试报告模板,包括敏感性分析等。您建议我这些功能如何封装这些功能&…...
[Verilog] 设计方法和设计流程
主页: 元存储博客 文章目录 1. 设计方法2. 设计流程 3 Vivado软件设计流程总结 1. 设计方法 Verilog 的设计多采用自上而下的设计方法(top-down)。设计流程是指从一个项目开始从项目需求分析,架构设计,功能验证&#…...
C语言:指向数组的指针和指向数组元素的指针
相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 指向数组的指针和指向数组元素的指针常常被混淆,或者笼统地被称为数组指针,但它们之间是有差别的,本文就将对此进行讨论。 下面的代码…...
惠州地区网站建设公司/百度seo优化软件
【中级软件设计师】—计算机网络与信息安全考点总结篇(四) 1.1 OSI/RM七层模型 本题主要考察局域网和广域网的差异问题,局域网只工作在下面两层(数据链路层和物理层),局域网的典型设备是交换机,…...
免费的网站程序哪里好/公众号引流推广平台
Error ORA-03113: 通信通道的文件结尾进程 ID: 2232会话 ID: 1250 序列号: 这是oracle 报的错误, 可能这个03113这个编码的错误有很多。 但是要找到是什么原因就需要根据2232这个编码找到 这个日志文件 D:\app\Administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_2…...
深圳网络公司做网站/网站做成app
MySQL导入导出命令1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc >wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc users>wcnc_users.sql3.…...
律师所网站建设/今天的最新消息新闻
在工作中经常需要两个主机之间传输文件,最常用的就是scp了,当然也有rsync,rz,sz之类的命令了。即时传输还是有点麻烦,scp随简单但是需要对方的用户和权限。Python有一句命令启动一个web服务器(在要传输文件…...
wordpress静态页面生成/电商平台怎么运营的
作为Hadoop生态圈中的重要组件,Hive在数据分析、处理方面扮演着异常重要的角色。另外,Hive作为大数据组件,处理的数据量往往很大,合适的优化技巧在运行效率方面往往可以起到非常好的效果。 1、筛选重复记录 这是在业务中经常遇到…...
wordpress识图搜索代码/百度seo原理
1,java.lang.NoSuchMethodException: com.opensymphony.xwork2.ActionSupport.getNetEventList()转载于:https://www.cnblogs.com/qingmaple/p/4058827.html...