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

通过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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AutoSar架构学习笔记

1.AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一个针对汽车行业的软件架构标准,旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元(ECU&#xf…

超越YOLO11!DEIM:先进的实时DETR目标检测

DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage:https://www.shihuahuang.cn/DEIM/ GitHub:https://github.com/ShihuaHuang95/DEIM 1 背景:DETR目标检测框架 目标检…

深入理解 Java 接口的回调机制

前言 回调是一种非常重要的编程技术,它广泛应用于事件驱动的编程、异步任务和框架设计中。在 Java 中,回调机制通常通过 接口 来实现。本篇博客将详细解析 Java 接口的回调原理、实现方式,以及实际开发中的应用场景。 泪崩了,期末…

二、用例图

二、用例图 (一)、用例图的基本概念 1、用例图的定义: 用例图是表示一个系统中用例与参与者关系之间的图。它描述了系统中相关的用户和系统对不同用户提供的功能和服务。 用例图相当于从用户的视角来描述和建模整个系统,分析系统的功能与…

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒; 3. 宏病毒可以感染后缀为.xls的文件;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…

STM32 拓展 低功耗案例3:待机模式 (register)

需求描述 寄存器操作进入待机模式。待机模式的唤醒方式比较有限。我们这次使用WKUP引脚的上升沿唤醒。PA0就是WKUP引脚。 当然PA0仍然需要工作在下拉输入模式,只有这样当按键按下的时候才会有一个上升沿。 由于我们电路中PA0已经连接了LED1,所以要产生…

windows中硬件加速gpu计划开启cpu的使用率居高不下

1.加速gpu计划开启在任务管理器的gpu选项中看不到cuda选项,这给我们进行深度学习训练和推理带来很大影响。 2.开启硬件加速CPU的占用率明显增高,特别用GPU进行实时视频流解码时就不会分配给GPU解码,造成cpu占用居高不下。不利于深度学习训练…

【Go】运行自己的第一个Go程序

运行自己的第一个Go程序 一、Go语言的安装Go环境安装查看是否安装成功配置GOPROXY(代理) 二、Goland安装三、Goland破解四、新建项目 开一篇专栏记录学习Go的过程,一门新语言从hello world开始,这篇文章详细讲解Go语言环境搭建及hello world实现 一、Go语…

提升汽车金融租赁系统的效率与风险管理策略探讨

内容概要 在汽车金融租赁系统这个复杂的生态中,提升整体效率是每个企业都渴望达成的目标。首先,优化业务流程是实现高效运行的基础。通过分析目前的流程,找出冗余环节并进行简化,能够帮助企业缩短审批时间,提高客户满…

计算机网络 (25)IPV6

前言 IPv6,全称为“互联网协议第6版”(Internet Protocol Version 6),是由互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议。 一、产生背景 IPv4,即互联网协议第4版,是现行…

嵌入式系统(将软件嵌入到硬件里面)

目录 Linux起源 查看操作系统的版本 查看内核的版本: 内核系统架构 系统关机或重启命令 关机: 重启: linux下的软件安装 两种软件包管理机制: deb软件包分为两种: 软件包的管理工具:dpkg apt 1…

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤: 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能(可选)6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具,尤其适合数据科学、机器…

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象,有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据: 获取session获取数据: 请求存储: 请求获取: 数据正常打印&#xff1a…

如何在电脑上使用 FaceTime

如今,视频通话已成为与朋友、家人和同事保持联系的重要组成部分。 FaceTime 是 Apple 推出的一款功能丰富的视频通话应用程序。它以其简单性和视频质量而闻名。但如果您想在 PC 上使用 FaceTime该怎么办?虽然 FaceTime 仅适用于 Apple 设备,但…

(框架漏洞)

1.Thinkphp 1.Thinkphp5x远程命令执⾏及getshell 搭建靶场环境 vulhub/thinkphp/5-rce docker-compose up -d #启动环境 ?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami ?s/Index/\think\app/invokefunctio…

探秘Kafka源码:关键内容解析

文章目录 一、以kafka-3.0.0为例1.1安装 gradle 二、生产者源码2.1源码主流程图2.2 初始化2.3生产者sender线程初始化2.4 程序入口2.5生产者 main 线程初始化2.6 跳转到 KafkaProducer构造方法 一、以kafka-3.0.0为例 打开 IDEA,点击 File->Open…->源码包解…

动态库dll与静态库lib编程4:MFC规则DLL讲解

文章目录 前言一、说明二、具体实现2.1新建项目2.2 模块切换的演示 总结 前言 动态库dll与静态库lib编程4:MFC规则DLL讲解。 一、说明 1.前面介绍的均为Win32DLL,即不使用MFC的DLL。 2.MFC规则DLL的特点:DLL内部可以使用MFC类库、可以被其他…

对比学习损失函数 - InfoNCE

InfoNCE Loss :构建高效对比学习模型 引言 对比学习中的InfoNCE损失函数是自监督学习领域的重要进展,它通过最大化正样本对之间的相似度并最小化负样本对的相似度,有效地引导模型学习到数据的本质特征。InfoNCE不仅提高了表示学习的质量&am…

家用万兆网络实践:紧凑型家用服务器静音化改造(二)

大家好,这篇文章我们继续分享家里网络设备的万兆升级和静音改造经验,希望对有类似需求的朋友有所帮助。 写在前面 在上一篇《家用网络升级实践:低成本实现局部万兆(一)》中,我们留下了一些待解决的问题。…

【STC库函数】Compare比较器的使用

如果我们需要比较两个点的电压,当A点高于B点的时候我们做一个操作,当B点高于A点的时候做另一个操作。 我们除了加一个运放或者比较器,还可以直接使用STC内部的一个比较器。 正极输入端可以是P37、P50、P51,或者从ADC的十六个通道…