Kubernetes技术详解-从理论到实践-(5)-控制器-Deployment - 详解

news/2025/10/8 23:06:15/文章来源:https://www.cnblogs.com/ljbguanli/p/19130254

Kubernetes技术详解-从理论到实践-(5)-控制器-Deployment - 详解

1 Deployment控制器简介

Deployment是Kubernetes的无状态应用控制器,它通过声明式滚动的方式,完成一组完全相同的Pod的创建、升级、回滚、扩缩容,并始终保持期望的副本数量。

核心能力说明
副本维持通过内部托管的ReplicaSet,确保始终有N个Pod在运行。
滚动升级逐个替换旧版本Pod,业务零中断。
一键回滚任意时刻回退到先前的版本。
水平扩缩kubectl scale或HPA实时调整副本数。

2 Deployment控制器基础

2.1 一个典型的Deployment资源清单文件

[root@master 5-deployment]# cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-dm
spec:
selector:
matchLabels:
app: nginx-dm
replicas: 3
template:
metadata:
labels:
app: nginx-dm
spec:
containers:
- name: nginx
image: nginx:1.27.3
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

这个清单文件的含义是,在集群里持续保持3个nginx:1.27.3 Pod运行,并支持滚动升级/回滚。
各字段的具体含义如下:

字段含义
apiVersion: apps/v1使用apps/v1 API版本。
kind: Deployment资源类型是Deployment。
metadata.name: nginx-deployDeployment本身的名字。
metadata.labels.app: nginx-dm给 Deployment打标签,方便被其它对象(如Service)选择。
spec.replicas: 3期望副本数=3。
spec.selector.matchLabels.app: nginx-dm只管理带有app: nginx-dm标签的Pod。
template用来生成或替换Pod的模板。
template.metadata.labels.app: nginx-dm新Pod会被自动打上app:nginx-dm标签,与selector保持一致。
template.spec.containers[0].name: nginx容器名。
template.spec.containers[0].image: nginx:1.27.3镜像版本。
imagePullPolicy: IfNotPresent本地已有镜像就不拉取。
ports.containerPort: 80容器监听80端口,供后续Service或集群内访问。

2.2 Deployment控制器常见操作

2.2.1 创建名字为nginx-deploy的Deployment控制器
[root@master 5-deployment]# kubectl apply -f nginx-deploy.yaml
deployment.apps/nginx-deploy created
2.2.2 查看Deployment控制器
[root@master 5-deployment]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/3 3 3 4s
[root@master 5-deployment]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-7c7bbf4cc9 3 3 3 9s
[root@master 5-deployment]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-ch6l8 1/1 Running 0 14s
nginx-deploy-7c7bbf4cc9-hhb7z 1/1 Running 0 14s
nginx-deploy-7c7bbf4cc9-vv7ml 1/1 Running 0 14s

可以看到,nginx-deploy自动创建了一个ReplicaSet控制器和三个Pod,这个pod名有规律,前两个字段是Deployment控制器名,前三个字段是ReplicaSet控制器名。

2.2.3 Deployment控制器扩容
[root@master 5-deployment]# kubectl scale deploy nginx-deploy --replicas=5
deployment.apps/nginx-deploy scaled
[root@master 5-deployment]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 5/5 5 5 48s
[root@master 5-deployment]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-ch6l8 1/1 Running 0 51s
nginx-deploy-7c7bbf4cc9-gg6bh 1/1 Running 0 11s
nginx-deploy-7c7bbf4cc9-hhb7z 1/1 Running 0 51s
nginx-deploy-7c7bbf4cc9-vv7ml 1/1 Running 0 51s
nginx-deploy-7c7bbf4cc9-z2ltq 1/1 Running 0 11s
2.2.4 Deployment控制器缩容
[root@master 5-deployment]# kubectl scale deploy nginx-deploy --replicas=1
deployment.apps/nginx-deploy scaled
[root@master 5-deployment]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 1/1 1 1 67s
[root@master 5-deployment]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-vv7ml 1/1 Running 0 69s
2.2.5 查看Deployment控制器的详情
[root@master 5-deployment]# kubectl describe deploy nginx-deploy
Name: nginx-deploy
Namespace: default
CreationTimestamp: Sat, 19 Jul 2025 21:32:18 +0800
Labels: app=nginx-dm
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx-dm
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx-dm
Containers:
nginx:
Image: nginx:1.27.3
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>Mounts: <none>Volumes: <none>Conditions:Type Status Reason---- ------ ------Progressing True NewReplicaSetAvailableAvailable True MinimumReplicasAvailableOldReplicaSets: <none>NewReplicaSet: nginx-deploy-7c7bbf4cc9 (1/1 replicas created)Events:Type Reason Age From Message---- ------ ---- ---- -------Normal ScalingReplicaSet 91s deployment-controller Scaled up replica set nginx-deploy-7c7bbf4cc9 to 3Normal ScalingReplicaSet 51s deployment-controller Scaled up replica set nginx-deploy-7c7bbf4cc9 to 5 from 3Normal ScalingReplicaSet 28s deployment-controller Scaled down replica set nginx-deploy-7c7bbf4cc9 to 1 from 5
2.2.6 Deployment控制器保持pod副本不增不减

这个是通过自动创建的ReplicaSet实现的。刚才我们把deploy的数量动态缩容为1,现在只有一个pod在运行,删除pod后,可以看到会自动生成一个新的pod。

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-vv7ml 1/1 Running 0 115s
[root@master 5-deployment]# kubectl delete pod nginx-deploy-7c7bbf4cc9-vv7ml
pod "nginx-deploy-7c7bbf4cc9-vv7ml" deleted
[root@master 5-deployment]#
[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-g9rp6 1/1 Running 0 5s
2.2.7 Deployment控制器删除
[root@master 5-deployment]# kubectl delete deploy nginx-deploy
deployment.apps "nginx-deploy" deleted
[root@master 5-deployment]# kubectl get pods
No resources found in default namespace.
[root@master 5-deployment]#

3 Deployment升级

3.1 下载新的nginx镜像

下载一个新的nginx镜像,版本为1.27.5(本示例为了演示效果,仅将1.27.3镜像打一个新的tag,用于升级演示)

[root@master 5-deployment]# docker tag nginx:1.27.3 nginx:1.27.5
[root@master 5-deployment]# docker images | grep nginx
nginx 1.27.3 66f8bdd3810c 7 months ago 192MB
nginx 1.27.5 66f8bdd3810c 7 months ago 192MB

3.2 Deployment的三种升级策略

  • RollingUpdate策略:默认策略,先创建新的pod,然后逐步将就得pod替换成新的pod。
  • Recreate策略:直接删除所有旧的Pod并创建新的Pod来替代它们。该策略会导致一段时间内服务不可用。
  • OnDelete策略:手动删除Deployment时,同时删除所有pod。

3.3 示例:RollingUpdate升级效果演示

(1) 准备升级文件

[root@master 5-deployment]# cat nginx-deploy-update-rollingupdate.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-dm
spec:
selector:
matchLabels:
app: nginx-dm
replicas: 3
strategy: # 升级策略
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: nginx-dm
spec:
containers:
- name: nginx
image: nginx:1.27.5 # 这里表示要升级到1.27.5版本
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

采用默认RollingUpdate策略,上述strategy字段中,最多1个pod不可用(maxUnavalible),每次最多新创建1个额外的pod(maxSurge),升级的新版本为1.27.5。
这个文件和nginx-deploy.yaml文件除了上面标的部分,其他完全相同,这样才能保证升级成功,如果deploy的name不一样,那就不是升级,而是新创建资源了。

(2) 升级
创建1.27.3版本的deploy

[root@master 5-deployment]# kubectl apply -f nginx-deploy.yaml
deployment.apps/nginx-deploy created
[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-bj5hh 1/1 Running 0 2s
nginx-deploy-7c7bbf4cc9-kn28k 1/1 Running 0 2s
nginx-deploy-7c7bbf4cc9-xkb9z 1/1 Running 0 2s

执行升级文件,升级文件是从nginx-deploy.yaml修改而来。

[root@master 5-deployment]# kubectl apply -f nginx-deploy-update-rollingupdate.yaml
deployment.apps/nginx-deploy configured

升级过程开始,每次最多1个pod不可用,最多新创建1个额外pod

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-flqn8 1/1 Running 0 1s
nginx-deploy-767c5479df-jfssd 1/1 Running 0 1s
nginx-deploy-767c5479df-m8zb2 0/1 Pending 0 0s
nginx-deploy-7c7bbf4cc9-kn28k 1/1 Terminating 0 9s
nginx-deploy-7c7bbf4cc9-xkb9z 1/1 Running 0 9s
[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-flqn8 1/1 Running 0 2s
nginx-deploy-767c5479df-jfssd 1/1 Running 0 2s
nginx-deploy-767c5479df-m8zb2 0/1 ContainerCreating 0 1s
nginx-deploy-7c7bbf4cc9-kn28k 0/1 Terminating 0 10s
nginx-deploy-7c7bbf4cc9-xkb9z 0/1 Terminating 0 10s

至此,重新创建了三个pod

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-flqn8 1/1 Running 0 2s
nginx-deploy-767c5479df-jfssd 1/1 Running 0 2s
nginx-deploy-767c5479df-m8zb2 1/1 Running 0 1s

查看一下pod的具体详情,可以看到现在运行的已经是1.27.5版本的nginx,滚动升级完成。

[root@master 5-deployment]# kubectl describe pod nginx-deploy-767c5479df-flqn8
Name: nginx-deploy-767c5479df-flqn8
Namespace: default
Priority: 0
Service Account: default
Node: master/192.168.88.130
Start Time: Sat, 19 Jul 2025 21:40:22 +0800
Labels: app=nginx-dm
pod-template-hash=767c5479df
Annotations: <none>Status: RunningIP: 10.42.0.170IPs:IP: 10.42.0.170Controlled By: ReplicaSet/nginx-deploy-767c5479dfContainers:nginx:Container ID: docker://469206f8a5f36f00e50ea1b1ea3fe7d4fda5d3adf97f2a2a52b63abd40544ad7Image: nginx:1.27.5Image ID: docker://sha256:ce663b26176bac0729e88c8008b8dadfc5f164eea15bf7530bf4eed594564b2aPort: 80/TCPHost Port: 0/TCPState: RunningStarted: Sat, 19 Jul 2025 21:40:23 +0800Ready: TrueRestart Count: 0Environment: <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mdk47 (ro)Conditions:Type StatusPodReadyToStartContainers TrueInitialized TrueReady TrueContainersReady TruePodScheduled TrueVolumes:kube-api-access-mdk47:Type: Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds: 3607ConfigMapName: kube-root-ca.crtConfigMapOptional: <nil>DownwardAPI: trueQoS Class: BestEffortNode-Selectors: <none>Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 4m43s default-scheduler Successfully assigned default/nginx-deploy-767c5479df-flqn8 to masterNormal Pulled 4m43s kubelet Container image "nginx:1.27.5" already present on machineNormal Created 4m43s kubelet Created container nginxNormal Started 4m43s kubelet Started container nginx

3.4 示例:Recreate升级效果演示

(1) 准备升级文件

[root@master 5-deployment]# cat nginx-deploy-update-recreate.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx-dm
spec:
selector:
matchLabels:
app: nginx-dm
replicas: 3
strategy: # 升级策略
type: Recreate
template:
metadata:
labels:
app: nginx-dm
spec:
containers:
- name: nginx
image: nginx:1.27.5 # 版本
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80

采用Recreate升级策略,上述strategy字段中,type为Recreate,升级之前将删除所有旧pod,升级的新版本为1.27.5。

(2) 升级
首先确保之前示例创建的资源都已经被删除

[root@master 5-deployment]# kubectl get pods
No resources found in default namespace.

创建1.27.3版本的deploy

[root@master 5-deployment]# kubectl apply -f nginx-deploy.yaml
deployment.apps/nginx-deploy created
[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-gc2qs 1/1 Running 0 3s
nginx-deploy-7c7bbf4cc9-rrlh6 1/1 Running 0 3s
nginx-deploy-7c7bbf4cc9-tcqrk 1/1 Running 0 3s

通过查看pod详情可以看到目前的nginx版本为1.27.3

[root@master 5-deployment]# kubectl describe pod nginx-deploy-7c7bbf4cc9-gc2qs
Name: nginx-deploy-7c7bbf4cc9-gc2qs
Namespace: default
Priority: 0
Service Account: default
Node: master/192.168.88.130
Start Time: Sat, 19 Jul 2025 21:48:59 +0800
Labels: app=nginx-dm
pod-template-hash=7c7bbf4cc9
Annotations: <none>Status: RunningIP: 10.42.0.181IPs:IP: 10.42.0.181Controlled By: ReplicaSet/nginx-deploy-7c7bbf4cc9Containers:nginx:Container ID: docker://ae9678764f374d34949331f8d6bad70fcde699ee8257f92f68de1724b35f7f36Image: nginx:1.27.3Image ID: docker://sha256:66f8bdd3810c96dc5c28aec39583af731b34a2cd99471530f53c8794ed5b423ePort: 80/TCPHost Port: 0/TCPState: RunningStarted: Sat, 19 Jul 2025 21:49:00 +0800Ready: TrueRestart Count: 0Environment: <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-nl4gh (ro)Conditions:Type StatusPodReadyToStartContainers TrueInitialized TrueReady TrueContainersReady TruePodScheduled TrueVolumes:kube-api-access-nl4gh:Type: Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds: 3607ConfigMapName: kube-root-ca.crtConfigMapOptional: <nil>DownwardAPI: trueQoS Class: BestEffortNode-Selectors: <none>Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 10s default-scheduler Successfully assigned default/nginx-deploy-7c7bbf4cc9-gc2qs to masterNormal Pulled 9s kubelet Container image "nginx:1.27.3" already present on machineNormal Created 9s kubelet Created container nginxNormal Started 9s kubelet Started container nginx

执行升级操作

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-7c7bbf4cc9-gc2qs 1/1 Running 0 14s
nginx-deploy-7c7bbf4cc9-rrlh6 1/1 Running 0 14s
nginx-deploy-7c7bbf4cc9-tcqrk 1/1 Running 0 14s
[root@master 5-deployment]# kubectl apply -f nginx-deploy-update-recreate.yaml
deployment.apps/nginx-deploy configured

这里可以看到,之前的三个pod,已经全部被删除,即使新的pod还没创建成功,这就是Recreate策略,升级之前先删除全部旧pod

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-f5l5t 0/1 Pending 0 0s
nginx-deploy-767c5479df-p9fss 0/1 ContainerCreating 0 0s
nginx-deploy-767c5479df-vfjrf 0/1 ContainerCreating 0 0s
[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-f5l5t 1/1 Running 0 1s
nginx-deploy-767c5479df-p9fss 0/1 ContainerCreating 0 1s
nginx-deploy-767c5479df-vfjrf 0/1 ContainerCreating 0 1s

升级完成,所有pod状态为Running

[root@master 5-deployment]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-767c5479df-f5l5t 1/1 Running 0 2s
nginx-deploy-767c5479df-p9fss 1/1 Running 0 2s
nginx-deploy-767c5479df-vfjrf 1/1 Running 0 2s

查看pod详情,可以看到nginx版本已经是1.27.5

[root@master 5-deployment]# kubectl describe pod nginx-deploy-767c5479df-f5l5t
Name: nginx-deploy-767c5479df-f5l5t
Namespace: default
Priority: 0
Service Account: default
Node: master/192.168.88.130
Start Time: Sat, 19 Jul 2025 21:49:19 +0800
Labels: app=nginx-dm
pod-template-hash=767c5479df
Annotations: <none>Status: RunningIP: 10.42.0.183IPs:IP: 10.42.0.183Controlled By: ReplicaSet/nginx-deploy-767c5479dfContainers:nginx:Container ID: docker://c7dab121baa533a757b9f64e5f6598699206dd14f8bc66cc350b6fe756fb43f7Image: nginx:1.27.5Image ID: docker://sha256:ce663b26176bac0729e88c8008b8dadfc5f164eea15bf7530bf4eed594564b2aPort: 80/TCPHost Port: 0/TCPState: RunningStarted: Sat, 19 Jul 2025 21:49:20 +0800Ready: TrueRestart Count: 0Environment: <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-4hk4c (ro)Conditions:Type StatusPodReadyToStartContainers TrueInitialized TrueReady TrueContainersReady TruePodScheduled TrueVolumes:kube-api-access-4hk4c:Type: Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds: 3607ConfigMapName: kube-root-ca.crtConfigMapOptional: <nil>DownwardAPI: trueQoS Class: BestEffortNode-Selectors: <none>Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 23s default-scheduler Successfully assigned default/nginx-deploy-767c5479df-f5l5t to masterNormal Pulled 23s kubelet Container image "nginx:1.27.5" already present on machineNormal Created 23s kubelet Created container nginxNormal Started 23s kubelet Started container nginx

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

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

相关文章

项目案例作业2

案例中的 setter/getter 模式与封装性(姓名:周广磊 学号:202421336092) 2.1 什么是 setter/getter? setter 方法(也称为修改器方法)和 getter 方法(也称为访问器方法)是面向对象编程中用于操作类私有属性的公…

P5664 [CSP-S2019] Emiya 家今天的饭 题解

题目传送门 洛谷 P5664 前言 本题解为作者整合了自己学习其他题解后为自己写的用以复习的笔记,不喜勿喷谢谢,但是有逻辑错误或语言不清晰之处欢迎提出! 题目描述 Emiya 是个擅长做菜的高中生,他共掌握 \(n\) 种烹饪…

网站建设艾瑞市场分析英国设计网站

目录 Optional 的方法 Optional实例 《天道》丁元英经典语录 所谓真经,就是能够达到寂空涅盘的究竟法门。可悟不可修。修为成佛,在求。悟为明性,在知。修行以行制性。悟道以性施行。觉者由心生律;修者以律制心,不落恶果者有信无证,住因住果,住念住心,如是生灭。不昧…

谷歌网站开发用什么框架next wordpress

近日&#xff0c;JetBrains 对外发布两项重要产品更新&#xff1a;专为云端和其他服务器打造的远程开发解决方案&#xff0c;以及轻量级编辑器Fleet。 为IntelliJ 平台引入远程开发支持 在近期陆续发布的2021.3 版本的各 IDE 中&#xff0c;JetBrains 向 IntelliJ 平台添加了远…

PWN手的成长之路-11-CISCN 2019华北 PWN1-栈溢出

远程连接以下靶机,看看交互。file 查看程序文件。checksec 查看程序文件安全属性。开启了 NX 保护,栈上不可执行。IDA 打开程序文件。查看 ain 函数,发现调用了 func 函数。查看 func 函数。这里需要判断 v2 是否等…

sensitive-word:一个简单易用的敏感词过滤框架

这篇文章,分享一个开源项目:sensitive-word 。Github 地址:https://github.com/houbb/sensitive-wordsensitive-word 是一个功能强大的 Java 敏感词过滤框架,它不仅提供了基础的敏感词检测功能,还支持单词标签分类…

回归学习——包机制

回归学习 包机制 包的本质就是文件夹,用来区别类名的命名空间。一个文件在写的时候要把包写在最前面,一般利用公司倒置作为包名,为了能够使用一个包的成员,我们需要在Java程序中明确导入该包,方式为使用‘import语…

哈尔滨中小企业网站制作长沙知名网站

无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器。当然,map 容器也不例外。C++ STL 标准库为 map 容器配备的是双向迭代器(bidirectional iterator)。这意味着,map 容器迭代器只能进行 ++p、p++、--p、p--、*p 操作,并且迭…

网站建设职责网站源码大全

一、需求 用户输入四个季度的数据&#xff0c;根据数据生成柱形统计图&#xff0c;浏览器预览效果如下 二、完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&q…

wordpress动漫主题秦皇岛seo排名

二叉树相关推荐 107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II总结 107.二叉树的层次遍历II 切片本质是一个结构体&#xff0c;包含…

vue 组件的常见8种通信方式

1、通过props传递‌,emit触发自定义事件: 父传子:子组件中通过props接收父组件传递的数据。 ‌子传父:子组件通过emit触发一个事件,父组件监听这个事件来接收数据。 vue2:通过props和$emit vue3:script中setup,…

技能训练企业网站建设可行性分析企业网站建设 百度文库

文章目录 参考环境常量数组不可变性版本限制 constdefine()构造大小写不敏感的常量$case_insensitive 参数PHP7.3PHP8 若 define() 在不支持常量数组的版本中运行 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型、ChatGPTPHP 手册PHP Man…

251008

251008美好的一天从现在开始

vue一键安装

vue一键安装 Microsoft Windows [版本 10.0.26100.4946] (c) Microsoft Corporation。保留所有权利。F:\vue_flask_project\vue_flask_project_one\vue>npm install --global vue-cli npm warn deprecated inflight…

佛山网站建设找哪家wordpress 中文版下载

内联式css样式&#xff0c;直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢&#xff1f;从CSS 样式代码插入的形式来看基本可以分为以下3种&#xff1a;内联式、嵌入式和外部式三种。这一小节先来讲解内联式。 内联式css样式表就是把css代码直接写在现有的HTML标签中&am…

权威的网站建设排行榜男科医院哪家正规医院

模拟伪造请求 方法一&#xff1a;打断点模拟HTTP请求 1、浏览器页面填好内容后&#xff08;不要操作提交&#xff09;&#xff0c;打开fiddler&#xff0c;设置请求前断点&#xff0c;点击菜单fiddler,”Rules”\”Automatic Breakpoints”\”Before Requests” 2、在页面上点…

做网站卖电脑oss cdn wordpress

目录 一、Vite概述 二、Vite构建Vue3工程化项目 三、ViteVue3项目目录结构 四、ViteVue3项目组件&#xff08;SFC入门&#xff09; 五、ViteVue3样式导入方式 六、ViteVue3响应式数据和setup语法糖 一、Vite概述 Vite是一种新型前端构建工具,能够显著提升前端开发体验;Vite结合…

网站页面设计要求wordpress快速登陆插件

动机(Motivate)&#xff1a; 在软件构建过程中&#xff0c;一个请求可能被多个对象处理&#xff0c;但是每个请求在运行时只能有一个接受者&#xff0c;如果显示指定&#xff0c;将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…

如何使用 ManySpeech 调用 SenseVoiceSmall 模型

一、模型与组件简介SenseVoice 模型多语言音频理解开源模型,支持语音识别、语种识别、情感识别等功能,适用于中、粤、英、日、韩等语言。 ManySpeech.AliParaformerAsrC# 语音识别推理库,支持 paraformer-large、pa…

北京免费发布企业信息网站建设网站哪家强

vmware与windows共享文件夹 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 虚拟工具安装好之后&#xff0c;我们就可以在windows和linux设置一个共享目录了,继续看图干活。 设置好共享目录以后&#xff0c;打开终端输入以下命令&#xff0c;就可以再…