一起学docker(六)| Dockerfile自定义镜像 + 微服务模块实战

news2024/11/26 18:26:40

DockerFile

是什么

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

在这里插入图片描述

构建步骤
  1. 编写Dockerfile文件
  2. docker build命令构建镜像
  3. docker run运行镜像
Dockerfile构建过程
基础知识
  • 每个保留字指令都必须为大写字母且后面要跟随至少一个参数
  • 指令从上到下,顺序执行
  • #号表示注释
  • 每条指令都会创建一个新的镜像层,并对镜像进行提交
Docker执行Dockerfile的大致流程
  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器做出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行Dockerfile中下一条指令直到所有指令都执行完成
总结

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

  • Dockerfile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则可以认为是软件镜像的运行态,也即依照镜像运行的容器实例

Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

在这里插入图片描述

  1. Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等;

  2. Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行 Docker镜像时会真正开始提供服务;

  3. Docker容器,容器是直接提供服务的。

常用保留字指令
关键字作用备注
FROM指定基础镜像指定一个已经存在的镜像作为父镜像,第一条指令必须是FROM
WAINTAINER指定作者信息一般是姓名+邮箱(name<mail>)
LABEL标明dockerfile的标签可以使用Label代替Maintainer,最终都是在docker image基本信息中可以查看
RUN构建镜像时运行的命令容器构建时需要运行的命令;有两种格式:shell格式、exec格式;RUN是在docker build时运行
shell格式在这里插入图片描述
exec格式在这里插入图片描述
EXPOSE暴露端口定义容器运行的时候监听的端口,启动容器的使用-p来绑定暴露端口,格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR指定工作目录指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
ENV设置环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ADD添加文件将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY复制文件类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
VOLUME定义外部可以挂载的数据卷用于数据保存和持久化;
指定build的image哪些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
CMD指定容器启动后的要干的事情在这里插入图片描述Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
ENTRYPOINT也是用来指定一个容器启动时要运行的命令类似于 CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
  • RUN和CMD的区别

    • CMD是在docker run时运行
    • RUN是在docker build时运行
  • ENTRYPOINT

    • 命令格式:ENTRYPOINT ["<executeable>", "<param1>", "<param2>",...]

    • ENTRYPOINT可以和CMD一起用,一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指令,他两个组合会变成<ENTRYPOINT>"<CMD>"

    • 案例:

      假设已通过 Dockerfile 构建了 nginx:test 镜像:

      • FROM nginx
        
        ENTRYPOINT ["nginx", "-c"]  # 定参
        CMD ["/etc/nginx/nginx.conf"]  # 变参
        
      • 是否传参Docker命令衍生出的实际命令
        按照dockerfile编写执行docker run nginx:testnginx -c /etc/nginx/nginx.conf
        传参运行docker run nginx:test -c /etc/nginx/new.confnginx -c /etc/nginx/new.conf

总结:

在这里插入图片描述

自定义centos镜像
  1. 编写dockerfile文件

    FROM centos:7
    MAINTAINER jiang<2790810983@qq.com>
    
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    
    #安装vim编辑器
    RUN yum -y install vim
    #安装ifconfig命令查看网络IP
    RUN yum -y install net-tools
    
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "------ok--------"
    
    CMD /bin/bash
    
    [root@VM-4-9-centos dockerfile]# pwd
    /dockerfile
    [root@VM-4-9-centos dockerfile]# cat mydockerfile-centos 
    FROM centos:7
    MAINTAINER jiang<2790810983@qq.com>
    
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    
    #安装vim编辑器
    RUN yum -y install vim
    #安装ifconfig命令查看网络IP
    RUN yum -y install net-tools
    
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "------ok--------"
    
    CMD /bin/bash
    
  2. 构建docker build -f mydockerfile-centos -t mycentos:1.0 .(注意:. 前面有空格;官方命名Dockerfile,使用其编写文件,build时不需要-f指定文件)

    [root@VM-4-9-centos dockerfile]# docker build -f mydockerfile-centos -t mycentos:1.0 .
    [+] Building 76.7s (8/8) FINISHED                                                                                                                                           docker:default
     => [internal] load build definition from mydockerfile-centos                                                                                                                         0.0s
     => => transferring dockerfile: 318B                                                                                                                                                  0.0s
     => [internal] load .dockerignore                                                                                                                                                     0.0s
     => => transferring context: 2B                                                                                                                                                       0.0s
     => [internal] load metadata for docker.io/library/centos:7                                                                                                                          16.9s
     => [1/4] FROM docker.io/library/centos:7@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987                                                                    11.8s
     => => resolve docker.io/library/centos:7@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987                                                                     0.0s
     => => sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987 1.20kB / 1.20kB                                                                                        0.0s
     => => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B                                                                                            0.0s
     => => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB                                                                                        0.0s
     => => sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB                                                                                      6.6s
     => => extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc                                                                                             4.8s
     => [2/4] WORKDIR /usr/local                                                                                                                                                          0.1s
     => [3/4] RUN yum -y install vim                                                                                                                                                     40.6s
     => [4/4] RUN yum -y install net-tools                                                                                                                                                4.3s
     => exporting to image                                                                                                                                                                2.8s 
     => => exporting layers                                                                                                                                                               2.7s 
     => => writing image sha256:b7a758d3704aa39b122ac1684fd8555406a5ea213ae5907308b96a9be53cd38d                                                                                          0.0s 
     => => naming to docker.io/library/mycentos:1.0                                                                                                                                       0.0s 
    [root@VM-4-9-centos dockerfile]# docker images                                                                                                                                             
    REPOSITORY                    TAG                 IMAGE ID       CREATED          SIZE                                                                                                     
    mycentos                      1.0                 b7a758d3704a   27 seconds ago   666MB
    
  3. 运行(可以看到在基础的镜像上增加了vim和查看ip的功能

    [root@VM-4-9-centos dockerfile]# docker run -it b7a758d3704a /bin/bash
    [root@4f4c909635fe local]# vim a.txt
    [root@4f4c909635fe local]# cat a.txt 
    aaa
    [root@4f4c909635fe local]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.5  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:ac:11:00:05  txqueuelen 0  (Ethernet)
            RX packets 8  bytes 656 (656.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
  4. 查看镜像生成过程docker history 镜像ID

    [root@VM-4-9-centos dockerfile]# docker history b7a758d3704a
    IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
    b7a758d3704a   28 minutes ago   CMD ["/bin/sh" "-c" "/bin/bash"]                0B        buildkit.dockerfile.v0
    <missing>      28 minutes ago   CMD ["/bin/sh" "-c" "echo \"------ok--------…   0B        buildkit.dockerfile.v0
    <missing>      28 minutes ago   CMD ["/bin/sh" "-c" "echo $MYPATH"]             0B        buildkit.dockerfile.v0
    <missing>      28 minutes ago   EXPOSE map[80/tcp:{}]                           0B        buildkit.dockerfile.v0
    <missing>      28 minutes ago   RUN /bin/sh -c yum -y install net-tools # bu…   189MB     buildkit.dockerfile.v0
    <missing>      28 minutes ago   RUN /bin/sh -c yum -y install vim # buildkit    274MB     buildkit.dockerfile.v0
    <missing>      29 minutes ago   WORKDIR /usr/local                              0B        buildkit.dockerfile.v0
    <missing>      29 minutes ago   ENV MYPATH=/usr/local                           0B        buildkit.dockerfile.v0
    <missing>      29 minutes ago   MAINTAINER jiang<2790810983@qq.com>             0B        buildkit.dockerfile.v0
    <missing>      23 months ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
    <missing>      23 months ago    /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
    <missing>      23 months ago    /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB     
    [root@VM-4-9-centos dockerfile]# 
    
自定义tomcat镜像
  1. 编写Dockerfile文件

    FROM centos:7
    
    MAINTAINER jiang<2790810983@qq.com>
    
    ADD jdk-8u381-linux-x64.tar.gz /usr/local
    ADD apache-tomcat-9.0.78.tar.gz /usr/local
    
    RUN yum -y install vim
    
    ENV MYPATH /usr/local
    
    WORKDIR $MYPATH
    
    ENV JAVA_HOME /usr/local/jdk1.8.0_381
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.78
    ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.78
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    
    EXPOSE 8080
    
    CMD /usr/local/apache-tomcat-9.0.78/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.78/bin/logs/catalina.out
    
  2. 构建镜像docker build -t tomcat-jiang:1.0 .

    [root@VM-4-9-centos dockerfile]# docker build -t tomcat-jiang:1.0 .
    [+] Building 0.2s (10/10) FINISHED                                                                                                                                          docker:default
     => [internal] load build definition from Dockerfile                                                                                                                                  0.0s
     => => transferring dockerfile: 639B                                                                                                                                                  0.0s
     => [internal] load .dockerignore                                                                                                                                                     0.0s
     => => transferring context: 2B                                                                                                                                                       0.0s
     => [internal] load metadata for docker.io/library/centos:7                                                                                                                           0.0s
     => [1/5] FROM docker.io/library/centos:7                                                                                                                                             0.0s
     => [internal] load build context                                                                                                                                                     0.0s
     => => transferring context: 99B                                                                                                                                                      0.0s
     => CACHED [2/5] ADD jdk-8u381-linux-x64.tar.gz /usr/local                                                                                                                            0.0s
     => CACHED [3/5] ADD apache-tomcat-9.0.78.tar.gz /usr/local                                                                                                                           0.0s
     => CACHED [4/5] RUN yum -y install vim                                                                                                                                               0.0s
     => CACHED [5/5] WORKDIR /usr/local                                                                                                                                                   0.0s
     => exporting to image                                                                                                                                                                0.0s
     => => exporting layers                                                                                                                                                               0.0s
     => => writing image sha256:a955df44eb4b65dee47a3dabdec2df4dd3af83e467d9bc6734ea9da5ebbfaf06                                                                                          0.0s
     => => naming to docker.io/library/tomcat-jiang:1.0 
    [root@VM-4-9-centos dockerfile]# docker images
    REPOSITORY                    TAG                 IMAGE ID       CREATED         SIZE
    tomcat-jiang                  1.0                 a955df44eb4b   2 hours ago     837MB
    mycentos                      1.0                 b7a758d3704a   5 hours ago     666MB
    
  3. 运行即可访问到主页docker run -id --name=tomcat-jiang -p 8080:8080 -v /home/tomcat-jiang/webapps/test:/usr/local/apache-tomcat-9.0.78/webapps/test -v /home/tomcat-jiang/tomcatlogs/:/usr/local/apache-tomcat-9.0.78/logs tomcat-jiang:1.0

虚悬镜像

仓库名、标签信息都是<none>的镜像,俗称dangling image

  • docker image ls -f dangling=true 查看虚悬镜像
  • docker image prune 删除

自定义一个虚悬镜像:

[root@VM-4-9-centos dockerfile]# vim danglingdockerfile
[root@VM-4-9-centos dockerfile]# cat danglingdockerfile 
FROM ubuntu

CMD echo'--------ok--------'

[root@VM-4-9-centos dockerfile]# docker build -f danglingdockerfile .
[+] Building 17.0s (5/5) FINISHED                                                                                                                                           docker:default
 => [internal] load build definition from danglingdockerfile                                                                                                                          0.0s
 => => transferring dockerfile: 88B                                                                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                                                     16.8s
 => [1/1] FROM docker.io/library/ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322                                                                       0.1s
 => => resolve docker.io/library/ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322                                                                       0.0s
 => => sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322 1.42kB / 1.42kB                                                                                        0.0s
 => => sha256:7cc0576c7c0ec2384de5cbf245f41567e922aab1b075f3e8ad565f508032df17 529B / 529B                                                                                            0.0s
 => => sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1 1.46kB / 1.46kB                                                                                        0.0s
 => exporting to image                                                                                                                                                                0.0s
 => => exporting layers                                                                                                                                                               0.0s
 => => writing image sha256:bceab7bc196f17008c0ef5c5333dc29217c84ab0e4669b0a66021e1481eb5a86                                                                                          0.0s
[root@VM-4-9-centos dockerfile]# docker images
REPOSITORY                    TAG                 IMAGE ID       CREATED          SIZE
mytomcat                      1.0                 85a142640f0d   33 minutes ago   837MB
mingdajiang/mytomcat          1.0                 85a142640f0d   33 minutes ago   837MB
mycentos                      1.0                 b7a758d3704a   3 hours ago      666MB
<none>                        <none>              bceab7bc196f   22 months ago    72.8MB
[root@VM-4-9-centos dockerfile]# docker image ls -f dangling=true
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    bceab7bc196f   22 months ago   72.8MB
[root@VM-4-9-centos dockerfile]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:bceab7bc196f17008c0ef5c5333dc29217c84ab0e4669b0a66021e1481eb5a86

Total reclaimed space: 0B
[root@VM-4-9-centos dockerfile]# docker image ls -f dangling=true
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@VM-4-9-centos dockerfile]# 

Docker微服务实战

  1. 新建微服务模块

  2. 生成jar包

  3. 编写Dockerfile vim Dockerfile

    # 基础镜像
    FROM openjdk:8u102
    # 作者
    MAINTAINER jiang<2790810983@qq.com>
    # 将jar包放到容器中
    COPY finance.jar finance.jar
    # 运行jar包
    ENTRYPOINT ["java", "-jar", "finance.jar"]
    # 暴露端口
    EXPOSE 8080
    
  4. 将微服务jar包上传到和Dockerfile同一目录

    [root@VM-4-9-centos finance]# ls
    Dockerfile  finance.jar
    [root@VM-4-9-centos finance]# 
    
  5. 构建镜像 docker build -t finance:1.0 .

  6. 运行容器 docker run -id -p 9000:8080 --name financeapp -v /home/finance/log:/var/applogs finance:1.0

  7. 访问测试

    在这里插入图片描述

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

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

相关文章

逻辑回归(LR)----机器学习

基本原理 逻辑回归&#xff08;Logistic Regression&#xff0c;LR&#xff09;也称为"对数几率回归"&#xff0c;又称为"逻辑斯谛"回归。 logistic回归又称logistic 回归分析 &#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#…

『年度总结』逐梦编程之始:我的2023学习回顾与展望

目录 这篇博客&#xff0c;我将回顾2023年编程之旅的起点&#xff0c;同时展望2024年的新征程。 前言 我与Python 我与C语言 第一篇正式博客&#xff1a; 第二篇正式博客&#xff08;扫雷&#xff09;&#xff1a; 指针学习笔记: C语言学习笔记&#xff1a; 我与数据结构…

SCT52A40——120V,4A,高频高压侧和低压侧栅极驱动器,替代UCC27200/UCC27201/MIC4604YM等

• 8-24V宽供电电压 • 驱动高侧和低侧N通道MOSFET • 4A峰值输出源电流和汇电流 • 升压电源电压范围可达120V • 集成阴极负载二极管 • TTL兼容输入&#xff0c;-10V输入 • 45ns传输延迟 • 1000pF负载下7ns上升和4.5ns下降时间 • 2ns延迟匹配时间 • 静态电流252uA • 15…

JDK、JRE、JVM的联系与区别

JDK、JRE、JVM的联系与区别 一、JDK,JRE,JVM定义 JDK(Java Development Kit),包含JRE,以及增加编译器和调试器等用于程序开发的文件。 JRE(Java Runtime Environment)&#xff0c;包含Java虚拟机、库函数、运行Java应用程序所必须的文件。 JVM(Java Virtual Machine)是一个虚…

Vue中的选项式 API 和组合式 API,两者有什么区别

Vue中的选项式 API&#xff08;Option API&#xff09;和组合式 API&#xff08;Composition API&#xff09;是两种不同的组件编写方式&#xff0c;它们各有特点和适用场景&#xff1a; 选项式 API&#xff08;Option API&#xff09;: 传统方法&#xff1a;Vue最初的编程范式…

LeetCode 热题 100——42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

一起玩儿物联网人工智能小车(ESP32)——25. 利用超声波传感器测量距离

摘要&#xff1a;本文介绍如何利用超声波传感器测量障碍物的距离 测量距离是智能小车经常要用到的功能&#xff0c;今天就来介绍一个最常用的测量距离的传感器——超声波传感器。 超声波传感器的测距原理是利用超声波发射器向某个方向发射超声波&#xff0c;与此同时&#xff…

Health System Pro - Plug Play Solution

Health System为您提供了可重复使用的健康组件、健康条和碰撞块组件&#xff0c;可以轻松定制和扩展&#xff0c;以满足任何项目的需求。通过使用Health System&#xff0c;您可以节省时间和精力&#xff0c;避免为每个项目或游戏实体重写健康逻辑&#xff0c;从而带来更高效的…

计算机网络(9):无线网络

无线局域网 WLAN 无线局域网常简写为 WLAN (Wireless Local Area Network)。 无线局域网的组成 无线局域网可分为两大类。第一类是有固定基础设施的&#xff0c;第二类是无固定基础设施的。所谓“固定基础设施”是指预先建立起来的、能够覆盖一定地理范围的一批固定基站。 …

Python----matplotlib库

目录 plt库的字体&#xff1a; plt的操作绘图函数&#xff1a; plt.figure(figsizeNone, facecolorNone): plt.subplot(nrows, ncols, plot_number)&#xff1a; plt.axes(rect)&#xff1a; plt.subplots_adjust(): plt的读取和显示相关函数&#xff1a; plt库的基础图…

Day22 二叉树part08 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

二叉树part08 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 方法一&#xff1a;递归法&#xff08;利用二叉搜索树性质&#xff09; class Solution { public:TreeNode* lowestCommonAncestor(TreeN…

74HC595驱动数码管程序

数码管的驱动分静态扫描和动态扫描两种&#xff0c;使用最多的是动态扫描&#xff0c;优点是使用较少的MCU的IO口就能驱动较多位数的数码管。数码管动态扫描驱动电路很多&#xff0c;其中最常见的是74HC164驱动数码管&#xff0c;这种电路一般用三极管作位选信号&#xff0c;用…

管理组件状态

概述 在应用中&#xff0c;界面通常都是动态的。如图1所示&#xff0c;在子目标列表中&#xff0c;当用户点击目标一&#xff0c;目标一会呈现展开状态&#xff0c;再次点击目标一&#xff0c;目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 图1 展开/收起目标…

50、实战 - 利用 conv + bn + relu + add 写一个残差结构

上一节介绍了残差结构&#xff0c;还不清楚的同学可以返回上一节继续阅读。 到了这里&#xff0c;一个残差结构需要的算法基本都介绍完了&#xff0c;至少在 Resnet 这种神经网络中的残差结构是这样的。 本节我们做一个实战&#xff0c;基于之前几节中手写的 conv / bn 算法&…

python封装接口自动化测试套件 !

在Python中&#xff0c;我们可以使用requests库来实现接口自动化测试&#xff0c;并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例&#xff1a; 首先&#xff0c;我们需要安装所需的库&#xff1a; pip install requests …

ssm基于web的志愿者管理系统的设计与实现+vue论文

摘 要 使用旧方法对志愿者管理系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在志愿者管理系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的志愿者…

大数据毕业设计:旅游景点数据爬虫大屏实时监控系统✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

山海鲸可视化软件的优势:数据整合、可视化与个性化定制

随着科技的快速发展&#xff0c;企业数字化转型已成为必然趋势。而对于一些本身没有开发优势或非技术型企业&#xff0c;数字化产品的选择就成为重中之重。作为山海鲸可视化软件的开发者&#xff0c;我们深知这一点&#xff0c;对于企业来说&#xff0c;能选择一个产品一定要有…

电脑软件:CoolUtils Total Excel Converter:解决Excel格式转换难题,提升办公效率

大家在日常办公当中经常会遇到需要把Excel转换为其他文档格式的场景。今天小编给大家介绍一款强大的文件转换工具——Total Excel Converter&#xff0c;有了它&#xff0c;再也不会因为Excel文档格式转换的问题而烦恼了。 一、软件简介 CoolUtils Total Excel Converter官方版…

钡铼工控机BL302+PLC,助力酿酒业转型升级

啤酒是人类非常古老的酒精饮料&#xff0c;是水和茶之后世界上消耗量排名第三的饮料。 啤酒在生产过程中主要有制造麦芽、粉碎原料、糖化、发酵、贮酒後熟、过滤、灌装包装等工序流程。需要用到风选机、筛分机、糖化锅、发酵设备、过滤机、灌装机、包装机等食品机械设备。这些食…