二十九、Docker (5)

news2024/10/7 20:36:17

🌻🌻 目录

  • 一、Maven Docker 插件构建 Docker 镜像
    • 1.1 maven Docker 插件构建 Docker 镜像入门
    • 1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile
    • 1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库
  • 二、手动发布部署微服务项目到 Docker
    • 2.1 项目工程发布镜像规划
    • 2.2 项目工程发布镜像配置
      • 2.2.1 项目 EurekaServer01
      • 2.2.2 项目 ConfigServer001
      • 2.2.3 数据库的创建
      • 2.2.4 项目ZuulGateWay
      • 2.2.5 项目UserProvdier01
      • 2.2.6 项目 UserWeb06
    • 2.3 编译工程创建镜像
    • 2.4 搭建实际运行项目

一、Maven Docker 插件构建 Docker 镜像

首先:启动上节使用的两台服务器(启动docker和启动私服)

在这里插入图片描述

然后:导入上一节的springcloud案例项目 a-parent-project

开始这节的总结啦啦啦~~~

Maven是一个强大的项目管理与构建工具。可以使用Maven构建Docker镜像,那么我们的工作能得到进一步的简化。

1.1 maven Docker 插件构建 Docker 镜像入门

第一步:修改项目EurekaServer01pom.xml

<build>
	<plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.4.13</version>
        <configuration>
            <!--镜像的名字-->
            <imageName>zql/microservice-discovery-eureka:0.0.1</imageName>
            <!--基础镜像-->
            <baseImage>java:8</baseImage>
            <!--容器启动后执行的指令-->
            <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>
    </plugin>
</build>

在这里插入图片描述

也可以下载 插件地址

第二步:在linux宿主机的 /usr/local下面创建 java-project,并且把项目文件(如下图,父项目下的所有)上传到linux宿主机目录/usr/local/java-project,如下:

步骤一:

在这里插入图片描述

步骤二:项目路径查看:

在这里插入图片描述

步骤三:

在这里插入图片描述

步骤四:

在这里插入图片描述

第三步:下载并上传 jdk、maven 的安装包到linux服务器

  • jdk-8u131-linux-x64.tar.gz
  • apache-maven-3.6.0-bin.tar.gz

在这里插入图片描述

解压并重命名:

在这里插入图片描述

第四步:安装jdk

tar xvf jdk-8u131-linux-x64.tar.gz  -C /usr/local/
cd /usr/local
mv jdk1.8.0_131  jdk
vi /etc/profile

在这里插入图片描述

#在最后添加
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH


#重新加载配置文件
source /etc/profile

#测试jdk是否安装成
java -version

在这里插入图片描述

在这里插入图片描述

第五步:安装maven

tar xvf apache-maven-3.6.0-bin.tar.gz  -C /usr/local/
cd /usr/local
mv apache-maven-3.6.0 maven
vi /etc/profile
#在最后添加
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
#重新加载配置文件
source /etc/profile
#测试maven安装
mvn -v

解压缩:
在这里插入图片描述

解压并重命名:

在这里插入图片描述

拷贝maven目录,方便下面使用:

在这里插入图片描述

添加配置文件和验证是否成功安装

在这里插入图片描述

配置maven加速器,我使用了华为的

在这里插入图片描述

编辑配置加速器

在这里插入图片描述

<mirror>
	<id>huaweicloud</id>
	<mirrorOf>*</mirrorOf>
	<url>https://mirrors.huaweicloud.com/repository/maven/</url>       
</mirror>
<!--
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>        
</mirror>
-->
</mirrors>

然后刷新项目

在这里插入图片描述

第六步:编译构建项目
切换到测试JAVA项目目录

cd /usr/local/EurekaServer

在这里插入图片描述

执行编译指令:

mvn clean package docker:build   #这个命令不行就执行下面一个,都一样
mvn clean -Dmaven.test.skip=true package docker:build   

在这里插入图片描述

我们会发现终端输出类似于如下的内容:

在这里插入图片描述

第七步:查看镜像
执行命令:

 docker images

在这里插入图片描述

第八步:使用镜像创建运行容器

docker run -di --name e1 -p 10086:10086 zql/microservice-discovery-eureka:0.0.1

在这里插入图片描述

查看日志

docker logs e1

在这里插入图片描述

第九步:访问测试 http://192.168.188.181:10086/

在这里插入图片描述

1.2 maven Docker 插件构建 Docker 镜像,自定义 DockerFile

上面的示例,我们直接在pom.xml中设置了一些构建的参数。很多场景下,我们希望使用Dockerfile更精确、有可读性地构建镜像。

下面我们带领大家看一下如何使用Dockerfile基于Maven插件构建镜像。

第一步:首先我们在项目的src/main/docker 目录下,新建一个Dockerfile文件

在idea中新建文件,文件出现问号,打不开解决

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD EurekaServer01-1.0.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
# 配置容器启动后执行的命令
CMD ["java","-jar","/app.jar"]

在这里插入图片描述

第二步:修改pom.xml,修改maven Docker插件,变动地方看下截图

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <!--镜像的名字-->
                <imageName>zql/microservice-discovery-eureka:0.0.1</imageName>
                <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                <!--基础镜像-->
                <!--<baseImage>java:8</baseImage>-->
                <!--容器启动后执行的指令-->
                <!--<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>-->
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

在这里插入图片描述

删除之前构建的一些容器和镜像

在这里插入图片描述

第三步:上传到linux服务器重新执行编译构建,即可根据Dockerfile生成镜像

在这里插入图片描述

切换到测试JAVA项目目录

cd /usr/local/EurekaServer01

执行编译构建指令:

mvn clean package docker:build  #这个命令不行就执行下面一个,都一样
mvn clean -Dmaven.test.skip=true package docker:build

构建出现问题解决

在这里插入图片描述

浏览器进一步验证:http://192.168.188.181:10086/

在这里插入图片描述

1.3 maven Docker 插件构建并推送镜像到 Docker 私有仓库

前文我们使用docker push 命令实现了镜像的推送,我们也可使用Maven插件推送镜像。我们不妨使用Maven插件推送一个Docker镜像到Docker 私有仓库。

第一步:修改Maven的全局配置文件setttings.xml

  • 在其中添加以下内容,配置Docker私有仓库的用户信息。
cd /usr/local/maven/conf/

vi settings.xml

在这里插入图片描述

<server>
  <id>docker-hub</id>
  <username>admin</username>
  <password>admin123</password>
  <configuration>
    <email>wmsspark@163.com</email>
  </configuration>
</server>

在这里插入图片描述

第二步:修改项目EurekaServer01的pom.xml

<build>
	<plugins>
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>0.4.13</version>
			<configuration>
				<imageName>192.168.188.181:8086/microservice-discovery-eureka:0.0.2</imageName>
				<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>${project.build.finalName}.jar</include>
					</resource>
				</resources>
             <serverId>docker-hub</serverId>
			</configuration>
		</plugin>
	</plugins>
</build>

在这里插入图片描述

serverId:必须和maven配置文件设置的server 节点的id一致

  • idea中做了更改后再次需要上传

在这里插入图片描述

第三步:执行以下命令,添加pushImage的标识,表示推送镜像

  • 先将上面构建的容器和镜像都删掉

在这里插入图片描述

mvn clean -DpushImage package docker:build   #这个命令不行就执行下面一个,都一样

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在这里插入图片描述

这里已经显示推送成功了,继续下面私服验证:

在这里插入图片描述

执行完毕,查看Docker私服已经上传成功镜像: http://192.168.188.182:8081/

在这里插入图片描述

二、手动发布部署微服务项目到 Docker

2.1 项目工程发布镜像规划

按照项目EurekaServer01的配置方式把相关项目都发布成镜像

序号项目名称镜像名称
1EurekaServer01192.168.188.138:8086/microservice-discovery-eureka:0.0.1
2ConfigServer001192.168.188.138:8086/microservice-config-server:0.0.1
3ZuulGateWay192.168.188.138:8086/microservice-zuul-gateway:0.0.1
4UserProvdier01192.168.188.138:8086/microservice-provdier-service:0.0.1
5UserWeb04192.168.188.138:8086/microservice-user-web:0.0.1

注意:

  • 因为EurekaServer01EurekaServer02只是端口和配置不同,没必要单独创建2个独立镜像,仅仅需要在Docker镜像创建容器的时候传递相关参数即可。
  • 同理ConfigServer001ConfigServer002也公用一个镜像。
  • UserProvdier01UserProvdier02也公用一个镜像。
  • 先打开idea修改如下操作:

在这里插入图片描述

2.2 项目工程发布镜像配置

2.2.1 项目 EurekaServer01

步骤一、修改上面项目src/main下面创建的docker目录下面的Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD EurekaServer01-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
#CMD ["java","-jar","/app.jar"]

在这里插入图片描述

  • 而后删除上面操作过的镜像

在这里插入图片描述

  • 先创建一个网络
docker network create mynet    #搭建一个网络
docker network ls			   #查看网络

在这里插入图片描述

  • 因为上面配置做了修改,所以再次上传

在这里插入图片描述

mvn clean package -DpushImage docker:build 

在这里插入图片描述

分别构建Eureka1和Eureka2

docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
 
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1

docker logs eureka1     #通过日志查看是否启动
docker logs eureka2   

在这里插入图片描述

在这里插入图片描述
命令详细解释如:

容器创建指令:
docker run                           #创建容器指令
-di                                  # d守护式容器、i 运行容器
--name=eureka1                       # 容器名称
--network=mynet                      #容器加入用户自定义网络mynet
-e PORT="-Dserver.port=10086"        #指定环境参数--Eureka注册中心服务启动监听端口
                                     #指定环境参数--Eureka注册中心地址(高可用架构)
-e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" 
-p 10086:10086                        #容器端口号映射
192.168.188.138:8086/microservice-discovery-eureka:0.0.1   #镜像名称

浏览器验证:http://192.168.188.181:10086/

在这里插入图片描述

http://192.168.188.181:10087/

在这里插入图片描述

2.2.2 项目 ConfigServer001

步骤一、拷贝EurekaServer01目录下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY ConfigServer001-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

在这里插入图片描述

步骤二、修改pom.xml,修改maven Docker插件(将上面EurekaServer01的相应plugin复制过来修改下面截图小框就可以了

<build>
	<plugins>
       <plugin>
           <groupId>com.spotify</groupId>
           <artifactId>docker-maven-plugin</artifactId>
           <version>0.4.13</version>
           <configuration>
               <imageName>192.168.188.182:8086/zql/microservice-config-server:0.0.1</imageName>
               <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
               <resources>
                   <resource>
                       <targetPath>/</targetPath>
                       <directory>${project.build.directory}</directory>
                       <include>${project.build.finalName}.jar</include>
                   </resource>
               </resources>
               <serverId>docker-hub</serverId>
           </configuration>
       </plugin>
	</plugins>
</build>

在这里插入图片描述

步骤三:进而上传到服务器即可

在这里插入图片描述

步骤四:执行下列命令上传到私服

 mvn clean package -DpushImage docker:build

在这里插入图片描述

docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在这里插入图片描述
将来自己上传github上的文件进行拉取:

在这里插入图片描述

浏览器输入:http://192.168.188.181:7001/application.yml

  • 再创建一个容器
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在这里插入图片描述

浏览器查看:http://192.168.188.181:10086/ 至此一共创建了5个容器 7001重复了啊,不然就4个

在这里插入图片描述

再试试7002是否能拉取github项目 http://192.168.188.181:7002/application.yml

2.2.3 数据库的创建

docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7

在这里插入图片描述

验证:

在这里插入图片描述

在这里插入图片描述

2.2.4 项目ZuulGateWay

步骤一、在项目根目录创建docker目录,创建Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY ZuulGateWay-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#启动端口
ENV PORT=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

步骤二、修改pom.xml,修改maven Docker插件

<build>
	<plugins>
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>0.4.13</version>
			<configuration>
				<imageName>192.168.188.138:8086/microservice-zuul-gateway:0.0.1</imageName>
				<dockerDirectory>${project.basedir}/docker</dockerDirectory>
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>${project.build.finalName}.jar</include>
					</resource>
				</resources>
                <serverId>docker-hub</serverId>
			</configuration>
		</plugin>
	</plugins>
</build>

2.2.5 项目UserProvdier01

步骤一、在项目根目录创建docker目录,创建Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY UserProvdier01-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#监听端口
ENV PORT=""
#应用名称,用来前端显示用,不是serviceId
ENV APPLICATION=""
#注册中心地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

步骤二、修改pom.xml,修改maven Docker插件

<build>
	<plugins>
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>0.4.13</version>
			<configuration>
				<imageName>192.168.188.138:8086/microservice-provdier-service:0.0.1</imageName>
				<dockerDirectory>${project.basedir}/docker</dockerDirectory>
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>${project.build.finalName}.jar</include>
					</resource>
				</resources>
              <serverId>docker-hub</serverId>
			</configuration>
		</plugin>
	</plugins>
</build>

步骤三、bootstrap.yml配置文件内容

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master

步骤四、项目在git存储的配置文件

ProviderVersion: UserProvider0.0.1
spring:
  datasource:
    url: jdbc:mysql://db1:3306/springboot-005?serverTimezone=GMT%2B8
    username: root
    password: 123
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  application:
    name: UserProvider
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,info

注意:配置文件级别 本地配置文件—》-D参数注入配置文件----》远程配置中心配置文件,级别越来越高。

2.2.6 项目 UserWeb06

步骤一、在项目根目录创建docker目录,创建Dockerfile文件

# 基于哪个镜像
FROM java:8
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
COPY UserWeb06-*.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
#配置环境变量,接受外部传递参数
#监听端口
ENV PORT=""
#应用名称
ENV APPLICATION=""
#注册中心服务器地址
ENV EUREKA=""
# 配置容器启动后执行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

步骤二、修改pom.xml,修改maven Docker插件

<build>
	<plugins>
		<plugin>
			<groupId>com.spotify</groupId>
			<artifactId>docker-maven-plugin</artifactId>
			<version>0.4.13</version>
			<configuration>
				<imageName>192.168.188.138:8086/microservice-user-web:0.0.1</imageName>
				<dockerDirectory>${project.basedir}/docker</dockerDirectory>
				<resources>
					<resource>
						<targetPath>/</targetPath>
						<directory>${project.build.directory}</directory>
						<include>${project.build.finalName}.jar</include>
					</resource>
				</resources>
                <serverId>docker-hub</serverId>
			</configuration>
		</plugin>
	</plugins>
</build>

步骤三、bootstrap.yml配置文件内容

spring:
  application:
    name: UserWeb06
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master

2.3 编译工程创建镜像

步骤一、上传项目EurekaServer01到Linux服务器目录:/usr/local/springboot/EurekaServer01

步骤二、执行编译、打包、构建docker镜像指令
进入当前项目目录

cd  /usr/local/springboot/EurekaServer01

编译、打包、发布Docker镜像指令:

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在这里插入图片描述
查看镜像:

docker images

在这里插入图片描述

步骤三、其他项目
其他项目ConfigServer001、ZuulGateWay、UserProvdier01、UserWeb06也和上面一样,上传,然后进入项目目录执行编译、打包、构建Docker镜像指令。

最终5个镜像全部创建ok

在这里插入图片描述
在私有仓库可以查看到镜像

在这里插入图片描述

2.4 搭建实际运行项目

一:项目架构图

在这里插入图片描述

二:创建docker网络

根据上面的架构图,本次需要创建一个用户自定义网络:
Docker指令:

docker network create mynet

查看docker网络指令:

docker network ls

在这里插入图片描述
构建网络成功后,所有加入到该用户自定义网络的容器即可通过容器名称相互连接。

步骤三:创建运行docker容器

步骤四:查看docker容器输出日志

通过指令:

docker logs -f -t --tail 10 provider1

就可以查看对应的容器日志输出

步骤五:测试运行

访问:http://192.168.188.138:9001

在这里插入图片描述

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

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

相关文章

类与对象(三):stactic成员、友元、内部类

类与对象&#xff08;三&#xff09;1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2. static成员2.1 概念特性类中成员变量区别&#xff08;普通变量和static变量&#xff09;:普通成员函数和静态成员函数的区别3. 友元友元函数友元类cout打印自定义类型…

24种代码坏味道和重构手法

最近&#xff0c;小李感觉公司女生们看他的眼神不太对劲了&#xff0c;那种笑容好像是充满慈爱的、姨母般的笑容。 作为一名老实本分的程序员&#xff0c;小李不太习惯这种被人过度关注的感觉&#xff0c;他不知道发生了什么。 小李和小王的关系似乎过于亲密&#xff0c;还经…

ZooKeeper 安装

ZooKeeper 安装 1. 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的&#xff0c;它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt/ZooKeeper目录下 #上传zookeeper altp put f:/setup/apache-zookeeper-3.5.6-bin.tar.gz #打开 opt目…

(十)devops持续集成开发——jenkins流水线发布一个docker harbor仓库版的后端maven项目

前言 本节内容我们使用jenkins流水线组件发布一个docker环境的后端maven项目&#xff0c;并使用docker的harbor仓库完成镜像的存储&#xff0c;通过拉取harbor仓库中的项目镜像&#xff0c;完成后端项目的发布&#xff0c;关于harbor仓库的搭建&#xff0c;可以参考往期博客内…

Python学习笔记之模块

可迭代对象 概念&#xff1a;更新换代&#xff0c;每次更新都是根据上一次的结果作为基础。 有哪些&#xff1a;字符串&#xff0c;列表&#xff0c;字典&#xff0c;元组&#xff0c;集合&#xff0c;文件对象&#xff0c;特殊函数&#xff08;生成器&#xff09; 迭代器对…

软件测试/测试开发 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记。 公众号搜索&#xff1a;TestingStudio 霍格沃兹的干货都很硬核 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目&#xff0c;通过名字我们大概也能猜出个方向&#xff0c;Crawler 是爬虫的意思&#xff0c;App 的爬虫&am…

GitHub上标星79K的LeetCode算法小抄开放下载了

在大厂面试中我们不可避免的会考到算法&#xff0c;为什么大厂一定要考察算法呢&#xff1f;因为它包含了太多的逻辑思维&#xff0c;可以考察你思考问题的逻辑和解决问题的能力&#xff1b;这一点也是面试官比较看重的&#xff0c;因为它可以反映出你的潜力&#xff0c;我曾经…

Qt布局管理器(QHBoxLayout,QVBoxLayout)

文章目录布局管理器是什么使用代码添加布局管理器QVBoxLayoutQHBoxLayout使用ui文件添加布局管理器布局管理器的嵌套提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 布局管理器是什么 可以把一些组件按一定的次序排列&#xff0c;这就是布局管理器。 他…

反欺诈指南|网购平台如何保障公平交易

网购平台是社会零售重要的组成部分。国家统计数据显示&#xff0c;2021年&#xff0c;全国实物商品网上零售额达10.8万亿元&#xff0c;占社会消费品零售总额的比重为24.5%&#xff0c;对社会消费品零售总额增长的贡献率为23.6%。 网购平台促成买卖双方交易而建立的平台&#…

OpenBMI运动想象--认知科学实践设计

目录 一、简要介绍 &#xff08;一&#xff09;材料与准备工具 数据集下载 工具箱下载 参考 &#xff08;二&#xff09;OpenBMI工具箱介绍 &#xff08;三&#xff09;数据集详细介绍 数据拆分 数据解读 二、预处理 &#xff08;一&#xff09;目标 &#xff08;二&#xff09…

Linux安装和入门

文章目录1、课程介绍2、为什么需要Linux3、Linux简介3.1、什么事Linux3.2、Linux优点3.3、常见的Linux系统3.4、小结4、虚拟机安装4.1、引入4.2、常见的虚拟机软件4.3、安装vmware4.4、vmware常用操作4.4.1、全局配置虚拟机(Linux系统)存储位置4.4.2、虚拟机操作5、CentOS安装5…

Python中的消息框对话框tkinter.messagebox

介绍&#xff1a;使用&#xff1a;选择消息框的模式:提示消息框:【返回”ok”】消息警告框【返回”ok”】&#xff1a;错误消息框【返回”ok”】&#xff1a;对话框&#xff1a;询问确认对话框【返回值&#xff1a;yes/no】确认/取消对话框【返回值&#xff1a;True/False】是/…

【Java集合】Set接口及系列子类HashSet等

文章目录Set接口> Set 接口和常用方法> Set接口实现类 - HashSetHashSet 底层机制&#xff08;HashMap&#xff09;> Set接口实现类 - LinkedHashSetSet接口 Set 接口介绍&#xff1a; 无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引&…

交叉开发环境搭建

ubuntu网络环境搭建 配置网络环境有很多种方法&#xff0c;可以用命令行也可以用图形化界面。ip可以是静态的也可以是动态的。当然要是用SSH访问的话要配置成静态的&#xff0c;但是用校园网的话&#xff0c;又要是动态的&#xff0c;这里就不详细说了。 我们配置ubuntu是为了能…

Java学习路线图(2023版,视频已更新)

PS&#xff1a;注意收藏&#xff0c;此套路线图会不定期更新!点这里跳转&#xff1a;2023年Java程序员学习路线图入门&#xff1a; Java SE基础 → Java Web(含数据库H5jsvue)中级&#xff1a; Maven → Git → SSM框架 → MybatisPlus → Spring Boot→ 《传智健康》项目实战 …

北大硕士LeetCode算法专题课-基础算法查找

算法专题系列&#xff1a; 北大硕士LeetCode算法专题课---算法复杂度介绍_骨灰级收藏家的博客-CSDN博客 北大硕士LeetCode算法专题课-基础算法之排序_骨灰级收藏家的博客-CSDN博客 查找算法 查找算法也可以叫搜索算法。 查找算法就是从一个有序数列中找出一个特定的数&am…

66.物体检测算法:区域卷积神经网络(R-CNN)系列

1. R-CNN ps&#xff1a;在计算机视觉中&#xff0c;深度学习之前&#xff0c;分类器用的是SVM 2. 兴趣区域&#xff08;RoI&#xff09;池化层 目的是为了让每个锚框都可以变成一个自己想要的形状。 3. Fast RCNN 具体步骤如下&#xff1a; 对整张图片用CNN抽特征&#xff…

IT服务管理(ITSM)是什么?ITSM工具哪个好用

什么是IT服务管理&#xff08;ITSM&#xff09; IT 服务管理 (ITSM) 包含一组策略和实践&#xff0c;这些策略和实践可用于为最终用户实施、交付和管理 IT 服务&#xff0c;以满足最终用户的既定需求和企业的既定目标。 在此定义中&#xff0c;最终用户可以包含员工、客户或业…

一网打尽链表的经典OJ题!链表必考笔试题第一弹

目录 0.前言 1. 移除链表元素 2. 反转链表 2.1 方法一(遍历反转链接关系) 2.2 方法二(节点头插构造新链表) 3.链表的中间节点 4. 链表中倒数第k个节点 5. 总结 0.前言 本文所有代码都已传入gitee&#xff0c;可自取 3链表OJ题p1 onlookerzy123456qwq/data_structu…

使用Electron创建桌面程序,从创建到打包

在桌面程序中&#xff0c;使用C#语言可以创建winform和WPF程序&#xff0c;他们2个在Windows中都非常的优秀&#xff0c;还有就是使用QT开发桌面&#xff0c;可以跨平台开发&#xff0c;这三种都是比较“正规”的&#xff0c;而Electron是使用框架开发桌面程序的&#xff0c;还…