idea_maven详解

秒懂Maven

  • maven简介
  • maven安装和配置
  • maven本地配置
  • maven工程的GAVP
  • 创建maven工程
    • 项目结构说明
    • 项目构建说明
  • Maven依赖管理
    • 核心信息配置
    • 依赖管理配置
    • 依赖信息查询
    • 依赖范围设置
    • 依赖属性配置
    • 依赖下载失败错误解决
    • Build构建配置
    • 依赖传递
    • 依赖冲突
  • maven工程继承
    • 继承作用
    • 应用场景
    • 继承语法
    • 父工程依赖统一管理
  • maven工程聚合
    • 聚合作用
    • 聚合语法
  • maven私服
    • 私服的优势
    • Nexus下载安装
    • 初始设置
    • 仓库介绍
    • 配置Nexus下载jar包
    • 部署jar包到Nexus
    • 引用部署后jar包

maven简介

Maven 是一款为 Java 项目管理构建、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量

  • 依赖管理:
    Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,避免版本冲突和转换错误等,而我们仅仅需要编写配置即可

  • 构建管理:
    项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程,Maven 可以管理项目的编译、测试、打包、部署等构建过程

maven安装和配置

工具版本
Maven3.8.4
JDK8
  1. 下载地址
    Apache Maven 官网地址
    在这里插入图片描述

  2. 安装java环境
    maven需要本机安装java环境、必需包含JAVA_HOME环境变量,如何安装就不多说了

  3. 下载之后解压即可

    bin: 含有Maven的运行脚本
    boot:含有plexus-classworlds类加载器框架
    conf:含有Maven的核心配置文件
    lib: 含有Maven运行时所需要的Java类库
    LICENSE、NOTICE、README.txt:针对Maven版本,第三方软件等简要介绍

  4. 配置MAVEN_HOME、Path
    在这里插入图片描述
    在这里插入图片描述

    查看安装是否成功
    在这里插入图片描述

  5. 配置conf/settings.xml文件

    • 配置本地仓库地址
      <!-- localRepository
      | The path to the local repository maven will use to store artifacts.
      |
      | Default: ${user.home}/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
      -->
      <!-- 配置本地maven仓库 50行附近-->
      <localRepository>C:\maven\maven-respository</localRepository>
      
    • 配置国内阿里镜像
      <!--在mirrors节点(标签)下添加仓库镜像 160行附近-->
      <mirror>
      	<id>alimaven</id>
      	<name>aliyun maven</name>
      	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      	<mirrorOf>central</mirrorOf>
       </mirror>
      
    • 配置jdk版本项目构建
      <!--在profiles节点(标签)下添加jdk编译版本 268行附近-->
      <profile>
      	<id>jdk-1.8</id>
      	<activation>
      		<activeByDefault>true</activeByDefault>
      		<jdk>1.8</jdk>
      	</activation>
      	 <properties>
      		<maven.compiler.source>1.8</maven.compiler.source>
      		<maven.compiler.target>1.8</maven.compiler.target>
      		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      	</properties>
      </profile>
      

maven本地配置

打开idea,点击路径如下:
File -> Settings -> Bild, Execution, Deployment -> Build Tool -> Maven
在这里插入图片描述
修改如下:

在这里插入图片描述

maven工程的GAVP

  • GroupID:com.{公司 }.业务线.[子业务线],最多 4 级
  • ArtifactID:产品线名-模块名
  • Version:版本号格式:主版本号.次版本号.修订号
    • 主版本号:当做了不兼容的 API 修改,或者增加了能改变产品方向的新功能
    • 次版本号:当做了向下兼容的功能性新增(新增类、接口等)
    • 修订号:修复 bug
  • Packaging:指示将项目打包成什么类型的文件,idea根据packaging值,识别maven项目类型

创建maven工程

File -> New -> Module
在这里插入图片描述
创建之后,maven会自动下载插件,创建好项目结构,生成pom文件

在这里插入图片描述

项目结构说明

|-- pom.xml                               # Maven 项目管理文件 
|-- src
    |-- main                              # 项目主要代码
    |   |-- java                          # Java 源代码目录
    |   |   `-- com/example/myapp         # 开发者代码主目录
    |   |       |-- controller            # 存放 Controller 层代码的目录
    |   |       |-- service               # 存放 Service 层代码的目录
    |   |       |-- dao                   # 存放 DAO 层代码的目录
    |   |       `-- model                 # 存放数据模型的目录
    |   |-- resources                     # 资源目录,存放配置文件、静态资源等
    |   |   |-- log4j.properties          # 日志配置文件
    |   |   |-- spring-mybatis.xml        # Spring Mybatis 配置文件
    |   |   `-- static                    # 存放静态资源的目录
    |   |       |-- css                   # 存放 CSS 文件的目录
    |   |       |-- js                    # 存放 JavaScript 文件的目录
    |   |       `-- images                # 存放图片资源的目录
    |   `-- webapp                        # 存放 WEB 相关配置和资源
    |       |-- WEB-INF                   # 存放 WEB 应用配置文件
    |       |   |-- web.xml               # Web 应用的部署描述文件
    |       |   `-- classes               # 存放编译后的 class 文件
    |       `-- index.html                # Web 应用入口页面
    `-- test                              # 项目测试代码
        |-- java                          # 单元测试目录
        `-- resources                     # 测试资源目录
  • pom.xml:Maven 项目管理文件,用于描述项目的依赖和构建配置等信息
  • src/main/java:存放项目的 Java 源代码。
  • src/main/resources:存放项目的资源文件,如配置文件、静态资源等。
  • src/main/webapp/WEB-INF:存放 Web 应用的配置文件。
  • src/main/webapp/index.jsp:Web 应用的入口页面。
  • src/test/java:存放项目的测试代码。
  • src/test/resources:存放测试相关的资源文件,如测试配置文件等。

项目构建说明

命令描述
compile编译项目,生成target文件
package打包项目,生成jar或war文件
clean清理编译或打包后的项目结构
install打包后上传到maven本地仓库
deploy只打包,上传到maven私服仓库
test执行测试源码

Maven依赖管理

我们通过定义 POM 文件,Maven 能够自动解析项目的依赖关系,并通过 Maven 仓库自动下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题

核心信息配置

<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成-->
<groupId>com.companyname.project-group</groupId>

<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>

<!-- 版本号 -->
<version>1.0.0</version>

<!--打包方式
    默认:jar
    jar指的是普通的java项目打包方式
    war指的是web项目打包方式
    pom指的是这个项目作为父工程,被其他工程聚合或者继承
-->
<packaging>jar/pom/war</packaging>

依赖管理配置

<!-- 
   通过编写依赖jar包的gav必要属性,引入第三方依赖!
   scope属性是可选的,可以指定依赖生效范围!
 -->
<dependencies>

    <!-- 引入具体的依赖包 -->
    <dependency>
    	<!-- g -->
        <groupId>log4j</groupId>
        <!-- a -->
        <artifactId>log4j</artifactId>
        <!-- v -->
        <version>1.2.17</version>
        <!-- 依赖范围 -->
        <scope>runtime</scope>
    </dependency>

</dependencies>

依赖信息查询

  • maven仓库信息官网 https://mvnrepository.com/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

依赖范围设置

依赖范围描述
compile编译依赖范围。scope 元素的缺省值。依赖范围编译、测试、运行过程都是必须的
test测试依赖范围。依赖范围只对测试有效
provided已提供依赖范围。依赖范围只对编译有效
runtime运行依赖范围。依赖范围的只对测试、运行有效
system系统依赖范围。其效果与 provided 的依赖范围一致。用于添加非 Maven 仓库的本地依赖,通过依赖元素 dependency 中的 systemPath 元素指定本地依赖的路径。鉴于使用其会导致项目的可移植性降低,一般不推荐使用
import导入依赖范围。该依赖范围只能与 dependencyManagement 元素配合使用,其功能是将目标 pom.xml 文件中 dependencyManagement 的配置导入合并到当前 pom.xml 的 dependencyManagement 中。

依赖属性配置

<properties>

  <!-- 
	   通过编写properties添加自定义属性
  -->

  <!-- 设置JDK版本 -->
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
   
  <!-- 设置编码格式 -->
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  
  <!--自定义属性,在添加依赖时可以通过${package.version}来调用 -->
  <package.version>4.12</package.version>
  
</properties>

依赖下载失败错误解决

下载错误原因

  1. 下载依赖时出现网络故障或仓库服务器宕机等原因,导致无法连接至 Maven 仓库,从而无法下载依赖。
  2. 依赖项的版本号或配置文件中的版本号错误,或者依赖项没有正确定义,导致 Maven 下载的依赖项与实际需要的不一致,从而引发错误。
  3. 本地 Maven 仓库或缓存被污染或损坏,导致 Maven 无法正确地使用现有的依赖项。

解决方案

  1. 检查网络连接和 Maven 仓库服务器状态。
  2. 确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
  3. 清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。在本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可

Build构建配置

构建不需要额外配置,都有对应的缺省配置。但我们也可以在pom.xml使用build标签来定制一些配置,修改默认值

指定打包命名

<!-- 默认的打包名称:artifactid+verson.打包方式 -->
<build>
  <finalName>定义打包名称</finalName>
</build>  

指定打包文件

举例:
java文件夹中添加xml文件,默认不会被打包,如何解决
<build>
    <!--设置要打包的资源位置-->
    <resources>
        <resource>
            <!--设置资源所在目录-->
            <directory>src/main/java</directory>
            <includes>
                <!--设置包含的资源类型-->
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

配置依赖插件
dependencies标签下引入开发需要的jar包!我们可以在build/plugins/plugin标签引入插件

<build>
  <plugins>
  
      <!-- java编译插件,配jdk的编译版本 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      
      <!-- tomcat插件 -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8090</port>
          <path>/</path>
          <uriEncoding>UTF-8</uriEncoding>
          <server>tomcat7</server>
        </configuration>
      </plugin>
      
    </plugins>
</build>

依赖传递

假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A, 那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中,这就是依赖的传递性

作用

  • 简化依赖导入过程
  • 确保依赖版本正确

依赖传递终止

  • 非compile范围进行依赖传递
  • 使用optional配置终止传递
  • 依赖冲突(传递的依赖已经存在)
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
    <!-- 终止传递 -->
    <optional>true</optional>
</dependency>

依赖冲突

当直接引用或者间接引用出现了相同的jar包时,一个项目就会出现重复的jar包,这就算作冲突

解决依赖冲突方式:

  1. 自动选择原则
    • 短路优先原则(第一原则)
      • 谁的依赖路径最短,优先选择谁
    • 依赖路径长度相同情况下,则“先声明优先”(第二原则)
      • 在<depencies></depencies>中,先声明的,路径相同,会优先选择
  2. 手动排除
    <dependency>
      <groupId>com.atguigu.maven</groupId>
      <artifactId>pro01-maven-java</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>compile</scope>
      
      <!-- 使用excludes标签配置依赖的排除  -->
      <exclusions>
        <!-- 在exclude标签中配置一个具体的排除 -->
        <exclusion>
          <!-- 指定要排除的依赖的坐标(不需要写version) -->
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
      
    </dependency>
    

maven工程继承

Maven 继承是指在 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息,简化项目的管理和维护工作

继承作用

  • 在父工程中统一管理项目中的依赖信息

应用场景

  • 对一个比较大型的项目进行了模块拆分。
  • 一个 project 下面,创建了很多个 module。
  • 每一个 module 都需要配置自己的依赖信息。

继承语法

  • 父工程
          <!-- 父工程的坐标 -->
          <groupId>com.xty.maven</groupId>
          <artifactId>maven-parent</artifactId>
          <version>1.0-SNAPSHOT</version>
          <!-- 当前工程作为父工程,它要去管理子工程,所以打包方式必须是 pom -->
          <packaging>pom</packaging>
    
  • 子工程
         <!-- 使用parent标签指定当前工程的父工程 -->
         <parent>
        	<!-- 父工程的坐标 -->
         	<groupId>com.xty.maven</groupId>
          	<artifactId>maven-parent</artifactId>
         	<version>1.0-SNAPSHOT</version>
         </parent>
         
         <!-- 子工程的坐标 -->
         <!-- 子工程坐标中的groupId和version与父工程一致,可以省略 -->
         <artifactId>maven-son</artifactId>
    
    

继承

父工程依赖统一管理

  • 父工程声明版本
        <!-- 使用dependencyManagement标签配置对依赖的管理 -->
        <!-- 被管理的依赖并没有真正被引入到工程 -->
        <dependencyManagement>
          <dependencies>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-core</artifactId>
              <version>6.0.10</version>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-beans</artifactId>
              <version>6.0.10</version>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>6.0.10</version>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-expression</artifactId>
              <version>6.0.10</version>
            </dependency>
            <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-aop</artifactId>
              <version>6.0.10</version>
            </dependency>
          </dependencies>
        </dependencyManagement>
  • 子工程引用版本
        <!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。  -->
        <!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
        <!-- 具体来说是由父工程的dependencyManagement来决定。 -->
        <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
          </dependency>
        </dependencies>

maven工程聚合

Maven 聚合是指将多个项目组织到一个父级项目中,以便一起构建和管理的机制。聚合可以帮助我们更好地管理一组相关的子项目,同时简化它们的构建和部署过程

聚合作用

  1. 管理多个子项目:通过聚合,可以将多个子项目组织在一起,方便管理和维护。
  2. 构建和发布一组相关的项目:通过聚合,可以在一个命令中构建和发布多个相关的项目,简化了部署和维护工作。
  3. 优化构建顺序:通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况。
  4. 统一管理依赖项:通过聚合,可以在父项目中管理公共依赖项和插件,避免重复定义。

聚合语法

    <project>
      <groupId>com.example</groupId>
      <artifactId>parent-project</artifactId>
      <packaging>pom</packaging>
      <version>1.0.0</version>
      <!-- 父项目中包含的子项目列表 -->
      <!-- module里写的是项目的路径 -->
      <modules>
        <module>child1-path</module>
        <module>child2-path</module>
      </modules>
    </project>

聚合

maven私服

Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)

私服的优势

  1. 节省外网带宽
    消除对外部远程仓库的大量重复请求,降低外网带宽压力。

  2. 下载速度更快
    Maven私服位于局域网内,从私服下载构建更快更稳定。

  3. 便于部署第三方构件
    有些构件无法从任何一个远程仓库中获得,建立私服之后,就可以将这些构件部署到私服中,供内部Maven项目使用。

  4. 提高项目的稳定性,增强对项目的控制
    如果不建立私服,那么Maven项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven也能够正常运行。

  5. 降低中央仓库得负荷压力
    由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷

常见的Maven私服产品

  1. Apache的Archiva
  2. JFrog的Artifactory
  3. Sonatype的Nexus([ˈneksəs])

Nexus下载安装

  • Nexus下载地址

在这里插入图片描述
Nexus安装解压即可,进入bin目录下,执行./nexus /run命令启动
首页地址:http://localhost:8081/,8081为默认端口号

初始设置

在这里插入图片描述

  • 用户名:admin
  • 密码:查看Nexus解压后的admin.password文件
    禁用匿名登录
    用匿名登录
    初始化完成
    初始化完成

仓库介绍

在这里插入图片描述

仓库类型说明
proxy某个远程仓库的代理
group存放:通过 Nexus 获取的第三方 jar 包
hosted存放:本团队其他开发人员部署到 Nexus 的 jar 包
仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的组仓库
maven-releasesNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本

配置Nexus下载jar包

1.修改本地maven的核心配置文件settings.xml,设置新的本地仓库地址

<!-- 配置一个新的 Maven 本地仓库 -->
<localRepository>D:/maven-repository-new</localRepository>
  1. 在servers标签下配置id、用户名、密码
<server>
  <!-- nexus-id是自己设置的 -->
  <id>nexus-id</id>
  <username>user</username>
  <password>password</password>
</server>
  1. 配置新的mirror标签
<mirror>
	<id>nexus-id</id>
	<mirrorOf>central</mirrorOf>
	<name>Nexus mine</name>
	<!-- url就是仓库的URL,点击copy复制 -->
	<url>http://localhost:8081/repository/maven-public/</url>
</mirror>

注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样

部署jar包到Nexus

maven工程中配置如下,执行deploy命令上传

<distributionManagement>
    <snapshotRepository>
        <id>nexus-id</id>
        <name>Nexus Snapshot</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注意:这里 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致

引用部署后jar包

maven工程中配置:

<repositories>
    <repository>
        <id>nexus-id</id>
        <name>nexus-mine</name>
        <url>http://localhost:8081/repository/maven-snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/934090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3+vite纯前端实现自动触发浏览器刷新更新版本内容,并在打包时生成版本号文件

前言 在前端项目中&#xff0c;有时候为了实现自动触发浏览器刷新并更新版本内容&#xff0c;可以采取一系列巧妙的措施。我的项目中是需要在打包时候生成一个version.js文件&#xff0c;用当前打包时间作为版本的唯一标识&#xff0c;然后打包发版 &#xff0c;从实现对版本更…

鸿蒙实现应用通知

目录&#xff1a; 1、应用通知的表现形式2、应用通知消息的实现1、发布普通文本类型通知2、发布进度类型通知3、更新通知4、移除通知 3、设置通知道通展示不同形式通知4、设置通知组5、为通知添加行为意图1、导入模块2、创建WantAgentInfo信息3、创建WantAgent对象4、构造Notif…

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…

【RabbitMQ】RabbitMQ中核心概念交换机(Exchange)、队列(Queue)和路由键(Routing Key)等详细介绍

博主介绍&#xff1a;✌全网粉丝21W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

【C++笔记】AVL树的深度剖析

【C笔记】AVL树的深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】AVL树的深度剖析前言一. AVL树的概念二.AVL树的实现2.1 AVL树的结构2.2 AVL树的插入2.3 平衡因子更新 三.旋转3.1旋转的原则3.2右单旋3.3左…

Ubuntu 环境安装 之 RabbitMQ 快速入手

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;RabbitMQ &#x1f4da;本系列文章为个人学…

贪心算法专题(四)

目录 1. 单调递增的数字 1.1 算法原理 1.2 算法代码 2. 坏了的计算器 2.1 算法原理 2.2 算法代码 3. 合并区间 3.1 算法原理 3.2 算法代码 4. 无重叠区间 4.1 算法原理 4.2 算法代码 5. 用最少数量的箭引爆气球 5.1 算法原理 ​5.2 算法代码 1. 单调递增的数字…

IAR环境下的FlashLoader设计

目录 1.为什么要Flash Loader 2.Flash Loader设计细节 2.1 简单的代码框架 2.2 迷人的宏使用 2.3 关键的配置文件 3.dmac和mac文件 4.小结 搞国产车规芯片&#xff0c;IAR是必不可少的编译调试集成工具&#xff0c;历史背景不赘述&#xff0c;今天主要聊聊基于IAR的Fla…

一些硬件知识【2024/12/6】

MP6924A: 正点原子加热台拆解&#xff1a; PMOS 相比 NMOS 的缺点&#xff1a; 缺点描述迁移率低PMOS 中的空穴迁移率约为电子迁移率的 1/3 到 1/2&#xff0c;导致导通电流较低。开关速度慢由于迁移率较低&#xff0c;PMOS 的开关速度比 NMOS 慢&#xff0c;不适合高速数字电…

在本地运行大语言模型

1&#xff0c;打开下面网站下载&#xff0c;软件 lm studio 2&#xff0c; 设置模型下载路径 3&#xff0c;没有魔法条件的人&#xff0c;去镜像网站下载模型的镜像文件 、 4&#xff0c;

【单片机】ESP32-S3+多TMC2209控制步进电机系列3 使用TMC2209库实现UART通讯

目录 1.下载TMC2209.h库2.代码部分3.效果展示 1.下载TMC2209.h库 在Arudino环境中&#xff0c;有两个不错的库可以驱动TMC2209。 TMC2209库TMCStepper库 TMC2209库只针对TMC2209驱动器&#xff0c;而TMCStepper库除了能够支持TMC2209驱动器&#xff0c;还能够支持其他TMC的驱…

【服务器部署应用由http协议切换为https】

文章目录 服务器部署应用由http协议切换为https1. 下载openssl及其配置1.1 下载1.2 无脑下一步即可1.3 环境变量配置1.4 验证配置以及生成证书证书路径 2. nginx配置修改 服务器部署应用由http协议切换为https 1. 下载openssl及其配置 1.1 下载 openssl下载地址 根据系统选择…

Linux——管理用户和用户组

一、用户有哪些 root用户 定义&#xff1a;root用户是Linux系统中的最高权限用户&#xff0c;具有对系统所有资源的完全控制权。特性&#xff1a;root用户可以执行系统中的任何操作&#xff0c;包括修改系统配置文件、安装软件、管理系统服务等。由于其拥有最高权限&#xff0c…

synchronized的特性

1.互斥 对于synchronized修饰的方法及代码块不同线程想同时进行访问就会互斥。 就比如synchronized修饰代码块时&#xff0c;一个线程进入该代码块就会进行“加锁”。 退出代码块时会进行“解锁”。 当其他线程想要访问被加锁的代码块时&#xff0c;就会阻塞等待。 阻塞等待…

如何在树莓派上安装Arduino IDE

git clone https://github.com/JetsonHacksNano/installArduinoIDE.git cd installArduinoIDE ./installArduinoIDE.sh sudo reboot sudo shutdown -h now

【JAVA项目】基于ssm的【汽车在线销售系统】

【JAVA项目】基于ssm的【汽车在线销售系统】 技术简介&#xff1a;采用JSP技术、B/S架构、SSM框架、MySQL技术等实现。 系统简介&#xff1a;首页汽车在线销售系统模块如下&#xff1a;首页、汽车信息、新闻资讯、留言反馈、我的收藏管理等功能。管理员输入个人的账号、密码登录…

【代码随想录】刷题记录(66)-修剪二叉搜索树

题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移除&#xff0c;原有的父…

《蓝桥杯比赛规划》

大家好啊&#xff01;我是NiJiMingCheng 我的博客&#xff1a;NiJiMingCheng 这节课我们来分享蓝桥杯比赛规划&#xff0c;好的规划会给我们的学习带来良好的收益&#xff0c;废话少说接下来就让我们进入学习规划吧&#xff0c;加油哦&#xff01;&#xff01;&#xff01; 一、…

Vue3+Vite项目从零搭建+安装依赖+配置按需导入

环境准备 Vscode/HBuilder等任何一种前端开发工具node.js&npm本地开发环境 源代码管理&#xff1a;Git 技术栈 项目构建 创建项目 npm create vite 依次运行最后三行出现&#xff0c;成功启动项目 在浏览器输入 http://localhost:5173/ 可以显示页面 src别名的配置…

小程序维护外包流程和费用

由于某些原因很多老板想要跟换掉小程序原来合作的开发公司&#xff0c;重新把小程序系统维护外包新的公司。小程序系统外包维护是一个涉及多个方面的过程&#xff0c;需要从需求明确、选择团队到持续优化等多个环节进行细致管理。以下就是小程序系统外包维护主要包括几个关键步…