【k8s 高级调度--污点和容忍】

1、调度概念

在 Kubernetes 中,调度(scheduling)指的是确保 Pod 匹配到合适的节点, 以便 kubelet 能够运行它们。 抢占(Preemption)指的是终止低优先级的 Pod 以便高优先级的 Pod 可以调度运行的过程。 驱逐(Eviction)是在资源匮乏的节点上,主动让一个或多个 Pod 失效的过程。

2、CronJob 计划任务

在k8s中周期性运行计划任务,与linux中的crontab相同

注意点:CronJob执行的时间是controllerr-manager的时间,所以一定要确保controller-manager时间是准确的。

2.1 配置文件

apiVersion: batch/v1
kind: CronJob # 定时任务
metadata:
  name: cron-job-test # 定时任务名字
spec:
  concurrencyPolicy: Allow # 并发调度策略:Allow 允许并发调度,Forbid:不允许并发执行,Replace:如果之前的任务还没执行完,就直接执行新的,放弃上一个任务
  failedJobsHistoryLimit: 1 # 保留多少个失败的任务
  successfulJobsHistoryLimit: 3 # 保留多少个成功的任务
  suspend: false # 是否挂起任务,若为 true 则该任务不会执行
#  startingDeadlineSeconds: 30 # 间隔多长时间检测失败的任务并重新执行,时间不能小于 10
  schedule: "* * * * *" # 调度策略
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: busybox
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

2.2 CronJob执行

[root@k8s-master job]# kubectl create -f cron-job-pd.yaml
cronjob.batch/cron-job-test created


[root@k8s-master job]# kubectl get cronjobs
NAME            SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
cron-job-test   * * * * *   False     0        <none>          11s


[root@k8s-master job]# kubectl get po
NAME                           READY   STATUS      RESTARTS       AGE
configfile-po                  0/1     Completed   0              26h
dns-test                       1/1     Running     2 (36h ago)    3d21h
emptydir-volume-pod            2/2     Running     44 (58m ago)   23h
fluentd-59k8k                  1/1     Running     1 (36h ago)    3d3h
fluentd-hhtls                  1/1     Running     1 (36h ago)    3d3h
host-volume-pod                1/1     Running     0              23h
nfs-volume-pod-1               1/1     Running     0              21h
nfs-volume-pod-2               1/1     Running     0              21h
nginx-deploy-6fb8d6548-8khhv   1/1     Running     29 (54m ago)   29h
nginx-deploy-6fb8d6548-fd9tx   1/1     Running     29 (54m ago)   29h
nginx-sc-0                     1/1     Running     0              3h20m

[root@k8s-master job]# kubectl get cronjobs
NAME            SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
cron-job-test   * * * * *   False     0        42s             2m16s

[root@k8s-master job]# kubectl get po
NAME                           READY   STATUS      RESTARTS       AGE
configfile-po                  0/1     Completed   0              26h
cron-job-test-28484150-wkbgp   0/1     Completed   0              2m4s
cron-job-test-28484151-886j6   0/1     Completed   0              64s
cron-job-test-28484152-srjb4   0/1     Completed   0              4s
dns-test                       1/1     Running     2 (36h ago)    3d21h
emptydir-volume-pod            2/2     Running     46 (35s ago)   23h
fluentd-59k8k                  1/1     Running     1 (36h ago)    3d3h
fluentd-hhtls                  1/1     Running     1 (36h ago)    3d3h
host-volume-pod                1/1     Running     0              23h
nfs-volume-pod-1               1/1     Running     0              21h
nfs-volume-pod-2               1/1     Running     0              21h
nginx-deploy-6fb8d6548-8khhv   1/1     Running     29 (56m ago)   29h
nginx-deploy-6fb8d6548-fd9tx   1/1     Running     29 (56m ago)   29h
nginx-sc-0                     1/1     Running     0              3h22m

[root@k8s-master job]# kubectl logs -f cron-job-test-28484150-wkbgp
Tue Feb 27 15:50:19 UTC 2024
Hello from the Kubernetes cluster

3、初始化容器 InitContainer

  • 相对于postStart来说,首先InitController能够保证一定在EntryPoint之前执行,而postStart不能,其次postStart更适合去执行一些命令操作,而InitController实际就是一个容器,可以在其他基础容器环境下执行更复杂的初始化功能。

3.1 在pod创建的模板中配置 initContainers 参数:

spec:
  template:
    spec:   
      initContainers:
      - image: nginx:1.20 
        imagePullPolicy: IfNotPresent
        command: [ sh,"-c","sleep 10 ;echo 'inited' >> /init.log "]
        name: init-test

3.2 修改存在的deploy资源,如下

在这里插入图片描述

3.3 更新过deploy后,新的pod有个init的过程

在这里插入图片描述

在这里插入图片描述

4、污点和容忍

  • 节点亲和性 是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 (这可能出于一种偏好,也可能是硬性要求)。 污点(Taint) 则相反——它使节点能够排斥一类特定的 Pod。
  • 容忍度(Toleration) 是应用于 Pod 上的。容忍度允许调度器调度带有对应污点的 Pod。 容忍度允许调度但并不保证调度:作为其功能的一部分, 调度器也会评估其他参数。
  • 污点和容忍度(Toleration)相互配合,可以用来避免 Pod 被分配到不合适的节点上。 每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的 Pod, 是不会被该节点接受的。

4.1 污点(Taint)

  • 污点:是标注在节点上的,给一个节点打上污点以后,k8s回认为尽量不要将Pod调度到该节点上,除非该pod上面表示可以容忍该污点,且一个节点可以打多个污点,此时需要pod容忍所有污点才会被调度该节点。
  • 污点的影响:
    • NoSchedule:不能容忍的pod不能被调度到该节点,但是已经存在的节点不会被驱逐。
    • NoExecute:不能容忍的pod会被立即清除,能容忍的pod则会存在于节点上
    • tolerationSeconds属性,如果没设置,则可以一直运行,
    • tolerationSeconds:3600属性,则该pod还能继续在该节点运行3600,超过3600后会被重新调度

4.1.1 为node1节点打上污点

root@k8s-master volume]# kubectl taint node  k8s-node-01   tag=test:NoSchedule
node/k8s-node-01 tainted


[root@k8s-master volume]# kubectl describe no  k8s-node-01
Name:               k8s-node-01
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    ingress=true
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-node-01
                    kubernetes.io/os=linux
                    type=microsvc
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"66:39:6c:7a:92:99"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 10.10.10.178
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/cri-dockerd.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 19 Feb 2024 22:58:42 +0800


# 这个地方可以看到这个新加的污点信息
Taints:             tag=test:NoSchedule
Unschedulable:      false
Lease:
  HolderIdentity:  k8s-node-01
  AcquireTime:     <unset>
  RenewTime:       Wed, 28 Feb 2024 01:17:51 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Mon, 26 Feb 2024 11:32:55 +0800   Mon, 26 Feb 2024 11:32:55 +0800   FlannelIsUp                  Flannel is running on this node
  MemoryPressure       False   Wed, 28 Feb 2024 01:17:30 +0800   Mon, 26 Feb 2024 11:32:41 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Wed, 28 Feb 2024 01:17:30 +0800   Mon, 26 Feb 2024 11:32:41 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Wed, 28 Feb 2024 01:17:30 +0800   Mon, 26 Feb 2024 11:32:41 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Wed, 28 Feb 2024 01:17:30 +0800   Tue, 27 Feb 2024 01:59:54 +0800   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.10.10.177
  Hostname:    k8s-node-01
Capacity:
  cpu:                2
  ephemeral-storage:  62575768Ki
  hugepages-2Mi:      0
  memory:             3861288Ki
  pods:               110
Allocatable:
  cpu:                2
  ephemeral-storage:  57669827694
  hugepages-2Mi:      0
  memory:             3758888Ki
  pods:               110
System Info:
  Machine ID:                 9ee2b84718d0437fa9ea4380bdb34024
  System UUID:                A90F4D56-48C7-6739-A05A-A22B33EC7C5F
  Boot ID:                    6cb5ab07-c82b-4404-8f48-7b9abafe52f1
  Kernel Version:             3.10.0-1160.el7.x86_64
  OS Image:                   CentOS Linux 7 (Core)
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://25.0.3
  Kubelet Version:            v1.25.0
  Kube-Proxy Version:         v1.25.0
PodCIDR:                      10.2.2.0/24
PodCIDRs:                     10.2.2.0/24
Non-terminated Pods:          (7 in total)
  Namespace                   Name                               CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                               ------------  ----------  ---------------  -------------  ---
  default                     fluentd-59k8k                      0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d4h
  default                     nginx-deploy-69ccc996f9-wqp55      100m (5%)     200m (10%)  128Mi (3%)       128Mi (3%)     61m
  ingress-nginx               ingress-nginx-controller-jn65t     100m (5%)     0 (0%)      90Mi (2%)        0 (0%)         2d5h
  kube-flannel                kube-flannel-ds-glkkb              100m (5%)     0 (0%)      50Mi (1%)        0 (0%)         8d
  kube-system                 coredns-c676cc86f-pdsl6            100m (5%)     0 (0%)      70Mi (1%)        170Mi (4%)     6d14h
  kube-system                 kube-proxy-n2w92                   0 (0%)        0 (0%)      0 (0%)           0 (0%)         8d
  kube-system                 metrics-server-7bb86dcf48-hfpb5    100m (5%)     0 (0%)      200Mi (5%)       0 (0%)         3d3h
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests     Limits
  --------           --------     ------
  cpu                500m (25%)   200m (10%)
  memory             538Mi (14%)  298Mi (8%)
  ephemeral-storage  0 (0%)       0 (0%)
  hugepages-2Mi      0 (0%)       0 (0%)
Events:              <none>

4.1.2 查看下master的污点

  • 之前在安装ingress-nginx的时候无法安装再master节点就是因为master节点有污点
  • master节点的污点是:Taints: node-role.kubernetes.io/control-plane:NoSchedule
[root@k8s-master volume]# kubectl  describe no k8s-master
Name:               k8s-master
Roles:              control-plane
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    ingress=true
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-master
                    kubernetes.io/os=linux
                    node-role.kubernetes.io/control-plane=
                    node.kubernetes.io/exclude-from-external-load-balancers=
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"c2:fd:ef:b4:ea:aa"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 10.10.10.100
                    kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/cri-dockerd.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 19 Feb 2024 22:04:42 +0800
Taints:             node-role.kubernetes.io/control-plane:NoSchedule
Unschedulable:      false
Lease:
  HolderIdentity:  k8s-master
  AcquireTime:     <unset>
  RenewTime:       Wed, 28 Feb 2024 01:21:44 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Thu, 22 Feb 2024 18:30:31 +0800   Thu, 22 Feb 2024 18:30:31 +0800   FlannelIsUp                  Flannel is running on this node
  MemoryPressure       False   Wed, 28 Feb 2024 01:18:30 +0800   Mon, 19 Feb 2024 22:04:38 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Wed, 28 Feb 2024 01:18:30 +0800   Mon, 19 Feb 2024 22:04:38 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Wed, 28 Feb 2024 01:18:30 +0800   Mon, 19 Feb 2024 22:04:38 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Wed, 28 Feb 2024 01:18:30 +0800   Mon, 19 Feb 2024 23:35:15 +0800   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.10.10.100
  Hostname:    k8s-master
Capacity:
  cpu:                2
  ephemeral-storage:  62575768Ki
  hugepages-2Mi:      0
  memory:             3861288Ki
  pods:               110
Allocatable:
  cpu:                2
  ephemeral-storage:  57669827694
  hugepages-2Mi:      0
  memory:             3758888Ki
  pods:               110
System Info:
  Machine ID:                 9ee2b84718d0437fa9ea4380bdb34024
  System UUID:                AE134D56-9F2E-B64D-9BA2-6368B1379B3A
  Boot ID:                    e0bf44a5-6a0d-4fc0-923d-f5d63089b93f
  Kernel Version:             3.10.0-1160.el7.x86_64
  OS Image:                   CentOS Linux 7 (Core)
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://25.0.3
  Kubelet Version:            v1.25.0
  Kube-Proxy Version:         v1.25.0
PodCIDR:                      10.2.0.0/24
PodCIDRs:                     10.2.0.0/24
Non-terminated Pods:          (7 in total)
  Namespace                   Name                                  CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                                  ------------  ----------  ---------------  -------------  ---
  kube-flannel                kube-flannel-ds-tpm8x                 100m (5%)     0 (0%)      50Mi (1%)        0 (0%)         8d
  kube-system                 coredns-c676cc86f-q7hcw               100m (5%)     0 (0%)      70Mi (1%)        170Mi (4%)     6d14h
  kube-system                 etcd-k8s-master                       100m (5%)     0 (0%)      100Mi (2%)       0 (0%)         8d
  kube-system                 kube-apiserver-k8s-master             250m (12%)    0 (0%)      0 (0%)           0 (0%)         8d
  kube-system                 kube-controller-manager-k8s-master    200m (10%)    0 (0%)      0 (0%)           0 (0%)         8d
  kube-system                 kube-proxy-xtllb                      0 (0%)        0 (0%)      0 (0%)           0 (0%)         8d
  kube-system                 kube-scheduler-k8s-master             100m (5%)     0 (0%)      0 (0%)           0 (0%)         8d
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                850m (42%)  0 (0%)
  memory             220Mi (5%)  170Mi (4%)
  ephemeral-storage  0 (0%)      0 (0%)
  hugepages-2Mi      0 (0%)      0 (0%)
Events:              <none>

4.1.3 污点的删除

[root@k8s-master volume]# kubectl  taint  no k8s-master  node-role.kubernetes.io/control-plane:NoSchedule-
node/k8s-master untainted

在这里插入图片描述

4.1.4 查看k8s上的pod节点信息

[root@k8s-master volume]# kubectl get po  -o wide
NAME                            READY   STATUS    RESTARTS        AGE     IP          NODE          NOMINATED NODE   READINESS GATES
dns-test                        1/1     Running   2 (37h ago)     3d22h   10.2.1.58   k8s-node-02   <none>           <none>
fluentd-59k8k                   1/1     Running   1 (37h ago)     3d5h    10.2.2.34   k8s-node-01   <none>           <none>
fluentd-hhtls                   1/1     Running   1 (37h ago)     3d4h    10.2.1.59   k8s-node-02   <none>           <none>
nginx-deploy-69ccc996f9-stgcl   1/1     Running   1 (8m23s ago)   68m     10.2.1.78   k8s-node-02   <none>           <none>
nginx-deploy-69ccc996f9-wqp55   1/1     Running   1 (8m8s ago)    68m     10.2.2.71   k8s-node-01   <none>           <none>

4.1.5 测试这个场景,把nginx的pod删除,是否可以再master创建

在这里插入图片描述

4.1.6 测试把master的污点给加上,但是污点属性是:NoExecute

  • NoExecute 属性会把目前在该节点上的pod都迁移到别的节点
  • 目前master给打上污点了,node1节点也给打上污点了,最终新的pod会跑到node2上。

在这里插入图片描述

4.2 容忍(Toleration)

  • 容忍:是标注在pod上的,当pod被调度时,如果没有配置容忍,则该pod不会被调度到有污点的节点上,只有该pod上标注了满足某个节点的所有污点,则会被调度到这些节点

4.2.1 k8s-node-01上配置了污点,影响是:NoSchedule

  • 污点的key-value是:tag=test
  • 属性是:NoSchedule ”不能容忍的pod不能被调度到该节点,但是已经存在的节点不会被驱逐。“
[root@k8s-master volume]# kubectl  describe   no k8s-node-01  |  grep  -i  tain
Taints:             tag=test:NoSchedule
  Container Runtime Version:  docker://25.0.3

4.2.2 pod的spec下面配置容忍度影响是:NoSchedule ,操作是 Equal

  • 容忍操作 operator: “Equal” 表示pod上的容忍度和节点的污点相同,才会匹配到该节点
tolerations:
  - key: tag   #  污点的key
    value: test  #污点的value
    effect: "NoSchedule"    # 污点产生的影响
    operator: "Equal"   # 表示 value与污点的value要相等,也可以设置为Exists表示存在key即可,此时可以不用配置value

4.2.3 修改deploy资源中容器的容忍值

在这里插入图片描述

4.2.4 查看pod的变动

  • 能够容忍污点的节点上,pod会被创建到这个节点上,之前的节点并不会改变

在这里插入图片描述

在这里插入图片描述

4.2.5 修改deploy资源中容器的的容忍属性:容忍度影响是:NoSchedule ,操作是Exists

在这里插入图片描述

4.2.6 查看pod的变动

  • 容忍影响是:NoSchedule,代表节点有污点,不能被使用,但是有容忍的操作是匹配到污点的key就可以存在,所以更新deploy后,会有pod创建到这个节点上。
    在这里插入图片描述

4.2.7 修改deploy资源中容器的的容忍属性:容忍度影响是:NoExecute ,操作是 Exists

在这里插入图片描述

4.2.8 查看pod变动

在这里插入图片描述

4.2.9 修改deploy资源中容器的的容忍属性:容忍度影响不设置 ,操作是 Exists

在这里插入图片描述

4.2.10 查看pod变动

在这里插入图片描述

4.2.11 Pod 存在一个 effect 值为 NoExecute 的容忍度指定了可选属性 tolerationSeconds 的值,则表示在给节点添加了上述污点之后, Pod 还能继续在节点上运行的时间。

在这里插入图片描述

4.3 k8s内置污点

在这里插入图片描述

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

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

相关文章

Time Travel

题目链接 解题思路 由于所有边集中的边加起来的总和至多为&#xff0c;无向图即&#xff0c;可以存下所以直接对所有边集中的边进行建边&#xff0c;同时对于每条边&#xff0c;记录其所在边集号对于每个边集&#xff0c;由大到小维护其能通过的时间点然后从1号跑最短路到当前…

笔记整理(安全)

第八天 内容安全 攻击可能是一个点&#xff0c;但是防御需要全方面进行 IAE 引擎 DFI和DPI技术 深度检测技术 DPI 深度包检测技术 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对数据包的内容进行识别&#xff08;应用…

python学习笔记-内置异常

概述 Python 中的异常&#xff08;Exception&#xff09;是指在程序执行过程中遇到的错误或异常情况。当程序出现异常时&#xff0c;解释器会停止当前代码的执行&#xff0c;并试图找到匹配的异常处理器来处理异常。如果没有找到合适的异常处理器&#xff0c;程序就会终止并打…

anaconda指定目录创建环境无效/环境无法创建到指定位置

已经设置目录到D盘 创建环境时还是分配到C盘 可能是指定位置没有开启读写权限&#xff0c;如我在这里安装到了anaconda文件夹&#xff0c;则打开该文件夹的属性->安全->编辑 allusers下的权限全都打勾

笔记:GO1.19 带来的优化(重新编译juicefs)

## 背景 go编写的应用程序&#xff08;juicefs&#xff09;在k8s&#xff08;docker&#xff09;中运行&#xff0c;时不时出现 OOM Killed。 ## 分析 发现某些应用使用juicefs会导致内存使用飙升&#xff1b; k8s的pod给的内存资源&#xff1a;request 2G&#xff0c;limit…

雾锁王国服务器要开服务器吗?

雾锁王国要开服务器吗&#xff1f;可以使用官方服务器&#xff0c;也可以自己搭建多人联机服务器&#xff0c;更稳定不卡&#xff0c;畅玩开黑。阿腾云分享atengyun.com给大家目前阿里云和腾讯云均提供雾锁王国服务器和一键搭建程序&#xff0c;成本26元即可搭建一台自己的雾锁…

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现OOA-HKELM鱼鹰算法优化混合核极限学习机多变量…

LeetCode 2673.使二叉树所有路径值相等的最小代价:自顶向下的DFS 或 自底向上的递推

【LetMeFly】2673.使二叉树所有路径值相等的最小代价&#xff1a;自顶向下的DFS 或 自底向上的递推 力扣题目链接&#xff1a;https://leetcode.cn/problems/make-costs-of-paths-equal-in-a-binary-tree/ 给你一个整数 n 表示一棵 满二叉树 里面节点的数目&#xff0c;节点编…

【查漏补缺你的Vue基础】Vue数据监听深度解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

嵌入式学习第二十二天!(继续学习线程)

线程相关函数接口&#xff1a; 1. 线程分离属性&#xff1a; 线程结束后&#xff0c;自动回收线程空间 1. pthread_attr_init&#xff1a; int pthread_attr_init(pthread_attr_t *attr); 功能&#xff1a;线程属性初始化 2. pthread_attr_destroy&#xff1a; int pthread_…

居然才发现!字节跳动旗下国产AI绘画工具Dreamina,这么好用居然还免费!(强烈推荐)

昨天看到群里说&#xff0c;剪映旗下类似 Sora 的 AI 视频生成工具 Dreamina 开放内测申请了&#xff0c;于是申请了下&#xff0c;顺道发现 Dreamina 还是一个宝藏的 AI 绘画工具。 Dreamina 是剪映旗下的一个 AI 创作平台&#xff0c;目前支持「图片生成」功能&#xff0c;也…

MWC 2024丨生成式AIGC成为最大亮点—美格智能携手阿加犀推出多感知融合VSLAM解决方案

2024世界移动通信大会盛况空前&#xff0c;AI成为最大亮点。2月28日&#xff0c;美格智能携手阿加犀&#xff0c;将算力模组的硬件优势与AI优化部署技术相结合&#xff0c;在MWC展会现场展示了基于高算力AI模组的多感知融合VSLAM解决方案。这一创新性方案可应用于智能机器人与低…

并查集例题(食物链)C++(Acwing)

代码&#xff1a; #include <iostream>using namespace std;const int N 50010;int n, m; int p[N], d[N];int find(int x) {if(p[x] ! x){int t find(p[x]);d[x] d[p[x]];p[x] t;}return p[x]; }int main() {scanf("%d%d", &n, &m);for(int i 1…

ubuntu+QT+ OpenGL环境搭建和绘图

一&#xff0c;安装OpenGL库 安装OpenGL依赖项&#xff1a;运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。 安装OpenGL头文件&#xff1a;运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。 安装GLUT库&#xff1a;GLUT&#xff08;Ope…

459. 重复的子字符串(力扣LeetCode)

文章目录 459. 重复的子字符串题目描述暴力移动匹配KMP算法 459. 重复的子字符串 题目描述 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: …

【Simulink系列】——Simulink子系统子系统封装模块库技术

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 引入 前面对于简单的动态系统仿真&#xff0c;可以直接建立模型&#xff0c;然后仿真。但是对于复杂的系统&#xff0c;直接建立系统会显得杂乱无章&#xff0…

文物预防性保护系统方案的需求分析

没有文物保存环境监测&#xff0c;就不能实施有效的文物预防性保护。因此要建立文物预防性保护体系&#xff0c;一定要先有良好的文物状态监测制度,进而进行科学有效的文物保护管理。所以,导入文物预防性保护监测与调控系统,首先就是要针对文物进行全年温度、湿度、光照等关键参…

创建预留跳过ATP检查增强

1、需求背景 业务要求&#xff0c;当创建预留时&#xff0c;根据工厂和库存地点判断是否要进行ATP校验&#xff0c;而不能从物料维度控制ATP校验&#xff0c;因此需要做增强实现。 本文档将实现通过增强在前台MB21和BAPI&#xff1a;BAPI_RESERVATION_CREATE1创建时&#xff…

【大数据】Flink SQL 语法篇(八):集合、Order By、Limit、TopN

Flink SQL 语法篇&#xff08;八&#xff09;&#xff1a;集合、Order By、Limit、TopN 1.集合操作2.Order By、Limit 子句2.1 Order By 子句2.2 Limit 子句 3.TopN 子句 1.集合操作 集合操作支持 Batch / Streaming 任务。 UNION&#xff1a;将集合合并并且去重。UNION ALL&a…

【算法历练】动态规划副本—路径问题

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;宙でおやすみ 1:02━━━━━━️&#x1f49f;──────── 2:45 &#x1f504; ◀️ ⏸ ▶️ ☰ &#…