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

初识Maven(一)命令行操作和idea创建maven工程

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供**构建**和**依赖**管理支持的工具。

 

构建过程包含的主要的环节:- 清理:删除上一次构建的结果,为下一次构建做好准备
- 编译:Java 源程序编译成 *.class 字节码文件
- 测试:运行提前准备好的测试程序
- 报告:针对刚才测试的结果生成一个全面的信息
- 打包- Java工程:jar包- Web工程:war包
- 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入Maven的本地仓库
- 部署- 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上- 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上
依赖管理中要解决的具体问题:- jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
- jar 包之间的依赖:通过依赖的传递性自动完成
- jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

fd0f8a1f30a9423d83d3c714f7526018.png

 Maven下载页面:Maven – Download Apache Maven

下载好压缩包后解压(记得钥解压到非中文、没有空格的目录)

198e559f14c24ab38dfc3aabb499c333.png

 进入Maven的核心配置文件conf/setting.xml

9f1ab21a3dc742238a638c3349152778.png

打开看到如图部分,如果没有自己指定本地仓库,则会按照图中所示的路径存放后面所需的资源。所以我们可以按照图中格式自己手动配置本地仓库的位置(非中文、没有空格

1d6efaf60645456e834798d347197f35.png

 配置镜像仓库,在配置文件中,原本是如下配置

b18550b8da6e48b6b89a43bcec0b2f8e.png

 但Maven下载jar包默认访问境外的中央仓库,速度慢,如下改成国内阿里云提供的镜像仓库,访问国内网站

adca88e9e1a447829507284702a6d941.png

配置Maven工程的基础JDK(我用的适合1.8

08697bbfee284d68baf8c580b4513566.png 配置环境变量

Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。

新建-》按图配置

5571635d0a74428a9f61672601429613.png

 

 配置path变量

c1c7303a7aae4fe4a309beb0a52568e6.png

在命令行查看一下是否可以 

配置完成则可以在命令行查看Maven版本

e1680abe2a4c44d18b48bd7287a0ef5f.png

 

 

根据坐标创建Maven工程

Maven中的坐标
#[1]向量说明
使用三个『向量』在『Maven的仓库』中唯一的定位到一个『jar』包。groupId:公司或组织的 id
artifactId:一个项目或者是项目中的一个模块的 id
version:版本号
#[2]三个向量的取值方式
groupId:公司或组织域名的倒序,通常也会加上项目名称
例如:com.atguigu.maven
artifactId:模块的名称,将来作为 Maven 工程的工程名
version:模块的版本号,根据自己的需要设定
例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本
例如:RELEASE 表示正式版本
举例:groupId:com.atguigu.maven
artifactId:pro01-atguigu-maven
version:1.0-SNAPSHOT

坐标和仓库中jar包的存储路径之间的对应关系

5454a1aebb444648a098730c59d8eac5.png

 

用命令行操作Maven

创建目录作为后面操作的工作空间(存储创建的maven工程

例如:D:\software\ja\Maven-workspace\summer-maven-try

5b16e8b33a1749e9a0b8e682567a450d.png

 如图在命令行中在工作空间目录下使用如下命令创建Maven工程

c5f9cb8b23a64238af18eeb96fd2847f.png

 在下载完后会出现

dd2df7879f2847d1bcb689bbea6fdd56.png

(7识上图中数字7后代表的选项操作,也可以输别的数) 

就是对应上面所说的坐标信息 ,可按下图示例操作(名字不唯一,自定义

290b6a2709724c139dd252c816eecd6e.png

 上图pro-maven-java(Maven下的java工程)

根据上述操作完,得到如下图构建成功的绿色字体提示 

671e13e7cdd14c47bb4956cf04104bb2.png

dir /b 可以查看当前路径下的所有文件和文件夹。
dir /b /s 可以查看当前路径下的所有文件和文件夹以及子目录下的文件。

如下图我们在我们的工作空间发现在执行完上面的工程创建后,在该目录下自动创建出如下文件

我的命名如下
groupId:personal.august.maven
artifactId:project01-maven-java
version:1.0-SNAPSHOT

(下图是依照我的命名得到的文件路径)

5ea1dff44f504f8eb7239a3582a820b6.png

创建完工程后做一些调整

自动生成的 App.java 和 AppTest.java 可以删除。(大概就是下面这样的简单代码,我们可以用也可以自己创建)

6581615a6d2a4d768c26942cf3f2fccd.png

Maven 默认生成的工程,对 junit 依赖的是较低的 3.8.1 版本,我们可以改成较适合的 4.12 版本。(junit3不支持注解)

c3deaabedfdd4c5ea043d67c46a99f9c.png

在如图中的pom.xml文件修改 

<!-- 依赖信息配置 -->
<!-- dependencies复数标签:里面包含dependency单数标签 -->
<dependencies><!-- dependency单数标签:配置一个具体的依赖 --><dependency><!-- 通过坐标来依赖其他jar包 --><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 依赖的范围 --><scope>test</scope></dependency>
</dependencies>

但是改哪个版本,按当时吧,我看的教程应该还没有很久,

自动生成的pom.xml解读(配置信息都在这个文件里

<!-- 当前Maven工程的坐标 --><groupId>com.atguigu.maven</groupId><artifactId>pro01-maven-java</artifactId><version>1.0-SNAPSHOT</version><!-- 当前Maven工程的打包方式,可选值有下面三种: --><!-- jar:表示这个工程是一个Java工程  --><!-- war:表示这个工程是一个Web工程 --><!-- pom:表示这个工程是“管理其他工程”的工程 --><packaging>jar</packaging><name>pro01-maven-java</name><url>http://maven.apache.org</url><properties><!-- 工程构建过程中读取源码时使用的字符集 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 当前工程所依赖的jar包 --><dependencies><!-- 使用dependency配置一个具体的依赖 --><dependency><!-- 在dependency标签内使用具体的坐标依赖我们需要的一个jar包 --><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- scope标签配置依赖的范围 --><scope>test</scope></dependency></dependencies>

POM

POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现。

 

POM 理念集中体现在 Maven 工程根目录下 pom.xml 这个配置文件中。所以这个 pom.xml 配置文件就是 Maven 工程的核心配置文件。学习 Maven 就是学这个文件怎么配置,各个配置有什么用。

 

 可以发现Maven约定的目录结构:

130c940bf7b54b038b4a034611d8395d.png

 (Maven 为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven 执行编译操作,必须先去 Java 源程序目录读取 Java 源代码,然后执行编译,最后把编译结果存放在 target 目录。

目前开发领域的技术发展趋势就是:约定大于配置,配置大于编码。

 

 在Maven工程下编写代码

在上述工程创建完成后,自动生成相应的文件

19510564f7404d5eb01306112843e581.png

main目录及其以下的子目录字文件为主体程序,其下的目录命名则是按照我们自定义的坐标名字自动生成

如下直观体现(和我自定义的名字有出入,图中Calculator类则是我们后面使用时创建存放的

主体程序

b23bb2d487dd4b8ea5e2701b96f08100.png

 主体程序指的是被测试的程序,同时也是将来在项目中真正要使用的程序。

36dccd247bb648d9b471c0c008dd3cca.png

(记得包名和目录得要一致)

 

20615b64e2ab4b9d81a835bf217fb8c5.png

 

package personal.august.maven;	
import org.junit.Test;
import personal.august.maven.Calculator;// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;public class CalculatorTest{@Testpublic void testSum(){// 1.创建Calculator对象Calculator calculator = new Calculator();// 2.调用Calculator对象的方法,获取到程序运行实际的结果int actualResult = calculator.sum(5, 3);// 3.声明一个变量,表示程序运行期待的结果int expectedResult = 8;// 4.使用断言来判断实际结果和期待结果是否一致// 如果一致:测试通过,不会抛出异常// 如果不一致:抛出异常,测试失败assertEquals(expectedResult, actualResult);}}

 

 执行Maven的构建命令

90b48330d1c44c28a0e816ed69bcc3bf.png

4e4b7440c1f34844bde9ca5fbe53e22c.png

 

相关操作命令

编译操作:

主程序编译:mvn compile
测试程序编译:mvn test-compile
主体程序编译结果存放的目录:target/classes
测试程序编译结果存放的目录:target/test-classes

670e464c963a44cd91603eff6cc5e120.png

(未编译前如上图)

执行完mvn compile命令后生成target文件夹(在project01-maven-java目录下执行,pom.xml的所在目录)

078935a9729a417d9964fe192c7b48b2.png

 f334134bc4f64bf4865934b1af03195c.png

16d8834013a1407ca25bb739cfe98a95.png

mvn compile(对main目录内容进行编译)

执行mvn  compile- test后(对test目录进行编译)target目录下内容:

17ace025bbfa408db08a8fea477d3f66.png

(注意编码字符集不同,电脑可能默认是ANSI,将java文件的编码改为UTF-8就可

783908a88ca04ba2aff0908fb323c93a.png

 

 清理操作

mvn clean (删除target目录)

 

测试操作

mvn test

89531d7263334f55b3509794753e9986.png

在测试之前会对其编译,所以如果特使代码有所变动,也可以同步更新

 测试的报告存放的目录:target/surefire-reports

该目录下的一些文件:

测试报告信息

b70dcbbedbe14b6db8d6a42f7b9991db.png

当前环境的信息dce5d559c6244eec92f191a0b280b46e.png

 a

打包操作

mvn package

打包的结果——jar 包,存放的目录:target

709b37a8fa1948aa8f09a53353755dc7.png

19b05d1d46264b909cee63673bea2010.png

最后一个即是打包的文件, 打开发现里面只存放主体程序文件

a

安装操作

mvn install

安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的。

以我自定义的坐标为例:

<groupId>personal.august.maven</groupId><artifactId>project01-maven-java</artifactId><version>1.0-SNAPSHOT</version>

在 Maven 仓库中生成的路径如下:(已知我的仓库的位置是D:\software\ja\Maven-repository)

D:\software\ja\Maven-repository\personal\august\maven\project01-maven-java\1.0-SNAPSHOT

如下图执行mvn clean install (组合操作,清理并安装,可以确保文件时最新的状态,且clean是将工作空间的target文件删除后再生成

2adf1e3ce5e247eca8c2936211338fd4.png

d4788e2319ee4b68853694bf6722a700.png

(最后一个就是同名pom文件) 

 另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。

57a3b5e525c4441bae8efcffeeb8cb4b.png

 (图中信息也可以体现)

 创建Maven版的Web工程

说明:

41e5176d6aed4b35b1347799263ad83c.png

 

操作:

运行生成工程的命令

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

  注意:如果在上一个工程的目录下执行 mvn archetype:generate 命令,那么 Maven 会报错:不能在一个非 pom 的工程下再创建其他工程。所以不要再刚才创建的工程里再创建新的工程,请回到工作空间根目录来操作。

不允许再java工程下创建一个web工程,要返回到上一级目录(与其平级,cd ..返回当前目录的上一级目录)

9d6605cb355e4762b2aacb0802590fc8.png

直接将上面长串的命令复制过去执行 

52b50931c2d743efa170430bc97ceb4f.png

也要按提示去自定义名字

 3a817c91e64049e698c0c781c26f6dc3.png

在pom.xml中确认打包方式为war

<packaging>war</packaging>

工程创建完成后生成的目录如下

17b06b2c365d4a97861615bf750c1c87.png

webapp 目录下有 index.jsp

WEB-INF 目录下有 web.xml

创建一些补充的目录(会比较规范)

3c6434309f5a4ecb965a0edee31b070d.png

 创建web工程的使用示例

在包下创建Servlet类(注意包名要和目录相同)

package personal.august.maven;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;public class HelloServlet extends HttpServlet{protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().write("hello maven web");}}

在web.xml中注册Servlet(WEB-INF目录下)

<servlet><servlet-name>helloServlet</servlet-name><servlet-class>personal.august.maven.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/helloServlet</url-pattern></servlet-mapping>

在index.jsp页面编写超链接(webapp目录下)

<html>
<body>
<h2>Hello World!</h2>
<a href="helloServlet">Access Servlet</a>
</body>
</html>

上述操作完成后,我们要对web工程进行编译

但是在编译之前我们要现导入依赖的jar包,如上HelloServlet类中导入的jar包等

以配对servlet-api.jar包的依赖为例

不知道详细信息的依赖可以到https://mvnrepository.com/网站查询。使用关键词搜索,然后在搜索结果列表中选择适合的使用。

6add3b784d214bb089b3f3568a7c07e7.png

 6a776cfd9cd442e08a6d26514de77dbd.png

点击版本号进入

f591d61db8eb4ddb87f4eb84c73775db.png

复制框中内容到pom.xml即可, (是添加在dependencies的标签内)

1ec62bc72d70426db5b8f2a101eb8929.png

 执行编译  mvn compile (在该工程目录下执行,可知和java工程一样,执行完将生成target文件夹,里面存放编译后的文件内容

a80f3196150048109c582dc0d6edf500.png

执行mvn package  将web工程打包为war

a01c55d3cfa0443aaf66a465eaa2162c.png

 如下 target目录下生成的war包,和其解压文件(倒数一二d08a048f7db1474d9b0cf6cee240cad2.png

将war部署到Tomcat 上运行(将war包复制到Tomcat/webapps目录下)

因为启动时会自动解压war包,所以也可以选择将其解压文件复制放到webapps目录下

461b950e06bd4617b8eb89f4a813cb73.png

在命令行窗口下的tomcat的bin目录下执行startup.bat,然后打开浏览器访问Document Error: Not Found

8e4d538c11434aa387a670d6f65ad101.png

3960294ae1f94f4386dd052d15556e20.png

 点击得到

7f0064ae8f7e423aac1e53be322f5681.png

 (如果遇到

a7a279726f5548fe8c2ee43444cfc87b.png

可以检查以下8080端口是否被占用,执行命令杀掉该进程后再访问

如果遇到

org.apache.catalina.LifecycleException: 协议处理程序初始化失败(再tomcat启动的页面)

可以将conf/logging.properties文件中的字符编码改为UTF-8,解决org.apache.catalina.LifecycleException: 协议处理程序初始化失败_诗水人间的博客-CSDN博客

  

 让web依赖java工程

明确一个意识:从来只有 Web 工程依赖 Java 工程,没有反过来 Java 工程依赖 Web 工程。本质上来说,Web 工程依赖的 Java 工程其实就是 Web 工程里导入的 jar 包。最终 Java 工程会变成 jar 包,放在 Web 工程的 WEB-INF/lib 目录下。

在project02-maven-web工程的pom.xmlde dependencies标签中添加如下内容

7c666269a93b4b339b1ce684704d8191.png

在web工程中,编写测试代码(放在test目录下,新创建和main同级

\project02-maven-web\src\test\java\personal\august\maven

把 Java 工程的 CalculatorTest.java 类复制到 project02-

maven-web\src\test\java\personal\august\maven目录下

执行mvn test ,测试操作中会提前自动执行编译操作,如果测试成功就说明编译也是成功的。

6d51ef6b89684d678f7767378ac33347.png

执行打包命令 mvn package,在war包中我们可以看到web工程依赖的java类放在了如下目录中 

5644818c91264a1fb80516aaf66499a0.png

 查看当前web工程所依赖的jar包的列表 mvn  dependency:list(以列表的形式查看

7dc0d2c33cd94ed18a050597854f3b87.png 在执行最后部分可以看到如下

44ee4c8d46f14651ac3beaf921b244c0.png

875638cd40dd4e7994fac802cb39e0ce.png

mvn  dependency:tree (以树的形式查看

4a2de703ef314d94b3b2dbe5102d7a7a.png

 我们在 pom.xml 中并没有依赖 hamcrest-core,但是它却被加入了我们依赖的列表。原因是:junit 依赖了hamcrest-core,然后基于依赖的传递性,hamcrest-core 被传递到我们的工程了。

 

依赖范围

标签的位置:dependencies/dependency/scope

标签的可选值:compile/test/provided/system/runtime/import

e126c796e1f64121970438758747f88e.png

 9d5c9ec478f74c558f63febce185fa1b.png

 

compile:通常使用的第三方框架的 jar 包这样在项目实际运行时真正要用到的 jar 包都是以 compile 范围进行依赖的。比如 SSM 框架所需jar包。test:测试过程中使用的 jar 包,以 test 范围依赖进来。比如 junit。provided:在开发过程中需要用到的“服务器上的 jar 包”通常以 provided 范围依赖进来。比如 servlet-api、jsp-api。而这个范围的 jar 包之所以不参与部署、不放进 war 包,就是避免和服务器上已有的同类 jar 包产生冲突,同时减轻服务器的负担。“服务器上已经有了,就不用再添加

通过compile范围依赖的jar包会放入war包,通过test范围依赖的jar包不会放入war包。

 

传递的依赖性

 

A 依赖 B,B 依赖 C,那么在 A 没有配置对 C 的依赖的情况下,A 里面能不能直接使用 C?
在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于 B 依赖 C 时使用的依赖范围。
B 依赖 C 时使用 compile 范围:可以传递
B 依赖 C 时使用 test 或 provided 范围:不能传递,所以需要这样的 jar 包时,就必须在需要的地方明确配置依赖才可以。

排除传递依赖

a3ccba1eeb204b9c99fdba97959849ad.png

配置方式(exclusions标签)

034050282e1842e7a6aba738c2197de6.png

 

继承

Maven工程之间,A 工程继承 B 工程

  • B 工程:父工程
  • A 工程:子工程

本质上是 A 工程的 pom.xml 中的配置继承了 B 工程中 pom.xml 的配置

通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;又能够将以往的经验沉淀下来,节约时间和精力。

(对jar包统一管理,课将所有信息版本统一再父工程中进行管理

父工程的创建(打包方式为pom,一般写不业务代码,专门管理其他Maven工程的工程

a5052a382d254b0ba67f96b42fd25b46.png

 如果没有修改打包方式就在里面创建子工程会出现错误

abd41b2f7f05452c935b1676e7ef4347.png

再父工程的目录下创建子工程

45e0221b9bdc466a93d8108e213cd4d7.png

再父工程的pom.xml中添加如下内容

(如图只有一个子工程,因为我只建了一个,haha15cfdee40ced43eb91065231d0a21a21.png

 0733f798954c48ffad8e5444c5ef44d5.png

在子工程的pom.xml中

1d11c5290e42476697dc20f47f80692a.png

父工程中配置依赖统一管理

3dd79328cf3e4e6f970319f79495ed97.png

。。。。。。。。

子工程中引用那些被父工程管理的依赖(省略版本号)

 a659bf0d6c59418c9066411da4a86aa2.png

。。。。。。。 (如果子工程自己定义了,则按子工程自己的来

 

在父工程中声明自定义属性

43ab65d391a44e5787cb0e6e2fa955db.png

 (实现同步修改,相当于typedef的效果吧)

 

聚合

概念的对应关系:从继承关系角度来看:父工程
子工程
从聚合关系角度来看:总工程
模块工程

聚合的配置(和继承一样,配置modules)

776e495dc10f454c8a99d09a986c756a.png

依赖循环问题(如果依赖是一个循环,则会发生错误,这个错误的含义是循环引用) 

 

 

使用IDEA创建Maven工程下的web工程

2022版 的IDEA创建一个maven项目(超详细)_idea创建maven项目_无尽的沉默的博客-CSDN博客

 

(记得要把本地仓库路径 、配置文件的路径等改为自己设置的)849847cf2b874042b72890c260fd2575.pngf099f10b0f794376a412279a3e96a471.png

 上面的那个Archetype可以自己选择,我看网上创建web好像是选这个

 5e4aae255dfa4265b18f86be9d743249.png

(如果没有点如下提示中的配置,则要自己去构建目录

cd7b8946bd284173a16be706c2218b30.png

 首先在main文件夹下补全java,resorces文件夹,与main同级的test文件夹(后java,resorces也和main一样去创建)

c2ccf7e9f3df4478a4df4e9fab518691.png

 7897dd3b775d4ebbadbbf2576c31fab2.png

可以发现自己创建时,会由很多提示,直接创建 

我们在文件名右击

78464acb55994d6989fe0a686c6e5fe0.jpeg

 将对应的目录设置为对应的目录类型,得到如下图标形式就可以了

e0099aef415b48a39c0c54f51e3b5f52.png

 (后来发现其实只要在创建时,直接点这里的maven就好,

 1046c94bac694315b67b251650df48d4.png

(构建系统的选项中的maven,然后点高级设置创建号一个工程,然后可以自己在添加自己需要的目录,即使没有自动生成对应groupid一样的目录,到那时自己去生成就好,这时可以设置树外观-》压缩空的中间包,创建目录时直接创建于groupid的同名软件包即可)

 

 

 

相关文章:

初识Maven(一)命令行操作和idea创建maven工程

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供**构建**和**依赖**管理支持的工具。 构建过程包含的主要的环节&#xff1a;- 清理&#xff1a;删除上一次构建的结果&#xff0c;为下一次构建做好准备 - 编译&#xff1a;Java 源程序编译成 *.class 字节码文件…...

MHA高可用配置及故障切换

1&#xff0e;什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过…...

FPGA/IC秋招面试题 1(解析版)

分享个人觉得遇到还不错的题&#xff0c;后续有会继续补充。。。 以下题目均来自网络平台&#xff0c;用于学习交流如有侵权立马删除!!! 1. Verilog语言中&#xff0c;下面哪些语句不可被综合() A. #delay语句 B. initial语句 C. always语句 D. 用gen…...

华为云 异构数据迁移

数据库和应用迁移 UGO&#xff08;Database and Application Migration UGO&#xff0c;以下简称为UGO&#xff09;是专注于异构数据库结构迁移的专业服务。可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB/RDS的SQL语法&#xff0c;通过数据库评估、对象迁移两大核…...

wininet,winhttp,xmlhttprequest,各版本区别 《转》

一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP) 实现Http访问&#xff0c;微软提供了二套API&#xff1a;WinINet, WinHTTP&#xff08;分别封装于system32目录下的wininet.dll和winhttp.dll内&#xff09; 二者主要区别在于后者更为安…...

朴素,word,任何参考文献导入endnote

朴素&#xff0c;word&#xff0c;任何参考文献导入endnote 注意&#xff1a;对于以下这几种不做阐述&#xff0c;看其他帖子都有讲述&#xff1a; 这里的参考文献指的是类似于&#xff1a; [1]. Li Y, Lu Y, Huo X, et al. Bandgap tuning strategy by cations and halide io…...

数学建模--三维图像绘制的Python实现

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…...

Spring Cloud Alibaba-Feign整合Sentinel

第1步: 引入sentinel的依赖 <!--sentinel客户端--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 第2步: 在配置文件中开启Feign对Sentinel的…...

zabbix配置钉钉告警、和故障自愈

钉钉告警python脚本 cat python20 #!/usr/bin/python3 #coding:utf-8 import requests,json,sys,os,datetime # 机器人的Webhook地址 webhook"钉钉" usersys.argv[1] textsys.argv[3] data{"msgtype": "text","text": {"conten…...

Web安全测试(五):XSS攻击—存储式XSS漏洞

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部文章请访问专栏:《全栈安全测试教程(0基…...

本地PC机通过SSH方式远程Jetson

1. 检测电脑是否安装openSSH 以管理员身份运行powershell终端输入以下命令&#xff1a; Get-WindowsCapability -Online | ? Name -like OpenSSH*若没有安装OpenSSH&#xff0c;会出现如下图提示&#xff1a; 输入Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.…...

面向对象 学习黑马视频(03)

1.内存分区模型 /* 面向对象编程** 内存分区模型* 1.代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的* 2.全局区&#xff1a;存放全局变量和静态变量以及常量* 3.栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值…...

FinClip 支持创建 H5应用类小程序;PC 终端 优化升级

FinClip 的使命是使您能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型。不妨让我们看看本月产品与市场发布亮点&#xff0c;是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f447;&#x1f447; FinClip 支持创建 H5应用类小程序 近期我们…...

YOLOV8实例分割——详细记录环境配置、自定义数据处理到模型训练与部署

前言 Ultralytics YOLOv8是一种前沿的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它在前代YOLO版本的成功基础上进行了进一步的创新&#xff0c;引入了全新的特性和改进&#xff0c;以进一步提升性能和灵活性。作为一个高速、精准且易于操作的设计&#xff0c;YO…...

2309ddocx02文档

风格,页眉和页脚等内容与主要分开,允许在起始文档中放大量自定义,然后在生成文档中显示. 打开文档 from docx import Document document Document() document.save("test.docx")真正打开文档 要用文件名打开文档: document Document("existing-document-f…...

第一章初识微服务

文章目录 认识微服务单体架构分布式架构需要考虑的问题 微服务微服务的具体架构微服务技术对比企业中的技术需求 总结 服务拆分注意事项 认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。…...

微信小程序电影票订票小程序软件设计与实现

摘 要 我们的生活水平正在不断的提高&#xff0c;然而提高的一个重要的侧面表现就是更加注重我们的娱乐生活。电影是我们都喜欢的一种娱乐方式&#xff0c;各式各样的电影给我们带来的喜悦也是大不相同的。带来快乐的同时也因为其复杂、繁琐的流程让电影爱好者们变得烦躁起来。…...

Redis 缓存预热+缓存雪崩+缓存击穿+缓存穿透

面试题&#xff1a; 缓存预热、雪萌、穿透、击穿分别是什么&#xff1f;你遇到过那几个情况&#xff1f;缓存预热你是怎么做的&#xff1f;如何造免或者减少缓存雪崩&#xff1f;穿透和击穿有什么区别&#xff1f;他两是一个意思还是载然不同&#xff1f;穿适和击穿你有什么解…...

java 面试题汇总整理

java有哪四种引用类型 在Java中&#xff0c;有四种引用类型&#xff0c;用于控制对象的生命周期和垃圾回收行为。这些引用类型包括&#xff1a; 强引用&#xff08;Strong Reference&#xff09;&#xff1a; 强引用是最常见的引用类型&#xff0c;它们是默认的引用类型。当一…...

淘宝开放平台免审核接入 获取淘宝卖家订单列表订单详情API

taobao.open.trades.sold.get 搜索当前会话用户作为卖家已卖出的交易数据&#xff08;只能获取到三个月以内的交易信息&#xff09; 1. 返回的数据结果是以订单的创建时间倒序排列的。 注意&#xff1a;type字段的说明&#xff0c;如果该字段不传&#xff0c;接口默认只查4种类…...

Mybatis中的关系映射

1.一对一的映射关系 一对一关系&#xff08;One-to-One&#xff09;表示两个实体对象之间存在唯一的关联关系。例如&#xff0c;一个学生只能拥有一个身份证。在 MyBatis 中&#xff0c;我们可以使用结果嵌套或一对一映射来处理一对一关系。 1.1 创建模型类和Vo类 package com…...

领域建模之数据模型设计方法论

本文通过实际业务需求场景建模案例&#xff0c;为读者提供一种业务模型向数据模型设计的方法论&#xff0c;用于指导实际开发中如何进行业务模型向数据模型转化抽象&#xff0c;并对设计的数据模型可用性、扩展性提供了建议性思考。通过文章&#xff0c;读者可以收获到业务模型…...

springboot毕业生信息招聘平台设计与实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 毕业生信息招聘平台&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、企业管理、空中宣讲会管理、招聘岗位管理、毕业生管理…...

开发前期准备工作

开发前期准备工作 文章目录 开发前期准备工作0 代码规范0.1 强制0.2 推荐0.3 参考dao&#xff1a;跟数据库打交道service&#xff1a;业务层&#xff0c;人类思维解决controller&#xff1a;抽象化 0.4 注释规范0.5 日志规范0.6 专有名词0.7 控制层统一异常统一结构体控制层提示…...

k8s deployment服务回滚,设置节点为不可调度

服务回滚 通过滚动升级的策略可以平滑的升级Deployment&#xff0c;若升级出现问题&#xff0c;需要最快且最好的方式回退到上一次能够提供正常工作的版本。为此K8S提供了回滚机制。 revision&#xff1a;更新应用时&#xff0c;K8S都会记录当前的版本号&#xff0c;即为revi…...

信息系统安全运维和管理指南

声明 本文是学习 信息系统安全运维管理指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 安全运维支撑系统 信息系统安全服务台 目的 对信息系统安全事件进行统一监控与处理。 要求 建立一个集中的信息系统运行状态收集、处理、显示及报警的系…...

现货黄金代理好吗?

做黄金代理这个职业好吗&#xff1f;从目前的市场现状来看&#xff0c;其实做黄金代理很不错的。在股票市场中&#xff0c;投资者只能通过买涨进盈利&#xff0c;所以当市场行情不好的时候&#xff0c;股票经纪人的业务将很难展开&#xff0c;而现货黄金投资者不一样&#xff0…...

BCSP-玄子Share-Java框基础_双系统Redis安装与基础语法

四、Redis 4.1 Redis 简介 Redis 是开源、高性能的key-value数据库&#xff0c;属于 NoSQL 数据库 NoSQL 数据库与关系型数据库 关系型数据库&#xff1a;采用关系模型来组织数据&#xff0c;主要用于存储格式化的数据结构NoSQL 数据库&#xff1a;泛指非关系型数据库&…...

android system_server WatchDog简介

简介 android系统中SystemServer WatchDog的主要作用是监控SystemServer进程的运行状态,防止其卡住或者死锁。 具体来说,watchDog线程会定期去检查SystemServer线程的运行情况。如果发现SystemServer线程超过一定时间未有响应,watchDog会认为SystemServer进程发生了问题,这时…...

华为---OSPF协议优先级、开销(cost)、定时器简介及示例配置

OSPF协议优先级、开销、定时器简介及示例配置 路由协议优先级&#xff1a;由于路由器上可能同时运行多种动态路由协议&#xff0c;就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置了不同的默认优先级&#xff0c;当在不同协议中发现同一条路由时&am…...

做网站电脑配置/网站推广专家十年乐云seo

Sql代码: grant all privileges on *.* to root"%" identified by abc with grant option; flush privileges; 其中上面两行代码的意思是给从任意ip地址连接的用户名为root&#xff0c;密码为abc的用户赋予所有的权限。其中的"%"为任意的ip地址&#xff…...

腾讯云网站搭建/网站建设制作专业

在折线图上&#xff0c;每两个标记点的显示距离都是一样的&#xff0c;不管实际的间隔&#xff0c;100-1000和1000-10000 在坐标轴上的显示距离都一样 所以如果你给的标记点本身是等距的&#xff0c;如1月 2月 3月 4月 5月。。。那他显示效果和散点图基本是一样的 但如果标记点…...

杭州高端网站制作/百度网盘网址

一、解释   DCpower一般是指带实际电压的源&#xff0c;其他的都是标号(在有些仿真软件中默认的把标号和源相连的)VDD:电源电压(单极器件);电源电压(4000系列数字电路);漏极电压(场效应管)VCC&#xff1a;电源电压(双极器件);电源电压(74系列数字电路);声控载波(VoiceControl…...

阿里云oss做网站/百度pc端提升排名

linklinklink 分析&#xff1a; xxx轴方向会经过mmm个方格 yyy轴方向会经过nnn个方格 但是斜着走会有重复经过的 也就是方格顶点 个数为 Gcd(n,m)Gcd(n,m)Gcd(n,m) 所以答案为 nm−Gcd(n,m)nm-Gcd(n,m)nm−Gcd(n,m) CODE&#xff1a; #include<iostream> #include<…...

做网站网页需要多久/石家庄百度seo排名

对于带符号右移,若为负数,则在存储时首位表示符号位,其值为1,表示该值是负数的移位,在移位过程中,高位补1,若符号位是0,表示是正数,在移位过程中高位补零,两者的前提是符号位保持不变: 对于负数的右移&#xff1a;因为负数在内存中是以补码形式存在的&#xff0c;所有首先根据负…...

asp网站模板下载/网站建设哪家好公司

转自 http://www.devdiv.com/home.php?modspace&uid66974&doblog&id6472 这些天一直在纠结这个问题&#xff1a;在后台有音乐播放时&#xff0c;我用AVAudioRecorder进行录音&#xff0c;后台音乐被无情的停止了&#xff0c;直到最近才解决&#xff01;解决方法如…...