docker全解

docker全解

一、docker的基本概念

  1. 什么是docker?

    • docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    • docker的英文翻译是“搬运工”的意思,他搬运的东西就是我们常说的集装箱Container,Container里面装的是任意类型的App,我们的开发人员可以通过docker将App变成一种标准化的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。

    image-20231202165220883

  2. docker与VMware的比较

    DockerVMware
    虚拟化轻量级虚拟化(只虚拟出来容器所需要的资源,软件层面)完全虚拟化(虚拟化硬件)
    启动速度秒级分钟级
    运行性能接近原生5%左右损失
    磁盘占用MBGB
    数量成百上千一般几十台
    隔离性进程级别系统级(更彻底)
    操作系统主要支持Linux几乎所有
    封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统
  3. docker架构

    docker架构主要由以下几个组件组成:

    • Docker Client(docker客户端):用户使用Docker命令行工具与Docker Daemon交互,发送命令来构建、运行和管理容器。
    • Docker Daemon(docker守护进程):运行在主机上,负责管理容器的生命周期,处理容器的创建、启动、停止等操作。它还负责与Docker Registry交互,从Registry中下载镜像并在本地保存。
    • Docker Registry(docker镜像仓库):用户与存储和分享docker镜像。docker官方提供了公共的Registry,称为Docker Hub,也可以在本地搭建私有的Registry。
    • Docker Image(docker镜像):是容器的基础,包含了运行容器所需的所有文件、配置和依赖。Docker镜像可以通过Dockerfile文件来构建,也可以从Docker Registry中获取。
    • Docker Container(docker容器):是docker镜像的运行实例,可以被创建、启动、停止、删除和暂停。它是轻量级的,可以在几毫秒内启动和停止。

    img

    总之,Docker 架构是一个客户端-服务器架构,客户端通过 Docker 命令行工具与 Docker Daemon 交互,Docker Daemon 负责管理容器的生命周期,Docker Registry 用于存储和分享 Docker 镜像,Docker 镜像是容器的基础,Docker 容器是 Docker 镜像的运行实例。

二、docker的安装

  1. 检查之前是否安装过docker,如果有使用yum remove docker卸载
[root@woniu ~]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
  1. 安装yum工具

    [root@woniu ~]# yum -y install yum-utils
    
  2. 配置阿里云镜像,添加docker引擎的yum源

    [root@woniu ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 更新CentOS

    [root@woniu ~]# yum update
    
  4. 列出docker源

    [root@woniu ~]# yum list docker-ce —showduplicates | sort -r
    
  5. 安装docker

    [root@woniu ~]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  6. 检查docker版本号

    [root@woniu ~]# docker -v
    Docker version 24.0.7, build afdd53b
    
  7. 启动docker,并设置自启

    [root@woniu ~]# systemctl start docker
    [root@woniu ~]# systemctl enable docker
    

三、docker容器配置

  1. 配置本地镜像库

    从默认网络获取docker镜像太慢,为了提高速度,可以配置国内的镜像库,可同时配置多个

    [root@woniu ~]# vim /etc/docker/daemon.json
    
    {"registry-mirrors":["https://ung2thfc.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com"]
    }
    

    配置完成之后重启docker

    [root@woniu ~]# systemctl restart docker
    
  2. 设置docker的静态ip

    目的:解决docker运行过程中ip的固定。

    docker容器的ip地址在每次启动后启动顺序设置ip地址,为解决ip地址变动的问题,我们有必要设置docker内部ip地址固定。

  3. 创建自定义网络(network)

    docker network create —driver bridge —subnet=自定义网络ip/16 —gateway=网关值 自定义网络名称

    [root@woniu ~]# docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 wn_docker_net
    

    查看创建的网络

    [root@woniu ~]# docker network ls
    NETWORK ID     NAME                      DRIVER    SCOPE
    70fe2b91dc9a   bridge                    bridge    local
    dc8dac7cdeb4   host                      host      local
    ab24c1a95ddc   none                      null      local
    88dee123076b   ssc-replication_default   bridge    local
    b948a39c4ea9   test_default              bridge    local
    4bb015285e05   wn_docker_net             bridge    local
    
    [root@woniu ~]# docker inspect wn_docker_net
    [{"Name": "wn_docker_net","Id": "4bb015285e05f57ab4b59e30f2eb9c0b76818c850680a3910aca6201aac9bdaa","Created": "2023-09-25T15:33:43.398740767+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.12.0/16","Gateway": "172.18.1.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
    ]
    
  4. docker常见问题IPv4 forwarding disabled的解决方案

    docker run创建运行容器可能出现警告WARNING: IPv4 forwarding is disabled. Networking will not work.解决方案为开启路由转发功能,方式如下

    [root@woniu ~]# vim /etc/sysctl.conf
    

    在末尾追加net.ipv4.ip_forward=1,保存退出(:wq)

    查看是否修改成功

    [root@woniu ~]# sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1
    

    重启network和docker服务

    [root@woniu ~]# systemctl restart network
    [root@woniu ~]# systemctl restart docker
    

四、docker创建运行容器

以mysql为例,步骤如下

  1. 查询mysql镜像

    [root@woniu ~]# docker search mysql
    

    image-20231203151213940

  2. 拉取mysql镜像

    [root@woniu ~]# docker pull mysql
    
  3. 查看下载好的镜像

    [root@woniu ~]# docker images
    REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
    ...
    mysql                 latest    99afc808f15b   3 months ago    577MB
    
  4. 创建一个简单的运行容器(创建成功会自动启动)

    [root@woniu ~]# docker run -it --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql
    3f315b1897133652129196a2dcb5bb0ef5e107d5f0d3019bc5e520a4c54348bf
    

    参数解释

    • -it: 这个参数表示要分配一个交互式(-i)的终端(-t)(tty),通常用于需要交互的容器,比如运行一个 shell。
    • –name mysql_test: 用来指定容器的名称,这里将容器命名为 mysql_test。
    • -p 3306:3306: 这个参数表示将容器的 3306 端口映射到宿主机的 3306 端口,这样可以通过宿主机的 3306 端口访问到容器中运行的 MySQL 服务。
    • -e MYSQL_ROOT_PASSWORD=123: 通过这个参数可以设置 MySQL 的 root 用户的密码为 123。这是通过环境变量的方式传递给 MySQL 容器的。
    • -d: 这个参数表示以守护进程(后台)模式运行容器,容器启动后会在后台持续运行。
    • mysql: 这是指定要运行的镜像,即在这个容器中运行的应用程序。
  5. 查看运行中的容器

    [root@woniu ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                 NAMES
    3f315b189713   mysql     "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp   mysql_test
    
  6. 进入容器内部

    [root@woniu ~]# docker exec -it mysql_test bash
    bash-4.4#
    
  7. 进入mysql

    bash-4.4# mysql -uroot -p123
    
  8. 查看mysql中的数据库

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    这样我们就创建好了一个简单mysql容器了

  9. 使用Navicat连接mysql进行测试

    为了让外界能连docker内部的mysql,我们需要开放防火墙的3306端口或者是直接关闭防火墙(二选一)

    • 开放防火墙的3306端口

      [root@woniu ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
      [root@woniu ~]# firewall-cmd --reload
      

      查看已开放的端口

      [root@localhost conf]# firewall-cmd --zone=public --list-ports 
      3306/tcp
      
    • 关闭并禁用防火墙(不会自启了)

      [root@woniu ~]# systemctl stop firewalld
      [root@woniu ~]# systemctl disable firewalld
      

    image-20231203155752619

    这时候我们发现还是连不上,需要做一些处理,进入容器内的mysql,我们发现mysql8.x版使用的是caching_sha2_password 身份验证机制,而客户端不支持这种新的加密方式,需要进行修改

    mysql> select host,user,plugin,authentication_string from mysql.user;
    +-----------+------------------+-----------------------+---------------------------------
    | host      | user             | plugin                | authentication_string
    +-----------+------------------+-----------------------+---------------------------------
    | %         | root             | caching_sha2_password | $A$005$w(nn{]>%Gz;5^u:9wu3vTHopW
    | localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | root             | caching_sha2_password | $A$005$1,Zq#1:OAK0Y&aSg6C/LCydGb
    +-----------+------------------+-----------------------+---------------------------------
    5 rows in set (0.00 sec)
    

    修改加密规则,更新用户密码并刷新权限

    mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;
    Query OK, 0 rows affected (0.02 sec)mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
    Query OK, 0 rows affected (0.01 sec)mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.01 sec)
    

    退出容器,重启mysql服务

    [root@woniu ~]# docker restart mysql_test
    

    现在的话,就可以连接成功了

    image-20231203160013848

五、docker常用命令及参数

  1. 容器管理:
    • docker run: 创建、运行一个新的容器
      • -d: 以守护进程(后台)模式运行容器
      • -it: 分配一个交互式的终端
      • –name: 指定容器的名称
      • -p: 端口映射
      • –network:指定容器连接的网络。比如指定为我们之前自定义的网络–network wn_docker_net
      • –ip:指定容器内部ip,配合–network使用,如–ip 172.18.12.2
      • -v:用于挂载数据卷,如-v /usr/local/softwares/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf,冒号左边的是外面宿主机的文件路径,冒号右边的是容器内的文件路径,这样我们可以修改外面的文件,容器内部的文件会被自动修改,非常方便
      • -e:用于设置环境变量
      • –restart:设置容器的重启策略。可以使用该参数来指定容器在退出时的重启策略,如 --restart=always 表示容器退出时总是重启。能够使我们在启动docker时,自动启动docker内的各种容器。
      • –rm:容器退出时自动删除。使用该参数可以在容器退出后自动删除容器,适用于临时性任务的容器。
    • docker start: 启动已经停止的容器
    • docker stop: 停止正在运行的容器
    • docker restart: 重启容器
    • docker rm: 删除容器
    • docker ps: 查看正在运行的容器
    • docker ps -a: 查看所有容器(包括已停止的)
    • docker logs: 查看容器的日志,如果在配置文件设置了自定义的日志路径则失效,此时应该把日志挂载到外面查看
  2. 镜像管理:
    • docker pull: 下载镜像
    • docker build: 构建镜像
    • docker push: 推送镜像到仓库
    • docker images: 查看本地的镜像列表
    • docker rmi: 删除镜像
  3. 网络管理:
    • docker network ls: 列出 Docker 网络
    • docker network create: 创建一个新的 Docker 网络
    • docker network connect: 将容器连接到网络
    • docker network disconnect: 将容器从网络断开
  4. 仓库管理:
    • docker login: 登录到 Docker 仓库
    • docker logout: 退出 Docker 仓库
    • docker search: 在 Docker 仓库中搜索镜像
  5. 其他常用命令:
    • docker exec: 在运行的容器中执行命令,一般使用docker exec -it 容器名 bash进入容器内部
    • docker info: 显示 Docker 系统信息
    • docker version: 显示 Docker 版本信息
    • docker-compose: 使用 Docker Compose 来定义和运行多个容器的应用程序
    • docker inspect:用于获取有关 Docker 对象(如容器、镜像、网络等)的详细信息,可以配合管道|grep "x"进行过滤输出结果搜索包含x的指定行

以上是一些常用的 Docker 命令及其参数,当然 Docker 还有更多的命令和选项,具体使用时可以通过docker --help/-h或者 docker [command] --help 来查看详细的帮助信息。

六、Dockerfile

  1. 简介

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

  2. 结构

    image-20231010183346123

  3. 常用指令

    • FROM:指定基础镜像
    • MAINTAINER:指定维护者信息
    • ADD:复制文件
    • ENTRYPOINT:入口点
    • EXPOSE:指定暴露出去的端口号
    • VOLUME:指定挂载点
  4. 我的第一个Dockerfile

    • 创建文件hello,编辑内容,:wq保存退出

      [root@woniu abc]# vim hello
      FROM mysql:5.7
      MAINTAINER XZX
      
    • 使用docker build构建镜像(-t给构建的镜像指定标签,-f指定 Dockerfile 的路径,.表示当前目录)

      [root@woniu abc]# docker build -t mysql:5.7 -f hello .
      
    • 查看构建好的镜像

      [root@woniu abc]# docker images
      REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
      ...
      mysql                 5.7       ddb3dd52c6a0   23 months ago   448MB
      

    一般使用Dockerfile是用来构建自己的项目容器的,使用springboot整合Dockerfile文件,具体可以参考我之前写的博客(springboot整合Dockerfile-CSDN博客)

    FROM anapsix/alpine-java 
    MAINTAINER xzx 
    EXPOSE 9090 
    ADD target/hello-docker-1.0-SNAPSHOT.jar /app.jar 
    ENTRYPOINT ["java","-jar","/app.jar"]
    

    image-20231010193528319

    • FROM:指定基础镜像为java,也就是jdk,java项目需要jdk(或jre)运行
    • MAINTAINER:指定维护者信息为xzx
    • EXPOSE:指定暴露出去的端口号为9090
    • ADD:复制文件,将jar复制到容器的根目录下,命名为app.jar
    • ENTRYPOINT:入口点,容器一旦创建运行,将会自动执行java -jar命令启动项目

七、docker compose

  1. 简介

    docker compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止。简单来说,它可以帮你一次性同时创建并启动多个docker容器。

    查看源图像

  2. 下载(https://github.com/docker/compose/releases?page=3)

    这里我选择了2.14.2版本

    image-20231203184640416

    下载完成后上传到你的虚拟机里的/usr/local/bin/目录下,放到这个目录下可以全局使用,对它添加可执行权限,修改名字简化使用

    [root@woniu abc]# cd /usr/local/bin
    [root@woniu bin]# chmod u+x docker-compose-linux-x86_64
    [root@woniu bin]# mv docker-compose-linux-x86_64 docker-compose
    

    查看版本

    [root@woniu ~]# docker-compose --version
    Docker Compose version v2.14.2
    
  3. 简单使用

    通过使用命令docker-compose up就可以按照当前目录下docker-compose.yml的配置内容进行构建

    image-20231203190431316

    随便进入一个目录,创建docker-compose.yml文件,编辑里面的内容

    version: '2'
    networks:wn_docker_net:external: true
    services:hello-compose01:build: .image: rediscontainer_name: redis_6399ports:- "6399:6379"networks:wn_docker_net:ipv4_address: 172.18.12.102hello-compose02:build: .image: mysqlcontainer_name: mysql_3320environment:- "MYSQL_ROOT_PASSWORD=123"ports:- "3320:3306"networks:wn_docker_net:ipv4_address: 172.18.12.101
    

    build: .指的是会在当前目录下找一个Dockerfile文件来构建镜像,这个就和之前docker run配合参数构建运行容器一样,只不过可以一次性构建多个,之后可以配合Dockerfile来构建分布式项目。

    使用docker-compose up执行

    [root@woniu test]# docker-compose up
    [+] Running 2/2⠿ Container mysql_3320  Created                                                    0.1s⠿ Container redis_6399  Created                                                    0.1s
    Attaching to mysql_3320, redis_6399
    mysql_3320  | 2023-12-03 11:14:26+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.1.0-1.el8 started.
    redis_6399  | 1:C 03 Dec 2023 11:14:26.959 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    ...
    

    Ctrl+C终止

    ^CGracefully stopping... (press Ctrl+C again to force)
    [+] Running 2/2⠿ Container mysql_3320  Stopped                                                    1.8s⠿ Container redis_6399  Stopped                                                    0.3s
    canceled
    

    docker-compose restart重新启动,这次是后台启动,可以做其他操作

    [root@woniu test]# docker-compose restart
    [+] Running 2/2⠿ Container redis_6399  Started                                                    0.4s⠿ Container mysql_3320  Started                                                    0.5s
    [root@woniu test]#
    

    docker ps查看已启动的容器

    [root@woniu test]# docker ps
    CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS              PORTS                                                  NAMES
    e0594171516b   mysql     "docker-entrypoint.s…"   4 minutes ago   Up About a minute   33060/tcp, 0.0.0.0:3320->3306/tcp, :::3320->3306/tcp   mysql_3320
    b3d8853bea34   redis     "docker-entrypoint.s…"   4 minutes ago   Up About a minute   0.0.0.0:6399->6379/tcp, :::6399->6379/tcp              redis_6399
    

    docker-compose stop关闭构建的多个容器

    [root@woniu test]# docker-compose stop
    [+] Running 2/2⠿ Container mysql_3320  Stopped                                                    1.4s⠿ Container redis_6399  Stopped                                                    0.2s
    
  4. Spring Boot整合docker compose(还加了Dockerfile配合)

    编写Dockerfile

    image-20231203192429023image-20231203192459454

    编写docker-compose.yml

    image-20231203192542942image-20231203192605403

    点击docker-compose.yml里面services:左边绿色的按钮运行并进行访问测试,测试成功

    image-20231203192840943

    当中可能出现报错,说需要Docker Desktop才能运行,那就去下好了,地址为docker.com/products/docker-desktop/,下载Windows版的(如果你电脑是Windows系统的话)。

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

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

相关文章

MIT线性代数笔记-第26讲-对称矩阵及正定性

目录 26.对称矩阵及正定性打赏 26.对称矩阵及正定性 实对称矩阵的特征值均为实数,并且一定存在一组两两正交的特征向量 这对于单位矩阵显然成立 证明特征值均为实数: ​    设一个对称矩阵 A A A,对于 A x ⃗ λ x ⃗ A \vec{x} \lambda…

作业12.8

1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数。将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

Matlab simulink PLL学习笔记

本文学习内容:【官方】2022小迈步之 MATLAB助力芯片设计系列(一):电路仿真与模数混合设计基础_哔哩哔哩_bilibili 时域模型 testbench搭建 菜单栏点击simulink 创建空白模型 点击库浏览器 在PLL里面选择一种架构拖拽到画布。 如…

一文理解什么是交叉熵损失函数以及它的作用

今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。 作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到 loss 值收敛,可以认为神经网络模型训练完成。 那么这…

【Java用法】Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 + 数据排序

Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 数据排序 一、业务场景二、Hutool官网树结构工具2.1 介绍2.2 使用2.2.1 定义结构2.2.2 构建Tree2.2.3 自定义字段名 2.3 说明 三、具体的使用场景3.1 实现的效果3.2 业务代码3.3 实现自定义字段的排序 四、踩过的坑4.1 坑…

ambari hive on Tez引擎一直卡住

hive on tez使用./bin/hive启动后一直卡住,无法进入命令行 使用TEZ作为Hive默认执行引擎时,需要在调用Hive CLI的时候启动YARN应用,预分配资源,这需要花一些时间,而使用MapReduce作为执行引擎时是在执行语句的时候才会…

iPaaS架构深入探讨

在数字化时代全面来临之际,企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局,不断推动着企业迈向新的前程。然而,这一数字化时代亦衍生出一系列复杂而深奥的难题:各异系统之间数据孤岛、…

基于SuperMap iObjects Java生成地图瓦片

作者:dongyx 前言 在GIS领域,地图瓦片技术作为GIS领域的关键技术,是提高地图服务性能的关键手段之一。通过预先生成地图的瓦片数据,可以显著提升用户访问地图时的响应速度和体验。SuperMap iObjects for Java作为一款强大的GIS开…

Docker, Docker-compose部署Sonarqube

参考文档 镜像地址: https://hub.docker.com/_/sonarqube/tags Docker部署文档地址 Installing from Docker | SonarQube Docs Docker-compose文档部署地址: Installing from Docker | SonarQube Docs 部署镜像 2.1 docker部署 # 宿主机执行 $. vi /etc/sysctl.conf…

Unity中Batching优化的GPU实例化(4)

文章目录 前言一、构建需要实例化的额外数据二、在顶点着色器,将实例化 ID 从 appdata 存入 v2f 传给片元着色器三、在片断着色器中访问具体的实例化变量三、使用代码修改Shader材质属性,实现GPU实例化后不同对象颜色不同的效果1、在C#测试脚本生成小板凳…

微前端介绍

目录 微前端概念 微前端特性 场景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 无界微前端 方案 无界方案 成本低 速度快 原生隔离 功能强大 总结 前言:微前端已经是一个非常成熟的领域了,但开发者不管采用哪个现…

Leetcode—290.单词规律【简单】

2023每日刷题&#xff08;五十一&#xff09; Leetcode—290.单词规律 实现代码 class Solution { public:bool wordPattern(string pattern, string s) {unordered_map<char, string> m1;unordered_map<string, char> m2;stringstream stro(s);string tmp;for(a…

(env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序

应公司需求&#xff0c;在特定情况下需要修改ip 在开发过程中出现的小插曲 1、第一种情况&#xff1a;重复声明 2、第二种情况&#xff1a; 应官方要求&#xff0c;需要跳转的 tabBar 页面的路径&#xff08;需在 pages.json 的 tabBar 字段定义的页面&#xff09;&#xff0…

ArkTS快速入门

一、概述 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者可以…

硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134849296 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

C语言搭建项目-学生管理系统(非链表)

、 目录 搭建offer.h文件 搭建offer.c中的main函数 密码登入系统 搭建my_oferr.c中的接口函数 使用帮助菜单接口函数 增加学生信息接口函数 查询学生信息接口函数 删除学生信息接口函数 保存学生信息接口 打开文件fopen 关闭文件fclose 判断是否保存文件fwrite 退出执行文件…

年度工作总结怎么写?掌握这些年终总结万能公式,让你的报告出彩无比!

光阴似箭&#xff0c;日月如梭&#xff0c;时间总是不疾不徐地向前奔去&#xff0c;转眼就来到了2023年的最后一个月&#xff0c;12月一到&#xff0c;上班族和打工人又要开始忙活工作总结的事情~ 工作总结&#xff0c;不仅是一年工作的回顾&#xff0c;更是未来规划的起点。你…

cuda lib 线程安全的要义

1, 概述 cuda lib 线程安全的几个多线程的情景&#xff1a; 单卡多线程&#xff1b; 多卡多线程-每卡单线程&#xff1b; 多卡多线程-每卡多线程&#xff1b; 需要考虑的问题&#xff1a; 每个 cublasHandle_t 只能有一个stream么&#xff1f; 每个cusolverHandle_t 只能有一…

python3.5安装教程及环境配置,python3.7.2安装与配置

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python3.5安装教程及环境配置&#xff0c;python3.7.2安装与配置&#xff0c;现在让我们一起来看看吧&#xff01; python 从爬虫开始&#xff08;一&#xff09; Python 简介 首先简介一下Python和爬虫的关系与概念&am…

Spring Cloud Alibaba实践 --Sentinel

sentinel简介 Sentinel的官方标题是&#xff1a;分布式系统的流量防卫兵。从名字上来看&#xff0c;很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件&#xff0c;如果熟悉Spring Cloud的用户&#xff0c;第一反应应该就是Hystrix。但是比较可惜的是Netflix…