【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)

news2024/11/19 18:30:19

Maven介绍

由于Java的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以jar包的形式出现的,例如Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以jar包的形式出现的,jar包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖管理会变得非常麻烦臃肿,这是Maven解决的第一个问题。

为什么使用Maven

Maven还可以处理多模块项目。简单的项目,单模块分包处理即可,如果项目比较复杂,要做成多模块项目,例如一个电商项目有订单模块、会员模块、商品模块、支付模块,一般来说,多模块项目,每一个模块无法独立运行,要多个模块合在一起,项目才可以运行,这个时候,借助Mavn工具,可以实现项目的一键打包。

Maven之前,我们更多的是使用Ant的项目构建工具,Ant有一个特点,每次都得写,每次都写的差不多,配置也臃肿。所以,后来搞出来Maven。Maven就是最先进的版本构建工具吗?不是的,只不过,目前在Java领域Maven使用比较多。除了Maven,还有Gradle。

Maven是什么

Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),反映在配置中,就是一个pom.xml文件。是一组标准集合,一个项目的生命周期、一个依赖管理系统,另外还包括定义在项目生命周期阶段的插件(plugin) 以及目标(goal) 。当我们使用Maven aven的使用通过一个自定义的项目对象模型,pom.xml来详细描述我们自己的项目。

两大核心功能

  • 依赖管理:对jar的统一管理(Maven提供了一个Maven的中央仓库,https://mvnrepository…com/,当我们在项日中添加完依赖之后,Maven会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题)

  • 项目构建:对项目进行编译、测试、打包、部署、上传到私服等

Maven安装

Maven是Java项目,因此必须先安装JDK。
在这里插入图片描述

下载Maven

下载地址:http://maven.apache.org/download.cgi
在这里插入图片描述

解压并且配置

打开并且解压maven的压缩包。 如下图所示。 我的版本是3.9.2。
在这里插入图片描述
配置,只需要配置环境变量即可:

首先配置 MAVEN HOME, 因为我的是Mac系统,所以我的一个操作仅限于Mac的用户。在Mac上配置Maven的环境变量,需要按照以下步骤进行操作:

打开终端

输入以下命令来编辑~/.bash_profile文件:

nano ~/.bash_profile

在打开的文件中添加以下内容:

export M2_HOME=/usr/local/apache-maven-3.9.2
export PATH=$PATH:$M2_HOME/bin

这里假设您安装的Maven版本是3.9.2。如果您使用的是其他版本,请相应地更改路径。按下Control + X键然后输入Y保存修改,最后按下回车键退出文件。

输入以下命令以重新加载.bash_profile文件

source ~/.bash_profile

检查Maven是否已正确安装和配置:

mvn -version

如果成功安装和配置,将显示Maven版本信息。
在这里插入图片描述
如果使用了Intelli IDEA,可以不用去额外下载Maven,直接使用IDEA中自带的Maven插件即可。IntelliJ IDEA中自带的Maven插件在\xxxx\plugins\maven\lib\maven3。

Maven配置

实际上,没有特殊需求的话,安装好之后直接就可以用了。一般来说,还是需要稍微配置一下,比如中央仓库的问题。默认使用Maven自己的中央仓库,使用起来网速比较慢,这个时候,可以通过修改配置文件,将仓库改成国内的镜像仓库,国内仓库使用较多的是阿里巴巴的仓库。

阿里巴巴云效仓库

  • 阿里巴巴云效仓库:https://developer.aliyun.com/mvn/guide

阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。
在这里插入图片描述

仓库类型

仓库类型介绍说明
本地仓库就是你自己电脑上的仓库,每个人电脑上都有一个仓库,默认位置在当前用户名.m2\repository
私服仓库一般来说是公司内部搭建的Maven私服,处于局域网中,访问速度较快,这个仓库中存放的jar一般就是公司内部自己开发的jar
中央仓库有Apache团队来维护,包含了大部分的jar,早期不包含Oracle数据库驱动,从2019年8月开始,包含了0 racle驱动

现在存在3个仓库,那么jar包如何查找呢?
在这里插入图片描述

本地仓库配置

本地仓库默认位置在当前用户名.m2\repository,这个位置可以自定义,但是不建议大家自定义这个地址,有几个原因:

  1. 虽然所有的本地的jar都放在这个仓库中,但是并不会占用很大的空间。
  2. 默认的位置比较隐蔽,不容易碰到

技术上来说,当然是可以自定义本地仓库位置的,在conf/settings.xml中自定义本地仓库位置:
在这里插入图片描述

远程镜像配置

由于默认的中央仓库下载较慢,因此,也可以将远程仓库地址改为阿里巴巴或者其他资源的镜像的仓库地址:

    <mirror>
      <!--This sends everything else to /public -->
      <id>central-mirror</id>
      <mirrorOf>central</mirrorOf> 
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    <mirror>
      <!--This sends everything else to /public -->
      <id>jcenter-mirror</id>
      <mirrorOf>jcenter</mirrorOf> 
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    <mirror>
      <!--This sends everything else to /public -->
      <id>public-mirror</id>
      <mirrorOf>public</mirrorOf> 
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    <mirror>
      <!--This sends everything else to /public -->
      <id>google-mirror</id>
      <mirrorOf>public</mirrorOf> 
      <url>https://maven.aliyun.com/repository/google</url>
    </mirror>
    <mirror>
      <!--This sends everything else to /public -->
      <id>public-mirror</id>
      <mirrorOf>public</mirrorOf> 
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    <mirror>
      <!--This sends everything else to /public -->
      <id>gradle-plugin-mirror</id>
      <mirrorOf>gradle-plugin</mirrorOf> 
      <url>https://maven.aliyun.com/repository/gradle-plugin</url>
    </mirror>            
    <mirror>
      <!--This sends everything else to /public -->
      <id>spring-mirror</id>
      <mirrorOf>spring</mirrorOf> 
      <url>https://maven.aliyun.com/repository/spring</url>
    </mirror>                
    <mirror>
      <!--This sends everything else to /public -->
      <id>spring-plugin-mirror</id>
      <mirrorOf>spring-plugin</mirrorOf> 
      <url>https://maven.aliyun.com/repository/spring-plugin</url>
    </mirror>                
    <mirror>
      <!--This sends everything else to /public -->
      <id>grails-core-mirror</id>
      <mirrorOf>grails-core</mirrorOf> 
      <url>https://maven.aliyun.com/repository/grails-core</url>
    </mirror>                
    <mirror>
      <!--This sends everything else to /public -->
      <id>apache snapshots-mirror</id>
      <mirrorOf>apache snapshots</mirrorOf> 
      <url>https://maven.aliyun.com/repository/apache-snapshots</url>
    </mirror> 
    <mirror>
        <id>centit-mirror</id>
        <mirrorOf>centit</mirrorOf>
        <url>http://develop.centit.com/nexus/content/repositories/centit-releases</url>
    </mirror>               
  </mirrors>
  

加了这一段配置之后,以后就不会去Maven中央仓库上去下载依赖了,而是去阿里巴巴以及其他的仓库下载,这样可以有效提高下载速度。

Maven指令

虽然还有很多其他的配置,那些东西如果现在跟大家说,大家会蒙圈的, 如果有兴趣的小伙伴可以去看作者的其他的相关Maven的文章,有对应的介绍,相信到这里,大家应该大概知道了Maven的一个配置的简介和基本的使用。

接下来我们会介绍maven的一些基础指令。Maven中有一些常见的命令,如果使用Eclipse需要手动敲命令,如果使用IDEA的话,可以不用命令,直接点点点就可以了。

我们主要会针对于以下指令进行分析介绍:

指令中文含义备注
mvn clean清理这个命令可以用来清理已经编译好的文件
mvn compile编译将Java代码编译成Class文件
mvn test测试这个命令可以用来项目测试
mvn package打包根据用户的配置,将项目打成jar包或者war包
mvn install安装手动向本地仓库安装一个jar
mvn deploy上传将jar上传到私服

这里需要注意的是,这些命令都不是独立运行的,它有一个顺序。

举个简单例子

我想将jar上传到私服,那么就要构建jar,就需要执行package命令,要打包,当然也需要测试,那就要走mvn test命令,要测试就要先编译,因此,最终所有的命令都会执行一遍。不过,开发者也可以手动配置不执行某一个命令,这就是跳过。一般来是,除了测试,其他步骤都不建议跳过。

当然,如果开发者使用了IDEA,这些命令不用手动敲,点一下就行:
在这里插入图片描述

通过命令进行构建项目

可以直接通过命令来构建一个Maven项目,不过在实际开发中,一般使用Eclipse或者IDEA就可以直接创建Maven项目了。

创建命令

mvn archetype:generate -DgroupId=org.xxx -DartifactId=xxx -Dar
chetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

看到如下提示,表示项目创建成功:

打包命令

接下来,我们通过mvn package命令可以将刚刚创建的项目打成一个jar包。在打包之前,需要配置DK的版本至少为7以上,因此,我们还需要手动修改一下pom.xml文件,即添加如下配置:

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>11</java.version>
		<!-- servlet版本 -->
		<servlet.api.version>4.0.1</servlet.api.version>
		<!-- jackson版本 -->
		<jackson.version>2.13.0</jackson.version>
		<!-- okhttp3版本 -->
		<okhttp.version>3.12.1</okhttp.version>
		<!-- google thumbnailator -->
		<google-thumbnailator.version>0.4.14</google-thumbnailator.version>
		<slf4j-api.version>1.7.32</slf4j-api.version>
		<transmittable-thread-local.version>2.12.2</transmittable-thread-local.version>
		<maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version>
		<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version>
		<encoding>UTF-8</encoding>
	</properties>

添加完成后,执行打包命令,注意执行所有命令时,命令行要定位到pom.xml文件所在的目录,看到如下提示,表示项目打包成功。

/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/java -Dmaven.multiModuleProjectDirectory=/Users/alex/Documents/code/mine/develop-admin -Djansi.passthrough=true -Dmaven.home=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3 -Dclassworlds.conf=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/m2.conf -Dmaven.ext.class.path=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven-event-listener.jar -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=62462:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds.license:/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher -Didea.version=2023.1 -s /Users/alex/Documents/config/maven/settings.xml -DskipTests=true package
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------< com.hyts:develop-archetype >---------------------
[INFO] Building develop-archetype 2.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The POM for com.alibaba:druid:jar:1.1.21 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ develop-archetype ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 20 resources
[INFO] Copying 621 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ develop-archetype ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 213 source files to /Users/alex/Documents/code/mine/develop-admin/target/classes

将项目安装到本地仓库

如果需要将项目安装到本地仓库,可以直接执行mvn instali命令,注意,mvn install命令会包含上面的mvn package过程。

[INFO] /Users/alex/Documents/code/mine/develop-admin/src/main/java/com/hyts/common/secure/domain/SecureUserTokenServiceImpl.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ develop-archetype ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/alex/Documents/code/mine/develop-admin/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ develop-archetype ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ develop-archetype ---
[INFO] Tests are skipped.
[INFO] 
[INFO] --- maven-jar-plugin:3.2.2:jar (default-jar) @ develop-archetype ---
[INFO] Building jar: /Users/alex/Documents/code/mine/develop-admin/target/develop-archetype-2.0.0.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.7.0:repackage (repackage) @ develop-archetype ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.7.0:repackage (default) @ develop-archetype ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  16.794 s
[INFO] Finished at: 2023-05-25T14:30:43+08:00
[INFO] ------------------------------------------------------------------------

安装到本地仓库之后,这个时候,点开自己的本地仓库,就可以看到相关的jar了。

IDEA使用Maven

不同于Eclipse,IDEA安装完成后,就可以直接使用Maven了。

Maven相关配置

IDEA中,Maven的配置在 File->Settings->Build,Execution,Deployment->Build Tools->Maven:
在这里插入图片描述

JavaSE工程创建

首先在创建一个工程时,选择Maven工程:
在这里插入图片描述
如果勾选上Create from archetype,则表示可以根据一个项目骨架(项目模板)来创建一个新的工程,不过,如果只是创建JavaSE项目,则不用选择项目骨架。直接Next即可。然后填入项目的坐标,即groupld和artifactld。

Maven依赖管理

Maven项目,如果需要使用第三方的控件,都是通过依赖管理来完成的。这里用到的一个东西就是pom.xml文件,概念叫做项目对象模型(POM,Project Object Model),我们在pom.xml中定义了Maven项目的形式,所以,pom.xml相当于是Maven项目的一个地图。就类似于web.xml文件用来描述三大web组件一样。

Maven的坐标

 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>${easyexcel.version}</version>
</dependency>

dependencies

在dependencies标签中,添加项目需要的jar所对应的maven坐标。

dependency

一个dependency标签表示一个坐标

groupld

团体、公司、组织机构等等的唯一标识。团体标识的约定是它以创建这个项目的组织名称的逆向域名(例如org.xxx)开头。一个Maven坐标必须要包含groupld。一些典型的groupld如apache的groupld是org,apache。

artifactld

artifactld相当于在一个组织中项目的唯一标识符。

version

一个项目的版本。一个项目的话,可能会有多个版本。如果是正在开发的项目,我们可以给版本号加上一个SNAPSHOT,表示这是一个快照版(新建项目的默认版本号就是快照版)

scope

表示依赖范围。

依赖范围编译有效测试有效运行时有效打包有效
complie
test
provided
runtime
system

我们添加了很多依濑,但是不同依赖的使用范围是不一样的。最典型的有两个,一个是数据库驱动,另一个是单元测试。

数据库驱动,在使用的过程中,我们自己写代码,写的是DBC代码,只有在项目运行时,才需要执行MySQL驱动中的代码。所以,MySQL驱动这个依赖在添加到项目中之后,可以设置它的scope为runtime,编译的时候不生效。

单元测试,只在测试的时候生效,所以可以设置它的scope为test,这样,当项目打包发布时,单元测试的依赖就不会跟着发布。

依赖冲突

依赖冲突产生的原因
在这里插入图片描述
在图中, a.jar依赖b.jar, 同时a.jar依赖d.jar, 这个时候, a和b、d的关系是直接依赖的关系,a和c的关系是间接依赖的关系。

冲突解决

  1. 先定义先使用
  2. 路径最近原则(直接声明使用)以spring-context为例, 下图中红色表示失效的依赖(优先级低的依赖,即路径近的依赖优先使用):
    在这里插入图片描述

上面这两条是默认行为。我们也可以手动控制。手动控制主要是通过排除依赖来实现,如下:

  <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${pagehelper.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>mybatis</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
            </exclusions>
</dependency>

这个表示从spring-context中排除spring-core依赖。

Maven私服

Maven仓库管理也叫Maven私服或者代理仓库。使用Maven私服有两个目的:

  1. 私服是一个介于开发者和远程仓库之间的代理。
  2. 私服可以用来部署公司自己的jar。

Nexus介绍

Nexus是一个强大的Maven仓库管理工具, 使用Nexus可以方便的管理内部仓库同时简化外部仓库的访问。官网是:https://www.sonatype.com/

Nexus安装

下载

下载地址:https://www.sonatype.com/download-oss-sonatype

解压

将下载下来的压缩包,拷贝到一个没有中文的路径下,然后解压。

启动

解压之后, 打开cmd窗口(以管理员身份打开cmd窗口) , 然后定位了nexus解压目录,执行nexus.exe/run命令启动服务。
在这里插入图片描述
这个启动稍微有点慢,大概有1两分钟的样子,启动成功后,浏览器输入http://lcoalhost:8081打开管理页面。打开管理页面后,点击右上角上的登录按钮进行登录,默认的用户名/密码是admin/admin123。当然,用户也可以点击设置按钮,手动配置其他用户。
在这里插入图片描述
点击Repositories可以查看仓库详细信息
在这里插入图片描述

仓库类型

  • proxy:表示这个仓库是一个远程仓库的代理,最典型的就是代理Maven中央仓库
  • hosted:宿主仓库,公司自己开发的一些jar存放在宿主仓库中,以及一些在
    Maven中央仓库上没有的jar
  • group:仓库组,包含代理仓库和宿主仓库
  • virtual:虚拟仓库

上传Jar

上传jar,配置两个地方:Maven的conf/settings.xml文件配置:

<!-- servers
   | This is a list of authentication profiles, keyed by the server-id used within the system.
   | Authentication profiles can be used whenever maven must make a connection to a remote server.
   |-->
  <servers>
    <!-- server
     | Specifies the authentication information to use when connecting to a particular server, identified by
     | a unique name within the system (referred to by the 'id' attribute below).
     | 
     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are 
     |       used together.
     |
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
    -->
    
    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
    <server>
        <id>releases</id>
        <username>ali</username>
        <password>ali</password>
      </server>
      <server>
        <id>Snapshots</id>
        <username>ali</username>
        <password>ali</password>
      </server>
  </servers>

在要上传jar的项目的pom.xml文件中,配置上传路径:

<distributionManagement>
	<repository>
		<id>releases</id>
		<url>http://localhost:8081/repository/maven-releases/</url>
	</repository>
	<snapshotRepository>
		<id>snapshots</id>
		<url>http://localhost:8081/repository/maven-snapshots/</ur1>
	</snapshotRepository>
</distributionManagement>

配置完成后,点击deploy按钮,或者执行mvn deploy命令就可以将jar上传到私服上。

下载Jar

直接在项目中添加依赖,添加完成后,额外增加私服地址即可:

<repositories>
	<repository>
		<id>local-repository</id>
		<url>http://localhost:8081/repository/maven-public/</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
</repositories>

Maven是一款用于Java项目构建、依赖管理和项目信息管理的工具。在Java开发中,Maven已成为必不可少的工具之一。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试之完美走位(Java源码)

完美走位 题目描述 在第一人称射击游戏中&#xff0c;玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动&#xff0c;从而完成走位。 假设玩家每按动一次键盘&#xff0c;游戏任务会向某个方向移动一步&#xff0c;如果玩家在操作一定次数的键…

Eureka 心跳和服务续约源码探秘——图解、源码级解析

&#x1f34a; Java学习&#xff1a;社区快速通道 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年5月25日 &#x1f34a; 点…

【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析

【SA8295P 源码分析】03 - SA8295P QNX Host上电开机流程分析 一、阶段1 固件开机自检 (SM BIST):APPS PBL加载XBL后触发 INT_RESET进行Warm Reset二、阶段2 固件开机自检 (SM BIST):加载TZ,初始Hypervisor,启动QNX Kernel,加载并启动各子系统系列文章汇总见:《【SA8295P…

如何用前端技术打造自己的2048游戏

部分数据来源&#xff1a;ChatGPT 2048游戏规则 2048是一款数字益智类游戏&#xff0c;玩家需要通过合并数字方块来获得更高的分数。游戏的规则非常简单&#xff0c;只需要使用上下左右方向键移动数字方块&#xff0c;当两个相同数字方块碰撞时&#xff0c;会合并成一个数字方…

【KVM虚拟化】· KVM中的网络

目录 &#x1f34e;虚拟机的网络模式 &#x1f352;网络配置文件 &#x1f352;virsh查看命令 &#x1f34e;基于NAT的虚拟网络 &#x1f34e;基于网桥的虚拟网络 &#x1f34e;基于隔离的虚拟网络 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&a…

全网最全的多模态实体识别论文列表-【原文+代码】

文章目录 写在前面的话【2017年】【2018年】【2019年】【2020年】【2021年】【2022年】【2023年】【写在最后的话】 写在前面的话 近期在梳理多模态NER相关的论文&#xff0c;因此&#xff0c;本篇文章主要是为大家整理了比较全面的聚焦于多模态实体识别任务的论文列表&#x…

Linux权限相关介绍

目录 前言 1.Linux操作系统下的两种用户 Linux权限管理 Linux文件访问对象分类 文件类型和访问权限 文件类型 基本权限 文件访问权限的相关设置方法 chmod chown chgrp umask掩码 目录权限 粘滞位 前言 权限指的就是我们对于某件事物所能够相关操作&#xff0c;而对于…

x86汇编语法基础(gnu格式)

一、寄存器 1.1 通用寄存器 一个x86-64的中央处理单元&#xff08;CPU&#xff09;包含一组16个存储64位值的通用寄存器。这些寄存器用来存储整数数据和指针。下图显示了这16个寄存器。它们的名字都以%r开头&#xff0c;不过后面还跟着不同命名规则的名字&#xff0c;这是由于…

macbook2023系统清理软件cleanmymac中文版

cleanmymac x 中文版基本都是大家首选Mac清理软件了。它集各种功能于一身&#xff0c;几乎满足用户所有的清理需求。它可以清理&#xff0c;优化&#xff0c;保养和监测您的电脑&#xff0c;确保您的Mac运行畅通无阻&#xff01;支持一键快速清理Mac&#xff0c;快速检查并安全…

opencv_c++学习(二十二)

一、凸包检测 图中左侧为边缘检测的效果&#xff0c;中间为图像经过二值化的效果&#xff0c;右图为凸包检测效果。 convexHull(lnputArraypoints, OutputArray hull&#xff0c;bool clockwise false, bool returnPoints true)points:输入的2D点集。 hull:输出凸包的顶点。…

【大学物理实验】基本测量

50分度的游标卡尺&#xff0c;最小分度为&#xff1a; A. 0.1mm B. 0.2mm C. 0.5mm D. 0.02mm 正确答案&#xff1a; D 保存游标卡尺和螺旋测微器是&#xff0c;下面说法正确的是&#xff1a; A. 游标卡尺测量位置应闭合&#xff0c;螺旋测微器小砧和螺杆间隙也应闭合 B. 游标…

PyG的Planetoid无法直接下载Cora等数据集的解决方法

问题描述&#xff1a; 在使用PyG的时候&#xff0c;通常会涉及到一些公共数据集的下载&#xff0c;由于网络问题&#xff0c;导致无法下载出现以下问题&#xff1a; 尝试了很多的方法都没有成功&#xff08;主要是个人比较菜&#xff01;&#xff09;。但是皇天不负有心人&am…

基于Springboot的高校固定资产管理系统的设计与实现(源码完整)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

1.标注自己的关键点检测数据集

1.标注自己的关键点检测数据集 1.1 labelme标注数据 labelme GitHub项目地址&#xff1a;https://github.com/wkentaro/labelme 1.1.1exe文件下载 https://github.com/wkentaro/labelme/releases 可直接下载打包好的exe文件 1.1.2python安装labelme cmd命令行中输入以下命…

极大似然估计法及其损失函数的优化方法

二分类-逻辑回归模型 1.模型函数 1&#xff09;多元线性回归函数&#xff1a; Z ^ 计算 X W T \hat{Z}_{计算} XW^T Z^计算​XWT 2&#xff09;softmax函数&#xff1a; Y ^ 模型 S i g m o i d ( Z ^ 计算 ) 1 1 e − Z ^ 计算 \hat{Y}_{模型} Sigmoid(\hat{Z}_{计算})…

继瑞吉外卖后的又一个项目——SpringBoot+Vued前后端的博客系统

文章目录 博客系统项目介绍前言项目演示前台演示后台演示 组织结构后端组织结构前端组织结构 技术选型前端技术后端技术架构图系统架构图业务架构图 模块介绍前端模块后端模块 环境搭建开发工具开发环境项目运行 未完待续结语 博客系统项目介绍 前言 本项目已开源在Gitee 后端…

【P32】JMeter While 控制器(While Controller)

文章目录 一、While 控制器&#xff08;While Controller&#xff09;参数说明二、测试计划设计2.1、变量2.2、函数2.2.1、groovy脚本2.2.2、jex13脚本2.2.3、js脚本 一、While 控制器&#xff08;While Controller&#xff09;参数说明 可以对部分逻辑按变量条件进行循环迭代…

【算法】—— 简单多状态 dp 问题

在上期&#xff0c;我给大家讲解了关于单个状态下的dp问题&#xff0c;本期我给大家讲述几道关于多状态下的dp问题。希望大家有所帮助&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;粉刷房⼦ &#xff08;二&#xff09;买卖股票的最佳时机含冷冻期 …

破解提升 LLMs 性能的黑匣子—— LlamaIndex

“可以将 LlamaIndex 视为外部数据和 LLM 连接在一起的黑匣子。”在 Zilliz 组织的网络研讨会中&#xff0c;LlamaIndex 的联合创始人兼首席执行官 Jerry Liu 曾这样说道。 对于 Jerry Liu 的这个比喻&#xff0c;熟悉 LLMs 的开发者会觉得颇为贴切&#xff0c;尤其是对于那些想…

Chinese-LLaMA-Alpaca代码实战

文章目录 微调chinese-alpaca部署llama.cpp将FP16模型量化为4-bit 项目地址&#xff1a; https://github.com/ymcui/Chinese-LLaMA-Alpaca 微调chinese-alpaca 本项目基于中文数据 开源了使用中文文本数据预训练的中文LLaMA大模型&#xff08;7B、13B&#xff09;开源了进一…