通过Dockerfile来实现项目可以指定读取不同环境的yml包

news2025/1/5 8:32:19

通过Dockerfile来实现项目可以指定读取不同环境的yml包

  • 1. 挂载目录
  • 2. DockerFile
  • 3. 运行脚本deploy.sh
  • 4. 运行
    • 查看日志
    • 进入容器
  • 5. 接口测试
    • 修改application-dev.yml
  • 6. 优化Dockerfile
  • 7. 部分参数解释
  • 8. 优化不同环境下的日志也不同
    • 调整 Dockerfile
    • 修改部署脚本 deploy.sh
    • 重新运行dev与prod
    • 最新的目录
  • 9. pplication.yml、application-dev.yml、application-test.yml、application-prod.yml这几个有什么区别?

1. 挂载目录

在这里插入图片描述

注意这里没有使用docker-compose

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. DockerFile

# 使用适合 Java 8 的官方镜像
FROM openjdk:8-jre-slim

# 创建一个目录来存放应用
WORKDIR /app

# 复制 jar 文件和配置文件到容器
COPY ./docker-test-0.0.1-SNAPSHOT.jar /app/docker-test.jar
COPY ./config /app/config

# 创建日志目录
RUN mkdir /app/logs

# 暴露应用端口
EXPOSE 9898

# 设置环境变量默认值
ENV SPRING_PROFILES_ACTIVE=dev

# 运行 Java 应用,指定配置文件位置
ENTRYPOINT ["java", "-jar", "-Dspring.config.location=/app/config/", "-Dlogging.file.name=/app/logs/app.log", "docker-test.jar"]

3. 运行脚本deploy.sh

#!/bin/bash

# 部署脚本使用方式: ./deploy.sh [环境名]
# 环境名应为 dev 或 prod

ENV=$1
if [ "$ENV" != "prod" ] && [ "$ENV" != "dev" ]; then
  echo "请指定正确的环境名: dev 或 prod"
  exit 1
fi

# 定义容器和镜像名称
CONTAINER_NAME="docker-test-$ENV"
IMAGE_NAME="docker-test:$ENV"

# 为不同环境设置不同的端口
if [ "$ENV" == "prod" ]; then
  PORT=19898
else
  PORT=29898
fi

# 构建 Docker 镜像
docker build -t $IMAGE_NAME .

# 停止并删除旧容器
docker rm -f $CONTAINER_NAME

# 运行新的 Docker 容器,挂载日志目录到宿主机,并设置环境变量
docker run -d -p $PORT:9898 \
  -e SPRING_PROFILES_ACTIVE=$ENV \
  -v /Users/fanzhen/Documents/docker-project/logs:/app/logs \
  --name $CONTAINER_NAME $IMAGE_NAME

echo "部署 $ENV 环境完成,访问端口:$PORT"

4. 运行

(base) ➜  docker-project sh deploy.sh dev
[+] Building 6.6s (10/10) FINISHED                                                                                                                                                                                                                    docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                  0.0s
 => => transferring dockerfile: 681B                                                                                                                                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/openjdk:8-jre-slim                                                                                                                                                                                                 6.2s
 => [internal] load .dockerignore                                                                                                                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                       0.0s
 => CACHED [1/5] FROM docker.io/library/openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5                                                                                                                                    0.0s
 => [internal] load build context                                                                                                                                                                                                                                     0.1s
 => => transferring context: 19.55MB                                                                                                                                                                                                                                  0.1s
 => [2/5] WORKDIR /app                                                                                                                                                                                                                                                0.1s
 => [3/5] COPY ./docker-test-0.0.1-SNAPSHOT.jar /app/docker-test.jar                                                                                                                                                                                                  0.0s
 => [4/5] COPY ./config /app/config                                                                                                                                                                                                                                   0.0s
 => [5/5] RUN mkdir /app/logs                                                                                                                                                                                                                                         0.1s
 => exporting to image                                                                                                                                                                                                                                                0.0s
 => => exporting layers                                                                                                                                                                                                                                               0.0s
 => => writing image sha256:c7dcfe05d6c1f467f03a24caafe8a66729f60fcebc2be42b2cbb398885503e1a                                                                                                                                                                          0.0s
 => => naming to docker.io/library/docker-test:dev                                                                                                                                                                                                                    0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/tc1irjdh2hiyks0o0k93zanrx

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview
Error response from daemon: No such container: docker-test-dev
8a8c4a71e3cad36c9fd2057dee84dbbedcefbc07c6d1ee3e057a96936f94bb1c
部署 dev 环境完成,访问端口:29898

在这里插入图片描述

查看日志

(base) ➜  docker-project docker logs docker-test-dev

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.6.13)

2025-01-01 10:28:14.640  INFO 1 --- [           main] c.s.d.dockertest.DockerTestApplication   : Starting DockerTestApplication using Java 1.8.0_342 on 8a8c4a71e3ca with PID 1 (/app/docker-test.jar started by root in /app)
2025-01-01 10:28:14.642  INFO 1 --- [           main] c.s.d.dockertest.DockerTestApplication   : The following 1 profile is active: "dev"
2025-01-01 10:28:15.030  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9898 (http)
2025-01-01 10:28:15.037  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2025-01-01 10:28:15.037  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.68]
2025-01-01 10:28:15.074  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2025-01-01 10:28:15.075  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 412 ms
2025-01-01 10:28:15.239  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9898 (http) with context path ''
2025-01-01 10:28:15.244  INFO 1 --- [           main] c.s.d.dockertest.DockerTestApplication   : Started DockerTestApplication in 0.797 seconds (JVM running for 1.053)
2025-01-01 10:29:49.797  INFO 1 --- [0.0-9898-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-01-01 10:29:49.798  INFO 1 --- [0.0-9898-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2025-01-01 10:29:49.799  INFO 1 --- [0.0-9898-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
2025-01-01 10:29:49.811  INFO 1 --- [0.0-9898-exec-1] c.s.d.dockertest.HeartBeatController     : 当前环境是:范缜
2025-01-01 10:30:42.360  INFO 1 --- [0.0-9898-exec-3] c.s.d.dockertest.HeartBeatController     : 当前环境是:范缜

在这里插入图片描述

进入容器

(base) ➜  docker-project docker exec -it docker-test-dev /bin/bash

在这里插入图片描述
在这里插入图片描述

宿主机中的application-dev.yml
在这里插入图片描述

5. 接口测试

curl -X GET http://0.0.0.0:29898/api/v1/heart-beat

在这里插入图片描述

修改application-dev.yml

修改宿主机中的application-dev.yml
在这里插入图片描述

重新执行运行脚本就可以获取到最新的配置
在这里插入图片描述

6. 优化Dockerfile

# 使用适合 Java 8 的官方镜像,并指定具体的摘要
FROM openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5

# 创建一个目录来存放应用
WORKDIR /app

# 复制 jar 文件和配置文件到容器
COPY ./docker-test-0.0.1-SNAPSHOT.jar /app/docker-test.jar
COPY ./config /app/config

# 创建日志目录
RUN mkdir /app/logs

# 暴露应用端口
EXPOSE 9898

# 设置环境变量默认值
ENV SPRING_PROFILES_ACTIVE=dev

# 运行 Java 应用,指定配置文件位置
ENTRYPOINT ["java", "-jar", "-Dspring.config.location=/app/config/", "-Dlogging.file.name=/app/logs/app.log", "docker-test.jar"]

通过FROM openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5我就指定了每次运行得jdk,是我们已经下载的docker image

(base) ➜  docker-project sh deploy.sh prod
[+] Building 0.0s (10/10) FINISHED                                                                                                                                                                                                                         docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                       0.0s
 => => transferring dockerfile: 972B                                                                                                                                                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5                                                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                            0.0s
 => [1/5] FROM docker.io/library/openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5                                                                                                                                                0.0s
 => [internal] load build context                                                                                                                                                                                                                                          0.0s
 => => transferring context: 995B                                                                                                                                                                                                                                          0.0s
 => CACHED [2/5] WORKDIR /app                                                                                                                                                                                                                                              0.0s
 => CACHED [3/5] COPY ./docker-test-0.0.1-SNAPSHOT.jar /app/docker-test.jar                                                                                                                                                                                                0.0s
 => CACHED [4/5] COPY ./config /app/config                                                                                                                                                                                                                                 0.0s
 => CACHED [5/5] RUN mkdir /app/logs                                                                                                                                                                                                                                       0.0s
 => exporting to image                                                                                                                                                                                                                                                     0.0s
 => => exporting layers                                                                                                                                                                                                                                                    0.0s
 => => writing image sha256:f2ff23fd6cbdd0711a2236ed8fef5741a440ce0c9eef1de0729f0fe90bd5cd8f                                                                                                                                                                               0.0s
 => => naming to docker.io/library/docker-test:prod                                                                                                                                                                                                                        0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/w8k62khao04fqmmn40xbtlxkp

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview
Error response from daemon: No such container: docker-test-prod
26f15fa78e16ace7184b0350006371a9decb2311bc6df4753f2a3006b79ba726
部署 prod 环境完成,访问端口:19898

再次运行脚本就是秒启动了

在这里插入图片描述

7. 部分参数解释

  1. -Dspring.config.location=/app/config/ 是一个 JVM(Java Virtual Machine)系统属性,用于指定 Spring Boot 应用的配置文件位置。
    在这里插入图片描述

  2. -Dlogging.file.name=/app/logs/app.log Dockerfile 中使用的 ENTRYPOINT 命令包含了 -Dlogging.file.name=/app/logs/app.log 这一部分。这是一个 JVM(Java Virtual Machine)系统属性,用于指定日志文件的输出路径,特别是对于使用 Spring Boot 构建的 Java 应用。这样的设置对于管理容器内应用的日志是非常有用的。
    在这里插入图片描述

8. 优化不同环境下的日志也不同

docker images --digests本地所有镜像的信息,包括仓库名、标签、镜像 ID、创建时间、大小以及摘要(digest)

调整 Dockerfile

# 使用适合 Java 8 的官方镜像,并指定具体的摘要
FROM openjdk:8-jre-slim@sha256:53186129237fbb8bc0a12dd36da6761f4c7a2a20233c20d4eb0d497e4045a4f5

# 创建一个目录来存放应用
WORKDIR /app

# 复制 jar 文件和配置文件到容器
COPY ./docker-test-0.0.1-SNAPSHOT.jar /app/docker-test.jar
COPY ./config /app/config

# 创建日志目录
RUN mkdir /app/logs

# 设置时区
ENV TZ=Asia/Shanghai
RUN apt-get update && apt-get install -y tzdata \
    && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && dpkg-reconfigure -f noninteractive tzdata

# 暴露应用端口
EXPOSE 9898

# 设置环境变量默认值
ENV SPRING_PROFILES_ACTIVE=dev

# 运行 Java 应用,使用环境变量指定配置文件位置和日志文件名
ENTRYPOINT ["java", "-jar", "-Dspring.config.location=/app/config/", "-Dlogging.file.name=${LOG_FILE_PATH}", "docker-test.jar"]

修改部署脚本 deploy.sh

#!/bin/bash

# 部署脚本使用方式: ./deploy.sh [环境名]
# 环境名应为 dev 或 prod

ENV=$1
if [ "$ENV" != "prod" ] && [ "$ENV" != "dev" ]; then
  echo "请指定正确的环境名: dev 或 prod"
  exit 1
fi

# 定义容器和镜像名称
CONTAINER_NAME="docker-test-$ENV"
IMAGE_NAME="docker-test:$ENV"

# 为不同环境设置不同的端口和日志文件路径
if [ "$ENV" == "prod" ]; then
  PORT=19898
  LOG_FILE="/app/logs/prod-app.log"
else
  PORT=29898
  LOG_FILE="/app/logs/dev-app.log"
fi

# 停止之前的容器
docker stop $CONTAINER_NAME

# 停止并删除旧容器
docker rm -f $CONTAINER_NAME

# 构建 Docker 镜像
docker build -t $IMAGE_NAME .

# 检查日志文件是否存在,如果不存在则创建空日志文件
LOG_FILE_PATH="./logs/$ENV-app.log"
if [ ! -f "$LOG_FILE_PATH" ]; then
  touch "$LOG_FILE_PATH"
fi

# 运行新的 Docker 容器,挂载日志目录到宿主机,并设置环境变量
docker run -d -p $PORT:9898 \
  -e SPRING_PROFILES_ACTIVE=$ENV \
  -e LOG_FILE_PATH=$LOG_FILE \
  -v $LOG_FILE_PATH:$LOG_FILE \
  --name $CONTAINER_NAME $IMAGE_NAME

echo "部署 $ENV 环境完成,访问端口:$PORT"

注意这里不需要删除原来的镜像文件,如果换了新的jar包,会构建新的镜像替代原来的镜像

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

重新运行dev与prod

没问题

sh deploy.sh dev
sh deploy.sh prod

最新的目录

请忽略docker-compose
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. pplication.yml、application-dev.yml、application-test.yml、application-prod.yml这几个有什么区别?

在现代软件开发中,尤其是使用Spring Boot这类框架时,application.yml文件通常用来存储应用程序的配置信息。为了适应不同的运行环境(如开发、测试、生产等),通常会有多个这样的配置文件,以便根据环境的不同加载不同的配置。下面是关于你提到的各个文件的详细解释:

  1. application.yml
    这是主配置文件,通常包含所有环境中通用的配置。它是默认被加载的配置文件,无论你运行在哪个环境中。此文件中的配置可以被其他环境专用的配置文件覆盖。

  2. application-dev.yml
    这个文件包含开发环境特有的配置。它通常包括适用于开发环境的数据库连接、API密钥、调试工具配置等。在开发过程中,可以设置Spring Boot使用dev配置文件,使其覆盖application.yml中的通用配置。

  3. application-test.yml
    此文件包含测试环境特有的配置,用于单元测试、集成测试等自动化测试环境。这些配置可能包括指向专门的测试数据库、特定的端口号或服务接口等。在自动化测试时,通过设置Spring Boot使用test配置文件,确保应用运行在适合测试的环境中。

  4. application-prod.yml
    这个文件包含生产环境特有的配置,如生产数据库的凭证、API访问限制、性能优化设置等。在应用部署到生产环境时,这个文件中的配置会覆盖默认的application.yml文件,确保应用按照生产环境的要求运行。

如何切换不同的配置环境
在Spring Boot应用中,你可以通过设置环境变量spring.profiles.active来指定激活哪个配置文件。例如,通过命令行参数来启动应用时指定使用开发配置:

java -jar your-application.jar --spring.profiles.active=dev

或者在环境变量中设置:

export SPRING_PROFILES_ACTIVE=dev

或者idea中的VM增加 -Dspring.profiles.active=prod

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

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

相关文章

开源的go语言统一配置中心 - nacos + nacos go sdk

配置文件实时更新机制的场景需求 配置文件热更新主要应用于需要在不停机的情况下动态调整系统行为的场景,例如修改服务参数、切换数据源等。其原理在于通过一个中心化的管理平台来存储和分发最新的配置信息。当配置文件发生变化时,该平台会主动或被动地…

对45家“AI+安全”产品/方案的分析

一. 关键洞察 “AI+安全”创新非常活跃,一片百家争鸣之势,赛道选择上,以事件分诊Incident Triage、 安全辅助Security Copilots、自动化Automation三者为主为主,这充分反映了当前安全运营的主要需求,在产品理念选择上以 AI 和 自动化为主,这确实又切合上了在关键…

GESP202412 三级【数字替换】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202412 三级] 数字替换 题目描述 小杨有一个包含 n n n 个数字的序列 A A A,即 A [ a 1 , a 2 , … , a n ] A[a_1,a_2,\ldots,a_n] A[a1​,a2​,…,an​],他想将其中大于 k k k 的数字都替换为序列的最大…

springboot集成websokcet+H5开发聊天原型(二)

本文没有写完~~~~ 聊天相关数据结构&#xff1a; 我们初步设计了如下几个数据结构。 //存放 sessionId 与 userId 的map private Map<String,String> sessionId_userId new HashMap<>(); // 用于存储用户与群组的关联关系&#xff0c;键为用户ID&#xff0c;值…

List接口(源码阅读)

文章目录 1.List接口常用方法1.代码2.结果 2.ArrayList底层机制1.结论2.ArrayList底层源码1.代码2.debug添加第一个元素1.进入2.elementData数组存储ArrayList的数据3.初始化为空数组4.首先确保使用size1来计算最小容量5.如果elementData为空&#xff0c;最小容量就是106.modCo…

Python爬虫(一)- Requests 安装与基本使用教程

文章目录 前言一、简介及安装1. 简介2. 安装 Requests2.1 安装2.2 检查安装是否成功 二、使用 Requests 发送 HTTP 请求1. 发送 GET 请求2. 发送 POST 请求3. 发送 PUT 请求4. 发送 DELETE 请求5. 发送 HEAD 请求6. 发送 OPTIONS 请求 三、传递参数1. GET 请求传递 URL 参数1.1…

风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集&#xff0c;86.6&#xff05;准确识别率&#xff0c;11921张图片&#xff0c;支持yolo&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式的标注 数据集下载 yolov11&#xff1a; https://download.csdn.net/download/pbymw8iwm/90206849 yolov…

简易屏幕共享工具-基于WebSocket

前面写了两个简单的屏幕共享工具&#xff0c;不过那只是为了验证通过截屏的方式是否可行&#xff0c;因为通常手动截屏的频率很低&#xff0c;而对于视频来说它的帧率要求就很高了&#xff0c;至少要一秒30帧率左右。所以&#xff0c;经过实际的截屏工具验证&#xff0c;我了解…

python-leetcode-多数元素

169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; class Solution:def majorityElement(self, nums: List[int]) -> int:candidate Nonecount 0for num in nums:if count 0: # 更新候选元素candidate numcount (1 if num candidate else -1)return candidate

js按日期按数量进行倒序排序,然后再新增一个字段,给这个字段赋值 10 到1

效果如下图&#xff1a; 实现思路&#xff1a; 汇总数据&#xff1a;使用 reduce 方法遍历原始数据数组&#xff0c;将相同日期的数据进行合并&#xff0c;并计算每个日期的总和。创建日期映射&#xff1a;创建一个映射 dateMap&#xff0c;存储每个日期的对象列表。排序并添加…

MM-2024 | 智能体遇山开路,遇水架桥! ObVLN:突破障碍,受阻环境中的视觉语言导航

作者&#xff1a;Haodong Hong, Sen Wang, Zi Huang 单位&#xff1a;昆士兰大学 论文链接&#xff1a;Navigating Beyond Instructions: Vision-and-Language Navigation in Obstructed Environments (https://dl.acm.org/doi/pdf/10.1145/3664647.3681640) 代码链接&#…

1Panel自建RustDesk服务器方案实现Windows远程macOS

文章目录 缘起RustDesk 基本信息实现原理中继服务器的配置建议 中继服务器自建指南准备服务器安装1Panel安装和配置 RustDesk 中继服务防火墙配置和安全组配置查看key下载&安装&配置客户端设置永久密码测试连接 macOS安装客户端提示finder写入失败hbbs和hbbr说明**hbbs…

Tube Qualify弯管测量系统在汽车管路三维检测中的应用

从使用量上来说&#xff0c;汽车行业是使用弯管零件数量最大的单一行业。在汽车的燃油&#xff0c;空调&#xff0c;排气&#xff0c;转向&#xff0c;制动等系统中都少不了管路。汽车管件形状复杂&#xff0c;且由于安装空间限制&#xff0c;汽车管件拥有不同弯曲半径&#xf…

Excel文件恢复教程:快速找回丢失数据!

Excel文件恢复位置在哪里&#xff1f; Excel是微软开发的电子表格软件&#xff0c;它为处理数据和组织工作提供了便捷。虽然数据丢失的问题在数字时代已经司空见惯&#xff0c;但对于某些用户来说&#xff0c;恢复未保存/删除/丢失的Excel文件可能会很困难&#xff0c;更不用说…

R语言入门笔记:第一节,快速了解R语言——文件与基础操作

关于 R 语言的简单介绍 上一期 R 语言入门笔记里面我简单介绍了 R 语言的安装和使用方法&#xff0c;以及各项避免踩坑的注意事项。我想把这个系列的笔记持续写下去。 这份笔记只是我的 R 语言入门学习笔记&#xff0c;而不是一套 R 语言教程。换句话说&#xff1a;这份笔记不…

16、【ubuntu】【gitlab】【补充】服务器断电后,重启服务器,gitlab无法访问

背景 接wiki 【服务器断电后&#xff0c;重启服务器&#xff0c;gitlab无法访问】https://blog.csdn.net/nobigdeal00/article/details/144280761 最近不小心把服务器重启&#xff0c;每次重启后&#xff0c;都会出现gitlab无法访问 分析 查看系统正在运行的任务 adminpcad…

汇编环境搭建

学习视频 将MASM所在目录 指定为C盘

两种分类代码:独热编码与标签编码

目录 一、说明 二、理解分类数据 2.1 分类数据的类型&#xff1a;名义数据与序数数据 2.2 为什么需要编码 三、什么是独热编码&#xff1f; 3.1 工作原理&#xff1a;独热编码背后的机制 3.2 应用&#xff1a;独热编码的优势 四、什么是标签编码&#xff1f; 4.1 工作原理&…

二、SQL语言,《数据库系统概念》,原书第7版

文章目录 一、概览SQL语言1.1 SQL 语言概述1.1.1 SQL语言的提出和发展1.1.2 SQL 语言的功能概述 1.2 利用SQL语言建立数据库1.2.1 示例1.2.2 SQL-DDL1.2.2.1 CREATE DATABASE1.2.2.2 CREATE TABLE 1.2.3 SQL-DML1.2.3.1 INSERT INTO 1.3 用SQL 语言进行简单查询1.3.1 单表查询 …

异常与中断(下)

文章目录 一、中断的硬件框架1.1 中断路径上的3个部件1.2 STM32F103的GPIO中断1.2.1 GPIO控制器1.2.2 EXTI1.2.3 NVIC1.2.4 CPU1. PRIMASK2. FAULTMASK3. BASEPRI 1.3 STM32MP157的GPIO中断1.3.1 GPIO控制器1.3.2 EXTI1. 设置EXTImux2. 设置Event Trigger3. 设置Masking4. 查看…