『K8S 入门』二:深入 Pod
『K8S 入门』二:深入 Pod
一、基础命令
- 获取所有 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
- 常用的资源清单
参数名 | 类型 | 字段说明 |
---|---|---|
apiVersion | String | K8S APl 的版本,可以用 kubectl api versions 命令查询 |
kind | String | yam 文件定义的资源类型和角色 |
metadata | Object | 元数据对象,下面是它的属性 |
metadata.name | String | 元数据对象的名字,比如 pod 的名字 |
metadata.namespace | String | 元数据对象的命名空间 |
Spec | Object | 详细定义对象 |
spec.containers[] | list | 定义 Spec 对象的容器列表 |
spec.containers[].name | String | 为列表中的某个容器定义名称 |
spec.containers[].image | String | 为列表中的某个容器定义需要的镜像名称 |
spec.containers[].imagePullPolicy | string | 定义镜像拉取策略,有 Always、Never、IfNotPresent 三个值可选 - Always(默认):意思是每次都尝试重新拉取镜像 - Never:表示仅适用本地镜像 - IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。 |
spec.containers[].command[] | list | 指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。 |
spec.containers[].args[] | list | 指定容器启动命令参数,因为是数组可以指定多个。 |
spec.containers[].workingDir | string | 指定容器的工作目录 |
spec.containers[].volumeMounts[] | list | 指定容器内部的存储卷配置 |
spec.containers[].volumeMounts[].name | string | 指定可以被容器挂载的存储卷的名称 |
spec.containers[].volumeMounts[].mountPath | string | 指定可以被容器挂载的存储卷的路径 |
spec.containers[].volumeMounts[].readOnly | string | 设置存储卷路径的读写模式,ture 或者 false,默认是读写模式 |
spec.containers[].ports[] | list | 指定容器需要用到的端口列表 |
spec.containers[].ports[].name | string | 指定端口的名称 |
spec.containers[].ports[].containerPort | string | 指定容器需要监听的端口号 |
spec.containers[].ports[].hostPort | string | 指定容器所在主机需要监听的端口号,默认跟上面 containerPort 相同,注意设置了 hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突) |
spec.containers[].ports[].protocol | string | 指定端口协议,支持 TCP 和 UDP,默认值为 TCP |
spec.containers[].env[] | list | 指定容器运行前需设置的环境变量列表 |
spec.containers[].env[].name | string | 指定环境变量名称 |
spec.containers[].env[].value | string | 指定环境变量值 |
spec.containers[].resources | Object | 指定资源限制和资源请求的值(这里开始就是设置容器的资源上限) |
spec.containers[].resources.limits | Object | 指定设置容器运行时资源的运行上限 |
spec.containers[].resources.limits.cpu | string | 指定 CPU 的限制,单位为 Core 数,将用于 docker run –cpu-shares 参数 |
spec.containers[].resources.limits.memory | string | 指定 mem 内存的限制,单位为 MIB、GiB |
spec.containers[].resources.requests | Object | 指定容器启动和调度时的限制设置 |
spec.containers[].resources.requests.cpu | string | CPU请求,单位为core数,容器启动时初始化可用数量 |
spec.containers[].resources.requests.memory | string | 内存请求,单位为MIB、GiB,容器启动的初始化可用数量 |
spec.restartPolicy | string | 定义 pod 的重启策略,可选值为 Always、OnFailure、Never,默认值为 Always。 - Always:pod 一旦终止运行,则无论容器是如何终止的,kubelet 服务都将重启它。 - OnFailure:只有 pod 以非零退出码终止时,kubelet 才会重启该容器。如果容器正常结束(退出码为0),则 kubectl 将不会重启它。 - Never:Pod 终止后,kubelet 将退出码报告给 master,不会重启该 pod |
spec.nodeSelector | Object | 定义 Node 的 label 过滤标签,以 key:value 格式指定 |
spec.imagePullSecrets | Object | 定义 pull 镜像时使用 secret 名称,以 name:secretkey 格式指定 |
spec.hostNetwork | Boolean | 定义是否使用主机网络模式,默认值为 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
二、探针
类型
- StartupProbe:用于判断应用程序是否已经启动了
- 当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会继续
startupProbe:httpGet:path: /api/startupport: 80
- LivenessProbe:用于探测容器中的应用是否运行
- 如果探测失败,kubelet 会根据配置的重启策略进行重启,若没有配置,默认就认为容器启动成功,不会执行重启策略
livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60periodSeconds: 10successThreshold: 1timeoutSeconds: 5
- ReadinessProbe:用于探测容器内的程序是否健康
- 它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的
readinessProbe:failureThreshold: 3 # 错误次数httpGet:path: /readyport: 8181scheme: HTTPperiodSeconds: 10 # 间隔时间successThreshold: 1timeoutSeconds: 1
探测方式
- ExecAction:在容器内部执行一个命令,如果返回值为 0,则任务容器时健康的
livenessProbe:exec:command:- cat- /health
- TCPSocketAction:通过 tcp 连接监测容器内端口是否开放,如果开放则证明该容器健康
livenessProbe:tcpSocket:port: 80
- HTTPGetAction:生产环境用的较多的方式,发送 HTTP 请求到容器内的应用程序,如果接口返回的状态码在 200~400 之间,则认为容器健康
livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPhttpHeaders:- name: xxxvalue: xxx
测试探针
- 每次执行前,先删除测试 pod。修改内容后,重新启动配置,并观察 pod 的启动
# 删除 po
kubectl delete po nginx-demo
# 重新启动容器
kubectl create -f nginx-demo.yaml
# 观察 pod
kubectl describe po nginx-demo
kubectl get po
- 测试 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 的生命周期
- 概述
- 初始化阶段,一定会在容器启动前执行
- 启动后,会先执行 postStart 钩子函数,但是这个函数可能和容器启动的 command 并行执行,有可能发生冲突,所以很少用
- postStart 启动后启动容器应用,先执行 StartupProbe 探针,执行后启动 LivenessProbe 与 ReadinessProbe 探针
- 最后容器住准备结束的时候,执行 preStop 钩子函数(容器不在,钩子函数肯定会失败)
- Pod 推出流程(删除操作)
- Endpoint 删除 pod 的 ip 地址
- pod 变成 Terminating 状态:变为删除中的状态后,会给 pod 一个宽限期,让 pod 去执行一些清理或销毁操作
- 执行 preStop 的指令
# 配置参数:
# 作用于 pod 中的所有容器(默认)
terminationGracePeriodSeconds: 30
containers:- xxx
- 测试生命周期
- 往 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 入门』二:深入 Pod 一、基础命令 获取所有 Pod kubectl get pods2. 获取 deploy kubectl get deploy3. 删除 deploy,这时候相应的 pod 就没了 kubectl delete deploy nginx4. 虽然删掉了 Pod,但是这是时候还有 service,…...

十七、如何将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项目,为什么通过springboot启动步骤启动失败了? 答:用户所部署的jar包源码并不是springboot框架,所以无法用springboot启动步骤启动,该步骤并不等同于java -jar 命令,需要使用shell脚…...

前后端交互—开发一个完整的服务器
代码下载 初始化 新建 apiServer 文件夹作为项目根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件: npm init -y运行如下的命令,安装 express、cors: npm i express cors在项目根目录中新建 app.js 作为整个项目的入口文件&a…...

前端框架的虚拟DOM(Virtual DOM)
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
什么是http状态码?
什么是http状态码? 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。 ht…...
linux/CentOS 7安装Nginx
Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境。 Nginx一般使用非root账号安装,如果还没有非root账号,先创建账号 创建账号 创建组…...

软件工程期末复习+数据仓库ETL
一、软件工程 请用基本路径测试方法为下列程序设计测试用例,并写明中间过程: 第1步:画出流程图 1.菱形用于条件判断。用在有分支的地方。 2.矩形表示一个基本操作。 3.圆形是连接点 第2步:计算程序环路复杂性 流图G的环路复杂…...
学习C语言——体会计算机中的0和1
/* 把hello隐写入一个整型数组,这个小程序可以考察是否清楚数据在内存中存储的具体细节。 具体的说,int类型在小端机器上的存储方式是高位在高地址,低位在低地址,从视觉习惯上和我们的日常书写习惯相反; char类型占用…...

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

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

vue3 element-plus 日期选择器 el-date-picker 汉化
vue3 项目中,element-plus 的日期选择器 el-date-picker 默认是英文版的,如下: 页面引入: //引入汉化语言包 import locale from "element-plus/lib/locale/lang/zh-cn" import { ElDatePicker, ElButton, ElConfigP…...
剑指 Offer(第2版)面试题 35:复杂链表的复制
剑指 Offer(第2版)面试题 35:复杂链表的复制 剑指 Offer(第2版)面试题 35:复杂链表的复制解法1:模拟 剑指 Offer(第2版)面试题 35:复杂链表的复制 题目来源&…...
自定义指令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…...

预测性维护对制造企业设备管理的作用
制造企业设备管理和维护对于生产效率和成本控制至关重要。然而,传统的维护方法往往无法准确预测设备故障,导致生产中断和高额维修费用。为了应对这一挑战,越来越多的制造企业开始采用预测性维护技术。 预测性维护是通过传感器数据、机器学习和…...
华为、新华三、锐捷常用命令总结
华为、新华三、锐捷常用命令总结 一、华为交换机基础配置命令二、H3C交换机的基本配置三、锐捷交换机基础命令配置 一、华为交换机基础配置命令 1、创建vlan: <Quidway> //用户视图,也就是在Quidway模式下运行命令。 <Quidway>system-view…...

链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述
目录 OpenTelemetry 是什么? OpenTelemetry 的起源和目标 OpenTelemetry 主要特点和功能 OpenTelemetry 的核心组件 OpenTelemetry 的工作原理 OpenTelemetry 的特点 OpenTelemetry 的应用场景 小结 OpenTelemetry 是什么? OpenTelemetry 是一个…...

Node.js 工作线程与子进程:应该使用哪一个
Node.js 工作线程与子进程:应该使用哪一个 并行处理在计算密集型应用程序中起着至关重要的作用。例如,考虑一个确定给定数字是否为素数的应用程序。如果我们熟悉素数,我们就会知道必须从 1 遍历到该数的平方根才能确定它是否是素数ÿ…...
python matplotlib 三维图形添加文字且不随图形变动而变动
要在三维图形中添加文字并使其不随图形变动而变动,可以使用 annotate() 方法。这个方法可以在三维图形中添加文字,并且可以指定文字的位置、对齐方式和字体大小等属性。 下面是一个示例代码,演示如何在三维图形中添加文字: impo…...
Ubuntu设置kubelet启动脚本关闭swap分区
查看swap分区 swapon -s打开swap分区 swapon -a查看/etc/fstab下所有固化的swap分区,注释 vi /etc/fstab修改kubelet.conf文件 vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf添加 ExecStartPre/sbin/swapoff -a生效 systemctl daemon-reload sys…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...