初识Docker及管理Docker

Docker部署

  • 初识Docker
    • Docker是什么
    • Docker的核心概念
      • 镜像
      • 容器
      • 仓库
    • 容器优点
    • 容器在内核中支持2种重要技术:
    • Docker容器与虚拟机的区别
  • 安装Docker
    • 源码安装
    • yum安装
    • 检查Docker
  • Docker 镜像操作
    • 配置镜像加速器(阿里系)
    • 搜索镜像
    • 获取镜像
    • 查看镜像信息
      • 镜像本地存储
    • 添加新的镜像名或标签
    • 删除镜像
    • 存储镜像:将镜像保存成为本地文件
    • 导入镜像:将本地镜像文件导入到镜像库中
  • Docker 容器操作
    • 容器的创建
    • 启动容器
    • 查看容器的运行状态
    • 查看容器详细信息
    • 停止容器
    • 删除容器
    • 创建并启动容器
    • 登录容器
    • 复制宿主机文件到容器中
    • 复制容器文件到宿主机中
  • Docker Run 的启动过程
  • docker网络模式
    • Docker 的网络模式
    • host模式
      • 命令格式:
    • container模式
      • 命令格式:
    • none模式
      • 命令格式:
    • bridge模式
      • 命令格式:
    • 自定义网络
      • 命令格式:
    • 查看docker网络列表
  • 资源限制
    • CPU限制
      • 设置单个容器进程能够使用的CPU使用率上限
        • 针对新建的容器
        • 针对已存在的容器
      • 设置多个容器的CPU占用比份额
      • 设置容器绑定指定的CPU
    • 内存限制
      • 设置容器能够使用的内存和swap的上限
    • 磁盘IO限制

初识Docker

Docker是什么

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器

Docker的核心概念

镜像

创建容器的基础,是一个只读的模板文件,里面包含运行容器中的应用程序所需要的所有资料

所有资料
应用程序执行文件、配置文件、动态库文件、依赖包、系统文件和目录等

容器

用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互隔离

仓库

是用来集中保存镜像的地方,有公有仓库私钥仓库之分

容器优点

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:可以即时部署更新和升级。
  • 便携式:可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:可以增加并自动分发容器副本。
  • 可堆叠:可以垂直和即时堆叠服务。

容器在内核中支持2种重要技术:

Docker容器本质就是宿主机的一个进程,Docker容器是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。

Docker容器与虚拟机的区别

docker容器虚拟机
所有容器共享宿主机的内核每个虚拟机都有独立的操作系统和内核
通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量完全隔离。每个虚拟机都有独立的硬件资源分配
秒级启动速度分钟级启动速度
容器相当于宿主机的进程,性能几乎没有损耗需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问
一个宿主机可以启动成百上千个容器最多几十个虚拟机
  • 虚拟机
    在这里插入图片描述
  • Docker
    在这里插入图片描述

安装Docker

源码安装


#推荐使用国内的阿里镜像作为下载源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
#安装所需的docker安装包
yum install -y yum-utils device-mapper-persistent-data lvm2
 
#安装docker的社区版本
yum install docker-ce

#检查docker的是否安装成功
docker -v

#开启docker服务并设置开机自启动
systemctl enable --now docker.service 

在这里插入图片描述

yum安装

dockerk源码包下载地址

cd /opt

# 上传压缩包并解压
tar xf docker-20.10.9.tgz

#将包下面的文件拷贝到 /usr/bin目录
mv docker/* /usr/bin

# 查看是否安装成功
docker -v

#添加docker的系统启动服务
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target
EOF

#开启docker服务并设置开机自启动
systemctl enable --now docker.service 


在这里插入图片描述

检查Docker

docker info 

[root@cgs-1 ~]# docker info 
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 0					# 容器数量
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0						# 镜像数量
 Server Version: 20.10.9		# server 版本
 Storage Driver: overlay2		# docker 使用的是 overlay2 文件驱动
  Backing Filesystem: xfs		# 宿主机上的底层文件系统
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs		# Cgroups 驱动
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 5b46e404f6b9f661a205e28d59c982d3634148f8
 runc version: v1.0.2-0-g52b36a2d
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-1160.119.1.el7.x86_64		# 宿主机的相关信息
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.682GiB
 Name: cgs-1
 ID: 34JI:HKWX:RBLR:BZWN:YKAL:64XR:GWPB:S5YZ:XVPX:WQH5:QA5T:N2FN
 Docker Root Dir: /var/lib/docker					# docker 数据存储目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/				# registry 地址
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

Docker 镜像操作

配置镜像加速器(阿里系)


#获取进行注册阿里云账号,阿里云会根据用户信息通过不同的个人docker镜像源

#浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

mkdir -p /etc/docker

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://{your_id}.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload

systemctl restart docker

#检查docker
docker info
	····
	 Registry Mirrors:							# 加速站点
	  https://{your_id}.mirror.aliyuncs.com/
	 Live Restore Enabled: false

在这里插入图片描述

在这里插入图片描述

搜索镜像

  • 格式:
    docker search [关键字]
    
  • 例:搜索nginx的镜像
    docker search nginx
    
    在这里插入图片描述

获取镜像

  • 格式:
    docker pull <仓库名称:标签>
    

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

  • 例:下载nginx的镜像默认标签
    docker pull nginx
    
    在这里插入图片描述

查看镜像信息

  • 格式:

    docker images [选项]
    
    #常用选项:
    #-q 表示仅显示镜像ID
    
  • 例:查看本地镜像列表

    docker images 
    

    在这里插入图片描述

镜像本地存储

Docker 相关的本地资源存放在 /var/lib/docker/ 目录下
其中containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。
在这里插入图片描述

#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json

在这里插入图片描述

添加新的镜像名或标签

  • 格式:
    docker tag <名称:标签> <新名称:新标签>
    
  • 例:使用原来的nginx的"laster"镜像创建“new”
    docker tag nginx:latest nginx:new
    
    在这里插入图片描述

删除镜像

  • 格式:
    docker rmi <仓库名称:标签> [选项]docker rmi <镜像ID号> [选项]
    
    #常用选项:
    #-f 表示强制删除
    
    #注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
    
  • 例:删除nginx:laster
    docker rmi nginx:latest
    
    在这里插入图片描述

存储镜像:将镜像保存成为本地文件

  • 格式:
    docker save -o <镜像文件路径>  <镜像名或镜像ID>
    
  • 例:存储镜像nginx:new命名为nginx-1存在/opt/nfs目录下
    docker save -o /opt/nfs/nginx-1 nginx:new
    
    在这里插入图片描述

导入镜像:将本地镜像文件导入到镜像库中

  • 格式:
    docker load < <镜像文件路径>docker load -i <镜像文件路径>
    
  • 例:
    docker load -i /opt/nfs/nginx-1
    
    在这里插入图片描述

Docker 容器操作

容器的创建

  • 格式:
    docker create [-i -t] [--name 容器名] <镜像名:标签> [容器启动命令]
    
    常用选项:
    -i:让容器开启标准输入接受用户输入命令
    -t:让Docker分配一个伪终端tty
    -it :合起来实现和容器交互的作用,运行一个交互式会话shell 
    --name : 指定容器名
    
    
  • 例:创建名为nginx-1.20的镜像
    docker create -it --name nginx-1.20 nginx:1.20 /bin/bash
    
    在这里插入图片描述

启动容器

  • 格式:
    docker start <容器名或容器ID>
    
  • 例:启动nginx-1.20
    docker start nginx-1.20
    
    在这里插入图片描述

查看容器的运行状态

  • 格式:
    docker ps -a
    
  • 例:查看所有的容器的运行情况
    docker ps -a
    
    在这里插入图片描述

查看容器详细信息

  • 格式:
    docker inspect <容器名或容器ID>
    
  • 例:查看容器nginx-1.20的详细情况
    docker inspect nginx-1.20
    
    在这里插入图片描述

停止容器

  • 格式:
    docker stop <容器名或容器ID> [-t 等待时间]
    #停止容器,发送 SIGTERM 信号
    #默认等待10sdocker kill <容器名或容器ID>
     #停止容器,默认发送 SIGKILL 信号
    
  • 例:停止容器nginx-1.20
    docker stop nginx-1.20
    
    在这里插入图片描述

删除容器

  • 格式:
    docker rm <容器名或容器ID> [选项]
    #常用选项:
    #-f 表示强制删除
    
  • 例:删除容器nginx-1.20
    docker rm nginx-1.20
    
    在这里插入图片描述

创建并启动容器

  • 格式:
    docker run [-i -t] [--name 容器名] <镜像名:标签> [容器启动命令]
    
  • 例:创建并启动nginx-1.20
    docker run -it --name nginx-1.20 nginx:1.20 /bin/bash
    
    在这里插入图片描述

登录容器

  • 格式:
    docker  exec -it <容器名或容器ID>  sh|bash
    
  • 例:登录容器nginx-1.20
    docker  exec -it nginx-1.20 bash
    
    在这里插入图片描述

复制宿主机文件到容器中

  • 格式:
    docker cp <宿主机文件路径 ><容器名或容器ID:绝对路径>
    
  • 例:将宿主机内/opt/docker-20.10.9.tgz文件复制到容器nginx-1.20的/opt目录中
    docker cp /opt/docker-20.10.9.tgz nginx-1.20:/opt
    
    在这里插入图片描述

复制容器文件到宿主机中

  • 格式:
    docker cp <容器名或容器ID:绝对路径> <宿主机文件路径 >
    
  • 例:将容器nginx-1.20的/opt/zhuzhu.txt文件复制到宿主机的/opt目录中
    docker cp nginx-1.20:/opt/zhuzhu.txt /opt
    
    在这里插入图片描述

Docker Run 的启动过程

  1. 检查本地是否有指定镜像,如果有则直接使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器
  2. 在只读的镜像层上再挂载一层可读可写的容器层
  3. docker网桥给容器分配一个虚拟接口和IP地址
  4. 使用镜像的默认启动命令或docker run 指定的命令来启动容器,直到容器中的PID=1的主进程退出为止

docker网络模式

Docker 的网络模式

  • Host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
  • Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
  • None:该模式关闭了容器的网络功能。
  • Bridge:默认为该模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat 表配置与宿主机通信。
  • 自定义网络

命令格式:

docker run [--network=网络模式]  ....

host模式

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。
Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。
一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。

命令格式:

docker run --network=host  ....

container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。
新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

命令格式:

docker run --network=container:容器名或容器ID  ....

none模式

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。 也就是说,在这个网络模式下的Docker容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

命令格式:

docker run --network=none  ....

bridge模式

bridge模式是docker的默认网络模式,不用–net参数,就是bridge模式。

相当于Vmware中的 nat 模式,容器使用独立network Namespace,并连接到docker0虚拟网卡。通过docker0网桥以及iptables nat表配置与宿主机通信,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。

命令格式:

docker run [--network=bridge]  ....

自定义网络

可以用来自定义创建一个网段、网桥、网络模式,还可以实现使用自定义网络指定容器IP来创建容器

命令格式:

#创建自定义网络
docker network create --subnet=<自定义网段> --opt "com.docker.network.bridge.name"="<自定义网桥名>"  <自定义网络模式名>          

docker run --network=<自定义网络模式名>  --ip=<自定义容器IP>  ....

查看docker网络列表

  • 格式:
    docker network lsdocker network list
    
    在这里插入图片描述

资源限制

CPU限制

设置单个容器进程能够使用的CPU使用率上限

针对新建的容器
  • 格式:
    docker run [参数]
    
  • 参数
    --cpu-period=<单个CPU的调度周期时间(1000~1000000)  >
    
    --cpu-quota=<容器进程能够使用的最大CPU时间(>=1000<=调度周期时间)>
    
针对已存在的容器

修改 /sys/fs/cgroup/cpu/docker/容器ID/ 目录下的 cpu.cfs_period_us(单个CPU的调度周期时间) cpu.cfs_quota_us(容器进程能够使用的最大CPU时间) 这两个文件的值

设置多个容器的CPU占用比份额

  • 格式:
    docker run [参数]
    
  • 参数
    --cpu-shares=<容器进程最大占用的CPU份额(值为1024的倍数)>
    

设置容器绑定指定的CPU

  • 格式:
    docker run [参数]
    
  • 参数
  • --cpuset-cpus CPUID[,CPUID2,....]
    

内存限制

设置容器能够使用的内存和swap的上限

  • 格式:
    docker run [参数]
    
  • 参数
    -m=<内存值>  
    --memory-swap=<内存和swap的总值>
    
    --memory-swap==<0或不设置,表示容器的swap为内存的2倍>
    									
    --memory-swap==<-1,表示不限制swap的值,宿主机有多少swap,容器就可使用多少>
    

磁盘IO限制

  • 格式:
    docker run [参数]
    
  • 参数
    --device-read-bps    磁盘设备文件路径:速率        #限制容器在磁盘上每秒读的数据量
    --device-write-bps   磁盘设备文件路径:速率        #限制容器在磁盘上每秒写的数据量
    --device-read-iops   磁盘设备文件路径:次数        #限制容器在磁盘上每秒读的次数
    --device-write-iops  磁盘设备文件路径:次数        #限制容器在磁盘上每秒写的次数
    

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

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

相关文章

python实现九九乘法表

1.self i 1 while i<9:j 1while j< i:print("j * i ",end)print(j * i ,end)print(" ",end)j 1i 1print() 实现结果&#xff1a; 2.改进 i 1 while i<9:j 1while j< i:# print("j * i ",end)# print(j * i ,end)# print(&…

CSA笔记1-基础知识和目录管理命令

[litonglocalhost ~]$ 是终端提示符&#xff0c;类似于Windows下的cmd的命令行 litong 当前系统登录的用户名 分隔符 localhost 当前机器名称&#xff0c;本地主机 ~ 当前用户的家目录 $ 表示当前用户为普通用户若为#则表示当前用户为超级管理员 su root 切换root权限…

详解曼达拉升级:如何用网络拓扑结构扩容BSV区块链

​​发表时间&#xff1a;2024年5月24日 BSV曼达拉升级是对BSV基础设施的战略性重塑&#xff0c;意在显著增强其性能&#xff0c;运行效率和可扩容。该概念于2018年提出&#xff0c;其战略落地将使BSV区块链顺利过渡&#xff0c;从现有的基于单一集成功能组件的网络拓扑结构&am…

java面向对象进阶篇--static

一、前言 java进阶篇已经开始了&#xff0c;先从面向对象开始&#xff0c;由于时间原因今天就只更新了static部分&#xff0c;内容上特别详细&#xff0c;一些特别的注意事项也在反复的提醒大家。 温馨提示一下&#xff0c;往后的java篇会越来越难&#xff0c;希望大家能够坚…

Logistic回归(Logistic Regression)

机器学习的分类问题&#xff0c;使用logistics回归&#xff08;虽然叫回归&#xff0c;但是是做分类任务的&#xff09; 一&#xff1a;简介 MINIST Dataset 一个手写数字的数据集 其中有10分类&#xff0c;0&#xff0c;1&#xff0c;2&#xff0c;....&#xff0c;9 未来y…

002uboot Makefile分析

1.分析配置过程 我们把补丁文件打到uboot源码中&#xff0c;&#xff08;补丁文件时根据自己的板子所修改的代码&#xff09;&#xff0c;然后看一下Makefile。 make 100ask24x0_config #这个指令用来配置uboot打入补丁文件后 Makefile中会自动的生成这样的代码&#xff0c;我…

mybatis动态传入参数 pgsql 日期 Interval ,day,minute

mybatis动态传入参数 pgsql 日期 Interval 在navicat中&#xff0c;标准写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL 5 day)在mybatis中&#xff0c;错误写法 SELECT * FROM test WHERE time > (NOW() - INTERVAL#{numbers,jdbcTypeINTEGER} day)报错内…

王道计算机考研数据结构思维导图笔记(持续更新)

第1章 绪论 1.1 数据结构的基本概念 1.1.1 基本概念和术语 1.1.1 数据结构三要素 1.2 算法和算法评价 1.2.1算法的基本概念 1.2.2 算法效率的度量 第2章 线性表 2.1 线性表的定义和基本操作 2.1.1 线性表的定义 2.1.2 线性表的基本操作 2.2.1 顺序表上的定义 2.2.2 顺序…

UE4-光照渲染、自动曝光、雾

目录 一.光源种类 二.灯光的移动性 三.自动曝光 四.指数级高度雾 五.实现光束 一.光源种类 1.定向光源 用来模拟现实中的太阳光。 2.点光源 比如现实中的灯泡 3.聚光源 4.矩形光源 是这几个光源中性能开销最大的&#xff0c;一般不用到游戏场景中&#xff0c;因为游…

项目方案:视频图像结构化分析技术在车辆和人体检测中的应用方案(视频公共安全领域的解决方案)

目录 一、视频结构化分析技术介绍 1、概述 2、定义 3、核心环节 4、应用领域 二、视频中车辆和人的结构化 1、需求 2、信息内容 3、功能说明 &#xff08;1&#xff09;信息智能识别功能 &#xff08;2&#xff09;智能检索功能 &#xff08;3&#xff09;数据统计…

vue学习day11-路由、路由模块的封装、声明式导航-路由的介绍、VueRouter、router-link、自定义高亮类名

32、路由 &#xff08;1&#xff09;路由的介绍 1&#xff09;生活中的路由&#xff1a;设备和ip的映射关系 2&#xff09;路由&#xff1a;一种映射关系 3&#xff09;Vue中的路由&#xff1a;路径与组件的映射关系 &#xff08;根据路由就能知道不同的路径&#xff0c;应…

骑行耳机哪款性价比高?五大热销骑行耳机推荐!

骨传导耳机凭借不入耳佩戴更健康的优点&#xff0c;短时间内迅速风靡骑行圈&#xff0c;其独特的设计不仅为骑行爱好者带来了前所未有的听觉体验&#xff0c;还完美兼顾了安全与便捷。骑行途中&#xff0c;它能够让你在享受音乐的同时&#xff0c;依然保持对周围环境的敏锐感知…

Milvus 核心设计(5)--- scalar indexwork mechanism

目录 背景 Scalar index 简介 属性过滤 扫描数据段 相似性搜索 返回结果 举例说明 1. 属性过滤 2. 扫描数据段 3. 相似性搜索 实际应用中的考虑 Scalar Index 方式 Auto indexing Inverted indexing 背景 继续Milvus的很细设计&#xff0c;前面主要阐述了Milvu…

Java面试八股之Redis哨兵机制

Redis哨兵机制 Redis Sentinel&#xff08;哨兵&#xff09;模式是一种高可用解决方案&#xff0c;用于监控和自动故障转移Redis主从集群。以下是对哨兵模式详细过程的描述&#xff1a; 1. 初始化与配置 部署哨兵节点&#xff1a;在不同的服务器上部署一个或多个Redis Sentin…

达梦数据库的系统视图v$dict_cache_item

达梦数据库的系统视图v$dict_cache_item 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$DICT_CACHE_ITEM 是一个系统视图&#xff0c;用于显示字典缓存&#xff08;Dictionary Cache&#xff09;中的项信息。字典缓存是数据库中的一个重要组件&#xff0c;…

玩转HarmonyOS NEXT之IM应用首页布局

本文从目前流行的垂类市场中&#xff0c;选择即时通讯应用作为典型案例详细介绍HarmonyOS NEXT的各类布局在实际开发中的综合应用。即时通讯应用的核心功能为用户交互&#xff0c;主要包含对话聊天、通讯录&#xff0c;社交圈等交互功能。 应用首页 创建一个包含一列的栅格布…

设计模式总结(设计模式的原则及分类)

1.什么是设计模式&#xff1f; 设计模式(Design pattern)代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结…

数据结构(4.0)——串的定义和基本操作

串的定义(逻辑结构) 串&#xff0c;即字符串(String)是由零个或多个字符组成的有序数列。 一般记为Sa1a2....an(n>0) 其中&#xff0c;S是串名&#xff0c;单引号括起来的字符序列是串的值;ai可以是字母、数字或其他字符&#xff1b;串中字符的个数n称为串的长度。n0时的…

Proxyman for Mac v5.6.1 抓包调试工具

Mac分享吧 文章目录 效果一、下载软件二、功能三、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 四、运行测试1、打开软件 安装完成&#xff01;&#xff01;&#xff01; 效果 一…

SpringBoot介绍以及第一个SpringBoot程序

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 2.第一个SpringBoot程序2.1Spring Boot介绍2.2使用idea创建Spring Boot程序2.2.1 社区版idea2.2.2专业版idea2.2.3创建SpringBoot项目2.2.4项目代码和目录介绍目录介绍pom文件 2.3Web…