『K8S 入门』三:资源调度

news2024/11/18 12:43:31

『K8S 入门』三:资源调度

一、Label 和 Selector

在这里插入图片描述

  1. 可以通过 Selector 基于 Label 匹配需要的资源

Label 标签

  1. 配置文件中(metadata.labels)配置
metadata: # Pod相关的元数据,用于描述Pod的数据
  name: nginx-demo #Pod的名称
  labels: # 定义Pod的标签,这个标签可以自己任意指定,是无所谓的
    type: app # 自定义label标签,名字为type,值为app
    version: 1.0.0 # 自定义label标签,描述版本号
  namespace: 'default' # 命名空间的配置
  1. 查看 Labels
# 查看 Labels
kubectl get po --show-labels
# 通过命名空间查看
kubectl  get po --show-labels -n kube-system

在这里插入图片描述
3. 临时创建 Labels

  • 这些临时的 Labels 会丢失
# 添加 Labels
kubectl label po nginx-demo author=xz
# 复写 Labels
kubectl label po nginx-demo author=xzz --overwrite

在这里插入图片描述

  • 如果要永久修改只能修改配置文件,或者使用下面方式修改
kubectl edit po nginx-demo

Selector 选择器

  1. 配置值
# 匹配某个 label
kubectl get po -l type=app
# 展示所有信息
kubectl get po -A -l type=app
# 顺便查询 labels
kubectl get po -A -l type=app --show-labels
# 刻画描述
kubectl get po -A -l 'version in (1.0.0, 1.1.0, 1.2.0)'
kubectl get po -A -l 'version in (1.0.0, 1.1.0, 1.2.0),type=app'

在这里插入图片描述

二、Deployment

在这里插入图片描述

  1. 创建
  • 创建一个 deployment
kubectl create deploy nginx-deploy --image=nginx:1.7.9

# 查看资源
kubectl get deployments
kubectl get deploy

在这里插入图片描述

  • depoy、replicaset、po 层级关系
    • 可以看到名字是有层级规范的
kubectl get deploy
kubectl get replicaset
kubectl get po

在这里插入图片描述

  • 获取 deployments 的配置文件
    • 不要 status 部分,就可以获取这些配置值
# 把 deployments 的配置按照 yaml 形式输出
kubectl get deploy nginx-deploy -o yaml
# === 配置值描述 === 
# 注释的都是会默认生成的
apiVersion: apps/v1 # deployment api 版本
kind: Deployment # 资源类型为 deployment
metadata: # 元信息
  #annotations:
  #  deployment.kubernetes.io/revision: "1"
  #creationTimestamp: "2023-12-15T19:54:44Z"
  #generation: 1
  labels: # 标签
    app: nginx-deploy # 具体的 key: value 配置形式
  name: nginx-deploy # deployment 的名字
  namespace: default # 所在的命名空间
  #resourceVersion: "73676"
  #uid: 79be9a06-7f20-42ac-a427-1e9cd5b089de
spec:
  #progressDeadlineSeconds: 600
  replicas: 1 # 期望副本数
  revisionHistoryLimit: 10 # 进行滚动更新后,保留的历史版本数
  selector: # 选择器,用于找到匹配的 RS
    matchLabels: # 按照标签匹配
      app: nginx-deploy # 匹配的标签 key/value
  strategy: # 更新策略
    rollingUpdate:  # 滚动更新配置
      maxSurge: 25% # 进行滚动更新时,更新的个数最多可以超过期望副本数的个数/比例
      maxUnavailable: 25% # 进行滚动更新时,最大不可用比例更新比例,表示在所有副本数中,最多可以有多少个不更新成功
    type: RollingUpdate # 更新类型,采用滚动更新
  template: # pod 模板
    metadata: # pod 的元信息
      #creationTimestamp: null 
      labels: # pod 的标签
        app: nginx-deploy
    spec: # pod 期望信息
      containers:  # pod 的容器
      - image: nginx:1.7.9 # 镜像
        imagePullPolicy: IfNotPresent # 拉取策略
        name: nginx # 容器名称
        #resources: {}
        #terminationMessagePath: /dev/termination-log
        #terminationMessagePolicy: File
      #dnsPolicy: ClusterFirst
      restartPolicy: Always # 重启策略
      #schedulerName: default-scheduler
      #securityContext: {}
      terminationGracePeriodSeconds: 30 # 删除操作最多宽限多长时间

在这里插入图片描述

  1. 滚动更新
  • 滚动更新时,修改本地文件是无效果的
  • 如果不更新 template 的配置,是不会触发自动更新
  • 例如,先查看 deploy 中的标签
kubectl get deploy --show-labels

在这里插入图片描述

  • 然后修改标签值,但是这时候并不会重发自动更新
kubectl edit deploy nginx-deploy

# ===== 更新 ===== 
...
  labels:
    app: nginx-deploy
    test: "123" # 添加这个
...

# 通过这个命令可以看到 events 事件没有什么变化 
kubectl describe deploy nginx-deploy

在这里插入图片描述

  • 先做一个事情,增加一下副本数,这时候 po 变成 3 个,rs、deploy 还是 1 个
# ===== 更新 ===== 
...
spec:
  progressDeadlineSeconds: 600
  replicas: 3 # 更新这个
...

在这里插入图片描述

  • (重点)尝试去修改镜像版本
# ===== 更新 ===== 
...
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx-deploy
    spec:
      containers:
      - image: nginx:1.9.1 # 更新这个
...
# 通过这个命令就可以看到 deploy 在更新
kubectl rollout status deploy nginx-deploy
# 或者用这个
kubectl get deploy --show-labels
# 或者看 events
kubectl describe deploy nginx-deploy

在这里插入图片描述

  • 从这也可以看到这个更新过程(describe)
    • 先创建两个 rs,先把其中 1 个 rs 的 pod 移到另外 1 个 rs,最后再清理旧的 rs
    • 如果在更新过程中,快速地再次修改,k8s 会把上次的 rs 直接停止,再重新进行一次流程
      在这里插入图片描述
      在这里插入图片描述
  • 从这也可以看出来旧的 rs 已经被替代
    在这里插入图片描述
  1. 回滚
  • 首先先对版本更新一个有问题的版本,查看更新过程,发现版本已经卡死
kubectl set image deployment/nginx-deploy nginx=nginx:1.91

在这里插入图片描述

  • 因为相应的镜像死活拉不下来,其中一个 pod 拉取镜像失败,也可以通过下面命令查看一下情况
kubectl describe po nginx-deploy-f7f5656c7-z2bw7

在这里插入图片描述

  • 先查看历史版本(因为没使用, record,所以才 none),可以看到有 3 个历史版本
kubectl rollout history deployment/nginx-deploy

# 只有这样 change-cause 才不会显示 none
kubectl set image deployment/nginx-deploy nginx=nginx:1.91 --record ***

在这里插入图片描述

  • 查看 2 号版本的信息
kubectl rollout history deployment/nginx-deploy --revision=2

在这里插入图片描述

  • (重点)回滚上一个版本
kubectl rollout undo deployment/nginx-deploy --to-revision=2

# 通过这个命令看到已经回退到 1.9.1 版本
kubectl edit deploy nginx-deploy
  • 查看 rs 也可以看到也就只有第一个 rs 有数量了
    在这里插入图片描述
  • (注意)可以通过设置 .spec.revisonHistoryLimit 来指定 deployment 保留多少 revison,如果设置为 0,则不允许 deployment 回退了
  1. 扩容缩容
  • 扩容:执行下面命令进行扩缩容,这时候并不会变更 rs
kubectl scale --replicas=6 deploy nginx-deploy

在这里插入图片描述

  • 缩容:其实一样的,只是设置数字少点
kubectl scale --replicas=3 deploy nginx-deploy
  1. 暂停与恢复
  • 由于每次对 pod template 中的信息发生修改后,都会触发更新 deployment 操作,那么此时如果频繁修改信息,就会产生多次更新,而实际上只需要执行最后一次更新即可,当出现此类情况时我们就可以暂停 deployment 的 rollout
  • 首先先暂停配置
kubectl rollout pause deploy nginx-deploy
  • 然后往模板中添加下面配置,会发现 rs 并没有新增加
kubectl edit deploy nginx-deploy

# ===== 更新 ===== 
...
    spec: # pod 期望信息
      containers:  # pod 的容器
		....
        resources: # 下面这部分都是更新
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 512Mi
...

# 可以通过这个命令看到最新版本的 change 没改变
kubectl rollout history deploy nginx-deploy --revision=4

在这里插入图片描述

  • 恢复之后,通过 rs 或者 deploy 查看,已经有新增
kubectl rollout resume deploy nginx-deploy

在这里插入图片描述

三、StatefulSet

在这里插入图片描述

  1. 创建
  • 首先创建目录,并且把 web.yml 放到里面
mkdir statefulset 
cd statefulset 
touch web.yml
  • 其中 web.yml 内容如下
--- # 嵌套另外一个 yaml 的内容,暂时先不用管这个
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet # StatefulSet 类型的资源
metadata:
  name: web # StatefulSet 对象的名字
spec:
  selector:
    matchLabels:
      app: nginx # 使用哪个 service 来管理 dns,就是和上面的 metadata.name 的 “nginx” 匹配
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports: # 容器内部要暴露的端口
        - containerPort: 80 # 具体暴露的端口号
          name: web # 该端口配置的名字
  • 执行 web.yml
kubectl create -f web.yml

# 如果出错可以执行下面的命令删除创建
kubectl delete sts web
kubectl delete svc nginx

在这里插入图片描述

  • 通过下面命令会看到 pod 的创建
kubectl get po

在这里插入图片描述

  • 下面尝试是否可以 ping 通。使用万能工具包
    • 注意)容器主机内,用宿主机无法 ping 通
kubectl run -it --image busybox:1.28.4 dns-test --restart=Never --rm /bin/sh

# 测试下面命令
ping web-0.nginx # DNS 命名格式为:statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local 一般只要 statefulSetName-{0..N-1}.serviceName 就可
ping web-1.nginx
nslookup web-0.nginx

在这里插入图片描述
2. 扩容缩容

  • 首先看到现在的容器也只有 3 个
    在这里插入图片描述
  • 这时扩容到 5 个
kubectl  scale sts web --replicas=5
# 查看扩容过程
kubectl describe sts web

在这里插入图片描述

  • 缩容也是用同样的命令,他是按数字从大到小进行缩容
    在这里插入图片描述
  1. 镜像更新
  • 目前还不支持直接更新 image,需要 patch 来间接实现,通过补丁,可以发现版本已经更新到 1.9.1
kubectl patch sts web --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"nginx:1.9.1"}]'
# 查看版本更新版本
kubectl rollout history sts web
# 查看第 2 个版本的变化历史
kubectl rollout history sts web --revision=2
# 查看更新的动作
kubectl rollout status sts web

在这里插入图片描述

  • 因为我们在配置中配置的实现是 RollingUpdate 更新策略,在 StatefulSet 中更新时是基于 pod 的顺序倒序更新的。利用滚动更新中的 partition 属性,可以实现简易的灰度发布的效果
kubectl edit sts web

在这里插入图片描述
4. 灰度发布
在这里插入图片描述

  • 首先把服务扩容到 5 台
  • 修改滚动策略的 partition 为 3
# 修改
kubectl edit sts web
  • 其中修改配置如下
...
    spec:
      containers:
      - image: nginx:1.7.9
...
  updateStrategy:
    rollingUpdate:
      partition: 3 
    type: RollingUpdate
...
  • 然后分别查看一下每个 web-* 的 pod,会发现 3,4 已经更新版本到 1.7.9
kubectl describe po web-2
  • 直接把 partition 改为 0,直接全量发布
  1. onDelete 策略
  • 只有在 pod 被删除时会进行更新操作
  • 先修改更新策略
kubectl edit sts web
  • 修改的配置如下
...
  updateStrategy:
    type: OnDelete
...
  • 然后再次修改 nginx 版本配置为 1.9.1,你会发现每个 web-* 的 pod 都根本不会变化,除非执行下面命令。你就可以每个 pod 操作一次之后,才会更新版本
kubectl describe pod web-4
  1. 级联删除
  • 级联删除:删除 StatefulSet 时会同时删除 pod
kubectl delete statefulset web

  • 非级联删除:删除 StatefulSet 时不会删除 pod,删除 sts 后,pod 就没人管了,此时再删除 pod 不会重建的
# 先重新创建
kubectl delete service nginx # 这个也要执行一下,好像 service 没删除
kubectl create -f web.yml
# 非级联删除
kubectl delete sts web --cascade=false
  • StatefulSet 删除后 PVC 还会保留着,数据不再使用的话也需要删除
kubectl delete pvc ***

四、DaemonSet

在这里插入图片描述

  1. 解释
  • 它是可以专门筛选节点,来帮助自动在节点层面创建 pod,例如那种专门采集日志数据的进程就有必要
    在这里插入图片描述
  1. 不指定 Node 节点
  • 不指定 Node 创建文件
# fluentd-ds.yml
apiVersion: apps/v1
kind: DaemonSet # 创建 DaemonSet 资源
metadata:
  name: fluentd # 名字
spec:
  selector: # 一定要写的
    matchLabels:
      app: logging # 匹配标签的值,和下面的 labels.app 对应
  template: # 模板配置
    metadata:
      labels:
        app: logging
        id: fluentd
      name: fluentd # 容器名
    spec:
      containers:
      - name: fluentd-es
        image: agilestacks/fluentd-elasticsearch:v1.3.0
        env: # 环境变量
         - name: FLUENTD_ARGS
           value: -qq
        volumeMounts: # 加载数据卷
         - name: containers # 把下面命名为 containers 的容器卷加载到下面路径去
           mountPath: /var/lib/docker/containers
         - name: varlog
           mountPath: /varlog
      volumes: # 定义数据卷,主机路径模式,与 node 共享目录
         - hostPath:
             path: /var/lib/docker/containers # node 中的共享目录
           name: containers
         - hostPath:
             path: /var/log
           name: varlog
  • 执行创建,默认会在我们的 2 个节点中创建
kubectl create -f fluentd-ds.yml
kubecttl get daemonset
kubectl get po -o wide

在这里插入图片描述

  • 通过查看 Node 的时候,其实这时候并没有相应的 label,让我们 ds 选择部署到哪个节点去,所以默认就会往非 master 节点去部署
kubectl get nodes --show-labels
  1. 指定 Node 节点,使用节点选择器
  • 首先标签一下其中一个 node
kubectl label no k8s-node1 type=microservices
  • 编辑一下 ds
kubectl edit ds fluentd
  • 其中增加配置如下,保存后查看 ds,发现就剩下 1 个了
...
template:
  spec:
    nodeSelector:
      type: microservices
...

在这里插入图片描述

  • 当给 node2 也加一个同样标签,相应的 fluentd 就会多创建 1 个
kubectl label no k8s-node2 type=microservices

在这里插入图片描述
4. 滚动更新

  • 不建议使用 RollingUpdate,建议使用 OnDelete 模式,这样避免频繁更新 ds

五、HPA 自动扩缩容

  1. 概述
  • 通过观察 pod 的 cpu、内存使用率或自定义 metrics 指标进行自动的扩容或缩容 pod 的数量
  • 通常用于 Deployment,不适用于无法扩/缩容的对象,如 DaemonSet
  1. 开启指标服务
  • 首先先重新执行 nginx-deploy.yaml 创建 Deployment,这时候副本是 1 就够了
    在这里插入图片描述
  • nginx-deploy.yaml 先增加资源限制
...
spec:
  template: # pod 模板
    spec: # pod 期望信息
      containers:  # pod 的容器
      - image: nginx:1.7.9 # 镜像
        imagePullPolicy: IfNotPresent # 拉取策略
        name: nginx # 容器名称
        resources:  # 增加资源限制
          requests:
            cpu: 10m # 等会拿来测试
            memory: 128Mi
          limits:
            cpu: 200m
            memory: 128Mi
...
  • 替换一下配置文件
kubectl replace -f nginx-deploy.yaml
  • 创建 HPA 自动扩缩容
kubectl autoscale deploy nginx-deploy --cpu-percent=20 --min=2 --max=5

# 会发现已经创建了 2 个 pod
kubectl get deploy
  • 按照监测指标工具,否则没办法使用 top
# 下载 metrics-server 组件配置文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml

# 修改镜像地址为国内的地址
sed -i 's/registry.k8s.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml

# 修改容器的 tls 配置,不验证 tls,在 containers 的 args 参数中增加这个参数
...
    spec:
      containers:
      - args:
        ....
        - --metric-resolution=15s
        - --kubelet-insecure-tls  # 加这个
...

# 安装组件
kubectl apply -f metrics-server-components.yaml

# 查看 pod 状态
kubectl get pods --all-namespaces | grep metrics

在这里插入图片描述

  • 下面就可以执行 top,查看 pod 使用资源情况
kubectl top pods
  • 为了能够把两个 pod 合到一起去,需要配置一下 service,首先先查看这 2 个 pod 有的标签,取 app=nginx 来进行匹配
kubectl get pod --show-labels

在这里插入图片描述

  • 创建 nginx-svc.yml,并执行
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx-deploy
  ports:
  - port: 80
    targetPort: 80
    name: web

在这里插入图片描述

  • 执行下面命令,查看 svc 端口,其中 CLUSTER-IP 代表的是容器 ip,而 port 是容器内端口,执行 curl 命令就可以查看到内容
kubectl get svc

在这里插入图片描述

  • 在另外一个 shell 里面,对 service 执行一个死循环,就会看到容器自动扩容了
while true; do wget -q -O- http://10.100.99.222 > /dev/null ; done

# 看到容器自动扩容
kubectl get pod
# cpu 飙升
kubectl get hpa
# 查看每个 pod 具体 cpu 使用率
kubectl top po

在这里插入图片描述

  • 当停止掉死循环之后,就会发现容器自动缩容了
# 查看缩容细节
kubectl describe hpa nginx-deploy
# 已经缩容
kubectl get hpa

在这里插入图片描述

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

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

相关文章

阅读笔记(ICIP2023)Rectangular-Output Image Stitching

“矩形输出”图像拼接 Zhou, H., Zhu, Y., Lv, X., Liu, Q., & Zhang, S. (2023, October). Rectangular-Output Image Stitching. In 2023 IEEE International Conference on Image Processing (ICIP) (pp. 2800-2804). IEEE. 0. 摘要 图像拼接的目的是将两幅视场重叠的…

GDC期间LayaAir启动全球化战略

3 月 18 日至 3 月 22 日,一年一度的游戏开发者大会(GDC)在美国旧金山举行。在此期间,Layabox宣布LayaAir引擎启动全球扩张战略,这标志着引擎将步入快速发展的新阶段。此举旨在利用公司先进的3D引擎技术,将…

力扣每日一题 2024/3/23 统计桌面上的不同数字

题目描述 用例说明 思路讲解 给定整数n&#xff0c;找出循环十亿天后桌上的数字。可以先通过一天来找找规律。 第一天 n%i1 &#xff08;1<i<n&#xff09;只有n-1符合.加入桌面 第二天(n-1)%i1 &#xff08;1<i<n-1&#xff09;只有n-2符合 加入桌面 依次类推…

RHEL9部署Docker环境

华子目录 Docker引擎架构docker引擎架构示意图执行过程示例 RHEL9上安装Docker1.系统要求2.安装yum-utils工具包3.yum安装docker-ce4.配置docker镜像加速docker拉取镜像的过程配置阿里云镜像仓库重新加载守护进程重启Docker服务 5.拉取并运行hello-world镜像6.测试是否安装成功…

【LabVIEW FPGA入门】FPGA 存储器(Memory)

可以使用内存项将数据存储在FPGA块内存中。内存项以2kb为倍数引用FPGA目标上的块内存。每个内存项引用一个单独的地址或地址块&#xff0c;您可以使用内存项访问FPGA上的所有可用内存。如果需要随机访问存储的数据&#xff0c;请使用内存项。 内存项不消耗FPGA上的逻辑资源&…

stm32平衡车

目录 一.所需材料 二.PID算法&#xff08;简单说明&#xff09; 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…

C++类和对象进阶

CSDN成就一亿技术人 C类的6个默认成员函数(构造)-CSDN博客https://blog.csdn.net/lh11223326/article/details/136917667?spm1001.2014.3001.5502 目录 一.再谈构造函数 1.构造函数体赋值&#xff1a; 在创建对象时&am…

# Maven Bom 的使用

Maven Bom 的使用 文章目录 Maven Bom 的使用概述BOM特点优点缺点 MavenMaven 安装安装步骤settingx.ml常用仓库地址Idea 使用maven常见坑 SpringBoot 项目Bom使用案例项目结构主项目 zerocode-back-servezc-dependency&#xff08;第三方jar管理&#xff09;子模块zc-serve子模…

Qt creator构建DLL库

文章目录 一、构建DLL库二、隐式调用DLL库 一、构建DLL库 Qt creator创建DLL项目。 实现功能函数。 运行代码&#xff0c;debug目录下会有.dll和.lib文件。 二、隐式调用DLL库 QT新建控制台项目。将.lib文件和与之关联的头文件赋值到项目文件夹。 3. 添加头文件和外部依赖库…

目标检测——YOLOR算法解读

论文&#xff1a;YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2105.04206 代码&#xff1a;https://github.com/WongKinYiu/yolo…

Python界面库Flet(1)介绍和快速使用

Python界面库Flet(1)快速上手使用 Author&#xff1a;Once Day Date&#xff1a;2024年3月19日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Pyt…

利用sealos安装k8s集群

1. 环境准备 准备三台干净&#xff08;未安装过k8s环境&#xff09;的虚拟机 # 所有的主机都要配置主机名和域名映射 # 设置主机名 hostnamectl set-hostname k8s-master01 # vim /etc/hosts 192.168.59.201 k8s-master01 192.168.59.202 k8s-worker01 192.168.59.203 k8…

飞鸟写作能用吗 #笔记#笔记

飞鸟写作是一个强大的论文写作工具&#xff0c;不仅可以帮助用户高效、准确地完成论文写作&#xff0c;还能帮助用户对论文进行查重和降重。那么&#xff0c;飞鸟写作能用吗&#xff1f;答案是肯定的&#xff0c;飞鸟写作非常好用&#xff01; 首先&#xff0c;飞鸟写作拥有强大…

视频记录历史播放位置效果

简介 每次打开页面视频从上一次的播放位置开始播放 利用lodash库做节流 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

MySQL | 视图

视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 1. 基本使用 1.1. 创建视图 create view 视图名 as select语句&#xff1b; 创建测…

自动驾驶轨迹规划之时空语义走廊(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.摘要 2.系统架构 3.MPDM 4.时空语义走廊 ​4.1 种子生成 4.2 具有语义边界的cube inflation ​4.3 立方体松弛 本文解析了丁文超老师…

JetBrains数据库驱动下载失败解决方法

本方法可通用于解决PyCharm等JetBrains家的IDE下载数据库驱动问题。 在Jet家IDE内连接数据库时&#xff0c;mysql、sqlite等的驱动有部分在 https://download.jetbrains.com 网站上&#xff0c;可能由于网络问题无法访问。 解决方法是修改 JetBrains 路径下的 jdbc.drivers.xm…

计算机基础系列 —— 从 Nand 门、DFF 到 RAM

Memory: The faculty of the brain by which data or information is encoded, stored, and retrieved when needed.It is the retention of information over time for the purpose of influencing future action —— Wikipedia 文中提到的所有实现都可以参考&#xff1a;nan…

Typecho如何去掉/隐藏index.php

Typecho后台设置永久链接后&#xff0c;会在域名后加上index.php&#xff0c;很多人都接受不了。例如如下网址&#xff1a;https://www.jichun29.cn/index.php/archives/37/&#xff0c;但我们希望最终的形式是这样&#xff1a;https://www.jichun29.cn/archives/37.html。那么…

【Oracle】Linux——Centos7安装Oracle12c

安装前拍快照、安装前拍快照、安装前拍快照 目录 安装前拍快照、安装前拍快照、安装前拍快照1.下载Oracle12C安装包2.基本环境搭建2.1创建用户和组2.2创建oralce安装目录,oracle用户分配目录权限2.3上传安装包 3.系统参数配置及服务器设置3.1依赖安装3.2内核参数配置3.3配置完成…