Maven 项目管理工具
目录
Maven简介
Maven快速上手
Maven详细介绍
Maven工作机制
Maven安装及配置
使用IDEA创建Maven Web工程
Maven简介
Maven是 Apache 开源组织奉献的一个开源项目,可以翻译为“专家”或“内行”。
Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM project object model),通过简单的配置和命令就可以完成项目的构建管理和依赖管理。 使用 Maven 可以实现自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。
简要概述:我们使用Idea构建Java项目中,若是要使用Mysql数据库要导包mysql-connector-java.jar JDBC驱动或者其他封装好的包,常见方式是去官网下载JAR文件,导入项目中。采用Maven能够取消这一步骤,通过POM.xml文件进行管理依赖。
Maven官网:Maven – Welcome to Apache Maven
Maven快速上手
第一次使用Maven需要到官网下载Maven 后续不再使用这一步骤,类似JDK的下载
Maven下载
下载地址:Maven – Download Apache Maven,当前最新版本是3.9.9,选择apache-maven-3.9.9-bin.zip压缩包下载到本地。
Maven安装
只需要将Maven解压到非中文、没有空格的目录。比如解压到D盘,那么Maven安装目录就是D:\apache-maven-3.9.9
IDEA集成Maven
- 通过File-->Settings-->Build,Execution,Deployment-->Build Tools-->Maven可以配置当前工程的Maven。
- 通过File-->New Projects Setup-->Settings for New Projects-->Build,Execution,Deployment-->Build Tools-->Maven可以为后面新创建的所有工程自动配置Maven。
IDEA中创建Maven工程
通过File-->New-->Project-->Maven Archetype可以使用“mvnarchetype:generate”命令创建Maven工程。
- 输入工程名称,选择工程在电脑中的存放位置以及JDK版本。
- 选择Archetype工程原型(架构),不同的架构创建的工程结构是不同的。
- 选择apache.maven.archetypes:maven-archetype-quickstart,可以创建Java工程。
- 选择org.apache.maven.archetypes:maven-archetype-webapp,可以创建Web工程。
- 输入Maven工程的GAV三坐标。
- GroupId:公司或组织名,一般使用倒序的域名,如com.taobao或者com.cg。
- ArtifactId:一个项目或者是项目中的一个模块名称,默认和工程名称相同。
pom.xml文件内容解读
最基本的内容包含
一、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><groupId>org.example</groupId><artifactId>mybatis</artifactId><version>0.0.1-SNAPSHOT</version><!--添加依赖GAV三坐标 具体的可以让AI帮你添加-->
<!--常用依赖:mybatis、spring boot、junit、mysql、-->
<dependencies>
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.4.0</version>
</dependency>
</dependencies></project>
详细说明POM.XML文档
<?xml version="1.0" encoding="UTF-8"?>
<!--XML文档声明-->
<!--拓展知识:XML文件 可扩展标记语言-->
<!--被设计用来存储和传输数据。XML文件的结构非常灵活,可以自定义标签来描述数据。它被广泛应用于数据交换、配置文件、文档存储等领域。--><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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--根元素-->
<!--<project></project>标签,-->
<!--作用:将该文档内所有的文件都包含其中-->
<!--XML 命名空间和 Schema 位置:
xmlns="http:...":这个属性定义了 XML 文档的默认命名空间,指向 Maven 的 POM 4.0.0 规范。这告诉 Maven 这个 pom.xml 文件遵循哪个版本的项目对象模型规范。
xmlns:xsi="http:...":这个属性定义了 XML Schema 实例的命名空间,它用于提供对 XML Schema 的引用,以验证 XML 文档的结构。
xsi:schemaLocation="http:..":这个属性提供了 XML Schema 的位置,Maven 使用这个位置来验证 pom.xml 文件的结构是否正确。如果 Maven 无法访问这个 Schema,可能是因为网络问题或者链接不正确。--><modelVersion>4.0.0</modelVersion>
<!--子元素-->
<!--<modelVersion> 元素是必需的,并且必须位于文件的顶部,作为根 <project> 元素的直接子元素。--><groupId>org.example</groupId><artifactId>mybatis</artifactId><version>0.0.1-SNAPSHOT</version>
<!--这三个标签不可省略,用于确定Maven项目的唯一标识,分别代表:-->
<!--<groupId> 通常,这个值遵循 Java 包命名约定,是反向的域名格式。如果一个组织的域名是 example.com,那么它的 groupId 可能是 com.example。-->
<!--<artifactId> 与 groupId 结合使用,以确保在 Maven 仓库中的唯一性。这个值通常反映了项目或构件的名称。-->
<!--<version> 版本号通常遵循语义化版本控制(Semantic Versioning)格式,包括主版本号、次版本号、修订号,可能还包括预发布版本标识。--><name>mybatis_2.0</name><description>mybatis_2.0</description><url>http://maven.apache.org</url>
<!--可省,代表-->
<!--<name> 元素定义了项目的名称。-->
<!--<description> 元素提供了项目的详细描述。-->
<!--<url> 元素的值可以是任何有效的URL:-->
<!--
项目主页的地址
项目的源代码仓库(如GitHub、GitLab或Bitbucket)
项目的文档网站
项目的开发者论坛或邮件列表
项目的bug跟踪系统
--><dependencies><!--MyBatis框架依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.16</version></dependency><!--MySQL驱动依赖--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.4.0</version></dependency></dependencies>
<!--依赖的GAV三坐标 dependencies 嵌套 dependency--></project>
其他标签
父类POM
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/> <!-- lookup parent from repository -->
</parent>
属性 java.version的版本号
<properties><java.version>17</java.version>
</properties>
定义项目构建过程
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
Maven详细介绍
Maven工作机制
首先,我们需要在电脑中安装Maven(Maven核心程序),Maven中提供了很多Maven命令来完成项目的构建管理。我们需要使用Maven命令创建Maven工程,在Maven工程中有一个pom.xml文件,pom.xml是Maven工程的核心配置文件,通过该配置文件我们可以完成Jar包依赖、项目构建等的配置。
比如,我们需要在工程中使用MySQL驱动的Jar包,我们只需要在pom.xml中完成添加如下依赖配置:
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.4.0</version>
</dependency>
groupId(组ID)、artifactId(工件ID)和version(版本)是Jar包依赖的GAV三坐标,GAV三坐标就相当于人的姓+名,起到一个标识的作用。Maven工程在构建的过程中,会依据pom.xml中的GAV三坐标首先从本地仓库中下载jar包添加到工程中,如果本地仓库没有,那么会自动默认去中央仓库(Central Repository:)下载Jar包到本地仓库中,然后添加到工程中。中央仓库中几乎存放了所有的第三方Jar包依赖。通过地址https://mvnrepository.com/可以查询所有Jar包版本的GAV三坐标。
但是中央仓库是部署在国外的,访问速度较慢并且不稳定,因此我们配置使用阿里云镜像仓库(https://maven.aliyun.com/repository/central),速度更快更稳定。
Maven安装及配置
【任务】:完成电脑中Maven的下载、安装和配置。
Maven下载
下载地址:Maven – Download Apache Maven,当前最新版本是3.9.9,选择apache-maven-3.9.9-bin.zip压缩包下载到本地。
Maven安装
只需要将Maven解压到非中文、没有空格的目录。比如解压到D盘,那么Maven安装目录就是D:\apache-maven-3.9.9
Maven配置
找到Maven安装目录下的conf/settings.xml配置文件并进行编辑。
- 配置本地仓库
在<settings>节点下加入<localRepository>节点配置本地仓库位置(默认的本地仓库地址为${user.home}/.m2/repository)。
<!--配置本地仓库位置-->
<localRepository>D:\maven\repository</localRepository>
- 配置阿里云远程仓库
在<mirrors>节点下加入<mirror>节点配置阿里云远程仓库镜像地址。
<!--配置阿里云远程镜像仓库--><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/central</url></mirror>
- 配置JDK版本
由于Maven软件是使用java语言编写的程序,其运行需要JDK环境支持,因此在安装Maven环境之前一定要安装JDK(建议JDK17版本,如果电脑中未安装,JDK17安装与配置参考安装JDK17并配置Java环境变量_jdk17配置环境变量-CSDN博客)。
Maven默认运行JDK版本是1.4,显然不能满足我们的需求,我们需要在Maven配置文件中设置JDK版本。
在Maven配置文件中,找到<profiles>标签,加入<profile>标签,具体指定配置id、JDK版本和编译配置。同时加入<activeProfiles>标签,加入<activeProfile>标签,指定配置id激活配置。
<profiles><!-- 配置JDK17版本 --><profile><id>jdk-17</id><activation><activeByDefault>true</activeByDefault><jdk>17</jdk></activation><properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target><maven.compiler.compilerVersion>17</maven.compiler.compilerVersion> </properties></profile></profiles><!-- 激活jdk配置 --><activeProfiles><activeProfile>jdk-17</activeProfile></activeProfiles>
- 环境变量配置
(1)配置MAVEN_HOME
(2)编辑Path,添加一行配置“%MAVEN_HOME%\bin”
Maven命令
Maven配置完成后,就可以使用Maven命令进行项目构建和依赖管理了。
命令 | 作用 | 说明 |
mvn -v | 查看Maven当前版本信息 | 使用mvn –v或mvn –version命令,执行后的结果一样。 |
mvnarchetype:generate | 创建Maven项目 | 执行命令后,提示输入Maven坐标等信息。 |
mvn clean | 删除target目录 | target目录是Maven的输出目录,主要存放生成的class、jar、war等文件。 |
mvn compile | 编译程序 | 编译后的文件将存放在taget/classes目录中。 |
mvn test-complie | 编译测试程序 | 编译的测试文件将存放在target/test-classes目录中。 |
mvn test | 执行程序测试 | 测试报告将存放在target/surefire-reports目录中。 |
mvn package | 打包项目 | 打包后的结果(jar或war包)将存放在target目录中。 |
mvn install | 安装jar包到本地仓库 | 将打包好的jar包存放到Maven本地仓库中。 |
打开cmd命令行窗口,输入命令mvn-v,可以查看当前配置的Maven版本号。
其他的命令我们通过IDEA集成Maven进行使用。
IDEA集成Maven进行项目构建
【任务】使用IDEA集成Maven,并使用Maven命令完成工程的创建、编译、清理和打包。
IDEA集成Maven
- 通过File-->Settings-->Build,Execution,Deployment-->Build Tools-->Maven可以配置当前工程的Maven。
- 通过File-->New Projects Setup-->Settings for New Projects-->Build,Execution,Deployment-->Build Tools-->Maven可以为后面新创建的所有工程自动配置Maven。
创建Maven工程
通过File-->New-->Project-->Maven Archetype可以使用“mvnarchetype:generate”命令创建Maven工程。
- 输入工程名称,选择工程在电脑中的存放位置以及JDK版本。
- 选择Archetype工程原型(架构),不同的架构创建的工程结构是不同的。
- 选择apache.maven.archetypes:maven-archetype-quickstart,可以创建Java工程。
- 选择org.apache.maven.archetypes:maven-archetype-webapp,可以创建Web工程。
- 输入Maven工程的GAV三坐标。
- GroupId:公司或组织名,一般使用倒序的域名,如com.taobao或者com.cg。
- ArtifactId:一个项目或者是项目中的一个模块名称,默认和工程名称相同。
- Version:版本号,默认为1.0-SNAPSHOT。
- 点击Create创建按钮创建Maven工程。
Maven工程结构
创建好的Maven工程如下所示:
- src/main/java:源代码目录,存放开发者编写的实现系统功能的源代码。
- src/test/java:测试代码目录,存放对源代码进行测试的测试脚本。
- pom.xml:Maven核心配置文件,进行GAV坐标配置、Jar包依赖配置、项目构建配置等。
- External Libraries:依赖的外部组件库,比如JDK,依赖的第三方的Jar包等。
- pom.xml文件内容解读
<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><!--配置工程的GAV三坐标--><groupId>com.cg</groupId><artifactId>maven-project-java</artifactId><version>1.0-SNAPSHOT</version><!--配置打包方式,java工程打成jar包,web工程打成war包--><packaging>jar</packaging><name>maven-project-java</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--配置Jar包依赖--><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
</project>
添加Jar包依赖
比如,我们在工程中添加MySQL驱动依赖,需要在pom.xml文件中,添加mysql-connector-sql依赖配置。
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.4.0</version>
</dependency>
依赖添加后,一定要记得刷新Maven仓库,才能从本地仓库或者远程仓库中下载Jar包添加到工程外部资源库中。
工程编译、清理、打包和安装
可以通过Maven操作面板执行Maven命令完成Maven工程的编译、清理和打包操作。
- compile:编译命令,自动生成target目录,target目录是Maven工程的输出目录,它包含了编译、测试、打包等构建过程生成的所有文件。
- clean:清理命令,删除target目录。
- package:打包命令,将打包后的结果(jar或war包)存放在target目录中。
- install:安装命令, 将打包后的jar包上传到maven本地仓库。
在Maven工程中进行单元测试
单元测试
单元测试:是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个函数、方法、类、功能模块或者子系统。
单元测试属于白盒测试范畴,一般由开发人员进行来做,便于及时发现代码bug,保证代码质量。
JUnit单元测试框架由Erich Gamma和Kent Beck编写的一个回归测试框架(Regresion Testing Framework),主要用于Java语言程序的单元测试。
目前最新版本为JUnit5,其官网地址是 https://junit.org/。
JUnit5简单使用
- 在Maven工程中,添加JUnit5框架依赖。
在pom.xml文件中,添加JUnit5的Maven坐标信息。其中,scope表示依赖作用的范围,依赖作用的范围可以分为编译阶段、测试阶段和运行阶段。scope的值为test表示该依赖只在测试阶段可用,也就是在src/test文件夹下可用;scope的默认值是compile表示该依赖在编译、测试和运行阶段都可用。具体内容如下:
<!-- JUnit5的Maven坐标 -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.10.2</version><scope>test</scope>
</dependency>
- 在工程中编写JUnit测试方法
JUnit为我们提供了一个@Test注解,用来指定当前方法将作为测试用例方法使用,该方法可以直接运行。
- @Test注解标识该方法是一个测试方法,可以执行
- @Test注解的方法必须是public,void,非静态,不带参数。
在IDEA的src/main/test/java目录下添加测试类,在测试类中定义一个测试方法,方法上使用@Test注解,方法体中编写测试内容脚本。具体内容如下:
public class AppTest {@Testpublic void test1(){//编写测试脚本System.out.println("执行测试脚本");}
}
- 运行测试方法,执行测试脚本
单击方法前面的运行按钮,运行测试方法
使用IDEA创建Maven Web工程
【任务】使用IDEA创建Maven Web工程,在工程中新建Servlet处理HTTP请求,并将工程发布到Tomcat中运行。
创建Maven Web工程
通过File-->New-->Project-->Maven Archetype创建Maven Web工程。
- 输入工程名称,选择工程在电脑中的存放位置以及JDK版本。
- 选择org.apache.maven.archetypes:maven-archetype-webapp,可以创建Web工程。
- 输入Maven工程的GAV三坐标。
- 点击Create创建按钮创建Maven工程。
Maven Web工程结构
- src/main/java目录:源代码目录,java目录需要手动新建
- src/main/resources目录:配置目录,该目录用来存放应用的一些配置信息
- src/main/webapp目录:Web应用资源目录,可以将jsp/html页面,js脚本,css样式等资源放在该目录中。
- src/main/WEB-INF目录:Web应用的安全目录,包含一个web.xml文件
添加servlet-api依赖
在Web工程中创建Servlet需要servlet-api依赖的支持,因此需要首先在pom.xml中添加servlet-api依赖信息。
<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.1.0</version><scope>provided</scope>
</dependency>
scope表示依赖作用的范围,依赖作用的范围可以分为编译阶段、测试阶段和运行阶段。scope的值为provided表示该依赖只在编译和测试阶段可用,在运行阶段不可用,因为servlet-api在运行时由tomcat容器提供,就不需要再重复引入,可以防止和tomcat下jar冲突。
注:Tomcat10已经全面支持JakartaEE,取代了JavaEE,Jakarta EE是Java EE的继任者。
2018年,Oracle(甲骨文)决定将JavaEE移交给开源组织Eclipse基金会,但甲骨文不允许开源组织用Java的名号,于是Eclipse使用 "Jakarta EE"这个名字。Jakarta EE中,所有的包名都是以jakarta开头。
在工程中创建Servlet
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().println("Hello,Maven Web");}
}
将工程部署到Tomcat运行并访问Servlet
在IDEA中配置Tomcat,并将工程部署到Tomcat中,并设置应用上下文路径为“/”,启动Tomcat
在浏览器中输入Servlet的访问地址:http://localhost:8080/hello
相关文章:
Maven 项目管理工具
目录 Maven简介 Maven快速上手 Maven详细介绍 Maven工作机制 Maven安装及配置 使用IDEA创建Maven Web工程 Maven简介 Maven是 Apache 开源组织奉献的一个开源项目,可以翻译为“专家”或“内行”。 Maven 的本质是一个项目管理工具,将项目开发和管…...
ubuntu开机启动jar
要在Ubuntu系统上开机启动一个jar文件,你可以创建一个systemd服务单元。以下是创建服务并设置开机启动的步骤: 创建一个新的systemd服务文件。 打开一个新的服务文件,例如/etc/systemd/system/your-service.service,使用你喜欢的…...
【目标检测02】非极大值抑制 NMS
文章目录 1. 前言2. 原理3. 代码实现 1. 前言 在检测图像中的目标时,一个目标可能会被预测出多个矩形框,而实际上我们只需要一个,如何消除冗余的边界框呢?一种方简单的方案是提升置信度的阈值,过滤掉低置信度的边界框…...
104协议调试工具
在学习104协议过程中,通过直接阅读协议的学习方式会略有枯燥,这里把常用的104调试、测试工具介绍给大家,以便快速的进行模拟通信来更好的了解、学习104协议。 通信协议分析及仿真软件是非常重要的测试工具,该软件支持 101,104,mo…...
日常记录:es TransportClient添加证书处理
背景 最近在搞es登录,不知道是不是低版本问题(6.8.12),开启登录之后springboot连接es,es一直报Caused by: io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record: 45530000002c000000000000009108004d3…...
apply call bind 简介
Function.prototype.call(thisArg [, arg1, arg2, …]) call() 简述 call() 方法 调用一个函数, 其具有一个指定的 this 值和分别地提供的参数(参数的列表)。当第一个参数为 null、undefined 的时候, 默认 this 上下文指向window。 call() 简单实例 const name …...
数据结构 单调栈
应用情景 求当前元素 前面/后面,第一个比它 小/大 的元素的 值/下标/下标距离 优点 剔除重复寻路操作,将暴力 O(n^2) 优化到 O(n) 性质 从栈底开始,元素 单调递增/单调递减 单调性视具体情景而定 (找较大值还是较小值、找的方向) 思路…...
【NodeJS】NodeJS+mongoDB在线版开发简单RestfulAPI (七):MongoDB的设置
本项目旨在学习如何快速使用 nodejs 开发后端api,并为以后开展其他项目的开启提供简易的后端模版。(非后端工程师) 由于文档是代码写完之后,为了记录项目中需要注意的技术点,因此文档的叙述方式并非开发顺序࿰…...
基于flask和neo4j的医疗知识图谱展示问答系统
如果你仍在为毕业设计的选题发愁,或者想通过技术项目提升专业实力,这个基于Flask和Neo4j的医疗知识图谱展示与问答系统,绝对是个不错的选择! 项目亮点大揭秘: 知识图谱与问答结合:我们采用了医疗场景下的知…...
Python——脚本实现datax全量同步mysql到hive
文章目录 前言一、展示脚本二、使用准备1、安装python环境2、安装EPEL3、安装脚本执行需要的第三方模块 三、脚本使用方法1、配置脚本2、创建.py文件3、执行脚本4、测试生成json文件是否可用 前言 在我们构建离线数仓时或者迁移数据时,通常选用sqoop和datax等工具进…...
Python爬虫教程:从入门到精通
Python爬虫教程:从入门到精通 前言 在信息爆炸的时代,数据是最宝贵的资源之一。Python作为一种简洁而强大的编程语言,因其丰富的库和框架,成为了数据爬取的首选工具。本文将带您深入了解Python爬虫的基本概念、实用技巧以及应用…...
pytorh学习笔记——cifar10(四)用VGG训练
1、新建train.py,执行脚本训练模型: import os import timeimport torch import torch.nn as nn import torchvisionfrom vggNet import VGGbase, VGGNet from load_cifar import train_loader, test_loader import warnings import tensorboardX# 忽略…...
CRLF、UTF-8这些编辑器右下角的选项的意思
经常使用编辑器的小伙伴应该经常能看到右下角会有这么两个选项,下图是VScode中的示例,那么这两个到底是啥作用呢? 目录 字符编码ASCII 字符集GBK 字符集Unicode 字符集UTF-8 编码 换行 字符编码 此部分参考博文 在计算机中,所有…...
【C++干货篇】——类和对象的魅力(四)
【C干货篇】——类和对象的魅力(四) 1.取地址运算符的重载 1.1const 成员函数 将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后面。const实际修饰该成员函数隐含的this指针(this指向的对…...
基于java的诊所管理系统源码,SaaS门诊信息系统,二次开发的不二选择
门诊管理系统源码,诊所系统源码,saas服务模式 医疗信息化的新时代已经到来,诊所管理系统作为诊所管理和运营的核心工具,不仅提升了医疗服务的质量和效率,也为患者提供了更加便捷和舒适的就医体验,同时还推动…...
O2OA如何实现文件跨服务器的备份
O2OA可以外接存储服务器,但是一个存储服务器上怕磁盘损坏等问题导致文件丢失,所以需要实现文件跨服务器备份。 整体过程: 1、SSH免密登录配置 2、增加一个同步推送文件的.sh文件 3、编辑crontab 增加定时任务执行上一步的.sh文件 一、配…...
语音提示器-WT3000A离在线TTS方案-打破语种限制/AI对话多功能支持
前言: TTS(Text To Speech )技术作为智能语音领域的重要组成部分,能够将文本信息转化为逼真的语音输出,为各类硬件设备提供便捷的语音提示服务。本方案正是基于唯创知音的离在线TTS(离线本地音乐播放与在线…...
使用HAL库的STM32工程,实现DMA传输USART发送接收数据
以串口3为例,初始化部分为STM32CubeMX生成代码 串口初始化 UART_HandleTypeDef huart3; DMA_HandleTypeDef hdma_usart3_rx; DMA_HandleTypeDef hdma_usart3_tx;/* USART3 init function */ void MX_USART3_UART_Init(void) {/* USER CODE BEGIN USART3_Init 0 */…...
常用排序算法总结
内容目录 1. 选择类排序 1.1 直接选择排序1.2 堆排序 2. 交换类排序 2.1 冒泡排序2.2 快速排序 3. 插入类排序 3.1 直接插入排序3.2 希尔排序 4. 其它排序 4.1 归并排序4.2 基数排序/桶排序 排序 1. 选择类排序 选择类排序的特征是每次从待排序集合中选择出一个最大值或者最…...
[项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引
目录 编写建立索引的模块 Index 1. 设计节点 2.基本结构 3.(难点) 构建索引 1. 构建正排索引(BuildForwardIndex) 2.❗构建倒排索引 3.1 cppjieba分词工具的安装和使用 3.2 引入cppjieba到项目中 倒排索引代码 本篇文章,我们将继续项…...
R语言编程
一、R语言在机器学习中的优势 R语言是一种广泛用于统计分析和数据可视化的编程语言,在机器学习领域也有诸多优势。 丰富的包:R拥有大量专门用于机器学习的包。例如,caret包是一个功能强大的机器学习工具包,它提供了统一的接口来训练和评估多种机器学习模型,如线性回归、决…...
Mysql主主互备配置
在现有运行的mysql环境下,修改相关配置项,完成主主互备模式的部署。 下面的配置说明中设置的mysql互备对应服务器IP为: 192.168.1.6 192.168.1.7 先检查UUID 在mysql的数据目录下,检查主备mysql的uuid(如下的server-…...
如何预防数据打架?数据仓库如何保持指标数据一致性开发指南(持续更新)
大数据开发人员最经常遇到尴尬和麻烦的事是,指标开发好了,以为万事大吉了。被业务和运营发现这个指标在不同地方数据打架,显示不同的数值。为了保证指标数据一致性,要从整个开发流程做好。 目录 一、数据仓库架构规划 二、数据抽取与转换 三、数据存储管理 四、指标管…...
我谈Canny算子
在Canny算子的论文中,提出了好的边缘检测算子应满足三点:①检测错误率低——尽可能多地查找出图像中的实际边缘,边缘的误检率(将边缘识别为非边缘)低,且避免噪声产生虚假边缘(将非边缘识别为边缘…...
算法的学习笔记—平衡二叉树(牛客JZ79)
😀前言 在数据结构中,二叉树是一种重要的树形结构。平衡二叉树是一种特殊的二叉树,其特性是任何节点的左右子树高度差的绝对值不超过1。本文将介绍如何判断一棵给定的二叉树是否为平衡二叉树,重点关注算法的时间复杂度和空间复杂度…...
SSM学习day01 JS基础语法
一、JS基础语法 跟java有点像,但是不用注明数据类型 使用var去声明变量 特点1:var关键字声明变量,是为全局变量,作用域很大。在一个代码块中定义的变量,在其他代码块里也能使用 特点2:可以重复定义&#…...
kubeadm快速自动化部署k8s集群
目录 一、准备环境 二、安装docker--三台机器都操作 三、使用kubeadm部署Kubernetes 在所有节点安装kubeadm和kubelet、kubectl 配置启动kubelet(所有主机) master节点初始化 Mater重新完成初始化 执行Master初始化后的提示配置 配置使用网络插件 创建flannel网络 …...
解决JAVA使用@JsonProperty序列化出现字段重复问题(大写开头的字段重复序列化)
文章目录 引言I 解决方案方案1:使用JsonAutoDetect注解方案2:手动编写get方法,JsonProperty注解加到方法上。方案3:首字母改成小写的II 知识扩展:对象默认是怎样被序列化?引言 需求: JSON序列化时,使用@JsonProperty注解,将字段名序列化为首字母大写,兼容前端和第三方…...
分布式理论基础
文章目录 1、理论基础2、CAP定理1_一致性2_可用性3_分区容错性4_总结 3、BASE理论1_Basically Available(基本可用)2_Soft State(软状态)3_Eventually Consistent(最终一致性)4_总结 1、理论基础 在计算机…...
Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
说在前面的话 要想获得测试覆盖率报告,第一步要做的是,采集覆盖率数据,并输入到tcp。 而本文便是介绍一种java应用程序部署下的推荐方式。 作为一种通用方案,首先不想对应用程序有所侵入,其次运维和管理方便。 正好,jacoco agent就是类似于pinpoint agent一样,都使用…...
苏州定制型网站建设/不要手贱搜这15个关键词
当百度在人为控制搜索结果的时候。应该是其他搜索引擎崛起的机会。可是国内的一些搜索引擎似乎根本就不在乎,或者说是对此无所谓。这只是我个人所见和认识。众所周知,2011将会是一个无从预知的一年,混乱或是战乱,让人扑朔迷离。而…...
wordpress模板开发/关键词优化设计
在ipad、iphone网页开发中,我们很可能需要判断是横屏或者竖屏。下面就来介绍如何用 jQuery 判断iPad、iPhone、Android是横屏还是竖屏的方法 其实主要是通过window.orientation实现,下面看下代码吧 function orient() { if (window.orientation 90 || w…...
网架加工制造厂家/seosem顾问
vue3手写电商微信小程序( 微信开发者工具)【问题总结】该项目技术栈:vite3 vue3.2 pinia typeScript1、样式穿透在微信开发者工具不适用:2、v-html在微信开发者工具显示的是rich-text组件,导致样式不适用࿱…...
桂林旅游攻略/杭州seo靠谱
随着近年来互联网金融的发展,国内金融信息服务机构也随之快速发展。但是一些机构在信息内容方面存在把关不严,炒作金融市场风险、发布敏感市场信息、歪曲金融监管政策问题,对经济金融稳定带来冲击。 为了提高金融信息服务规范,雷…...
各种类型网站建设口碑好/搜客
阻塞(等待)模式: <?php $fp fopen("lock.txt", "r"); if(flock($fp,LOCK_EX)) { //..处理订单 flock($fp,LOCK_UN); } fclose($fp); ?> 非阻塞模式: <?php $fp fopen("lock.txt", "r"); if(flock…...
合肥网站建设新闻营销/长沙seo优化排名
前段时间 , 在脉脉上看见某95后阿里P7晒出工资单,是真的给我酸了…… 没办法回去想想 , 还是说狠补一下技术吧。 按照之前的经验来看 , Java 一面基本上都是基础题,同样是 CURD 的话,谁更熟练要谁,比如下面这个Java面试手册&…...