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

创建第一个 Maven 项目(二)

六、添加依赖

在 Maven 项目开发过程中,添加依赖是一项常见且关键的操作。通过添加依赖,我们可以引入项目所需的各种库和框架,极大地扩展项目的功能。接下来,我们将以 JUnit 依赖为例,详细介绍如何在 Maven 项目中添加依赖。

(一)打开 pom.xml 文件

在 IntelliJ IDEA 中,打开我们之前创建的 Maven 项目。在项目的导航栏中,找到项目的根目录,其中有一个名为pom.xml的文件,它就是 Maven 项目的核心配置文件。你可以直接双击pom.xml文件来打开它;也可以使用快捷键 “Ctrl + Shift + N”(Windows)或者 “Command + Shift + O”(Mac),在弹出的搜索框中输入 “pom.xml”,然后回车即可快速打开该文件。

(二)在 Maven 仓库中查找依赖

我们以添加 JUnit 依赖为例,JUnit 是一个广泛使用的 Java 单元测试框架,在 Maven 项目中添加 JUnit 依赖可以方便我们编写和运行测试用例。

要查找 JUnit 依赖的坐标,我们可以访问 Maven 仓库的官方网站,例如 Maven Central Repository(https://mvnrepository.com/ )。在该网站的搜索框中输入 “JUnit”,然后回车,会出现一系列与 JUnit 相关的依赖项。在搜索结果中,我们找到 “JUnit Jupiter API” 和 “JUnit Jupiter Engine”,这两个是 JUnit 5 中的核心依赖。点击进入 “JUnit Jupiter API” 的详情页面,我们可以看到它的坐标信息,包括groupId(org.junit.jupiter)、artifactId(junit-jupiter-api)和最新版本号(例如5.8.2)。同样的方法,我们获取 “JUnit Jupiter Engine” 的坐标信息,groupId也是org.junit.jupiter,artifactId为junit-jupiter-engine,版本号与 “JUnit Jupiter API” 保持一致。

(三)将依赖添加到 pom.xml

打开pom.xml文件后,在<dependencies>标签内添加依赖的坐标信息。将我们在 Maven 仓库中查找到的 JUnit 依赖坐标复制粘贴到<dependencies>标签中,示例代码如下:

 

<dependencies>

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-api</artifactId>

<version>5.8.2</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter-engine</artifactId>

<version>5.8.2</version>

<scope>test</scope>

</dependency>

</dependencies>

在上述代码中,<groupId>指定了依赖所属的组织,<artifactId>指定了依赖的名称,<version>指定了依赖的版本号,<scope>指定了依赖的作用范围。这里我们将<scope>设置为test,表示这两个依赖只在测试阶段使用,不会被打包到最终的项目中。

(四)等待依赖下载

添加完依赖坐标后,保存pom.xml文件。此时,IDEA 会自动检测到pom.xml文件的变化,并开始下载我们添加的依赖。你可以在 IDEA 的右下角看到一个 Maven 的进度条,显示依赖的下载进度。在下载过程中,可能会出现一些问题:

  1. 网络问题:如果下载依赖时出现超时或连接失败的错误,可能是网络不稳定或无法访问 Maven 中央仓库。你可以检查网络连接,或者配置一个国内的镜像源,如阿里云的 Maven 镜像。具体方法是在settings.xml文件中添加以下镜像配置:
 

<mirrors>

<mirror>

<id>aliyunmaven</id>

<name>阿里云公共仓库</name>

<url>https://maven.aliyun.com/repository/public</url>

<mirrorOf>central</mirrorOf>

</mirror>

</mirrors>

  1. 依赖冲突:如果项目中已经存在与新添加依赖冲突的版本,可能会导致下载失败或项目无法正常运行。此时,你需要仔细检查pom.xml文件中已有的依赖和新添加依赖的版本信息,尝试排除冲突的依赖,或者调整依赖的版本,使其相互兼容。例如,如果两个依赖都依赖于同一个库,但版本不同,你可以通过在pom.xml中使用<exclusions>标签来排除其中一个依赖中不需要的库版本,然后手动指定一个统一的版本。
  1. 仓库缓存污染问题:当下载某个 jar 包但未下载成功时,会在本地仓库中生成对应的缓存文件(.lastUpdated格式),而当 Maven 检测到缓存文件时是不会重新下载的。所以需要先将缓存文件删除,再去重新下载才行。以下载 log4j 依赖包但下载出现问题中断后的情况为例,本地仓库中对应目录已经出现了缓存文件。此时只需要顺着依赖坐标去本地仓库中的目录寻找,再将缓存文件删除并重新刷新 Maven 下载即可。

耐心等待依赖下载完成,当下载成功后,你就可以在项目中使用这些依赖了。在 IDEA 的项目导航栏中,展开 “External Libraries”(外部库),可以看到我们新添加的 JUnit 依赖已经被成功导入到项目中。

七、编写代码

(一)在 src/main/java 目录下创建包和类

在我们的 Maven 项目中,src/main/java目录是存放 Java 源代码的地方。现在,我们要在这个目录下创建包和类,以实现我们的业务逻辑。

以创建一个简单的HelloWorld类为例,在 IntelliJ IDEA 中,找到项目导航栏中的src/main/java目录,右键点击它,在弹出的菜单中选择 “New”(新建),然后再选择 “Package”(包)。在弹出的输入框中,输入包名,例如com.example.myfirstmavenproject(这里的包名要与我们创建项目时填写的 GroupId 和 ArtifactId 相关联,以保持项目结构的一致性),然后点击 “OK” 按钮,这样就创建好了一个包。

接下来,在刚刚创建的包上右键点击,选择 “New”(新建),再选择 “Java Class”(Java 类)。在弹出的输入框中,输入类名 “HelloWorld”,然后点击 “OK” 按钮。此时,IDEA 会在src/main/java/com/example/myfirstmavenproject目录下创建一个名为HelloWorld.java的文件,文件内容如下:

 

package com.example.myfirstmavenproject;

public class HelloWorld {

}

这里的package语句声明了该类所属的包,public class HelloWorld则定义了一个名为HelloWorld的公共类。

(二)编写业务逻辑

在HelloWorld类中,我们编写一个简单的输出语句,来展示 Maven 项目的基本代码结构。修改HelloWorld类的代码如下:

 

package com.example.myfirstmavenproject;

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, Maven! This is my first Maven project.");

}

}

在这段代码中,main方法是 Java 应用程序的入口点,System.out.println是 Java 的标准输出语句,用于在控制台输出指定的字符串。这里我们输出了 “Hello, Maven! This is my first Maven project.”,表示这是我们在 Maven 项目中编写的第一个简单程序。通过这样一个简单的示例,我们可以看到 Maven 项目中 Java 类的基本结构,以及如何在类中编写业务逻辑代码。在实际项目开发中,我们会在src/main/java目录下创建更多的包和类,编写复杂的业务逻辑,实现各种功能。

八、构建和运行项目

(一)使用 Maven 命令构建项目

在完成代码编写和依赖添加后,我们需要使用 Maven 命令对项目进行构建。Maven 提供了一系列丰富的命令,用于完成不同的构建任务。在 IntelliJ IDEA 中,我们可以通过 IDEA 的 Terminal 来执行这些 Maven 命令。

  1. 常用 Maven 命令介绍
    • mvn clean:这个命令用于清除项目构建生成的文件,通常是清除target目录下的内容。在重新构建项目之前,执行mvn clean可以确保生成的是最新的构建结果,避免因旧文件残留而导致的问题。例如,当我们对项目的配置或代码进行了较大修改时,先执行mvn clean可以保证新的构建不受旧文件的影响。
    • mvn compile:该命令用于编译项目的源代码。它会将src/main/java目录下的 Java 文件编译成字节码文件(.class文件),并将编译结果输出到target/classes目录中。这是项目构建的基本步骤,只有成功编译源代码,项目才能进行后续的测试和打包等操作。
    • mvn test:用于运行项目的测试用例。Maven 会执行src/test/java目录下的测试类,通过 JUnit、TestNG 等测试框架来验证项目的功能是否正确。在开发过程中,经常运行mvn test可以及时发现代码中的问题,保证项目的质量。例如,当我们修改了某个功能模块的代码后,执行mvn test可以检查该模块的测试用例是否仍然通过,确保修改没有引入新的错误。
    • mvn package:这个命令会将编译后的代码打包成相应的文件格式。对于 Java 应用程序,通常会打包成 JAR 文件;对于 Web 项目,则会打包成 WAR 文件。打包后的文件会存放在target目录下,例如我们的项目打包后会生成my - first - maven - project - 1.0 - SNAPSHOT.jar(假设项目的 ArtifactId 为my - first - maven - project,版本号为1.0 - SNAPSHOT)。打包后的文件可以方便地进行部署和分发。
    • mvn install:在mvn package的基础上,mvn install会将打包后的文件安装到本地 Maven 仓库中。这样,其他项目就可以通过 Maven 依赖管理来引用这个项目。例如,当我们开发了一个通用的工具类库,并将其打包安装到本地仓库后,其他项目在pom.xml中添加相应的依赖,就可以使用这个工具类库了。
  1. 在 IDEA 的 Terminal 中执行 Maven 命令
    • 打开 IntelliJ IDEA,进入我们创建的 Maven 项目。在 IDEA 的底部工具栏中,找到并点击 “Terminal” 按钮,打开终端窗口。
    • 在终端窗口中,默认的路径是项目的根目录,也就是包含pom.xml文件的目录。此时,我们可以直接输入 Maven 命令。例如,要执行mvn clean命令,只需在终端中输入 “mvn clean”,然后回车。IDEA 会执行该命令,并在终端中显示命令的执行过程和结果。
    • 如果要执行多个 Maven 命令,例如先执行mvn clean,再执行mvn compile,可以在终端中依次输入这两个命令,每个命令执行完成后再输入下一个。也可以使用分号将多个命令连接起来,一次性执行,例如 “mvn clean; mvn compile”。但需要注意的是,这种方式下,如果前面的命令执行失败,后面的命令仍然会继续执行,可能会导致错误的结果。所以,在实际使用中,建议根据具体情况选择合适的方式。

(二)运行项目

项目构建完成后,就可以运行项目来验证其功能了。运行项目的方式取决于项目的类型,下面分别介绍 Java 应用程序和 Web 项目的运行方法。

  1. 运行 Java 应用程序

如果我们创建的是一个 Java 应用程序,并且在src/main/java目录下定义了包含main方法的类(例如前面创建的HelloWorld类),那么可以直接在 IDEA 中运行这个类。

    • 在 IDEA 的项目导航栏中,找到包含main方法的类文件,例如HelloWorld.java。
    • 右键点击该类文件,在弹出的菜单中选择 “Run 'HelloWorld.main ()'” 选项,或者直接使用快捷键 “Shift + F10”(Windows 和 Linux 系统)、“Control + R”(Mac 系统)。
    • IDEA 会启动 Java 虚拟机,执行main方法中的代码,在控制台中输出结果。例如,对于HelloWorld类,控制台会输出 “Hello, Maven! This is my first Maven project.”。
  1. 运行 Web 项目

如果我们创建的是一个 Web 项目,需要配置 Tomcat 服务器来运行项目。以下是在 IDEA 中配置 Tomcat 并运行 Web 项目的步骤:

    • 下载和安装 Tomcat:首先,需要从 Apache Tomcat 官方网站(https://tomcat.apache.org/download - tomcat.cgi )下载 Tomcat 的安装包。根据自己的操作系统选择合适的版本,例如 Windows 系统可以下载apache - tomcat - 9.0.64.zip(以 9.0.64 版本为例)。下载完成后,将压缩包解压到指定的目录,例如C:\apache - tomcat - 9.0.64。
    • 配置 Tomcat 在 IDEA 中
      • 打开 IntelliJ IDEA,进入 Web 项目。点击菜单栏中的 “Run”(运行),然后选择 “Edit Configurations”(编辑配置)。
      • 在弹出的 “Run/Debug Configurations”(运行 / 调试配置)窗口中,点击左上角的 “+” 按钮,在下拉菜单中选择 “Tomcat Server”(Tomcat 服务器),然后选择 “Local”(本地)。
      • 在 “Tomcat Server” 配置页面中,“Name”(名称)可以保持默认,也可以自定义一个容易识别的名称。在 “Server” 选项卡中,设置 “Tomcat home directory”(Tomcat 主目录)为前面解压 Tomcat 的目录,例如C:\apache - tomcat - 9.0.64。如果 Tomcat 需要用户名和密码进行管理(例如部署应用时),可以在 “User” 和 “Password” 字段中填写相应的信息。
      • 切换到 “Deployment”(部署)选项卡,点击右上角的 “+” 按钮,选择 “Artifact”(工件)。在弹出的菜单中,选择我们的 Web 项目对应的工件,例如my - first - maven - project:war exploded(如果项目是打包成 WAR 文件并以爆炸式部署,即展开的目录形式部署)。如果项目是打包成普通的 WAR 文件,可以选择my - first - maven - project:war。选择好工件后,点击 “OK” 按钮。
    • 运行 Web 项目:配置完成后,点击 “Run/Debug Configurations” 窗口中的 “OK” 按钮保存配置。然后,点击 IDEA 工具栏中的绿色三角形 “Run” 按钮,或者使用快捷键 “Shift + F10”(Windows 和 Linux 系统)、“Control + R”(Mac 系统)。IDEA 会启动 Tomcat 服务器,并部署我们的 Web 项目。当 Tomcat 启动成功后,在浏览器中输入项目的访问地址,例如http://localhost:8080/my - first - maven - project(假设 Tomcat 的默认端口是 8080,项目的上下文路径是my - first - maven - project),就可以访问 Web 项目了。

通过以上步骤,我们可以使用 Maven 命令构建项目,并根据项目的类型运行项目,从而验证项目的功能是否正常。在实际开发中,构建和运行项目是一个反复的过程,我们需要不断地修改代码、添加依赖、构建项目并运行测试,以确保项目的质量和稳定性。

九、常见问题及解决方法

在创建和使用 Maven 项目的过程中,我们可能会遇到各种各样的问题。下面将针对一些常见问题进行分析,并提供相应的解决方法。

(一)依赖下载失败

  1. 网络问题
    • 原因分析:网络不稳定、代理设置错误或无法访问 Maven 中央仓库等网络问题,都可能导致依赖下载失败。比如,当网络连接中断或速度过慢时,Maven 在下载依赖的过程中就可能会出现超时错误。如果设置了代理服务器,但代理配置不正确,也会使 Maven 无法正常连接到仓库。
    • 解决方法:首先,检查网络连接是否正常,可以通过访问其他网站来验证。如果是代理问题,需要正确配置代理。在 Maven 的 settings.xml 文件中,添加或修改代理配置。例如:
 

<proxies>

<proxy>

<id>my-proxy</id>

<active>true</active>

<protocol>http</protocol>

<host>proxy.example.com</host>

<port>8080</port>

<username>proxyuser</username>

<password>proxypassword</password>

</proxy>

</proxies>

其中,<host>是代理服务器的地址,<port>是代理服务器的端口,<username>和<password>是代理服务器的认证信息(如果需要认证)。如果没有代理,可以在 settings.xml 中添加阿里云镜像来提高下载速度,配置如下:

 

<mirrors>

<mirror>

<id>aliyunmaven</id>

<name>阿里云公共仓库</name>

<url>https://maven.aliyun.com/repository/public</url>

<mirrorOf>central</mirrorOf>

</mirror>

</mirrors>

  1. 仓库配置问题
    • 原因分析:Maven 的仓库配置错误,如本地仓库路径设置不正确、远程仓库地址不可用等,也会导致依赖下载失败。例如,本地仓库路径设置为一个不存在的目录,Maven 就无法将下载的依赖存储到该目录;远程仓库地址错误或仓库服务器宕机,Maven 就无法从该仓库下载依赖。
    • 解决方法:检查 Maven 的配置文件 settings.xml,确保本地仓库路径设置正确。如果本地仓库路径设置错误,修改<localRepository>标签的值为正确的路径。例如:
 

<localRepository>C:\Users\yourusername\.m2\repository</localRepository>

如果远程仓库地址不可用,可以尝试更换其他可靠的远程仓库,或者等待仓库服务器恢复正常。

3. 依赖坐标错误

  • 原因分析:在 pom.xml 文件中声明依赖时,如果依赖的坐标(groupId、artifactId、version)填写错误,Maven 就无法找到对应的依赖,从而导致下载失败。比如,将 groupId 写错,或者使用了一个不存在的版本号。
  • 解决方法:仔细检查 pom.xml 文件中依赖的坐标信息,确保其准确无误。可以通过 Maven 仓库的官方网站(如https://mvnrepository.com/ )来查找正确的依赖坐标。例如,要添加 JUnit 5 的依赖,如果发现下载失败,检查<groupId>是否为org.junit.jupiter,<artifactId>是否为junit-jupiter-api或junit-jupiter-engine,版本号是否正确。
  1. 仓库缓存污染问题
    • 原因分析:当下载某个 jar 包但未下载成功时,会在本地仓库中生成对应的缓存文件(.lastUpdated格式),而当 Maven 检测到缓存文件时是不会重新下载的。这就导致即使网络和依赖坐标等都正确,也无法下载到正确的依赖。
    • 解决方法:先将缓存文件删除,再去重新下载。顺着依赖坐标去本地仓库中的目录寻找,将对应的.lastUpdated文件删除,然后在 IDEA 中刷新 Maven 项目,Maven 就会重新尝试下载依赖。例如,下载 log4j 依赖包时出现问题中断,本地仓库中对应目录出现了缓存文件,此时进入本地仓库中 log4j 依赖的对应目录,删除.lastUpdated文件,然后重新刷新 Maven 下载即可。

(二)项目构建报错

  1. 语法错误
    • 报错信息示例:“error: illegal start of expression”,通常表示 Java 代码中存在语法错误,如缺少分号、括号不匹配、关键字拼写错误等。例如,在定义方法时,忘记写方法的返回值类型,或者在使用变量前未进行声明。
    • 解决思路:仔细检查报错信息中指向的代码行,找出语法错误并进行修正。IDEA 通常会在代码编辑器中用红色波浪线标记出语法错误的位置,将鼠标悬停在错误处,会显示详细的错误提示信息。根据提示信息,对代码进行相应的修改。例如,如果提示缺少分号,就在相应的语句末尾添加分号;如果括号不匹配,检查括号的数量和位置,确保括号正确配对。
  1. 依赖冲突
    • 报错信息示例:“java.lang.NoClassDefFoundError” 或 “java.lang.ClassNotFoundException”,当项目中存在依赖冲突时,可能会导致某些类无法被正确加载,从而抛出这些异常。例如,项目中同时依赖了两个不同版本的同一个库,而这两个版本之间存在不兼容的情况。
    • 解决思路:使用 IDEA 自带的功能或插件来排查和解决依赖冲突。可以打开 Maven 菜单,点击 “show dependencies”,展示项目的依赖关系树,红色的线通常表示冲突的依赖。选中冲突的包,然后右键选择 “exclude”,可以排除冲突的依赖。也可以安装插件 Maven Helper,安装后打开 pom.xml 文件并点击依赖分析,左侧列表会列出依赖,点击依赖后右边框体会展示冲突情况。对着冲突内容点击鼠标右键选择 “Exclude”,即可排除冲突。此外,还可以使用 Maven 命令 “mvn dependency:tree -Dverbose”,以树形结构展现项目中的依赖,通过搜索 “conflict” 来查找冲突的依赖,然后在 pom.xml 中手动排除依赖。
  1. Maven 插件配置错误
    • 报错信息示例:“Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile”,表示 Maven 在执行编译插件时出现错误,可能是插件配置不正确,如插件版本不兼容、配置参数错误等。例如,在配置 Maven 编译插件时,指定的 Java 版本与实际安装的 Java 版本不一致。
    • 解决思路:检查 pom.xml 文件中 Maven 插件的配置信息,确保插件的版本正确,并且配置参数符合项目的需求。如果是插件版本问题,可以尝试更新或降级插件版本;如果是配置参数错误,根据插件的文档,修改配置参数。例如,配置 Maven 编译插件时,确保<source>和<target>标签指定的 Java 版本与实际安装的 Java 版本一致:
 

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.8.1</version>

<configuration>

<source>11</source>

<target>11</target>

</configuration>

</plugin>

</plugins>

</build>

  1. 缺少依赖或依赖范围错误
    • 报错信息示例:“package xxx does not exist”,当项目中使用了某个包,但该包所对应的依赖没有正确添加到项目中,或者依赖的范围设置错误,就会出现这种错误。例如,在代码中使用了org.springframework包下的类,但项目的 pom.xml 中没有添加 Spring 相关的依赖,或者依赖的<scope>设置为test,而在主代码中使用了该依赖。
    • 解决思路:检查 pom.xml 文件,确保项目所需的依赖都已正确添加,并且依赖的范围设置合理。如果缺少依赖,在<dependencies>标签内添加相应的依赖坐标;如果依赖范围错误,修改<scope>标签的值。例如,如果在主代码中使用了org.springframework包下的类,在 pom.xml 中添加 Spring 的依赖:
 

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>5.3.10</version>

</dependency>

</dependencies>

并且确保<scope>标签的值为compile(默认值,表示在编译、测试和运行时都需要该依赖),而不是test(表示仅在测试时需要该依赖)。

通过对这些常见问题的分析和解决方法的介绍,希望能帮助大家在创建和使用 Maven 项目时,快速解决遇到的问题,顺利推进项目的开发。

十、总结

在本次探索之旅中,我们深入了解了 Maven 这一强大工具,并成功创建了第一个 Maven 项目。从 Maven 的定义和优势出发,明确了它在 Java 项目管理中的核心地位。通过细致的准备工作,包括安装 Java JDK、Maven 以及选择合适的开发工具 IntelliJ IDEA,搭建起了坚实的开发环境。

在创建项目的过程中,我们一步步完成了项目的创建、结构解析、依赖添加、代码编写以及构建和运行。每一个环节都紧密相连,共同构成了一个完整的 Maven 项目开发流程。同时,我们也对项目构建过程中可能出现的依赖下载失败、项目构建报错等常见问题进行了分析,并提供了相应的解决方法,帮助大家在实际开发中能够快速应对和解决问题。

然而,Maven 的强大功能远不止于此,它还有许多高级特性等待我们去探索。比如,使用 profiles 根据不同的环境定制构建配置,实现开发、测试和生产环境的差异化设置;通过分模块构建,将大型项目拆分为多个独立的模块,提高项目的可维护性和可扩展性;利用 Maven 的依赖传递和冲突解决机制,更加灵活地管理项目依赖。

希望大家在掌握了创建第一个 Maven 项目的基础上,能够继续深入学习 Maven 的高级特性,不断提升自己的项目管理和开发能力。在未来的 Java 开发中,充分发挥 Maven 的优势,提高开发效率,打造更加优质的项目。

相关文章:

创建第一个 Maven 项目(二)

六、添加依赖 在 Maven 项目开发过程中&#xff0c;添加依赖是一项常见且关键的操作。通过添加依赖&#xff0c;我们可以引入项目所需的各种库和框架&#xff0c;极大地扩展项目的功能。接下来&#xff0c;我们将以 JUnit 依赖为例&#xff0c;详细介绍如何在 Maven 项目中添加…...

游戏引擎学习第124天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天&#xff0c;我们已经介绍了多线程的一些基础知识&#xff0c;包括如何创建工作队列以及如何在线程中处理任务。今天&#xff0c;重点是解决那些我们之前没有注意到…...

组件的组成和组件的嵌套关系

组件的组成 首先建一个.vue文件&#xff0c;在里面写一个内容&#xff1a; <template> <div><div class"container">{{ message }}</div> </div> </template> <script> export default{data(){return{message:"组件…...

2025 PHP授权系统网站源码

2025 PHP授权系统网站源码 安装教程&#xff1a; PHP7.0以上 先上传源码到服务器&#xff0c;然后再配置伪静态&#xff0c; 访问域名根据操作完成安装&#xff0c; 然后配置伪静态规则。 Ngix伪静态规则&#xff1a; location / { if (!-e $request_filename) { rewrite …...

KIMI K1.5:大规模强化学习在大语言模型中的应用与工程实践

目录 1、核心技术创新:长上下文强化学习 2、策略优化的技术细节 2.1、在线镜像下降变体 2.2、长度惩罚机制 2.3、智能采样策略 3、工程架构创新 3.1、混合部署框架 3.2、代码沙箱与奖励模型 3.3、分布式系统架构 4、实验成果与性能提升 5、结论与未来展望 大语言模…...

Linux MySQL 8.0.29 忽略表名大小写配置

Linux MySQL 8.0.29 忽略表名大小写配置 问题背景解决方案遇到的问题&#xff1a; 问题背景 突然发现有个大写的表报不存在。 在Windows上&#xff0c;MySQL是默认支持忽略大小写的。 这个时候你要查询一下是不是没有配置&#xff1a; SHOW VARIABLES LIKE lower_case_table…...

Vue 中,使用模板(Template) 和 Render 函数编写组件的区别

在 Vue 2 中&#xff0c;模板&#xff08;Template&#xff09; 和 Render 函数 是两种不同的组件编写方式&#xff0c;它们各有特点和适用场景。以下是它们的核心区别和实际应用场景分析&#xff1a; 1. 基本区别 特性模板&#xff08;Template&#xff09;Render 函数语法形…...

大白话Vuex 核心概念(state、mutations、actions)的使用案例与原理

大白话Vuex 核心概念&#xff08;state、mutations、actions&#xff09;的使用案例与原理 Vuex是Vue.js应用程序中专门用来管理状态的工具&#xff0c;就好像是一个大管家&#xff0c;帮你把项目里一些重要的数据和操作管理得井井有条。下面用大白话结合案例来介绍Vuex核心概…...

ElasticSearch查询指南:从青铜到王者的骚操作

ElasticSearch查询指南&#xff1a;从青铜到王者的骚操作 本文来源于笔者的CSDN原创&#xff0c;由于掘金>已经去掉了转载功能&#xff0c;所以只好重新上传&#xff0c;以下图片依然保持最初发布的水印&#xff08;如CSDN水印&#xff09;。&#xff08;以后属于本人原创均…...

财务运营域——营收稽核系统设计

摘要 本文主要介绍了营收稽核系统的背景、特点与作用。营收稽核系统的产生源于营收管理复杂性、财务合规与审计需求、提升数据透明度与决策效率、防范舞弊与风险管理、技术进步与自动化需求、多元化业务模式以及跨部门协作与数据整合等多方面因素。其特点包括自动化与智能化、…...

30 分钟从零开始入门 CSS

HTML CSS JS 30分钟从零开始入门拿下 HTML_html教程-CSDN博客 30 分钟从零开始入门 CSS-CSDN博客 JavaScript 指南&#xff1a;从入门到实战开发-CSDN博客 前言 最近也是在复习&#xff0c;把之前没写的博客补起来&#xff0c;之前给大家介绍了 html&#xff0c;现在是 CSS 咯…...

threejs:document.createElement创建标签后css设置失效

vue3threejs&#xff0c;做一个给模型批量CSS2D标签的案例&#xff0c;在导入模型的js文件里&#xff0c;跟着课程写的代码如下&#xff1a; import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...

【GESP】C++三级练习 luogu-p1567, 统计天数

GESP三级&#xff0c;一维数组&#xff0c;多层循环和分支练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-3-luogu-p1567/ 【GESP】C三级练习 luogu-p1567, 统计天数 | OneCoderGESP三级&#xff0c;一维数组&#xff0c;多层循环和…...

springboot集成deepseek4j

1、文档地址 快速开始 - 零基础入门Java AI 免费的模型 Models 2、pom文件依赖 parent依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency>&…...

SpringBoot中报错:JSON parse error: Unrecognized filed 异常原因和解决方案

问题描述 当使用Spring Boot或其他JSON解析库&#xff08;如Jackson&#xff09;将JSON字符串反序列化为Java对象时&#xff0c;可能会遇到以下异常&#xff1a; JSON parse error: Unrecognized field "<fieldName>" (class <ClassName>), not marked…...

【数据分析】4 商业数据分析技能模型总结

优秀的商业分析师需要具备的能力 数据分析能力逻辑思维能力赢得结果能力 一、数据分析能力扩展&#xff1a;工具链生态与进阶场景 1. 数据获取技术升级 企业级数据源管理&#xff1a; 数据湖架构&#xff08;AWS S3/阿里云OSS&#xff09;与数据仓库&#xff08;Snowflake/R…...

vue+element-dialog:修改关闭icon / 遮罩层不能挡住弹窗 / 遮罩层不能遮挡元素

一、是否显示操作按钮 二、修改dialog默认关闭icon .el-dialog__headerbtn {top: 15px !important;width: 18px;height: 18px;background: url(~assets/img/formworkManagement/close-button.png) left no-repeat;background-size: cover; } .el-dialog__headerbtn i {content…...

Linux系统之DHCP网络协议

目录 一、DHCP概述 二、DHCP部署实操 2.1、安装DHCP软件 2.2、拷贝配置文件 2.3、配置文件详解 2.4、重启软件服务 2.5、新开一台服务器&#xff0c;查看dhcp地址获取 一、DHCP概述 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种应用层网络协…...

夜莺监控 - 边缘告警引擎架构详解

前言 夜莺类似 Grafana 可以接入多个数据源&#xff0c;查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好&#xff0c;如果由 n9e 进程去周期性查询数据并判定告警&#xff0c;那在网络链路抖动或拥塞的时候&#xff0c;告警就不稳定了。所…...

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题&#xff0c;DeepSeek团队已经暂停了API服务充值&#xff0c;以避免对用户造成业务影响。目前&#xff0c;存量充值金额仍可继续调用&#xff0c;但充值功能暂时不可用‌。 DeepSe…...

kubernetes 初学命令

基础命令 kubectl 运维命令常用&#xff1a; #查看pod创建过程以及相关日志 kubectl describe pod pod-command -n dev #查看某个pod&#xff0c;以yaml格式展示结果 kubectl get pod nginx -o yaml #查看pod 详情 以及对应的集群IP地址 kubectl get pods -o wide 1. kubetc…...

学习笔记05——HashMap实现原理及源码解析(JDK8)

HashMap实现原理及源码解析&#xff08;JDK8&#xff09; 一、核心设计思想 数组链表红黑树&#xff1a;桶数组存储Node节点&#xff0c;哈希冲突时形成链表&#xff0c;链表长度≥8且桶数量≥64时转红黑树扰动函数&#xff1a;(h key.hashCode()) ^ (h >>> 16) 消除…...

React面试(一)

文章目录 1.vue和react有什么异同2.useEffect中为什么不能使用异步3.useEffect和useLayoutEffect的区别4.react的生命周期5.state和prop的区别6.受控组件和非受控组件7.为什么react16之后不把事件挂载到document上了8.讲一下react的hoc&#xff0c;它可以用来做什么&#xff1f…...

Redis分布式缓存面试题

为什么使用分布式缓存&#xff1f; 1. 提升性能 降低延迟&#xff1a;将数据缓存在离应用更近的地方&#xff0c;减少数据访问时间。减轻数据库压力&#xff1a;缓存频繁访问的数据&#xff0c;减少对后端数据库的请求&#xff0c;提升系统响应速度。 2. 扩展性 水平扩展&a…...

AI 编码 2.0 分析、思考与探索实践:从 Cursor Composer 到 AutoDev Sketch

在周末的公司【AI4SE 效能革命与实践&#xff1a;软件研发的未来已来】直播里&#xff0c;我分享了《AI编码工具 2.0 从 Cursor 到 AutoDev Composer》主题演讲&#xff0c;分享了 AI 编码工具 2.0 的核心、我们的思考、以及我们的 AI 编码工具 2.0 探索实践。 在这篇文章中&am…...

图扑 HT for Web 总线式拓扑图的可视化实现

在图形用户界面&#xff08;GUI&#xff09;设计中&#xff0c;自定义连线技术不仅提升了用户体验&#xff0c;还为复杂数据可视化开辟了新的可能性。该功能点允许用户灵活地在界面元素之间创建视觉连接&#xff0c;使流程图、思维导图和网络拓扑图等信息呈现更加直观和动态。 …...

domain 网络安全 网络安全域

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网&#xf…...

IDEA 2024.1 最新永久可用(亲测有效)

今年idea发布了2024.1版本&#xff0c;这个版本带来了一系列令人兴奋的新功能和改进。最引人注目的是集成了更先进的 AI 助手&#xff0c;它现在能够提供更复杂的代码辅助功能&#xff0c;如代码自动补全、智能代码审查等&#xff0c;极大地提升了开发效率。此外&#xff0c;用…...

android计算屏幕尺寸dpi

说明&#xff1a; 我计划用一个Android程序&#xff0c;打印出平板屏幕的尺寸&#xff0c;大小&#xff0c;dpi等参数信息 效果图&#xff1a; 分辨率: 1280x752DPI: 213物理尺寸(英寸): 对角线 9.4step1: package com.example.myapplication;import android.os.Bundle; impor…...

deepseek-r1-centos-本地服务器配置方法

参考&#xff1a; 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek&#xff0c;一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…...