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

Maven——Maven开发经验总结(1)

摘要

本文总结了 Maven 开发中的多个关键经验,包括如何根据版本号决定推送到 releases 或 snapshots 仓库,如何在构建过程中跳过测试,父项目如何控制子项目依赖版本,父项目依赖是否能传递到子项目,如何跳过 Maven deploy 中的某个 module,以及 Maven package 时如何跳过测试等,为 Maven 开发提供了实用指南。

1. Maven在运行部署的时候是如何确定推送到Releases还是Snapshots仓库

在 Maven 中,部署到 releasessnapshots 仓库的决定是通过版本号来判断的。具体规则如下:

  1. 版本号规则
    • Release 版本:如果版本号不包含 -SNAPSHOT 后缀,Maven 会认为这是一个稳定的发布版本,并会推送到 releases 仓库。例如:1.0.0
    • Snapshot 版本:如果版本号包含 -SNAPSHOT 后缀,Maven 会认为这是一个开发版本,并会推送到 snapshots 仓库。例如:1.0.0-SNAPSHOT
  1. Maven 配置文件(pom.xml: 在你的项目的 pom.xml 文件中,指定仓库的 URL 和仓库的 ID。通常,在 <distributionManagement> 部分,Maven 会配置 releasessnapshots 仓库的地址。例如:
<distributionManagement><repository><id>releases</id><url>https://repo.maven.apache.org/maven2</url></repository><snapshotRepository><id>snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository>
</distributionManagement>

在这里,Maven 会根据你的版本号(是否包含 -SNAPSHOT 后缀)决定将构件部署到哪个仓库。

  1. 部署过程
    • 当你执行 mvn deploy 时,Maven 会根据 pom.xml 中的版本号以及配置文件中的仓库信息判断将构件推送到哪个仓库。
    • 对于 SNAPSHOT 版本,Maven 会推送到 snapshots 仓库,并且通常会带有时间戳,允许多个相同版本的构件在同一时间存在。
    • 对于 release 版本,Maven 会推送到 releases 仓库,并且这个版本通常是稳定的,不会再更新。
  1. 推送行为
    • 对于 SNAPSHOT 版本,Maven 会允许在推送时覆盖同一版本号的构件(如:同一版本的 1.0.0-SNAPSHOT 可以被不同的构建替换),这使得开发过程中可以频繁更新。
  • 对于 release 版本,推送到 releases 仓库时,版本号必须是唯一的,不允许覆盖已发布的版本。

总结来说,版本号的后缀决定了推送目标仓库

  • -SNAPSHOT 推送到 snapshots 仓库。
  • 不含 -SNAPSHOT 的版本推送到 releases 仓库。

2. Maven在构建过程中跳过测试

<build><pluginManagement><plugins><plugin><artifactId>maven-surefire-plugin</artifactId><configuration><!-- 跳过测试 --><skip>true</skip></configuration></plugin></plugins></pluginManagement>
</build>

2.1. Maven Surefire Plugin 的作用

  • Maven Surefire Plugin 是 Maven 的核心插件之一,用于执行单元测试。
  • 默认情况下,Maven 在构建项目时会自动运行 src/test/java 目录下的测试类。
  • 通过配置 <skip>true</skip>,可以跳过测试阶段,从而加快构建速度。

2.2. 实际应用场景

  1. 加快构建速度: 在开发过程中,如果不需要运行测试,可以通过跳过测试来加快构建速度。
  2. 跳过失败的测试: 如果某些测试暂时失败,但需要继续构建项目,可以通过跳过测试来避免构建失败。
  3. 配置统一管理: 在大型项目中,可以通过 <pluginManagement> 集中管理插件配置,确保所有子项目使用相同的插件行为。

2.3. 注意事项

  • 如果需要强制跳过测试,可以在命令行中直接使用 -DskipTests 参数,例如:
mvn clean install -DskipTests
  • 如果只是跳过测试的编译,可以使用 -Dmaven.test.skip=true 参数,例如:
mvn clean install -Dmaven.test.skip=true

3. Maven 项目中父项目pom 控制子项目pom的依赖版本吗?

是的,在 Maven 项目中,pom.xml 可以控制 子模块 (sub-modules) 的依赖版本,主要有两种方式:

3.1. 使用<dependencyManagement> 统一管理版本

推荐做法:在 pom.xml 里使用 <dependencyManagement> 只定义依赖版本,子模块在引入时不需要指定版本。

3.1.1. 父项目 pom.xml

<project><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version><packaging>pom</packaging><modules><module>sub-module-a</module><module>sub-module-b</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version>  <!-- 统一管理版本 --></dependency></dependencies></dependencyManagement>
</project>

3.1.2. 子项目 pom.xml(无需指定版本)

<project><parent><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version></parent><artifactId>sub-module-a</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

3.1.3. 优势

  • 子模块无需指定版本,版本由父 pom.xml 控制,保证一致性。
  • 便于升级依赖,只需修改父 pom.xml 中的版本号。

3.2. 直接在 <dependencies> 中定义(不推荐)

如果在 pom.xml 里直接写 <dependencies>,那么子模块会继承这些依赖,但子模块如果有自己的版本,可能会发生冲突

3.2.1. 父项目 pom.xml

<project><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version>  <!-- 子模块会自动继承 --></dependency></dependencies>
</project>

3.2.2. 子项目 pom.xml

e<project><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

3.2.3. ⚠️ 缺点

  • 子模块无法单独管理依赖版本,可能会与其他依赖冲突。
  • 如果子模块也指定了版本,可能导致版本不一致(依赖冲突)。

3.3. Maven父子项目依赖管理总结

方式

方式 1(✅ 推荐)
<dependencyManagement>

方式 2(⚠️ 不推荐)
直接 <dependencies>

子模块是否需要指定版本

不需要,父 POM 控制

需要,如果不指定可能继承

子模块能否覆盖版本

可以,但默认使用父 POM 版本

可以,但可能会版本冲突

适合多模块项目

,能确保版本统一

,易发生版本冲突

最佳实践

  • 在父 pom.xml 里使用 <dependencyManagement> 统一管理版本
  • 子模块只声明依赖,不要指定版本,避免版本混乱。

这种方式适用于 Spring Boot、MyBatis、Dubbo 等大部分多模块 Maven 项目,能提高维护性和稳定性。🚀

4. 父项目Maven依赖是否可以传递到子项目

一个项目引用了nacos的依赖,这个项目中依赖jar 也使用naocs的配置,请问这个的jar 在打包的时候是否需要使用ncos依赖 进行package 。

在你的项目中,如果引用了 Nacos 作为依赖,并且其他 jar 包也使用了 Nacos 配置,通常来说,这些 jar 包在打包时是否需要包含 Nacos 依赖,取决于你对项目的构建方式和依赖管理的配置。

4.1. 依赖传递(Transitive Dependency):

如果你在主项目中引用了 Nacos 的依赖,并且这个主项目的 jar 包会包含并传递 Nacos 依赖给其他模块,那么其他 jar 包在打包时通常 不需要再单独引用 Nacos,主项目中的 Nacos 依赖会被自动引入。这种情况通常适用于基于 Maven 或 Gradle 构建的项目,依赖会在构建时被传递。

例如,在 Maven 项目中,Nacos 的依赖应该已经在父项目的 pom.xml 中声明:

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.x.x</version>
</dependency>

4.2. 独立打包(Standalone Packaging)

如果你要将某些 jar 包独立打包为单独的应用,且这些应用需要独立引用 Nacos 依赖(例如,一个 jar 作为微服务应用单独运行),那么这些 jar 在打包时可能需要单独包含 Nacos 依赖。你可以通过使用 shade 插件(Maven)或其他类似的工具,将所有依赖都打包进最终的 jar 包中。

示例: Maven 中使用 maven-shade-plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.x.x</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals></execution></executions><configuration><artifactSet><excludes><exclude>com.alibaba.nacos:nacos-client</exclude> <!-- 排除某些依赖 --></excludes></artifactSet></configuration>
</plugin>

4.3. 使用 provided 作用域

如果 Nacos 只在运行时需要(例如在容器或框架中自动注入),你可以将 Nacos 依赖的作用域设置为 provided。这样,Nacos 不会被打包进最终的 jar 中,而是在运行时由外部环境提供。

例如,在 Maven 中设置 Nacos 依赖为 provided

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.x.x</version><scope>provided</scope>
</dependency>

4.4. 依赖的 jar 包直接引用 Nacos

如果某些 jar 包本身直接引用了 Nacos,那么它们在编译时会自动将 Nacos 依赖引入。当这些 jar 被打包时,它们会将这些依赖一起打包。如果你使用 fat jaruber jar 方式打包,这些依赖也会被包括进去。

4.5. 依赖传递总结

  • 如果你依赖的 jar 包已经在主项目中引用了 Nacos,且你使用的是 Maven 或 Gradle 等构建工具,通常 不需要再次单独引入 Nacos
  • 如果你希望 独立打包并包含 Nacos,可以使用 shade 插件或者类似的工具。
  • 若 Nacos 仅用于运行时而不需要打包到 jar 中,可以使用 provided 作用域。

根据项目的具体需求和构建方式,你可以选择适合的方式来管理 Nacos 依赖。

5. Maven deploy跳过某个module解决办法

在使用 Maven 时,如果你希望跳过某个模块的 deploy 操作(即不将某个模块部署到远程仓库),可以通过以下几种方法来实现:

5.1. 方法 1:使用 -pl 参数(指定要部署的模块)

你可以使用 -pl 参数来指定需要部署的模块列表,跳过不需要部署的模块。比如,假设你有一个多模块项目,其中有一个模块你不想部署,可以通过指定其它模块来跳过这个模块的部署。

mvn deploy -pl !module-to-skip
  • -pl:指定要构建或部署的模块。
  • !module-to-skip:通过 ! 语法排除 module-to-skip 模块。

5.2. 方法 2:在 pom.xml 中使用 profiles 配置

你可以在 pom.xml 文件中定义一个专门的 Maven profile,并在该 profile 中排除某些模块的构建或部署。通过在构建时激活该 profile 来跳过某个模块。

示例:在父 pom.xml 中配置一个 deploy-skip profile,指定不部署某个模块:

<profiles><profile><id>deploy-skip</id><modules><module>module1</module><module>module2</module><!-- 排除 module-to-skip --></modules></profile>
</profiles>

然后通过 -P 参数激活该 profile:

mvn deploy -Pdeploy-skip

这种方法适用于你有多个环境或配置,并且希望在不同的构建配置下部署不同的模块。

5.3. 方法 3:跳过特定的模块构建和部署

如果你希望完全跳过某个模块的构建或部署,可以通过设置 skip 配置,跳过该模块的构建或 deploy 生命周期。例如,如果某个模块的构建时间较长,或因其他原因不需要部署,可以在其 pom.xml 中添加以下配置来跳过部署:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>3.0.0-M1</version><configuration><skip>true</skip></configuration></plugin></plugins>
</build>

5.4. 方法 4:使用 maven-skip-plugin

有时候,如果你只是想简单地跳过某个模块的构建或 deploy,你可以使用 maven-skip-plugin 插件。在父 pom.xml 或模块 pom.xml 中添加以下配置,来跳过特定模块的 deploy 阶段。

示例:

<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>3.0.0</version><configuration><skip>true</skip></configuration></plugin>
</plugins>

5.5. 方法 5:临时跳过 deploy 阶段

如果你不想部署某个模块,但又不希望修改 pom.xml 或配置,可以临时使用 -DskipDeploy 来跳过部署:

mvn deploy -DskipDeploy

5.6. 方法 6:使用 mvn install 而不是 deploy

如果你在某个模块不需要将其部署到远程仓库,只是本地构建并安装到本地仓库,可以使用 install 代替 deploy

mvn install

这样该模块会被安装到本地仓库,而不会部署到远程仓库。

6. Maven package 的时候跳过测试。

在使用 mvn package 时,如果你希望跳过测试阶段(即不执行单元测试),可以通过以下几种方式来实现:

6.1. 使用 -DskipTests 参数

这是最常用的方式,使用 -DskipTests 参数来跳过测试的执行。该命令只会跳过测试的执行,而不会跳过编译测试代码。

mvn package -DskipTests
  • -DskipTests:跳过测试执行,测试代码会被编译,但不会运行。

6.2. 使用 -Dtest=false 参数

另一种方式是使用 -Dtest=false 参数,这会告诉 Maven 不执行任何测试。

mvn package -Dtest=false
  • -Dtest=false:强制不执行测试,不会运行任何测试类。

6.3. 使用 -Dmaven.test.skip=true 参数

如果你希望完全跳过测试,包括测试代码的编译和执行,可以使用 -Dmaven.test.skip=true 参数。这会跳过测试的所有阶段,包括编译和执行测试。

mvn package -Dmaven.test.skip=true
  • -Dmaven.test.skip=true:完全跳过测试阶段(包括测试的编译和执行)。

6.4. 在 pom.xml 中配置跳过测试

如果你希望在构建过程中总是跳过测试,可以在 pom.xml 中配置跳过测试的属性。

pom.xml 文件中添加以下配置:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins>
</build>

6.5. Maven跳过总结

  • 使用 -DskipTests:跳过测试执行,但编译测试代码。
  • 使用 -Dtest=false:完全跳过测试,不执行任何测试类。
  • 使用 -Dmaven.test.skip=true:完全跳过测试的编译和执行。
  • pom.xml 中配置 maven-surefire-plugin,永久跳过测试。

博文参考

相关文章:

Maven——Maven开发经验总结(1)

摘要 本文总结了 Maven 开发中的多个关键经验&#xff0c;包括如何根据版本号决定推送到 releases 或 snapshots 仓库&#xff0c;如何在构建过程中跳过测试&#xff0c;父项目如何控制子项目依赖版本&#xff0c;父项目依赖是否能传递到子项目&#xff0c;如何跳过 Maven dep…...

MyBatis-Plus之通用枚举

MyBatis-Plus之通用枚举 前言 MyBatis-Plus中提供了通用枚举&#xff0c;简单来说就是将数据库中的某一字段的代替的含义转换成真实的含义将数据展示给用户&#xff0c;用户在存储时也会将真实值转换成代替的数字存入到数据库中。举个例子&#xff1a;用户性别在数据库中存储…...

React通用登录/注销功能实现方案(基于shadcn/ui)

React通用登录/注销功能实现方案&#xff08;基于shadcn/ui&#xff09; 一、功能需求分析二、通用功能封装1. 通用登录表单组件2. 认证Hook封装 三、功能使用示例1. 登录页面实现2. 用户菜单实现 四、路由保护实现五、方案优势 一、功能需求分析 需要实现以下核心功能&#x…...

AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT

随着科研和学术报告需求的增加&#xff0c;如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐&#xff0c;需要大量文献收集、数据分析和设计工作&#xff0c;而AI工具能够帮助提升效率&#xff0c;减少重复劳动。 本文将介绍如何使用…...

审计级别未启用扩展模式导致查询 DBA_AUDIT_TRAIL 时 SQL_TEXT 列为空

如果查询 DBA_AUDIT_TRAIL 时发现 SQL_TEXT 列为空&#xff0c;但其他字段&#xff08;如 OS_USERNAME、USERNAME、TIMESTAMP 等&#xff09;有数据&#xff0c;可能是由于以下原因之一。以下是可能的原因及解决方法&#xff1a; 1. 审计级别未启用扩展模式 默认情况下&#x…...

HTTP 和RESTful API 基础,答疑

一文搞懂RESTful API - bigsai - 博客园 1. API 路径 开头必须 /&#xff0c;表示绝对路径&#xff0c;不支持 . 或 ..&#xff08;相对路径&#xff09;。API 结尾 / 通常不需要&#xff0c;但部分框架会自动处理 / → 无 /。 ✅ 推荐 GET /api/v1/products # 资源集合…...

手写简易RPC(实践版)

首先了解rpc rpc-远程过程调用&#xff0c;openFeign&#xff0c;Dubbo都可以算作rpc&#xff0c;以微服务来具体说明&#xff0c;就是在本地不需要去发送请求&#xff0c;通过rpc框架&#xff0c;像调用本地方法一样调用其他服务的方法&#xff0c;本质上还是要经过网络&…...

Day6 25/2/19 WED

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】https://www.bilibili.com/video/BV13g41157hK?p4&v…...

【DL】浅谈深度学习中的知识蒸馏 | 输出层知识蒸馏

目录 一 核心概念与背景 二 输出层知识蒸馏 1 教师模型训练 2 软标签生成&#xff08;Soft Targets&#xff09; 3 学生模型训练 三 扩展 1 有效性分析 2 关键影响因素 3 变体 一 核心概念与背景 知识蒸馏&#xff08;Knowledge Distillation, KD&#xff09;是一种模…...

机器学习PCA和LDA

主成分分析&#xff08;PCA, Principal Component Analysis&#xff09;和线性判别分析&#xff08;LDA, Linear Discriminant Analysis&#xff09;是两种常用的降维方法&#xff0c;它们虽然都用于数据降维&#xff0c;但核心思想和应用场景不同。 PCA&#xff08;主成分分析…...

tcp协议连接,和传输数据

1、连接 这个是通用的 2、传送数据 当连接建立后&#xff0c;客户端和服务器都可以主动发送数据&#xff0c;分别如下 1》客户端先发送数据 这里是单向的&#xff0c;服务器没有对客户端的数据内容进行应答&#xff0c;只是单纯的对报文应答ack 2》服务器先发送数据...

【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示

异常问题&#xff1a; 这个是在新版的pycharm中出现的&#xff0c;出现的问题&#xff0c;点击view后不全部显示&#xff0c;而是以...折叠显示 在setting中这么设置一下就好了&#xff1a; 解决办法&#xff1a; https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…...

Java基础——代理模式

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能。 一、代理模式的主要作用 控制访问&#xff1a;通…...

解锁机器学习核心算法|主成分分析(PCA):降维的魔法棒

一、引言 在机器学习的庞大算法体系中&#xff0c;有十种算法被广泛认为是最具代表性和实用性的&#xff0c;它们犹如机器学习领域的 “十大神器”&#xff0c;各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森林、K - 近邻算法、K - 平均算法、支持向…...

sql注入漏洞

目录 一、SQL注入概述 例子背景 正常情况下的查询 SQL注入攻击 利用优先级进行攻击 二、解决SQL注入 使用PreparedStatement接口 步骤和方法 1. 创建PreparedStatement对象 2. 向占位符传入值 3. 执行SQL语句 示例 总结 SQL 注入是一种常见的网络攻击手段。通俗来…...

spring微服务+dubbo框架,某一服务启动时提示多个bean存在

在java的springboot项目中使用DubboService的注解的实现类中&#xff0c;在引用本模块的类时&#xff0c;使用的DubboRefrence注解&#xff0c;在启动项目时报错&#xff0c;提示该类需要以一个bean对象&#xff0c;但是存在了两个&#xff0c;把DubboRefrence的注解改成Autowi…...

React useState 和 useEffect 使用坑点注意总结

React Hooks 使用注意事项 Area: Hooks Date: February 10, 2025 Important: &#x1f31f;&#x1f31f;&#x1f31f; React Hooks 注意事项 要点&#xff1a; useState 的初始化值 只在第一次渲染时计算&#xff0c;并且这个值不会随着组件重新渲染而更新。useEffect 可…...

使用rknn进行yolo11-pose部署

文章目录 概要生成ONNX生成RKNN实测效果概要 使用 RKNN 进行 YOLOv11 Pose 部署的必要性在于,RKNN 能将 YOLOv11 Pose 模型转化为适合 Rockchip 硬件平台(如 RV1109、RV1126)执行的格式,充分利用其 AI 加速功能,显著提高推理速度和效率。此外,RKNN 提供模型优化(如量化…...

开源语音克隆项目 OpenVoice V2 本地部署

#本机环境 WIN11 I5 GPU 4060ti 16G 内存 32G #开始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…...

YOLOv12从入门到入土(含结构图)

论文链接&#xff1a;https://arxiv.org/abs/2502.12524 代码链接&#xff1a;https://github.com/sunsmarterjie/yolov12 文章摘要&#xff1a; 长期以来&#xff0c;增强YOLO框架的网络架构一直至关重要&#xff0c;但一直专注于基于cnn的改进&#xff0c;尽管注意力机制在建…...

8.【线性代数】——求解Ax=b

八 求解Axb 1. 解Axb求特解 x p x_p xp​求特解 x n x_n xn​所有解 2. Axb什么时候有解3. A m ∗ n A_{m * n} Am∗n​不同秩的Axb解分析3.1 列满秩 rn<m3.2 行满秩 rm<n3.3 rmn3.4 r<m 且 r < n3.5 综述 1. 解Axb 求解 { x 1 2 x 2 2 x 3 2 x 4 b 1 2 x 1…...

【Quest开发】全身跟踪

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …...

Spring Boot 示例项目:从零开始构建 Web 应用

一、项目概述 本文档将指导您通过一个示例项目,了解如何使用 Spring Boot 框架构建一个简单的 Web 应用程序。该项目涵盖了从数据模型定义到控制器、服务层以及数据访问层的完整开发流程,帮助您快速掌握 Spring Boot 的基本使用方法。 二、项目结构 1. 项目模块 本示例项…...

Windows 启动 SSH 服务报错 1067

Windows 启动 SSH 服务报错 1067 一、原本安装的 Windows 自带的 SSH 服务 按 Windows 键 -> 设置 -> 系统 -> 可选功能 在 添加的功能 查看是否安装了 OpenSSH 服务 一开始 执行 net start sshd 是可以正常启动的 并且其他机器也可以通过 ssh 访问 这个电脑 但是有…...

【AI战略思考15】我对做自媒体视频博主的初步探索和一些思考

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 导言 因为自己找工作可能没那么快和顺利&#xff0c;事实是比我之前想象的要难很多&#xff0c;所以这几天探索了下自己能否尝试做自媒体或者视频博主来尝试赚点钱&#xff0c;如果做…...

零基础学QT、C++(一)安装QT

目录 如何快速学习QT、C呢&#xff1f; 一、编译器、项目构建工具 1、编译器&#xff08;介绍2款&#xff09; 2、项目构建工具 二、安装QT 1、下载QT安装包 2、运行安装包 3、运行QT creator 4、导入开源项目 总结 闲谈 如何快速学习QT、C呢&#xff1f; 那就是项目驱动法&…...

Word接入DeepSeek(API的作用)

1.打开”Word”&#xff0c;点击“文件”。 2.点击“选项”。 3.点击“信任中心”——“信任中心设置”。 4. 勾选”启用所有宏“&#xff0c;点击”确定“。 5.点击“自定义功能区”&#xff0c;勾选上“开发工具”&#xff0c;点击“确定”。 6.返回“文件——开发工具“下的…...

ok113i——交叉编译音视频动态库

提示&#xff1a;buildroot支持ffmpeg和SDL&#xff0c;但博主的ffmpeg是按下面方法编译通过&#xff0c;SDL使用buildroot直接编译也通过&#xff1b; 1. 下载ffmpeg源码 下载链接&#xff1a;https://github.com/FFmpeg/FFmpeg/tags 根据版本需要自行下载压缩包&#xff0c…...

CSS中五种定位方式(position)对比分析

在 CSS 中&#xff0c;定位方式&#xff08;position&#xff09;决定了元素如何相对于其参照物进行定位&#xff0c;同时影响文档流的布局。以下是五种定位方式的对比、参照物说明及代码示例&#xff1a; 1. position: static&#xff08;默认定位&#xff09; 参照物&#x…...

Jest单元测试

由于格式和图片解析问题&#xff0c;可前往 阅读原文 前端自动化测试在提高代码质量、减少错误、提高团队协作和加速交付流程方面发挥着重要作用。它是现代软件开发中不可或缺的一部分&#xff0c;可以帮助开发团队构建可靠、高质量的应用程序 单元测试&#xff08;Unit Testi…...

Lineageos 22.1(Android 15) 开机向导制作

一、前言 开机向导原理其实就是将特定的category的Activity加入ComponentResolver&#xff0c;如下 <category android:name"android.intent.category.SETUP_WIZARD"/>然后我们开机启动的时候&#xff0c;FallbackHome结束&#xff0c;然后启动Launcher的时候…...

前沿计组知识入门

这份PDF文件是一份关于计算机体系结构的讲义&#xff0c;涵盖了从基础概念到高级主题的多个方面。以下是详细的总结和分析&#xff1a; 计算机体系结构概述 定义&#xff1a;计算机体系结构是计算机系统的理论组成部分&#xff0c;根据其属性和功能进行划分&#xff0c;包括计…...

力扣 最长递增子序列

动态规划&#xff0c;二分查找。 题目 由题&#xff0c;从数组中找一个最长子序列&#xff0c;不难想到&#xff0c;当这个子序列递增子序列的数越接近时是越容易拉长的。从dp上看&#xff0c;当遍历到这个数&#xff0c;会从前面的dp选一个最大的数加上当前数&#xff0c;注意…...

在项目中调用本地Deepseek(接入本地Deepseek)

前言 之前发表的文章已经讲了如何本地部署Deepseek模型&#xff0c;并且如何给Deepseek模型投喂数据、搭建本地知识库&#xff0c;但大部分人不知道怎么应用&#xff0c;让自己的项目接入AI模型。 文末有彩蛋哦&#xff01;&#xff01;&#xff01; 要接入本地部署的deepsee…...

已解决IDEA无法输入中文问题(亲测有效)

前言 在使用IDEA的时候&#xff0c;比如我们想写个注释&#xff0c;可能不经意间&#xff0c;输入法就无法输入中文了&#xff0c;但是在其他地方打字&#xff0c;输入法仍然能够正常工作。这是什么原因呢&#xff0c;这篇文章带你解决这个问题&#xff01; 快捷键 如果你的I…...

Java 语法新特性(Records、Pattern Matching、Sealed Classes)深度解析(11/17/21)✨

一、Records&#xff08;Java 16&#xff09; &#x1f4dd; 核心价值&#xff1a;简化不可变数据载体的定义 // 传统POJO vs Record public record User(String name, int age) {} // 自动生成&#xff1a;构造方法/equals()/hashCode()/toString() User user new User(&qu…...

书评与笔记:《如何有效报告Bug》

文章目录 书评笔记核心原则1. 首要目标&#xff1a;让程序员亲眼看到问题2. 次要目标&#xff1a;详细描述问题3. 保持冷静&#xff0c;避免误操作4. 提供额外信息5. 清晰、准确地表达 实用建议不要自作聪明地诊断问题类比&#xff1a;看医生时的症状描述程序员的心理 总结 原文…...

Node.js 中的 fs 模块详解

fs&#xff08;File System&#xff09;模块是 Node.js 的核心模块之一&#xff0c;用于处理文件系统的操作&#xff0c;包括文件的读取、写入、删除、重命名等。它提供了同步和异步两种操作方式&#xff0c;适用于不同的场景。 1. 前置知识 1.1 文件系统 文件系统是操作系统…...

【深度学习】如何一步步实现SGD随机梯度下降算法

如何一步步实现SGD随机梯度下降算法 文章目录 如何一步步实现SGD随机梯度下降算法SGD随机梯度下降算法的作用MNIST_SAMPLE数据集SGD算法的七大步骤Step1. 初始化模型参数Step2. 计算预测值predictionsStep3. 计算损失lossStep4. 计算梯度gradientsStep5. 更新模型参数Step6. 重…...

Android Hal AIDL 简介 (一)

Android 接口定义语言 (AIDL) 是一款可供用户用来抽象化 IPC 的工具。 以在 .aidl 文件中指定的接口为例,各种构建系统都会使用 aidl 二进制文件构造 C++ 或 Java 绑定,以便跨进程使用该接口(无论其运行时环境或位数如何)。 AIDL 可以在 Android 中的任何进程之间使用:在…...

【数据分析】2.数据分析业务全流程

业务流程方法论&#xff1a;3阶段6步骤 一、课程核心内容结构 1. 方法论概述 目标&#xff1a;系统性地解决商业中的关键问题框架&#xff1a;分为三个阶段&#xff0c;每个阶段包含两个步骤适用场景&#xff1a;适用于数据分析师、业务经理等需要通过数据分析支持决策的从业…...

如何使用Spark SQL进行复杂的数据查询和分析

使用Spark SQL进行复杂的数据查询和分析是一个涉及多个步骤和技术的过程。以下是如何使用Spark SQL进行复杂数据查询和分析的详细指南&#xff1a; 一、准备阶段 环境搭建&#xff1a; 确保已经安装并配置好了Apache Spark环境。准备好数据源&#xff0c;可以是CSV文件、JSON…...

【Spring+MyBatis】_图书管理系统(下篇)

图书管理系统上篇、中篇如下&#xff1a; 【SpringMyBatis】_图书管理系统&#xff08;上篇&#xff09;-CSDN博客 【SpringMyBatis】_图书管理系统&#xff08;中篇&#xff09;-CSDN博客 目录 功能5&#xff1a;删除图书 6.1 约定前后端交互接口 6.2 后端接口 6.3 前端…...

goland无法debug项目

1、其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.2。Delve是Go语言的一个调试工具&#xff0c;用于提供源码级别的调试功能。Go语言每隔一段时间会发布新版本&#xff0c;而相应的调试器Delve也可能会更新以提供新的特性或修复已知问题…...

001-监控你的文件-FSWatch-C++开源库108杰

fswatch 原理与应用简介fswatch 安装fswatch 实践应用具体应用场景与细节补充 1. 简介 有些知识&#xff0c;你知道了不算厉害&#xff0c;但你要是不知道&#xff0c;就容易出乱。 很多时候&#xff0c;程序需要及时获取磁盘上某个文件对象&#xff08;文件夹、文件&#xff0…...

leetcode203.移除链表元素

目录 问题描述示例提示 具体思路思路一思路二 代码实现 问题描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 题目链接&#xff1a;移除链表元素 示例 提示 列表中的节点数目在范围…...

代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和

242.有效的字母异位词 题目链接&#xff1a;242.有效的字母异位词 文档讲解&#xff1a;代码随想录有效的字母异位词 视频讲解&#xff1a;LeetCode&#xff1a;有效的字母异位词 状态&#xff1a;学会了 思路&#xff1a; 数组其实是简单哈希表。 哈希表用来快速判断元素是否在…...

DL/CV领域常见指标术语(FLOPS/mIoU/混淆矩阵/F1-measure)------一篇入门

1. FLOPS、FLOPs和GFLOPs FLOPS: floating-point operations per second&#xff0c;每秒浮点运算次数&#xff0c;用来衡量硬件性能。 FLOPs&#xff1a;floating point of operations&#xff0c;是浮点运算次数&#xff0c;用来衡量算法、模型的复杂度。 GFLOPS&#xff…...

rknn 板端运行程序Invalid RKNN model version 6, Meet unsupported rknn target type

E RKNN: [09:15:53.053] 6, 1 E RKNN: [09:15:53.053] Invalid RKNN model version 6 E RKNN: [09:15:53.053] rknn_init, load model failed! [NN_ERROR] rknn_init fail! ret-1 或者报错&#xff1a; E RKNN: [08:35:30.804] Meet unsupported target type: 0x46495247 E…...

Linux 内核中的 container_of 宏:以 ipoib_rx_poll_rss 函数为例

在 Linux 内核编程中,container_of 是一个非常实用的宏,主要用于通过结构体的成员指针来获取包含该成员的整个结构体的指针。rx_ring = container_of(napi, struct ipoib_recv_ring, napi); 在代码中就是利用了这个宏,下面我们详细分析它的作用和工作原理。 背景知识 在内…...