【K8S学习之探针】详细了解就绪探针 readinessProbe 和存活探针 livenessProbe 的配置
参考
- Pod健康检查 · Kubernetes 学习笔记
- Kubernetes 就绪探针(Readiness Probe) - 人艰不拆_zmc - 博客园
- Kubernetes存活探针(Liveness Probe) - 人艰不拆_zmc - 博客园
Pod健康检查
Pod的健康状态由两类探针来检查:LivenessProbe
和ReadinessProbe
。
探针种类 | 作用 | 使用场景 |
---|---|---|
readinessProbe(就绪探针) | 控制是否流量接入 控制Pod 的 Ready 状态(流量路由相关) | 适用于应用初始化过程较长;gRPC 服务准备需等待 |
livenessProbe(存活探针) | 控制pod内容器是否重启 控制Pod 内容器 的 生死状态(Kubelet 是否重启) 同时容器的重启需要指定 restartPolicy 为 Always 或 OnFailure | 适用于防止容器挂死、内存泄漏、死循环等 |
简单描述流程
┌─────────────┐
│ Pod 启动中 │
└─────┬───────┘│ readinessProbe▼
┌──────────────┐
│ Ready = True │ ←─→ 接收流量、被 sidecar 调用
└──────────────┘│ livenessProbe▼健康失败 → 自动重启容器
restartPolicy 直观对比
- 配置在 Pod 中,.spec 下
restartPolicy | 会在容器退出后重启? | 典型用途 |
---|---|---|
Always | ✅ 任何原因退出都会重启 | 长期运行服务,如 Web 服务、CSI 插件 |
OnFailure | ✅ 仅退出码 ≠ 0 才会重启 | 批处理任务,失败时尝试重跑 |
Never | ❌ 不重启 | 调试、测试、一次性运行 |
默认 restartPolicy
对照表
控制器类型 | 默认 restartPolicy | 是否自动重启容器 |
---|---|---|
Deployment | Always | ✅ 是,容器退出或探针失败会自动重启 |
StatefulSet | Always | ✅ 是 |
DaemonSet | Always | ✅ 是 |
Job | OnFailure | ✅ 是,仅任务失败时重启 |
CronJob | OnFailure | ✅ 是 |
裸 Pod(无控制器) | Always (如未手动设置) | ✅ 是,但需要 Kubelet 能重启 |
手动设置 | Never / OnFailure / Always | 根据设置决定 |
通用配置参数
常用的参数为timeoutSeconds
、periodSeconds
、periodSeconds
,即接口超时时间,重试频率,重试次数三个值。
initialDelaySeconds
:启动容器后首次进行健康检查的等待时间,单位为秒,默认值为0。timeoutSeconds
:健康检查接口超时响应的时间,默认为1秒,最小值为1秒。periodSeconds
:重试的频率,默认值为10秒,即10秒重试一次,最小值是1秒,建议可以设置为3-5秒。failureThreshold
:失败重试的次数,默认值为3,最小值为1。successThreshold
:最小探测成功次数,默认值为1,一般不设置。
除了以上的通用参数外,livenessProbe
和readinessProbe
参数基本一致。以下以readinessProbe
为例说明探针的使用方式。
探测方式
三种探测方式总览
类型 | 探测方式 | 说明 | 举例 |
---|---|---|---|
HTTP | httpGet | 发 HTTP 请求,期待 2xx/3xx 状态码; 不支持鉴权 | Web 服务、HTTP 接口检查 |
TCP | tcpSocket | 检查端口是否能连接(TCP 三次握手) | 检查 Redis、MySQL 存活 |
Exec | exec | 容器内执行命令,0 为成功,非 0 为失败 | 检查文件、socket、自定义命令 |
建议
应用类型 | 推荐探测方式 |
---|---|
Web 服务 | HTTP |
数据库、缓存服务 | TCP 或 Exec |
gRPC、CSI 插件等非 HTTP 应用 | Exec |
1️⃣ HTTP 探测(适合 Web 服务)
readinessProbe:httpGet:path: /healthzport: 8080initialDelaySeconds: 3periodSeconds: 10
---
livenessProbe:httpGet:path: /liveport: 8080initialDelaySeconds: 5periodSeconds: 15
- Kubernetes 的 HTTP 探针 (
httpGet
) 不支持设置鉴权(如 Header、Token、Basic Auth 等),它只能发起一个非常基础的 无认证的 GET 请求- 支持的基本认证方式(有限),可以手动加上 Basic Auth 或静态 Token,例如:
livenessProbe:httpGet:path: /healthzport: 8080host: 127.0.0.1scheme: HTTPhttpHeaders: # ✅ 仅支持自定义 Header(有限的鉴权)# 虽然可以配置 httpHeaders,但它仅支持添加固定值的请求头,不支持动态 Token、OAuth、JWT 等复杂认证机制。- name: X-Customvalue: some-value
---
# 支持的基本认证方式(有限)
# 可以手动加上 Basic Auth 或静态 Token,例如:
# ⚠️ 注意:Kubernetes 不会自动加密或刷新 Token,不适合需要动态鉴权的系统。
livenessProbe:httpGet:path: /healthzport: 8080scheme: HTTPhttpHeaders:- name: Authorizationvalue: "Bearer your-static-token"
-
更复杂鉴权怎么办?
-
如果你的健康检查接口需要:
- JWT 验证
- OAuth 令牌
- mTLS
- Cookie 会话
你有两个常见替代方案:
# 🔁 方案 1:增加一个 无鉴权的 /healthz 路由
# 让健康检查接口跳过鉴权,例如:
# 这是最推荐的方案,被广泛使用。
if req.URL.Path == "/healthz" {return 200
}
---
# 🛠️ 方案 2:用 Exec 或 Sidecar 转发带 Token 的请求
# 写一个 shell 脚本用 curl 加 Token:
# 或在容器里运行一个 sidecar 服务专门处理健康探测转发。
exec:command:- /bin/sh- -c- curl -H "Authorization: Bearer $MY_TOKEN" http://localhost:8080/secure-health
2️⃣ TCP 探测(适合没有健康接口的服务)
livenessProbe:tcpSocket:port: 3306initialDelaySeconds: 10periodSeconds: 20
这个探针只会判断 TCP 端口是否能连通,不判断服务逻辑是否正常。
3️⃣ Exec 探测(适合非 HTTP 应用,如 CSI 插件)
readinessProbe:exec:command:- /bin/sh- -c- 'test -S /csi/csi.sock'initialDelaySeconds: 5periodSeconds: 10
这类适合自定义协议、gRPC、检查 Unix socket 文件等场景。
详解
1. 探针类型
1. livenessProbe(存活探针)
- 表明容器是否正在运行。
- 如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其
重启策略
的影响。 - 如果容器不提供存活探针,则默认状态为
Success
。
2. readinessProbe(就绪探针)
- 表明容器是否可以正常接受请求。
- 如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址。
- 初始延迟之前的就绪状态默认为
Failure
。 - 如果容器不提供就绪探针,则默认状态为
Success
。
2. 探针使用场景
- 如果容器异常可以自动崩溃,则不一定要使用探针,可以由Pod的
restartPolicy
执行重启操作。 存活探针
适用于希望容器探测失败后被杀死并重新启动,需要指定restartPolicy
为 Always 或 OnFailure。就绪探针
适用于希望Pod在不能正常接收流量的时候被剔除,并且在就绪探针探测成功后才接收流量。
探针
是kubelet
对容器执行定期的诊断,主要通过调用容器配置的四类Handler
实现:
Handler的类型:
ExecAction
:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。TCPSocketAction
:对指定端口上的容器的 IP 地址进行 TCP 检查。如果端口打开,则诊断被认为是成功的。HTTPGetAction
:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。GRPCAction
:调用GRPC接口来判断服务是否健康。 如果响应的状态是 “SERVING”,则认为诊断成功。
探测结果为以下三种之一:
成功
:容器通过了诊断。失败
:容器未通过诊断。未知
:诊断失败,因此不会采取任何行动。
3. 探针的配置
探针配置在pod的container结构体下,livenessProbe
和readinessProbe
参数基本一致。
3.1. 探针通用参数
常用的参数为timeoutSeconds
、periodSeconds
、periodSeconds
,即接口超时时间,重试频率,重试次数三个值。
initialDelaySeconds
:启动容器后首次进行健康检查的等待时间,单位为秒,默认值为0。timeoutSeconds
:健康检查接口超时响应的时间,默认为1秒,最小值为1秒。periodSeconds
:重试的频率,默认值为10秒,即10秒重试一次,最小值是1秒,建议可以设置为3-5秒。failureThreshold
:失败重试的次数,默认值为3,最小值为1。successThreshold
:最小探测成功次数,默认值为1,一般不设置。
除了以上的通用参数外,livenessProbe
和readinessProbe
参数基本一致。以下以readinessProbe
为例说明探针的使用方式。
3.2. ReadinessProbe三种实现方式
3.2.1. HTTPGetAction
通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于等于400,则认为容器健康。
apiVersion: v1
kind: Pod
metadata:name: pod-with-healthcheck
spec:restartPolicy: Always # ⭐ 容器探针依赖此项自动重启,默认也是 Always 或 OnFailurecontainers:- name: nginximage: nginxports:- containnerPort: 80readinessProbe:httpGet:path: /_status/healthzport: 80scheme: HTTPinitialDelaySeconds: 1periodSeconds: 5timeoutSeconds: 5
3.2.2. TCPSocketAction
通过容器IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。
apiVersion: v1
kind: Pod
metadata:name: pod-with-healthcheck
spec:containers:- name: nginximage: nginxports:- containnerPort: 80readinessProbe:tcpSocket:port: 80initialDelaySeconds: 1timeoutSeconds: 5
3.2.3. ExecAction
在一个容器内部执行一个命令,如果该命令状态返回值为0,则表明容器健康。
apiVersion: v1
kind: Pod
metadata:name: readiness-exec
spec:containers:- name: readinessimage: tomcagcr.io/google_containers/busyboxargs:- /bin/sh- -c- echo ok > /tmp/health;sleep 10;rm -fr /tmp/health;sleep 600readinessreadinessProbe:exec:command:- cat- /tmp/healthinitialDelaySeconds: 1timeoutSeconds: 5
4. 探针相关源码
探针配置在pod的container结构体下:
// 存活探针LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,10,opt,name=livenessProbe"`// 就绪探针ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
4.1. Probe源码
type Probe struct {// The action taken to determine the health of a containerProbeHandler `json:",inline" protobuf:"bytes,1,opt,name=handler"`// Number of seconds after the container has started before liveness probes are initiated.// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes// +optionalInitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty" protobuf:"varint,2,opt,name=initialDelaySeconds"`// Number of seconds after which the probe times out.// Defaults to 1 second. Minimum value is 1.// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes// +optionalTimeoutSeconds int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,3,opt,name=timeoutSeconds"`// How often (in seconds) to perform the probe.// Default to 10 seconds. Minimum value is 1.// +optionalPeriodSeconds int32 `json:"periodSeconds,omitempty" protobuf:"varint,4,opt,name=periodSeconds"`// Minimum consecutive successes for the probe to be considered successful after having failed.// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.// +optionalSuccessThreshold int32 `json:"successThreshold,omitempty" protobuf:"varint,5,opt,name=successThreshold"`// Minimum consecutive failures for the probe to be considered failed after having succeeded.// Defaults to 3. Minimum value is 1.// +optionalFailureThreshold int32 `json:"failureThreshold,omitempty" protobuf:"varint,6,opt,name=failureThreshold"`// Optional duration in seconds the pod needs to terminate gracefully upon probe failure.// The grace period is the duration in seconds after the processes running in the pod are sent// a termination signal and the time when the processes are forcibly halted with a kill signal.// Set this value longer than the expected cleanup time for your process.// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this// value overrides the value provided by the pod spec.// Value must be non-negative integer. The value zero indicates stop immediately via// the kill signal (no opportunity to shut down).// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.// +optionalTerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty" protobuf:"varint,7,opt,name=terminationGracePeriodSeconds"`
}
4.2. ProbeHandler源码
// ProbeHandler defines a specific action that should be taken in a probe.
// One and only one of the fields must be specified.
type ProbeHandler struct {// Exec specifies the action to take.// +optionalExec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"`// HTTPGet specifies the http request to perform.// +optionalHTTPGet *HTTPGetAction `json:"httpGet,omitempty" protobuf:"bytes,2,opt,name=httpGet"`// TCPSocket specifies an action involving a TCP port.// +optionalTCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" protobuf:"bytes,3,opt,name=tcpSocket"`// GRPC specifies an action involving a GRPC port.// This is a beta field and requires enabling GRPCContainerProbe feature gate.// +featureGate=GRPCContainerProbe// +optionalGRPC *GRPCAction `json:"grpc,omitempty" protobuf:"bytes,4,opt,name=grpc"`
}
4.3. ProbeAction
4.3.1. HTTPGetAction
// HTTPHeader describes a custom header to be used in HTTP probes
type HTTPHeader struct {// The header field nameName string `json:"name" protobuf:"bytes,1,opt,name=name"`// The header field valueValue string `json:"value" protobuf:"bytes,2,opt,name=value"`
}// HTTPGetAction describes an action based on HTTP Get requests.
type HTTPGetAction struct {// Path to access on the HTTP server.// +optionalPath string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"`// Name or number of the port to access on the container.// Number must be in the range 1 to 65534. // Name must be an IANA_SVC_NAME.Port intstr.IntOrString `json:"port" protobuf:"bytes,2,opt,name=port"`// Host name to connect to, defaults to the pod IP. You probably want to set// "Host" in httpHeaders instead.// +optionalHost string `json:"host,omitempty" protobuf:"bytes,3,opt,name=host"`// Scheme to use for connecting to the host.// Defaults to HTTP.// +optionalScheme URIScheme `json:"scheme,omitempty" protobuf:"bytes,4,opt,name=scheme,casttype=URIScheme"`// Custom headers to set in the request. HTTP allows repeated headers.// +optionalHTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty" protobuf:"bytes,5,rep,name=httpHeaders"`
}// URIScheme identifies the scheme used for connection to a host for Get actions
// +enum
type URIScheme stringconst (// URISchemeHTTP means that the scheme used will be http://URISchemeHTTP URIScheme = "HTTP"// URISchemeHTTPS means that the scheme used will be https://URISchemeHTTPS URIScheme = "HTTPS"
)
4.3.2. TCPSocketAction
// TCPSocketAction describes an action based on opening a socket
type TCPSocketAction struct {// Number or name of the port to access on the container.// Number must be in the range 1 to 65534. // Name must be an IANA_SVC_NAME.Port intstr.IntOrString `json:"port" protobuf:"bytes,1,opt,name=port"`// Optional: Host name to connect to, defaults to the pod IP.// +optionalHost string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"`
}
4.3.3. ExecAction
// ExecAction describes a "run in container" action.
type ExecAction struct {// Command is the command line to execute inside the container, the working directory for the// command is root ('/') in the container's filesystem. The command is simply exec'd, it is// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use// a shell, you need to explicitly call out to that shell.// Exit status of 0 is treated as live/healthy and non-zero is unhealthy.// +optionalCommand []string `json:"command,omitempty" protobuf:"bytes,1,rep,name=command"`
}
4.3.4. GRPCAction
type GRPCAction struct {// Port number of the gRPC service. Number must be in the range 1 to 65534. Port int32 `json:"port" protobuf:"bytes,1,opt,name=port"`// Service is the name of the service to place in the gRPC HealthCheckRequest// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).//// If this is not specified, the default behavior is defined by gRPC.// +optional// +default=""Service *string `json:"service" protobuf:"bytes,2,opt,name=service"`
}
参考文章:
- https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
- 配置存活、就绪和启动探针 | Kubernetes
- https://mp.weixin.qq.com/s/ApD8D0_UAPftUjw-0Txcyw
- 《Kubernetes权威指南》
相关文章:
【K8S学习之探针】详细了解就绪探针 readinessProbe 和存活探针 livenessProbe 的配置
参考 Pod健康检查 Kubernetes 学习笔记Kubernetes 就绪探针(Readiness Probe) - 人艰不拆_zmc - 博客园Kubernetes存活探针(Liveness Probe) - 人艰不拆_zmc - 博客园 Pod健康检查 Pod的健康状态由两类探针来检查:…...
WSL 安装 Debian 12 后,Linux 如何安装 redis ?
在 WSL 的 Debian 12 上安装 Redis 的步骤如下: 1. 更新系统包列表 sudo apt update && sudo apt upgrade -y2. 安装 Redis sudo apt install redis-server -y3. 启动 Redis 服务 sudo systemctl start redis4. 设置开机自启 sudo systemctl enable red…...
python打卡day22
复习日 仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦里克号人员生还预测 就是很简单很草率地走了一遍机器学习的经典流程&am…...
国产化Excel处理控件Spire.XLS系列教程:如何通过 C# 删除 Excel 工作表中的筛选器
在 Excel 文件中,筛选器(Filter)是一个常用的数据处理工具,可以帮助用户快速按条件筛选数据行。但在数据整理完成、导出、共享或打印之前,往往需要 删除 Excel 工作表中的筛选器,移除列标题中的下拉筛选按钮…...
使用 DMM 测试 TDR
TDR(时域反射计)可能是实验室中上升时间最快的仪器,但您可以使用直流欧姆表测试其准确性。 TDR 测量什么 在所有高速通道中,反射都很糟糕。我们尝试设计一个通道来减少反射,这些反射都会导致符号间干扰 (…...
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明)
基于卡尔曼滤波的传感器融合技术的多传感器融合技术(附战场环境模拟可视化代码及应用说明) 1 目标运动状态空间建模1.1 状态向量定义1.2 状态转移方程1.3 观测模型构建2 卡尔曼滤波核心算法实现2.1 初始化2.2 预测步骤2.3 更新步骤3 多传感器融合仿真验证3.1 传感器模型模拟3…...
M8040A/M8199助力数据中心收发信机测试
随着数字通信和大数据的不断发展,误码率测试变得越来越重要。高性能误码率测试仪作为一种关键的测试设备,可以对数字信号进行高速、高精度的误码率测试,广泛应用于通信、数据中心、半导体等行业。 M8040A误码仪系统当前不仅在上游IP和顶层芯…...
傲云源墅:以五傲价值重构北京主城别墅格局
在高端别墅市场中,产品自身的品质与特色是吸引客户的关键。北京傲云源墅以其独特的 “五傲” 价值,重新定义了北京主城别墅的标准。 首先是低密之傲,傲云源墅的容积率低至约 0.9,与市场上 1.0 以上容积率的别墅相比,为…...
精益数据分析(56/126):创业阶段的划分与精益数据分析实践
精益数据分析(56/126):创业阶段的划分与精益数据分析实践 在创业和数据分析的探索之旅中,理解创业阶段的划分以及与之对应的精益数据分析方法至关重要。今天,依旧怀揣着与大家共同进步的心态,深入研读《精…...
[redis进阶六]详解redis作为缓存分布式锁
目录 一 什么是缓存 缓存总结板书: 二 使⽤Redis作为缓存 三 缓存的更新策略 1) 定期⽣成 2) 实时⽣成 四 面试重点:缓存预热,缓存穿透,缓存雪崩 和缓存击穿 1)缓存预热 2)缓存穿透 3)缓存雪崩 4)缓存击穿 五 分布式锁 板书: 1)什么是分布式锁 2)分布式锁的基…...
【RabbitMQ】应用问题、仲裁队列(Raft算法)和HAProxy负载均衡
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、幂等性保障 什么是幂等性? 幂等性是指对一个系统进行重复调用(相同参数),无论同一操作执行多少次,这些请求…...
国产密码新时代!华测国密 SSL 证书解锁安全新高度
在数字安全被提升到国家战略高度的今天,国产密码算法成为筑牢网络安全防线的关键力量。华测国密SSL证书凭借其强大性能与贴心服务,为企业网络安全保驾护航,成为符合国家安全要求的不二之选! 智能兼容,告别浏览器适配…...
【Linux篇章】Linux 进程信号2:解锁系统高效运作的 “隐藏指令”,开启性能飞跃新征程(精讲捕捉信号及OS运行机制)
本篇文章将以一个小白视角,通俗易懂带你了解信号在产生,保存之后如何进行捕捉;以及在信号这个话题中;OS扮演的角色及背后是如何进行操作的;如何理解用户态内核态;还有一些可以引出的其他知识点;…...
C# 基础 try-catch代码块
try-catch代码块是C#中用于异常处理的核心机制。异常是在程序执行过程中可能出现的错误,而try-catch代码块允许您在执行代码时捕获并处理这些异常。 一、基础结构 try {//可能抛出异常的代码 } catch (ArgumentException ex) {//处理特定异常 } catch (Excepti…...
为什么 mac os .bashrc 没有自动加载?
原因说明 在macOS中,默认情况下,终端使用的是Bash或Zsh作为shell。对于较新版本的macOS(从Catalina开始),默认的shell已经切换为Zsh。因此,如果你正在使用Zsh,.bashrc文件不会自动生效…...
【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
目录 1 -> 开发静态共享包 1.1 -> 创建库模块 1.2 -> 编译库模块 2 -> 开发动态共享包 2.1 -> 使用约束 2.2 -> 开发动态共享包 2.2.1 -> 创建HSP模块 2.2.2 -> 编译HSP模块 3 -> 发布共享包 1 -> 开发静态共享包 HAR(Harmony Archive…...
QT6.8安装教程
官网下载 链接: Index of /official_releases/online_installers 这个比较慢 建议去 清华大学开源软件镜像站:Index of /qt/archive/online_installers/4.9/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 根据自己什么系统选择 点击打开…...
【Rust泛型】Rust泛型使用详解与应用场景
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
一周学完计算机网络之三:1、数据链路层概述
简单的概述 数据链路层是计算机网络体系结构中的第二层,它在物理层提供的基本服务基础上,负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。 几个重要概念…...
配置ssh无密登录
在root下有一个.ssh文件夹,它的下面有一个known_hosts文件,这个里面记录了哪些其他的主机通过ssh访问过当前的主机。 免密登录原理 (2)生成公钥和私钥 具体操作: 1. 进入 hadoop1001 2. 运行命令:ssh-keyg…...
南京邮电大学金工实习答案
一、金工实习的定义 金工实习是机械类专业学生一项重要的实践课程,它绝非仅仅只是理论知识在操作层面的简单验证,而是一个全方位培养学生综合实践能力与职业素养的系统工程。从本质上而言,金工实习是学生走出教室,亲身踏入机械加…...
无偿帮写毕业论文
以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行,脱产学习这么多年,终于熬出头了,完成毕设后有空就去多看看亲人好友,祝好! 一、找一个论文模板(最好是overleaf) 废话不多说&#…...
【高数上册笔记01】:从集合映射到区间函数
【参考资料】 同济大学《高等数学》教材樊顺厚老师B站《高等数学精讲》系列课程 (注:本笔记为个人数学复习资料,旨在通过系统化整理替代厚重教材,便于随时查阅与巩固知识要点) 仅用于个人数学复习,因为课…...
大数据从专家到小白
文章目录 数据湖技术Apache Iceberg FlinkHiveHadoopHDFS 数据湖技术 Apache Iceberg Iceberg是一个通用的表格式(数据组织格式),它可以适配Presto,Spark等引擎提供高性能的读写和元数据管理功能。 Flink Hive Hadoop HDFS...
特励达力科LeCroy推出Xena Freya Z800 800GE高性能的800G以太网测试平台
Xena Freya Z800 800GE 是由全球领先的测试与测量解决方案提供商特励达力科公司(Teledyne LeCroy)开发的高性能以太网测试平台,专为满足从10GE到800GE数据中心互连速度的需求而设计。特励达力科公司在网络测试领域拥有超过50年的技术积累&…...
LeetCode 热题 100 98. 验证二叉搜索树
LeetCode 热题 100 | 98. 验证二叉搜索树 大家好,今天我们来解决一道经典的二叉树问题——验证二叉搜索树。这道题在 LeetCode 上被标记为中等难度,要求判断给定的二叉树是否是一个有效的二叉搜索树(BST)。 问题描述 给你一个二…...
Linux文件编程——open函数
在 Linux 系统中,文件操作不仅仅通过高级语言的标准库进行,底层的文件操作是通过 系统调用 来实现的。系统调用 是用户空间与操作系统内核之间的接口,允许程序请求操作系统提供的服务,包括文件读写、内存管理、进程控制等。本文将…...
Linux-Ext系列文件系统
1.理解硬件 1.1磁盘 机械磁盘是计算机中唯⼀的⼀个机械设备 磁盘---外设 慢 容量⼤,价格便宜 1.2磁盘的物理结构 1.3磁盘的存储结构 扇区:是磁盘存储数据的基本单位,512字节,块设备 如何定位⼀个扇区呢? 可以先定…...
Multisim14使用教程详尽版--(2025最新版)
一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim:NI开发的SPICE标准仿真工具,支持模拟/数字电路混合仿真,内置丰富的元件库和虚拟仪器(示波器、频谱仪等),适合教学和竞赛设计。官网:艾…...
C——猜数字游戏
前面我们已经学习了C语言常见概念,数据类型和变量以及分置于循环的内容,现在我们可以将这些内容结合起来写一个有趣的小游戏。下面正式开始我们今天的主题——猜数字游戏的实现。 猜数字游戏的要求: 1.电脑自动生成1~100的随机数。 2.玩家…...
【iOS】SDWebImage源码学习
SDWebImage源码学习 文章目录 SDWebImage源码学习前言SDWebImage缓存流程sd_setImageWithURL(UIImageViewWebCache层)sd_internalSetImageWithURL(UIViewWebCache层)loadImageWithURL(SDWebManger层)queryCacheOperationForKey(SDImageCache层)删除缓存 callDownloadProcessFor…...
.Net HttpClient 处理响应数据
HttpClient 处理响应数据 1、初始化及全局设置 //初始化:必须先执行一次 #!import ./ini.ipynb2、处理响应状态 //判断响应码:正常 {var response await SharedClient.GetAsync("api/Normal/GetAccount?id1");if(response.StatusCode Sy…...
【心海资源】【最新话费盗u】【未测】提币对方官方波场+没有任何加密+无后门+前端VUE
提笔接口请使用官方提笔,第三方提笔都有风险 后门你们也扫扫,这种源码风险大,自己玩玩学习进行了 重要的事情说三遍 !!!!!!!!!&…...
Python中的标识、相等性与别名:深入理解对象引用机制
在Python编程中,理解变量如何引用对象以及对象之间的比较方式是至关重要的基础概念。本文将通过Lewis Carroll的笔名示例,深入探讨Python中的对象标识、相等性判断以及别名机制。 别名现象:变量共享同一对象 >>> charles {name: …...
Java 1.8(也称为Java 8)
Java 1.8(也称为Java 8)是Oracle于2014年发布的一个重要版本,引入了许多新特性和改进,极大地提升了Java语言的表达力和开发效率。以下是Java 1.8的主要新特性: ### 1. Lambda表达式 Lambda表达式是Java 1.8最具革命性…...
LVGL简易计算器实战
文章目录 📁 文件结构建议🔹 eval.h 表达式求值头文件🔹 eval.c 表达式求值实现文件(带详细注释)🔹 ui.h 界面头文件🔹 ui.c 界面实现文件🔹 main.c 主函数入口✅ 总结 项目效果&…...
Linux | Uboot-Logo 修改文档(第十七天)
01 Uboot 修改 首先我们在 home 目录下新建一个文件夹 imx6ull,然后打开 i.MX6ULL 终结者光盘资料\05_uboot linux源码,在 window 下解压下图箭头所指的压缩包,解压后分别得到 linux-imx-rel_imx_4.1.15_2.1.0_ga_20200323.tar.gz 和 uboot-imx-rel_imx_4.1.15_2.1.0_…...
数字孪生概念
数字孪生(Digital Twin) 是指通过数字技术对物理实体(如设备、系统、流程或环境)进行高保真建模和实时动态映射,实现虚实交互、仿真预测和优化决策的技术体系。它是工业4.0、智慧城市和数字化转型的核心技术之一。 1. …...
c++STL-string的使用
这里写自定义目录标题 string的使用string写成类模板的原因string的版本举例构造、析构函数和赋值重载构造函数和析构函数operator Iterators迭代器begin和endrbegin和rendcbegin和cend,crbegin和crend(c11) capacity容量有关函数不同编译器下…...
总结C/C++中程序内存区域划分
C/C程序内存分配的⼏个区域 1..栈区(stack):在执⾏函数时,函数内局部变量的存储单元都可以在栈上创建,函数执⾏结束时 这些存储单元⾃动被释放。栈内存分配运算内置于处理器的指令集中,效率很⾼,…...
C# 方法(方法重载)
本章内容: 方法的结构 方法体内部的代码执行 局部变量 局部常量 控制流 方法调用 返回值 返回语句和void方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 方法重载 一个类中可以有多个…...
Dockerfile 完全指南:从入门到最佳实践
Dockerfile 完全指南:从入门到最佳实践 1. Dockerfile 简介与作用 Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像的指令。它允许开发者通过简单的指令定义镜像的构建过程,实现自动化、可重复的镜像构建。 主要作用…...
DEEPPOLAR:通过深度学习发明非线性大核极坐标码(2)
目录 2.问题的提出和背景 2.1 信道编码 2.2.极化码 极坐标编码 极坐标解码 原文:《DEEPPOLAR: Inventing Nonlinear Large-Kernel Polar Codes via Deep Learning》 2.问题的提出和背景 2.1 信道编码 信道编码是一种为传输添加冗余的技术,使其对…...
ESP32-S3 学习笔记(1)
ESP32-S3 学习笔记(1) 背景环境添加工程文件材料准备轻触开关的正负极 背景 闲来无事,看到立创论坛上有许多大佬开源的项目,甚是厉害,于是决定自己也来搞一搞,同时可以做一些技术积累,看了很…...
Python Cookbook-7.9 访问 MySQL 数据库
任务 想访问一个 MySQL 数据库。 解决方案 MySQLdb 模块正是为这种任务而设计的: import MySQLdb #创建一个连接对象,再用它创建游标 con = MySQLdb.connect(host = "127.0.0.1", port = 3306, user = "joe",<...
docker安装superset实践
1、拉取docker镜像 docker pull apache/superset:latest 2、安装superset容器 mkdir /usr/local/develop/docker/superset/ -p touch /usr/local/develop/docker/superset/superset_config.py superset_config.py配置文件如下: SQLALCHEMY_DATABASE_URI mysql:…...
Web开发—Vue工程化
文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三,Vue项目创建 四,项目结构 五,启动项目 六,Vue项目开发流程 七,API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…...
什么是硬件中断请求号?什么是中断向量号?
一、硬件中断请求号(IRQ,Interrupt Request Number) 定义: 硬件中断请求号(IRQ)是硬件设备向CPU发送中断请求时使用的唯一标识符,用于区分不同的中断源。例如,键盘、硬盘等外设…...
[Java实战]Spring Boot 定时任务(十五)
[Java实战]Spring Boot 定时任务(十五) 一、定时任务的应用场景 数据同步:每日凌晨同步第三方数据状态检查:每5分钟扫描订单超时未支付资源清理:每小时清理临时文件报表生成:每月1号生成财务统计报表通知…...
OpenWrt开发第7篇:OpenWrt配置支持Web界面
文/指尖动听知识库-谷谷 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:Openwrt开发-基于Raspberry Pi 4B开发板 OpenWrt的luci是一个基于Web的图形化管理界面,为用户提供了直观的操作方式,无需命令行即可完成大部分功能的配置。 1.在终端输入ma…...