当前位置: 首页 > news >正文

『K8S 入门』二:深入 Pod

『K8S 入门』二:深入 Pod

一、基础命令

  1. 获取所有 Pod
kubectl get pods

在这里插入图片描述
2. 获取 deploy

kubectl get deploy

在这里插入图片描述
3. 删除 deploy,这时候相应的 pod 就没了

kubectl delete deploy nginx

在这里插入图片描述
4. 虽然删掉了 Pod,但是这是时候还有 service,我们可以也删掉

kubectl get services
kubectl delete svc nginx

在这里插入图片描述
5. 自己创建配置文件,构建 Pod

mkdir pods
touch nginx-demo.yaml
  • 常用的资源清单

参数名类型字段说明
apiVersionStringK8S APl 的版本,可以用 kubectl api versions 命令查询
kindStringyam 文件定义的资源类型和角色
metadataObject元数据对象,下面是它的属性
metadata.nameString元数据对象的名字,比如 pod 的名字
metadata.namespaceString元数据对象的命名空间
SpecObject详细定义对象
spec.containers[]list定义 Spec 对象的容器列表
spec.containers[].nameString为列表中的某个容器定义名称
spec.containers[].imageString为列表中的某个容器定义需要的镜像名称
spec.containers[].imagePullPolicystring定义镜像拉取策略,有 Always、Never、IfNotPresent 三个值可选
- Always(默认):意思是每次都尝试重新拉取镜像
- Never:表示仅适用本地镜像
- IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
spec.containers[].command[]list指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。
spec.containers[].args[]list指定容器启动命令参数,因为是数组可以指定多个。
spec.containers[].workingDirstring指定容器的工作目录
spec.containers[].volumeMounts[]list指定容器内部的存储卷配置
spec.containers[].volumeMounts[].namestring指定可以被容器挂载的存储卷的名称
spec.containers[].volumeMounts[].mountPathstring指定可以被容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnlystring设置存储卷路径的读写模式,ture 或者 false,默认是读写模式
spec.containers[].ports[]list指定容器需要用到的端口列表
spec.containers[].ports[].namestring指定端口的名称
spec.containers[].ports[].containerPortstring指定容器需要监听的端口号
spec.containers[].ports[].hostPortstring指定容器所在主机需要监听的端口号,默认跟上面 containerPort 相同,注意设置了 hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
spec.containers[].ports[].protocolstring指定端口协议,支持 TCP 和 UDP,默认值为 TCP
spec.containers[].env[]list指定容器运行前需设置的环境变量列表
spec.containers[].env[].namestring指定环境变量名称
spec.containers[].env[].valuestring指定环境变量值
spec.containers[].resourcesObject指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
spec.containers[].resources.limitsObject指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpustring指定 CPU 的限制,单位为 Core 数,将用于 docker run –cpu-shares 参数
spec.containers[].resources.limits.memorystring指定 mem 内存的限制,单位为 MIB、GiB
spec.containers[].resources.requestsObject指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpustringCPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memorystring内存请求,单位为MIB、GiB,容器启动的初始化可用数量
spec.restartPolicystring定义 pod 的重启策略,可选值为 Always、OnFailure、Never,默认值为 Always。
- Always:pod 一旦终止运行,则无论容器是如何终止的,kubelet 服务都将重启它。
- OnFailure:只有 pod 以非零退出码终止时,kubelet 才会重启该容器。如果容器正常结束(退出码为0),则 kubectl 将不会重启它。
- Never:Pod 终止后,kubelet 将退出码报告给 master,不会重启该 pod
spec.nodeSelectorObject定义 Node 的 label 过滤标签,以 key:value 格式指定
spec.imagePullSecretsObject定义 pull 镜像时使用 secret 名称,以 name:secretkey 格式指定
spec.hostNetworkBoolean定义是否使用主机网络模式,默认值为 false。设置 true 表示使用宿主机网络,不使用 docker 网桥,同时设置了 true将无法在同一台宿主机上启动第二个副本
  • 创建一个 nginx-pod 例子
apiVersion: v1 # api 文档版本
kind: Pod # 资源对象类型,可以配置为像Deployment StatefulSet这一类的对象
metadata: # Pod相关的元数据,用于描述Pod的数据name: nginx-demo #Pod的名称labels: # 定义Pod的标签,这个标签可以自己任意指定,是无所谓的type: app # 自定义label标签,名字为type,值为appversion: 1.0.0 # 自定义label标签,描述版本号namespace: 'default' # 命名空间的配置
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'workingDir: /usr/share/nginx/html/ # 定义容器启动后的工作目录ports:- name: http # 端口名称,随便起containerPort: 80 # 描述容器要暴露什么端口protocol: TCP # 描述端口是用那种通信协议env: # 环境变量- name: JVM_OPTS # 环境变量的名称value: '-Xms128m -Xmx128m'resources:requests: # 最少需要多少资源cpu: 100m # 限制cpu最少使用0.1个核心,一个核心用满是1000mmemory: 128Mi # 限制内存最少使用128兆limits: # 最多可以使用多少资源cpu: 200m # 限制cpu最多使用0.2个核心memory: 256Mi # 限制最多使用256兆restartPolicy: OnFailure #Secrets 重启策略,只有失败的情况才会重启
  • 通过 yaml 创建这个 pod
kubectl create -f nginx-demo.yaml
kubectl get po

在这里插入图片描述

  • 描述当前这个 Pod,这里可以看到 Pod 执行过程
kubectl describe po nginx-demo

在这里插入图片描述

  • 查看 Pod 详细信息
kubectl get po -o wide

在这里插入图片描述

  • 执行下面命令可以查看到 nginx 可以访问,自动路由到 node2 节点(因为我们一开始装了 calico,网关路由的东西)
curl 10.244.169.135
  • 通过下面命令还可以查看 calico 已经给我们配置好网关
route -n

在这里插入图片描述

  • 通过下面命令,还能发现 k8s 给我们创建了很多容器
docker ps

在这里插入图片描述

二、探针

类型

  1. StartupProbe:用于判断应用程序是否已经启动了
  • 当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会继续
startupProbe:httpGet:path: /api/startupport: 80
  1. LivenessProbe:用于探测容器中的应用是否运行
  • 如果探测失败,kubelet 会根据配置的重启策略进行重启,若没有配置,默认就认为容器启动成功,不会执行重启策略
livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60periodSeconds: 10successThreshold: 1timeoutSeconds: 5
  1. ReadinessProbe:用于探测容器内的程序是否健康
  • 它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的
readinessProbe:failureThreshold: 3 # 错误次数httpGet:path: /readyport: 8181scheme: HTTPperiodSeconds: 10 # 间隔时间successThreshold: 1timeoutSeconds: 1

探测方式

  1. ExecAction:在容器内部执行一个命令,如果返回值为 0,则任务容器时健康的
livenessProbe:exec:command:- cat- /health
  1. TCPSocketAction:通过 tcp 连接监测容器内端口是否开放,如果开放则证明该容器健康
livenessProbe:tcpSocket:port: 80
  1. HTTPGetAction:生产环境用的较多的方式,发送 HTTP 请求到容器内的应用程序,如果接口返回的状态码在 200~400 之间,则认为容器健康
livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPhttpHeaders:- name: xxxvalue: xxx

测试探针

  1. 每次执行前,先删除测试 pod。修改内容后,重新启动配置,并观察 pod 的启动
# 删除 po
kubectl delete po nginx-demo
# 重新启动容器
kubectl create -f nginx-demo.yaml
# 观察 pod
kubectl describe po nginx-demo
kubectl get po
  1. 测试 StartupProbe
  • HTTPGetAction:往 nginx-demo.xml 添加下面内容
...
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的# ===== 这里才是新添加 =====startupProbe:httpGet:path: /index.html # http 请求路径port: 80 # 请求端口failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'workingDir: /usr/share/nginx/html/ # 定义容器启动后的工作目录
...

在这里插入图片描述

  • TCPSocketAction:往 nginx-demo.xml 添加下面内容
...
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的# ===== 这里才是新添加 =====startupProbe:#httpGet:#  path: /index.html # http 请求路径tcpSocket:port: 80 # 请求端口failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'
...

在这里插入图片描述

  • ExecAction:往 nginx-demo.xml 添加下面内容
...
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的# ===== 这里才是新添加 =====startupProbe:#httpGet:#  path: /index.html # http 请求路径#tcpSocket:#  port: 80 # 请求端口exec:command:- sh- -c- "sleep 3; echo successaaa > /inited"failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'
...
  • 同时查看输出的文件内容
kubectl exec -it nginx-demo -c nginx -- cat /inited

在这里插入图片描述
3. 测试 LivenessProbe

  • nginx-demo.xml 添加下面内容
...
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的startupProbe:exec:command:- sh- -c- "sleep 3; echo successaaa > /inited"failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# ===== 这里才是新添加 =====livenessProbe:httpGet:path: /started.html # http 请求路径,这个路径肯定不存在port: 80failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'
...
  • 重新启动,一定会失败,这时候要添加下面命令才会启动成功
echo 'started' > started.html
kubectl cp started.html nginx-demo:/usr/share/nginx/html/

在这里插入图片描述
4. 测试 ReadinessProbe

...
spec: # 期望Pod按照这里面的描述进行创建containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的startupProbe:#httpGet:#  path: /index.html # http 请求路径#tcpSocket:#  port: 80 # 请求端口exec:command:- sh- -c- "sleep 3; echo successaaa > /inited"failureThreshold: 3 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 5 # 请求的超时时间# ===== 这里才是新添加 =====readinessProbe:httpGet:path: /started.html # http 请求路径,这个路径肯定不存在port: 80failureThreshold: 5 # 失败多少次才算失败periodSeconds: 10 # 间隔时间successThreshold: 1 # 多少次检测成功算成功timeoutSeconds: 3 # 请求的超时时间# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'
...
  • 重新启动,一定会失败,这时候要添加下面命令才会启动成功
echo 'started' > started.html
kubectl cp started.html nginx-demo:/usr/share/nginx/html/

在这里插入图片描述

三、Pod 的生命周期

在这里插入图片描述

  1. 概述
  • 初始化阶段,一定会在容器启动前执行
  • 启动后,会先执行 postStart 钩子函数,但是这个函数可能和容器启动的 command 并行执行,有可能发生冲突,所以很少用
  • postStart 启动后启动容器应用,先执行 StartupProbe 探针,执行后启动 LivenessProbeReadinessProbe 探针
  • 最后容器住准备结束的时候,执行 preStop 钩子函数(容器不在,钩子函数肯定会失败)
  • Pod 推出流程(删除操作)
    • Endpoint 删除 pod 的 ip 地址
    • pod 变成 Terminating 状态:变为删除中的状态后,会给 pod 一个宽限期,让 pod 去执行一些清理或销毁操作
    • 执行 preStop 的指令
# 配置参数:
# 作用于 pod 中的所有容器(默认)
terminationGracePeriodSeconds: 30
containers:- xxx
  1. 测试生命周期
  • nginx-demo.xml 添加下面内容
...
spec: # 期望Pod按照这里面的描述进行创建# ===== 这里才是新添加 =====# 一定要注意,如果 preStop 的任务执行超过 30s,一定要修改这个配置同时间,否则会直接结束容器。同时,如果 preStop 任务提前结束,容器也会提前结束,而不是限定 30sterminationGracePeriodSeconds: 30# =====containers: # 对于Pod中的容器描述- name: nginx # 容器的名称,这个是可以乱取的image: nginx:1.7.9 # 指定容器的镜像,docker会去searchimagePullPolicy: IfNotPresent # 镜像拉去策略, 如果本地有就用本地的,如果本地没有就拉去远程的# ===== 这里才是新添加 =====lifecycle: # 生命周期配置postStart: # 生命周期启动阶段做的事情,不一定在容器的 command 之前运行exec:command:- sh- -c- "echo '<h1>pre stop</h1>' > /usr/share/nginx/html/prestop.html"preStop:exec:command:- sh- -c- "echo 'sleep finished...' >> /usr/share/nginx/html/prestop.html; sleep 50"# =====command: # 指定容器启动时执行的命令- nginx- -g- 'daemon off;' # nginx -g 'daemon off;'
...
  • 启动容器后,查看是否执行 preStart 脚本。可以看到脚本内容真实写进去
    在这里插入图片描述
  • 多开一个窗口,执行下面命令,执行监控容器退出
kubectl get po -w
  • 另一个窗口执行下面命令执行终止操作
time kubectl delete po nginx-demo

在这里插入图片描述

相关文章:

『K8S 入门』二:深入 Pod

『K8S 入门』二&#xff1a;深入 Pod 一、基础命令 获取所有 Pod kubectl get pods2. 获取 deploy kubectl get deploy3. 删除 deploy&#xff0c;这时候相应的 pod 就没了 kubectl delete deploy nginx4. 虽然删掉了 Pod&#xff0c;但是这是时候还有 service&#xff0c…...

十七、如何将MapReduce程序提交到YARN运行

1、启动某个节点的某一个用户 hadoopnode1:~$ jps 13025 Jps hadoopnode1:~$ yarn --daemon start resourcemanager hadoopnode1:~$ jps 13170 ResourceManager 13253 Jps hadoopnode1:~$ yarn --daemon start nodemanager hadoopnode1:~$ jps 13170 ResourceManager 15062 Jp…...

华为云CodeArts Deploy常见问答汇总

1.【Deploy】部署java项目&#xff0c;为什么通过springboot启动步骤启动失败了&#xff1f; 答&#xff1a;用户所部署的jar包源码并不是springboot框架&#xff0c;所以无法用springboot启动步骤启动&#xff0c;该步骤并不等同于java -jar 命令&#xff0c;需要使用shell脚…...

前后端交互—开发一个完整的服务器

代码下载 初始化 新建 apiServer 文件夹作为项目根目录&#xff0c;并在项目根目录中运行如下的命令&#xff0c;初始化包管理配置文件: npm init -y运行如下的命令&#xff0c;安装 express、cors: npm i express cors在项目根目录中新建 app.js 作为整个项目的入口文件&a…...

前端框架的虚拟DOM(Virtual DOM)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

什么是http状态码?

什么是http状态码&#xff1f; 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含 HTTP 状态码的信息头&#xff08;server header&#xff09;用以响应浏览器的请求。 ht…...

linux/CentOS 7安装Nginx

Nginx 是 C语言 开发&#xff0c;建议在 Linux 上运行&#xff0c;当然&#xff0c;也可以安装 Windows 版本&#xff0c;本篇则使用 CentOS 7 作为安装环境。 Nginx一般使用非root账号安装&#xff0c;如果还没有非root账号&#xff0c;先创建账号 创建账号 创建组&#xf…...

软件工程期末复习+数据仓库ETL

一、软件工程 请用基本路径测试方法为下列程序设计测试用例&#xff0c;并写明中间过程&#xff1a; 第1步&#xff1a;画出流程图 1.菱形用于条件判断。用在有分支的地方。 2.矩形表示一个基本操作。 3.圆形是连接点 第2步&#xff1a;计算程序环路复杂性 流图G的环路复杂…...

学习C语言——体会计算机中的0和1

/* 把hello隐写入一个整型数组,这个小程序可以考察是否清楚数据在内存中存储的具体细节。 具体的说&#xff0c;int类型在小端机器上的存储方式是高位在高地址&#xff0c;低位在低地址&#xff0c;从视觉习惯上和我们的日常书写习惯相反&#xff1b; char类型占用…...

PyTorch官网demo解读——第一个神经网络(1)

神经网络如此神奇&#xff0c;feel the magic 今天分享一下学习PyTorch官网demo的心得&#xff0c;原来实现一个神经网络可以如此简单/简洁/高效&#xff0c;同时也感慨PyTorch如此强大。 这个demo的目的是训练一个识别手写数字的模型&#xff01; 先上源码&#xff1a; fr…...

升华 RabbitMQ:解锁一致性哈希交换机的奥秘【RabbitMQ 十】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 升华 RabbitMQ&#xff1a;解锁一致性哈希交换机的奥秘【RabbitMQ 十】 前言第一&#xff1a;该插件需求为什么需要一种更智能的消息路由方式&#xff1f;一致性哈希的基本概念&#xff1a; 第二&…...

vue3 element-plus 日期选择器 el-date-picker 汉化

vue3 项目中&#xff0c;element-plus 的日期选择器 el-date-picker 默认是英文版的&#xff0c;如下&#xff1a; 页面引入&#xff1a; //引入汉化语言包 import locale from "element-plus/lib/locale/lang/zh-cn" import { ElDatePicker, ElButton, ElConfigP…...

剑指 Offer(第2版)面试题 35:复杂链表的复制

剑指 Offer&#xff08;第2版&#xff09;面试题 35&#xff1a;复杂链表的复制 剑指 Offer&#xff08;第2版&#xff09;面试题 35&#xff1a;复杂链表的复制解法1&#xff1a;模拟 剑指 Offer&#xff08;第2版&#xff09;面试题 35&#xff1a;复杂链表的复制 题目来源&…...

自定义指令Custom Directives

<script setup langts> import { ref } from "vue"const state ref(false)/*** Implement the custom directive* Make sure the input element focuses/blurs when the state is toggled* */ // 以v开头的驼峰式命名的变量都可以作为一个自定义指令 const VF…...

预测性维护对制造企业设备管理的作用

制造企业设备管理和维护对于生产效率和成本控制至关重要。然而&#xff0c;传统的维护方法往往无法准确预测设备故障&#xff0c;导致生产中断和高额维修费用。为了应对这一挑战&#xff0c;越来越多的制造企业开始采用预测性维护技术。 预测性维护是通过传感器数据、机器学习和…...

华为、新华三、锐捷常用命令总结

华为、新华三、锐捷常用命令总结 一、华为交换机基础配置命令二、H3C交换机的基本配置三、锐捷交换机基础命令配置 一、华为交换机基础配置命令 1、创建vlan&#xff1a; <Quidway> //用户视图&#xff0c;也就是在Quidway模式下运行命令。 <Quidway>system-view…...

链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述

目录 OpenTelemetry 是什么&#xff1f; OpenTelemetry 的起源和目标 OpenTelemetry 主要特点和功能 OpenTelemetry 的核心组件 OpenTelemetry 的工作原理 OpenTelemetry 的特点 OpenTelemetry 的应用场景 小结 OpenTelemetry 是什么&#xff1f; OpenTelemetry 是一个…...

Node.js 工作线程与子进程:应该使用哪一个

Node.js 工作线程与子进程&#xff1a;应该使用哪一个 并行处理在计算密集型应用程序中起着至关重要的作用。例如&#xff0c;考虑一个确定给定数字是否为素数的应用程序。如果我们熟悉素数&#xff0c;我们就会知道必须从 1 遍历到该数的平方根才能确定它是否是素数&#xff…...

python matplotlib 三维图形添加文字且不随图形变动而变动

要在三维图形中添加文字并使其不随图形变动而变动&#xff0c;可以使用 annotate() 方法。这个方法可以在三维图形中添加文字&#xff0c;并且可以指定文字的位置、对齐方式和字体大小等属性。 下面是一个示例代码&#xff0c;演示如何在三维图形中添加文字&#xff1a; impo…...

Ubuntu设置kubelet启动脚本关闭swap分区

查看swap分区 swapon -s打开swap分区 swapon -a查看/etc/fstab下所有固化的swap分区&#xff0c;注释 vi /etc/fstab修改kubelet.conf文件 vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf添加 ExecStartPre/sbin/swapoff -a生效 systemctl daemon-reload sys…...

MySQL数据库存储

MySQL数据库存储 MySQL数据库简介MySQL开发环境MySQL安装图形化界面工具Navicat使用 表的操作表的概念3.2 创建表3.3 修改表 数据的操作-增删改查4.1 增加数据4.2 删除数据4.3 修改数据4.4 查询数据4.4.1 基础查询4.4.2 分组查询和聚合函数4.4.4 having语句4.4.5 排序4.5 多表联…...

verilog语法进阶,时钟原语

概述&#xff1a; 内容 1. 时钟缓冲 2. 输入时钟缓冲 3. ODDR2作为输出时钟缓冲 1. 输入时钟缓冲 BUFGP verilog c代码&#xff0c;clk作为触发器的边沿触发&#xff0c;会自动将clk综合成时钟信号。 module primitive1(input clk,input a,output reg y); always (posed…...

案例069:基于微信小程序的计算机实验室排课与查询系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

C语言:将三个数从大到小输出

#include<stdio.h> int main() {int a 0;int b 0;int c 0;printf("请输入abc的值&#xff1a;");scanf_s("%d%d%d", &a, &b, &c);if (b > a){int tmp a;a b;b tmp;}if (c > a){int tmp a;a c;c tmp;}if (b < c){int t…...

基于Hadoop的铁路货运大数据平台设计与应用

完整下载&#xff1a;基于Hadoop的铁路货运大数据平台设计与应用 基于Hadoop的铁路货运大数据平台设计与应用 Design and Application of Railway Freight Big Data Platform based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.1 研究背景 4 1.2 研究目的与意义 5 …...

Java基础题2:类和对象

1.下面代码的运行结果是&#xff08;&#xff09; public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功&#xff0c;并输出”s” B.代码编译成功&#xff0c;并输出”snull” C.由于String s没有初始化&#xff0c;代码不能…...

冒泡排序学习

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它通过重复地交换相邻的元素来排序。具体实现如下&#xff1a; 1. 从待排序的数组中的第一个元素开始&#xff0c;依次比较相邻的两个元素。 2. 如果前一个元素大于后一个元素&#xff0c;则交换…...

LeetCode(65)LRU 缓存【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; LRU 缓存 1.题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 k…...

网站提示“不安全”

当你在浏览网站时&#xff0c;有时可能会遇到浏览器提示网站不安全的情况。这通常是由于网站缺乏SSL证书所致。那么&#xff0c;从SSL证书的角度出发&#xff0c;我们应该如何解决这个问题呢&#xff1f; 首先&#xff0c;让我们简单了解一下SSL证书。SSL证书是一种用于保护网站…...

【Linux】驱动

驱动 驱动程序过程 系统调用 用户空间 内核空间 添加驱动和调用驱动 驱动程序是如何调用设备硬件 驱动 在计算机领域&#xff0c;驱动&#xff08;Driver&#xff09;是一种软件&#xff0c;它充当硬件设备与操作系统之间的桥梁&#xff0c;允许它们进行通信和协同工作。驱动程…...

网站建设优化服务方案/网站优化seo

闲聊 最近一直不在状态&#xff0c;月初就被博客质量的事给弄的情绪低落&#xff0c;之后群里又走了两个朋友&#xff0c;心情是一直在低谷徘徊&#xff0c;博客也是不想写&#xff0c;状态一天不如一天&#xff0c;总之就是一句话&#xff0c;不想工作。所以…… 有没有小(fu)…...

网站建设我要自学网/宣传推广方案

自然框架里的元数据 元数据的职责&#xff1a;  自然框架里的元数据有三个职责&#xff1a;描述数据库&#xff08;字段、表、视图等&#xff09;&#xff0c;描述项目&#xff08;功能节点、操作按钮等&#xff09;&#xff0c;项目和数据库的关系&#xff08;一个列表页面里…...

我的世界做图片网站/口碑营销什么意思

集合-set集合是高中数学中的一个概念一堆确定的无序的唯一的数据&#xff0c;集合中每一个数据成为一个元素#集合的定义s set()print(type(s))print(s)print("*"*30)#此时&#xff0c;大括号内一定要有值&#xff0c;否则定义出的是一个dicts {}print(type(s))print(…...

注册网页需要多少钱/seo就业前景

燕十八-PHP公益培训-YY直播-001-开学典礼.wmv燕十八-PHP公益培训-YY直播-002-变量概念及命名规范.wmv燕十八-PHP公益培训-YY直播-003-变量类型.wmv燕十八-PHP公益培训-YY直播-004-动态变量及变量类型检测.wmv燕十八-PHP公益培训-YY直播-005-传值赋值与引用赋值.wmv燕十八-PHP公…...

山东城市建设职业学院教务网网站/杭州seo中心

1.表述hive和hadoop的关系&#xff1a; hive存储数据实在hdfs上&#xff0c;hive计算的底层使用的mapreduce&#xff0c;执行的程序运行在yarn上 2.hive的内部表和外部表的区别&#xff1a; 内部表删除数据会把元数据和数据都删除 外部表只删除元数据不会删除存储在hdfs上的数据…...

个人网站制作成品/昆明网站seo公司

1 前言本文以两道经典建模题为例, 进一步介绍 Gurobi 与 Python 的交互, 以及其在建模中的应用. 阅读本文前, 建议读者先配置好 Gurobi 环境, 并且对数学建模有一定的认识 (吹水, 不考虑绝对的严谨性)。本文也可作为建模小白的“入门指南”, 全文都是按照我的思维过程进行书写,…...