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

Maven

Maven

1.什么是Maven

官方网站 https://maven.apache.org/

Maven是一款服务于Java平台的自动化构建工具,它可以帮助我们更方便的对项目进行构建、管理项目jar包

,包括: bulid 项目,切换 jar 版本,添加 jar, 删除 jar 包等

1.1 Maven下载和安装

  1. 第 1 种方式: 直接使用 idea 自带的 Maven

  2. 第 2 种方式: 自己下载 Maven 软件, 安装、配置并使用.

  3. 下载地址 https://archive.apache.org/dist/maven/maven-3/

image-20230212102531499

安装步骤

  1. 直接解 maven 安装到指定目录

image-20230212102720733

  1. 目录结构说明

image-20230212102730712

  1. maven 使用需要依赖 jdk ,因此事先要保证安装了 jdk1.8 以上
  2. 配置环境变量 MAVEN_HOME

image-20230212102833657

  1. 配置环境变量 PATH, 增加 Maven 的路径, (如果有多个 Maven 的 Path, 可以上移, 提高优先级)

image-20230212102913687

  1. 测试是否安装 maven 成功.

image-20230212102954093

1.2 Maven 工作原理图

image-20230212103046299

  1. 在 maven 项目的 pom.xml, 可以配置项目依赖的 jar(指定坐标即可)
  2. maven 根据配置, 到中央仓库/私服 去获取 jar,下载到本地仓库
  3. maven 项目, 会引用本地仓库的 jar ,完成项目开发
  4. 在 maven 项目构建生命周期中,每个阶段的执行都有相应的插件完成
  5. 各个插件执行过程中,会附带输出内容,比如 jar/war/xml/源码
  6. 程序员可以使用 maven 默认的插件,也可以自定义插件,完成定制任务.

Maven 项目统一的开发结构分析:

image-20230212103231029

2.Maven 相关概念

2.1仓库:存储项目需要的 jar 包

image-20230212103318509

  1. 几乎所有的 jar 包都保存在中央仓库 . 地址: https://mvnrepository.com/

image-20230212103412177

  1. 本地仓库:在使用 maven 时,会将需要的 jar 下载到本地,保存在指定目录下,称为本地仓库(如图)

image-20230212103438524

image-20230212103455961

  1. 私服: 开发团队搭建的存储资源的仓库,可以个性化仓库(比如只供团队使用的 jar), 同时提升下载速度
  2. 我们个人开发时,可以直接从中央仓库下,如果想提升下载速度,可以设置镜像仓库

2.2 坐标

作用: 资源的唯一标识,定位 Maven 仓库中资源的位置

坐标构成

  1. groupld(组织 id): 定义当前 Maven 项目隶属组织名称(例如∶com.spring)
  2. artifactId(项目 ID): 定义当前 Maven 项目名称
  3. version(版本号): 定义当前项目版本号
  4. 如何获取 jar 坐标
  • 比如 mysql jar

image-20230212103758939

3.Maven构建指令

3.1 完成编译

  1. 编译指令
mvn compile

image-20230212104811222

  1. 编程成功,会自动创建 target 目录,并生成对应的.class 文件(如图)

  2. 细节说明: 第一次速度慢,需要下载相关 jar,后面就快了.

image-20230212104959190

3.2完成测试

  1. 测试指令
mvn test
  1. 测试指令执行完毕,会生成 Test 源文件的 class , 还会输出测试结果

  2. 细节说明: 第一次速度慢,需要完成一些初始化工作,后面就快了

image-20230212105454644

image-20230212105606804

3.3 完成打包

  1. 打包指令
mvn package
  1. 打包后,在 target 目录生成对应的 打包文件 jar

image-20230212105932494

3.4 完成安装

  1. 执行 install 指令,能完成 maven 项目的安装,会把打包得到的 jar, 提交到本地仓库

image-20230212110218645

  1. 当把 maven-project01-1.0-SNAPSHOT.jar 提交到本地仓库后,该 jar 也可以被其他 maven 项目使用了,非常方便

3.5完成清理

  1. 执行如下指令,完成 maven 项目的清理,会清除生成的 target 目录

    mvn clean
    

3.6小结 Maven 构建指令

● 说明: Maven 构建命令使用 mvn 开头,后面添加功能参数,可以一次执行多个命令,使
用空格分隔

mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装

image-20230212110754112

4.IDEA创建 Maven Web 工程

  1. 需求说明/图解

image-20230212111418347

image-20230212111525956

image-20230212111611291

image-20230212111727971

  1. 创建成功的 maven web 项目结构

    image-20230212111843339

  2. 创建的 pom.xml

<?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><!--1. 前面三个 groupId , artifactid 和 version 就是该 maven 项目坐标2. package 是打包方式,默认是 jar , 这里是 war(因为这是 web 项目)--><groupId>com.llp</groupId><artifactId>maven-javaWeb</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>maven-javaWeb Maven Webapp</name><url>http://www.example.com</url><!--maven项目的属性,根据实际情况可以修改--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--创建maven项目默认引入的jar--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><!--默认引入的 maven 插件, 前面说过 mvn 的各种指令 compile/install/test 等都是由插件完成的 --><build><finalName>maven-javaWeb</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build>
</project>
  1. 配置 Tomcat 服务器&运行
  • 为 maven web 项目配置 tomcat

image-20230212112909732

image-20230212112953171

image-20230212113047445

image-20230212113124447

image-20230212113326184

5.Maven依赖管理

5.1依赖配置

一句话: 依赖指当前项目运行需要的 jar,一个项目可以设置多个依赖

● 依赖的举例

    <!--
1. 这里就是引入项目需要的 jar 包, 类似传统的 import jar 的作用
2. 在 dependencies 标签内,可以指定多个需要依赖的 jar/导入的 jar
3. 引入的 jar 包需要一个完整的 jar 包坐标,从 mvn 仓库查询即可得到--><dependencies><!-- 引入的一个具体的依赖 jar, 包括一个完整的依赖坐标 --><dependency><!-- 依赖的 gruopid: 组织名 --><groupId>junit</groupId><!-- 依赖的项目名 --><artifactId>junit</artifactId><!-- 依赖的版本 --><version>4.12</version><scope>test</scope></dependency></dependencies>

5.2依赖传递

直接依赖: 在当前项目中通过依赖配置建立的依赖关系

比如,在项目的pom.xml文件中,引入mysql8.0.27,这时我们就说项目直接依赖了mysql8.0.27

<!--引入mysql依赖-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version>
</dependency>

5.3间接依赖

间接依赖: 当前项目直接依赖资源(比如 m1), 而 m1 又依赖资源(m2),我们就说 当前项目间接依赖资源(m2)

比如,项目A引入了一个mysql8.0.27的jar,而项目B有引入了A项目的jar,这样就形成了间接依赖

image-20230212114357293

5.4依赖冲突

路径优先

  1. 路径优先∶当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高

  2. 示意图说明:

image-20230212114435859

  1. 项目 A 依赖情况
  • 如果 1 度资源有 junit 4.1 , 而 2 度资源有 junit4.2

  • 根据路径优先原则, 项目 A 生效的是 junit4.1

image-20230212115532807

声明优先

  1. 声明优先∶当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  2. 示意图说明:

image-20230212115628592

image-20230212120009045

特殊优先

  1. 特殊优先∶当同级配置了相同资源的不同版本,后配置的覆盖先配置的(要尽量避免这种没有意义的冲突)

5.5可选依赖

可选依赖:可选依赖指对外隐藏当前所依赖的资源 - 不透明

    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><!--optional:默认是false,表示不隐藏optional:设置为true,表示隐藏,其他模块就没办法使用--><optional>true</optional><scope>test</scope></dependency>

image-20230212120908996

5.6 排除依赖

一句话: 排除依赖指主动断开依赖的资源, 被排除的资源无需指定版本- 不需要

image-20230212121135687

<dependencies><dependency><groupId>com.llp</groupId><artifactId>maven-project-2</artifactId><version>1.0-SNAPSHOT</version><!--1.指定要排除的依赖2.可以排除多个,在exclusions下添加多个exclusion即可--><exclusions><exclusion><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></exclusion></exclusions></dependency>
</dependencies>

image-20230212121400837

5.7可选依赖和排除依赖区别

一句话: 隐藏依赖是不让其他项目来引用(我不给), 排除依赖是主动不要引入的某个资源(我不要)

5.8依赖范围

一句话: 依赖的 jar 默认情况可以在任何地方使用, 通过 scope 标签设定其作用范围

● 作用范围说明

  1. 主程序范围有效(src/main 文件夹范围内)
  2. 测试程序范围有效(src/test 文件夹范围内)
  3. 是否参与打包(package 指令范围内)
  4. compile(默认,在主程序、测试代码、打包都有效)

● 作用范围一览图

image-20230212121709499

  1. 某个引入的 jar 包作用范围是程序员根据,业务的实际需要来设置的,不要认为是固定的。
  2. 比如 log4j jar 包,在主程序,测试代码,打包都是需要的, 因此作用范围应当设置为complie
  3. junit 只是测试代码需要,因此作用范围设置为 test 合适,但是如果程序员认为在主程序和打包就是要 junit, 仍然可以设置为默认 compile
  4. 比如 servlet-api 是 tomcat 自己带的,当把程序打包放到生产环境时,用生产环境tomcat 的 servlet-api 即可,所以设置为 provided 合适,这样就放在 servlet-api 版本冲突.
  5. 比如 jdbc, 是第三方的 jar , 打包放在生产环境,就应当在自己的包提供 jdbc 驱动包,否则程序会因为少驱动包,运行失败

6.Maven 项目构建生命周期

一句话: Maven 构建生命周期描述的是一次构建过程经历了多少个事件

image-20230212122541709

6.1生命周期的 3 大阶段

  1. clean∶清理工作

image-20230212131322297

  1. default∶核心工作,例如编译,测试,打包,部署等

image-20230212131410611

  1. site∶产生报告,发布站点等

image-20230212131427256

6.2 生命周期是分阶段执行的

一句话: 项目构建生命周期分很多阶段,并不是每次都完整执行,而是根据用户的要求
来执行的【比如你执行 compile, 那么就执行到 complie 这个阶段,如果你执行 install, 则会
执行 compile->test->package->install】

7.maven 插件

7.1介绍

  1. 插件与生命周期内的某个阶段绑定,在执行到对应生命周期时, 由对应插件来完成任务/功能.

  2. maven 插件很多,先看一张图:

image-20230212131800070

  1. 通过插件可以自定义其他功能

7.2 文档

文档: http://maven.apache.org/plugins/index.html

7.3自定义插件-应用实例

需求: 在 pom.xml 加入自定义插件,能够在对 maven_D 项目 打包时,能输出主程序和测试程序的源码

● 完成步骤

  1. 当前 package 只会得到项目的 jar

image-20230212133927056

  1. 修改 D:\java_projects\maven_D\pom.xml, 加入 maven 插件 并配置(注意: 加入自定义插件后,可能会爆红,重启项目即可.)
<!-- 在build时, 自定义插件 -->
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><!-- 对主程序输出源码打包 --><goal>jar</goal><!-- 对测试程序输出源码打包 --><goal>test-jar</goal></goals><!-- 指定执行阶段 --><phase>generate-test-resources</phase></execution></executions></plugin></plugins>
</build>
  1. 观察一下 maven 项目管理器

image-20230212134020584

  1. 再次执行 maven-D 的 intall 操作, 会得到两个新的 jar ,分别包含了主程序和测试程序的源码。(测试时,需要保证 src/main/… 和 src/test/… 两个目录下有 java 源代码,否则不会生成源码 jar)

image-20230212134052734

image-20230212134057747

7.4maven 插件-maven 构建生命周期关系图

image-20230212134151511

  1. 在 maven 项目构建生命周期中,每个阶段的执行都有相应的插件完成
  2. 各个插件执行过程中,会附带输出内容,比如 jar/war/xml/源码
  3. 程序员可以使用 maven 默认的插件,也可以自定义插件,完成定制任务.
  4. 自定义插件引入成功, 是可以看到

相关文章:

Maven

Maven 1.什么是Maven 官方网站 https://maven.apache.org/ Maven是一款服务于Java平台的自动化构建工具&#xff0c;它可以帮助我们更方便的对项目进行构建、管理项目jar包 &#xff0c;包括: bulid 项目&#xff0c;切换 jar 版本&#xff0c;添加 jar, 删除 jar 包等 1.…...

1947抓住那头牛(队列 广度优先搜索)

目录 题目描述 解析 解题思路 代码部分 代码部分 运行结果 看看len数组中各个位置的标记值 为什么这样做一定是最短路径&#xff1a; 题目描述 农夫知道一头牛的位置&#xff0c;想要抓住它。农夫和牛都位于数轴上&#xff0c;农夫起始位于点N(0<N<100000)&…...

基于linux5.15.5的IMX 参考手册 ---21

基于linux5.15.5的IMX 参考手册 — 21 10.5.2高清多媒体接口&#xff08;HDMI&#xff09;和显示端口&#xff08;DP&#xff09;概述 10.5.2.1测试名称 •mxc_cec_test.out 10.5.2.1.1位置 /unit_tests/HDMI/ 10.5.2.1.2功能 验证HDMI CEC功能并向HDMI接收器发送断电命令。 1…...

Android Dalvik虚拟机 堆初始化流程

前言 上篇文章介绍了dalvik虚拟机启动流程&#xff0c;在dalvik虚拟机启动时调用了dvmGcStartup来启动堆。 本文介绍我们在日常开发使用Java时的堆创建流程。 Dalvik堆介绍 Dalvik虚拟机中&#xff0c;堆是由heap[0] Active堆和heap[1] Zygote堆两部分组成的。其中&#xff…...

0讲(补)——开发前必备基本常识

前言 专栏内容持续补充更新,目前正在进行优惠活动 目录 前言 一、函数的声明和定义 二、预编译 三、串口打印中的printf函数的使用...

JS学习笔记

1.WebAPIs简介导读Web APIs 和JS 基础关联性JS 基础阶段以及 Web APIs 阶段JS基础学习 ECMAScript 基础语法为后面作铺垫&#xff0c;Web APIs 是JS 的应用&#xff0c;大量使用JS基础语法做交互效果①JS 基础阶段我们学习的是ECMAScript 标准规定的基本语法要求同学们掌握JS 基…...

linux005之用户、组管理

linux用户管理简介&#xff1a; 任何使用linux系统的用户&#xff0c;都必须使用一个合法的账号和密码&#xff0c;账号和密码一般都是超级管理员创建&#xff0c;当然普通用户也可以创建用户&#xff0c;前提是必须拥有创建用户权限。 root是linux系统中默认创建的超级用户 创…...

列线图工具_Nomogram

定义 列线图是一种相对传统的分析方法&#xff0c;用于展示自变量和因变量的线性关系&#xff0c;及其特征的重要程度。 现在用SHAP&#xff0c;和机器学习库中的 Feature importance 工具可以实现类似甚至更好效果。不过很多传统的研究领域比较认这种方法。 列线图工具建立在…...

【C++】类和对象(一)

目录一、面向过程和面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及封装4.1、访问限定符4.2、封装五、类的作用域六、类的实例化七、类对象的大小八、this指针8.1、this指针的引出8.2、this指针的特性8.3、C语言和C实现Stack的对比一、面向过程和面向对象初步认…...

Python获取搜索引擎结果

前言 想快速获取各个高校的博士招生网站&#xff0c;于是通过python先获取出有可能包含高校博士招生网站的URL&#xff0c;然后通过人为筛选得到了想要的招生网站&#xff08;注意&#xff0c;并非直接爬取&#xff0c;是间接获取的&#xff09;。 整理了一份网站名单&#x…...

2.4.8 PCIe——物理逻辑层——REFCLK

一、概述 pcie的参考时钟由板级输入&#xff0c;提供给IP内PHY层的PLL使用&#xff0c;由PLL产生core_clk和pipe_clk。 二、REFCLK产生方式 Serdes 所用时钟由 PHY 模块内的PLL生成&#xff0c;PLL的参考时钟可以由common clock&#xff08;外部背板提供&#xff09;、separ…...

树莓派4B arm64 搭建 docker+drone+gitea

树莓派4B arm64 搭建 dockerdronegitea 记录时间: 2023年02月10日 树莓派烧录 如何用树莓派搭建一台永久运行的个人服务器&#xff1f; https://mp.weixin.qq.com/s?__bizMzI5NjA0ODkwNA&mid2651847658&idx1&sn267a1257b43d4a76f2a081ed157b77f9&chksmf7b11…...

Java的JDBC编程

目录 1. 打开IDEA&#xff0c;新建Project 2. 引入依赖 &#xff08;1&#xff09;下载驱动包 &#xff08;2&#xff09;将驱动包导入Project 3. 编写代码 &#xff08;1&#xff09;创建数据源 &#xff08;2&#xff09;让代码和数据库服务器建立联系 &#xff08;3&…...

CSS:块格式化上下文(BFC)

块格式化上下文是块级盒子的布局过程发生的区域&#xff0c;也是浮动元素与其他元素交互的区域。 块格式化上下文(BFC)的创建 满足以下条件将创建块格式化上下文&#xff1a; 根元素&#xff08;&#xff09;浮动元素&#xff08;float 值不为 none&#xff09;绝对定位元素…...

paddle表情识别部署

表情识别模块1.环境部署1.1同样采用fastDeploy库1.2相关模型2.封装成静态库2.1参考[百度Paddle中PP-Mattingv2的部署并将之封装并调用一个C静态库](https://blog.csdn.net/weixin_43564060/article/details/128882099)2.2项目依赖添加2.3生成成功3.test3.1创建emotion_test项目…...

Python-第五天 Python函数

Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义&#xff1a;2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…...

【Python学习笔记】28.Python3 错误和异常

前言 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python3 错误和异常 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xf…...

SQLServer 迁移到 MySQL 工具对比

我之所以会写这篇对比文章&#xff0c;是因为公司新产品研发真实经历过这个痛苦过程&#xff08;传统基于 SQL Server开发的C/S 产品转为 MySQL云产品&#xff09;。首次需要数据转换是测试环节&#xff0c;当时为了快速验证新研发云产品性能与结果准确性&#xff08;算法类&am…...

分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)

首先仪表板的公共连接类似:http://localhost:37799/webroot/decision/link/Bo6B 当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。 public String getShareReport(HttpServletRequest req, HttpServletResponse res, @FinePathVariable("linkId"…...

设计模式--适配器模式 Adapter Pattern

设计模式--适配器模式 Adapter Pattern适配器模式 Adapter Pattern1.1 基本介绍1.2 工作原理类适配器模式对象适配器模式接口适配器模式小结适配器模式 Adapter Pattern 1.1 基本介绍 &#xff08;1&#xff09;适配器模式将某个类的接口转换成为客户端期望的另一个接口表示&…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...