全网最详细kubernetes中的资源

news2024/11/30 4:56:13

1、资源管理介绍

在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。

kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务。

所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。

kubernetes的最小管理单元是pod而不是容器,只能将容器放在 Pod中。

kubernetes一般也不会直接管理Pod,而是通过 Pod控制器 来管理Pod的。

Pod中服务服务的访问是由kubernetes提供的 service 资源来实现。

Pod中程序的数据需要持久化是由kubernetes提供的各种存储系统来实现。

2、资源管理方式

命令式对象管理:直接使用命令去操作kubernetes资源

[root@k8s-master ~]# kubectl run nginx-pod --image lhd/nginx:latest --port=80

命令式对象配置:通过命令配置和配置文件去操作kubernetes资源

[root@k8s-master ~]# kubectl create/patch -f nginx-pod.yaml
声明式对象配置:通过apply命令和配置文件去操作kubernetes资源

[root@k8s-master ~]# kubectl apply -f nginx-pod.yaml


2.1 命令式对象管理

kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署

kubectl  [command]  [type]  [name]  [flags]

comand:指定要对资源执行的操作,例如create、get、delete

type:指定资源类型,比如deployment、pod、service

name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数

[root@k8s-master ~]# kubectl get pod               #查看所有pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          6s
[root@k8s-master ~]# kubectl get pod nginx-pod         #查看某个pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          20m
[root@k8s-master ~]# kubectl get pod nginx-pod -o yaml       #查看某个pod以yaml格式展示
 

2.2 资源类型

2.3 基本命令示例

[root@k8s-master ~]# kubectl version     #查看集群版本
Client Version: v1.30.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.0
[root@k8s-master ~]# kubectl cluster-info    #查看集群信息
Kubernetes control plane is running at https://192.168.182.10:6443
CoreDNS is running at https://192.168.182.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

#创建一个webcluster控制器,控制器中pod数量为2
[root@k8s-master ~]# kubectl create deployment webcluster --image lhd/nginx --replicas 2
deployment.apps/webcluster created
[root@k8s-master ~]# kubectl get deployments.apps         #查看控制器
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
webcluster   2/2     2            2           8s
[root@k8s-master ~]# kubectl explain deployment       #查看资源帮助

[root@k8s-master ~]# kubectl explain deployment.spec        #查看控制器参数帮助

[root@k8s-master ~]# kubectl edit deployments.apps        #编辑控制器配置

#利用补丁更改控制器配置

[root@k8s-master ~]# kubectl patch deployments.apps webcluster -p '{"spec":{"replicas":4}}'
deployment.apps/webcluster patched
[root@k8s-master ~]# kubectl get deployments.apps 
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
webcluster   4/4     4            4           8m38s
#删除资源

[root@k8s-master ~]# kubectl delete deployments.apps  webcluster
deployment.apps "webcluster" deleted
 

2.4 运行和调试命令示例

[root@k8s-master ~]# kubectl run nginx-pod --image lhd/nginx

[root@k8s-master ~]# kubectl get pod
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          39m

#端口暴漏
[root@k8s-master ~]# kubectl expose pod nginx-pod --port 80 --target-port 80
service/nginx-pod exposed
[root@k8s-master ~]# kubectl get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   4d16h
nginx-pod    ClusterIP   10.100.208.73   <none>        80/TCP    6s
[root@k8s-master ~]# curl 10.100.208.73     
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
#查看资源详细信息

[root@k8s-master ~]# kubectl describe pods nginx-pod 
#查看资源日志

[root@k8s-master ~]# kubectl logs pods/nginx-pod 

#运行交互pod

[root@k8s-master ~]# kubectl run -it testpod --image lhd/busybox
If you don't see a command prompt, try pressing enter.
/ # 
/ #                                  #Ctrl + pq退出不停止pod

#进入到已经运行的容器,且容器有交互环境

[root@k8s-master ~]# kubectl attach pods/testpod -it
If you don't see a command prompt, try pressing enter.
/ # 
/ # 
#在已经运行的pod中运行指定命令

[root@k8s-master ~]# kubectl exec -it pods/nginx /bin/bash
#日志文件到pod中

[root@k8s-master ~]# kubectl cp anaconda-ks.cfg nginx:/
[root@k8s-master ~]# kubectl exec -it pods/nginx /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@nginx:/# ls
anaconda-ks.cfg  dev               etc   lib64  opt   run    sys  var
bin         docker-entrypoint.d   home  media  proc  sbin    tmp
boot         docker-entrypoint.sh  lib   mnt    root  srv    usr
root@nginx:/# 
#复制pod中的文件到本机

[root@k8s-master ~]# kubectl cp nginx:/anaconda-ks.cfg anaconda-ks.cfg

2.5 高级命令示例

#利用命令生成yaml模板文件

[root@k8s-master ~]# kubectl create deployment --image lhd/nginx webcluster --dry-run=client -o yaml > webcluster.yml
[root@k8s-master ~]# vim webcluster.yml 
[root@k8s-master ~]# kubectl apply -f webcluster.yml 
deployment.apps/webcluster create

[root@k8s-master ~]# kubectl get deployments.apps 
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
webcluster   2/2     2            2           64s
[root@k8s-master ~]# kubectl delete -f webcluster.yml         #删除控制器

#管理资源标签

[root@k8s-master ~]# kubectl label pods nginx app=lhd     #添加标签
pod/nginx labeled
[root@k8s-master ~]# kubectl get pods --show-labels 
NAME    READY   STATUS    RESTARTS   AGE   LABELS
nginx   1/1     Running   0          18m   app=lhd,run=nginx
#更改标签

[root@k8s-master ~]# kubectl label pods nginx app=webcluster --overwrite 
pod/nginx labeled
[root@k8s-master ~]# kubectl get pods --show-labels 
NAME    READY   STATUS    RESTARTS   AGE   LABELS
nginx   1/1     Running   0          20m   app=webcluster,run=nginx
#删除标签

[root@k8s-master ~]# kubectl label pods nginx app-
pod/nginx unlabeled
[root@k8s-master ~]# kubectl get pods --show-labels 
NAME    READY   STATUS    RESTARTS   AGE   LABELS
nginx   1/1     Running   0          21m   run=nginx
#标签时控制器识别pod示例的标识

[root@k8s-master ~]# kubectl get pods --show-labels 
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
nginx                         1/1     Running   0          23m   run=nginx
webcluster-75bfd95b8f-bqj57   1/1     Running   0          9s    app=webcluster,pod-template-hash=75bfd95b8f
webcluster-75bfd95b8f-km9vs   1/1     Running   0          9s    app=webcluster,pod-template-hash=75bfd95b8f
#删除pod上的标签
[root@k8s-master ~]# kubectl label pods webcluster-75bfd95b8f-bqj57 app-
pod/webcluster-75bfd95b8f-bqj57 unlabeled

#控制器会重新启动新的pod
[root@k8s-master ~]# kubectl get pods --show-labels 
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
nginx                         1/1     Running   0          25m   run=nginx
webcluster-75bfd95b8f-bqj57   1/1     Running   0          89s   pod-template-hash=75bfd95b8f
webcluster-75bfd95b8f-jkcz5   1/1     Running   0          8s    app=webcluster,pod-template-hash=75bfd95b8f
webcluster-75bfd95b8f-km9vs   1/1     Running   0          89s   app=webcluster,pod-template-hash=75bfd95b8f
 

3、什么是pod

Pod是可以创建和管理Kubernetes计算的最小可部署单元。

个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。

个pod类似一个豌豆英,包含一个或多个容器(通常是docker)。

多个容器间共享IPC、Network和UTCnamespace。

3.1 创建自主式pod(生产环境不推荐)

#显示pod的较为详细的信息

[root@k8s-master ~]# kubectl get pods -o wide
NAME                          READY   STATUS    RESTARTS   AGE     IP           NODE        NOMINATED NODE   READINESS GATES
nginx                         1/1     Running   0          35m     10.244.2.2   k8s-node2   <none>           <none>
webcluster-75bfd95b8f-9ct4f   1/1     Running   0          6m46s   10.244.1.5   k8s-node1   <none>           <none>
webcluster-75bfd95b8f-km9vs   1/1     Running   0          11m     10.244.2.4   k8s-node2   <none>           <none>
 

3.2 利用控制器管理pod

#建立控制器并自动运行pod

[root@k8s-master ~]# kubectl create deployment lhd --image lhd/nginx
deployment.apps/lhd created
#为lhd扩容

[root@k8s-master ~]# kubectl scale deployment lhd --replicas 6
deployment.apps/lhd scaled
[root@k8s-master ~]# kubectl get pods
NAME                  READY   STATUS    RESTARTS   AGE
lhd-8dfccfd4f-6j9jt   1/1     Running   0          2s
lhd-8dfccfd4f-6rgnk   1/1     Running   0          2s
lhd-8dfccfd4f-85624   1/1     Running   0          2s
lhd-8dfccfd4f-fb7jd   1/1     Running   0          70s
lhd-8dfccfd4f-jtnrr   1/1     Running   0          2s
lhd-8dfccfd4f-nph4w   1/1     Running   0          2s
#为lhd缩容

[root@k8s-master ~]# kubectl scale deployment lhd --replicas 2
deployment.apps/lhd scaled
[root@k8s-master ~]# kubectl get pods
NAME                  READY   STATUS    RESTARTS   AGE
lhd-8dfccfd4f-fb7jd   1/1     Running   0          107s
lhd-8dfccfd4f-jtnrr   1/1     Running   0          39s
 

3.3 应用版本的更新

#利用控制器建立pod,暴漏端口并访问服务

[root@k8s-master ~]# kubectl create deployment lhd --image lhd/myapp:v1 --replicas 2
deployment.apps/lhd created
[root@k8s-master ~]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
lhd-66c684b494-6lmm4   1/1     Running   0          6s
lhd-66c684b494-9kp7r   1/1     Running   0          6s
[root@k8s-master ~]# kubectl expose deployment lhd --port 80 --target-port 80
service/lhd exposed
[root@k8s-master ~]# curl 10.98.157.207
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
#查看历史版本

[root@k8s-master ~]# kubectl rollout history deployment lhd
deployment.apps/lhd 
REVISION  CHANGE-CAUSE
1         <none>
#更新控制器镜像版本,查看历史版本

[root@k8s-master ~]# kubectl set image deployments/lhd myapp=lhd/myapp:v2
deployment.apps/lhd image updated
[root@k8s-master ~]# kubectl rollout history deployment lhd
deployment.apps/lhd 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
#访问内容测试

[root@k8s-master ~]# curl 10.98.157.207
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>
#版本的回滚

[root@k8s-master ~]# kubectl rollout undo deployment lhd --to-revision 1
deployment.apps/lhd rolled back
[root@k8s-master ~]# curl 10.98.157.207
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
 

3.4 利用yaml文件部署应用

3.4.1 如何获得资源帮助

[root@k8s-master ~]# kubectl explain pod.spec.containers

3.4.2 示例1:运行简单的单个容器pod

[root@k8s-master pod]# kubectl run lhd --image lhd/myapp:v1 --dry-run=client -o yaml > pod.yml
[root@k8s-master pod]# vim pod.yml 

[root@k8s-master pod]# kubectl apply -f pod.yml 
pod/lhd created
[root@k8s-master pod]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
lhd    1/1     Running   0          22s

3.4.3 示例2:运行多个容器pod

注意若多个容器运行在一个pod中,资源共享的同时在使用相同资源时也会干扰,如端口

#在一个pod中开启多个容器时一定要确保容器彼此不能互相干扰

[root@k8s-master pod]# vim pod.yml 

3.4.4 示例3:理解pod间的网络整合

[root@k8s-master pod]# vim pod2.yml

[root@k8s-master pod]# kubectl apply -f pod2.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   2/2     Running   0          6s
[root@k8s-master pod]# kubectl exec test -c busyboxplus -- curl -s localhost
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
 

3.4.5 示例4:端口映射

[root@k8s-master pod]# vim pod3.yml

[root@k8s-master pod]# kubectl apply -f pod3.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
test   1/1     Running   0          8s    10.244.1.22   k8s-node1   <none>           <none>
[root@k8s-master pod]# curl k8s-node1
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
 

3.4.6 示例5:如何设定环境变量

[root@k8s-master pod]# vim pod4.yml 

[root@k8s-master pod]# kubectl apply -f pod4.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   1/1     Running   0          11s
[root@k8s-master pod]# kubectl logs pods/test busybox 
timinglee
 

3.4.7 示例6:资源限制

[root@k8s-master pod]# vim pod5.yml 

[root@k8s-master pod]# kubectl apply -f pod5.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   1/1     Running   0          6s
[root@k8s-master pod]# kubectl describe pods test 

3.4.8 示例7:容器启动管理

[root@k8s-master pod]# vim pod6.yml 

Never表示容器重启后状态显示完成标识

3.4.9 示例8:选择运行节点

[root@k8s-master pod]# kubectl apply -f pod6.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods -o wide 
NAME   READY   STATUS    RESTARTS   AGE   IP            NODE        NOMINATED NODE   READINESS GATES
test   1/1     Running   0          6s    10.244.1.29   k8s-node1   <none>           <none>
 

3.4.10 示例9:共享宿主机网络

[root@k8s-master pod]# kubectl apply -f pod6.yml 
pod/test created
[root@k8s-master pod]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   1/1     Running   0          6s
[root@k8s-master pod]# kubectl exec -it pods/test -c busybox -- /bin/sh
/ # 
/ # ifconfig
与宿主机网络相同

4、pod的生命周期

4.1 INIT容器

Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。


Init 容器与普通的容器非常像,除了如下两点:
        它们总是运行到完成。
        init 容器不支持 Readiness,因为它们必须在 Pod 就绪之前运行完成,每个Init 容器必须运行成功,下一个才能够运行。


如果Pod的 Init 容器失败,Kubernetes 会不断地重启该 Pod,直到 Init 容器成功为止。但是,如果 Pod 对应的 restartPolicy 值为 Never,它不会重新启动。

4.1.1 INIT容器示例

[root@k8s-master pod]# vim pod6.yml 

[root@k8s-master pod]# kubectl apply -f pod6.yml 
pod/initpod created
[root@k8s-master pod]# kubectl get pods
NAME      READY   STATUS     RESTARTS   AGE
initpod   0/1     Init:0/1   0          5s
[root@k8s-master pod]# kubectl logs pods/initpod init-myservice 
wating for myservice
wating for myservice
wating for myservice
wating for myservice
wating for myservice
wating for myservice
wating for myservice
[root@k8s-master pod]# kubectl exec pods/initpod -c init-myservice -- /bin/sh -c "touch /testfile"
[root@k8s-master pod]# kubectl get pods
NAME      READY   STATUS    RESTARTS   AGE
initpod   1/1     Running   0          2m56s
 

4.2 探针

探针是由 kubelet 对容器执行的定期诊断:

ExecAction:在容器内执行指定命令。如果命令退出时返回码为0则认为诊断成功。

TCPSocketAction:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。


HTTPGetAction:对指定的端口和路径上的容器的IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。

livenessProbe:指示容器是否正在运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其 重启策略 的影响。如果容器不提供存活探针,则默认状态为 Success。

readinessProbe:指示容器是否准备好服务请求。如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的IP 地址。初始延迟之前的就绪状态默认为 Failure。如果容器不提供就绪探针,则默认状态为 Success。


startupProbe:指示容器中的应用是否已经启动。如果提供了启动探测(startup probe),则禁用所有其他探测,直到它成功为止。如果启动探测失败,kubelet将杀死容器,容器服从其重启策略进行重启。如果容器没有提供启动探测,则默认状态为成功Success。

StartupProbe与ReadinessProbe、LivenessProbe的区别

如果三个探针同时存在,先执行 StartupProbe 探针,其他两个探针将会被暂时禁用,直到 pod 满足 StartupProbe 探针配置的条件,其他2个探针启动,如果不满足按照规则重启容器。

另外两种探针在容器启动后,会按照配置,直到容器消亡才停止探测,而StartupProbe 探针只是在容器启动后按照配置满足一次后,不在进行后续的探测。

4.2.1 存活探针示例

为了演示效果将端口设定为8080

[root@k8s-master pod]# vim pod.yml 

[root@k8s-master pod]# kubectl apply -f pod.yml 
pod/liveness created
[root@k8s-master pod]# kubectl describe pods
  Warning  Unhealthy  1s (x8 over 14s)  kubelet            Liveness probe failed: dial tcp 10.244.2.26:8080: connect: connection refused

可以看到存活探测失败,kubelet会杀死容器,并且容器将受到其重启策略的影响
[root@k8s-master pod]# kubectl get pods
NAME       READY   STATUS             RESTARTS      AGE
liveness   0/1     CrashLoopBackOff   4 (50s ago)   118s
 

4.2.2 就绪探针示例

[root@k8s-master pod]# vim pod.yml

测试:

[root@k8s-master pod]# kubectl expose pod readiness --port 80 --target-port 80
service/readiness exposed
[root@k8s-master pod]# kubectl get pods 
NAME        READY   STATUS    RESTARTS   AGE
readiness   0/1     Running   0          2m57s

没有准备好说明找不到/test.html这个文件,查看信息后报404

[root@k8s-master pod]# kubectl describe pods readiness
  Warning  Unhealthy  18s (x22 over 80s)  kubelet            Readiness probe failed: HTTP probe failed with statuscode: 404

因此就绪探测失败,端点控制器将从与pod匹配的所有service的端点中删除该pod的IP地址,

初始延迟之前的就绪状态为Failure
[root@k8s-master pod]# kubectl describe services readiness 
Name:              readiness
Namespace:         default
Labels:            name=readiness
Annotations:       <none>
Selector:          name=readiness
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.106.32.215
IPs:               10.106.32.215
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         
Session Affinity:  None
Events:            <none>

在pod中给出这个文件并赋予内容:

[root@k8s-master pod]# kubectl exec pods/readiness -c myapp -- /bin/sh -c "echo test > /usr/share/nginx/html/test.html"
[root@k8s-master pod]# kubectl get pods         #可以看到就绪探测成功的运行起来
NAME        READY   STATUS    RESTARTS   AGE
readiness   1/1     Running   0          4m18s

[root@k8s-master pod]# kubectl describe services readiness 
Name:              readiness
Namespace:         default
Labels:            name=readiness
Annotations:       <none>
Selector:          name=readiness
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.106.32.215
IPs:               10.106.32.215
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.2.27:80
Session Affinity:  None
Events:            <none>
 

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

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

相关文章

csp-j模拟三补题报告

前言 今天题难&#xff0c;排名没进前十 &#xff08;“关于二进制中一的个数的研究与规律”这篇文章正在写&#xff09; 第一题 三个&#xff08;three&#xff09; 我的代码&#xff08;AC&#xff09; #include<bits/stdc.h> #define ll long long using namespac…

快停止这种使用U盘的行为!

前言 现在各行各业的小伙伴基本上都需要用电脑来办公了&#xff0c;你敢说你不需要用电脑办公&#xff1f; 啊哈哈哈&#xff0c;用iPad或者手机办公的也算。 有些小伙伴可能经常996&#xff0c;甚至有时候都是007。有时候到了下班时间&#xff0c;工作还没做完&#xff0c;…

Python技巧:如何处理未完成的函数

一、问题的提出 写代码的时候&#xff0c;我们有时候会给某些未完成的函数预留一个空位&#xff0c;等以后有时间再写具体内容。通常&#xff0c;大家会用 pass 或者 ... &#xff08;省略号&#xff09;来占位。这种方法虽然能让代码暂时不报错&#xff0c;但可能在调试的时候…

精准翻译神器:英汉互译软件的卓越表现

英文作为目前世界上使用最广的一种语言&#xff0c;是的很多先进的科学文献或者一些大厂产品的说明书都有英文的版本。为了方便我们的阅读和学习&#xff0c;现在有不少支持翻译英汉互译的工具&#xff0c;今天我们就一起来讨论一下吧。 1.福昕中英在线翻译 链接直达>>…

二叉树的前序遍历——非递归版本

1.题目解析 题目来源&#xff1a;144.二叉树的前序遍历——力扣 测试用例 2.算法原理 前序遍历&#xff1a; 按照根节点->左子树->右子树的顺序遍历二叉树 二叉树的前序遍历递归版本十分简单&#xff0c;但是如果树的深度很深会有栈溢出的风险&#xff0c;这里的非递归…

【论文笔记】DKTNet: Dual-Key Transformer Network for small object detection

【引用格式】&#xff1a;Xu S, Gu J, Hua Y, et al. Dktnet: dual-key transformer network for small object detection[J]. Neurocomputing, 2023, 525: 29-41. 【网址】&#xff1a;https://cczuyiliu.github.io/pdf/DKTNet%20Dual-Key%20Transformer%20Network%20for%20s…

vue3实现打字机的效果,可以换行

之前看了很多文章,效果是实现了,就是没有自动换行的效果,参考了文章写了一个,先上个效果图,卡顿是因为模仿了卡顿的效果,还是很丝滑的 目录 效果图:代码如下 效果图: ![请添加图片描述](https://i-blog.csdnimg.cn/direct/d8ef33d83dd3441a87d6d033d9e7cafa.gif 代码如下 原…

jmeter学习(8)结果查看

1&#xff09;查看结果树 查看结果树&#xff0c;显示取样器请求和响应的细节以及请求结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据。 2&#xff09;汇总报告 汇总报告&#xff0c;为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似&…

[数据结构] 树

n个结点的有限集合 除了根节点以外&#xff0c;每一个结点有且只有一条与父节点的连线&#xff1b; 总共有N-1条连线。 子树之间不相交。 术语 树的表示 每个结点的结构不知道 可以统一设置结构&#xff0c;优点&#xff1a;处理方便 缺点&#xff1a;会造成空间浪费&…

Chromium 硬件加速开关c++

选项页控制硬件加速开关 1、前端代码 <settings-toggle-button id"hardwareAcceleration"pref"{{prefs.hardware_acceleration_mode.enabled}}"label"$i18n{hardwareAccelerationLabel}"><template is"dom-if" if"[…

6.5 监控和日志 架构模式和应用实践

6.5 监控和日志 架构模式和应用实践 目录概述需求&#xff1a; 设计思路实现思路分析1.集中式监控2.分布式监控3.边缘监控4.集中式日志管理5.分布式日志管理6.实时日志流处理 监控工具最佳实践 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz ,…

基于元神操作系统实现NTFS文件操作(六)

1. 背景 本文主要介绍$Root元文件属性的解析。先介绍元文件各属性的属性体构成&#xff0c;然后结合读取到的元文件内容&#xff0c;对测试磁盘中目标分区的根目录进行展示。 2. $Root元文件属性的解析 使用每个属性头偏移0x04-0x07处的值可以从第一个属性开始依次定位下一个…

Jupyter | jupyter notebook 使用 conda 环境

博客使用更佳 点我进入博客 创建虚拟环境 在 Anaconda Prompt 里面输入&#xff1a; conda create -n env-name并且输入 y 确认。例如我们创建环境名为 jupyter 激活环境 conda activate env-name激活之后发现环境从 base 变为 jupyter(笔者用的 env-name 为 jupyter) …

python-求一个整数的质因数/字符串的镜像/加数

一:求一个整数的质因数 题目描述 编写一个程序&#xff0c;返回给定整数的质因数。 定义函数get_prime_factors()&#xff0c;该函数接受一个参数num&#xff08;正整数&#xff09;。 该函数应返回传入参数的质因数列表&#xff0c;且从小到大排序。 比如150的质因数分解如…

Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程

目录 一、HttpMessageConverter1、RequestBody2、RequestEntity3、ResponseBody4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity7.1、文件下载7.2、文件上传 二、拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序 三、异…

数据结构——计数、桶、基数排序

目录 引言 计数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 桶排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 基数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 排序算法的稳定性 1.稳定性的概念 2.各个排序算法的稳定性 结束语 引…

初识Linux · 自主Shell编写

目录 前言&#xff1a; 1 命令行解释器部分 2 获取用户命令行参数 3 命令行参数进行分割 4 执行命令 5 判断命令是否为内建命令 前言&#xff1a; 本文介绍是自主Shell编写&#xff0c;对于shell&#xff0c;即外壳解释程序&#xff0c;我们目前接触到的命令行解释器&am…

基于vue框架的大学生四六级学习网站设计与实现i8o8z(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,训练听力,学习单词,单词分类,阅读文章,文章类型,学习课程 开题报告内容 基于Vue框架的大学生四六级学习网站设计与实现开题报告 一、研究背景与意义 随着全球化进程的加速和国际交流的日益频繁&#xff0c;英语作为国际通用语言…

22.3 解读k8s服务发现源码

本节重点介绍 : discovery.Manager服务发现管理员 注册各个服务发现源启动各个服务发现源处理服务发现的结果 k8s服务发现 k8s-client informer机制 架构图补充 注册各个服务发现源 位置 D:\go_path\src\github.com\prometheus\prometheus\discovery\manager.go去掉部分细节…

ConcurrentHashMap 中的并行性

ConcurrentHashMap 在多线程应用程序中被广泛使用。多线程应用程序的示例包括在线游戏应用程序、聊天应用程序&#xff0c;它为应用程序增加了并发性的好处。为了使应用程序本质上更具并发性&#xff0c;ConcurrentHashMap 引入了一个名为“并行性”的概念。 在本文中&#xf…