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

【kubernetes】K8S节点状态的维护

1 节点状态

节点是K8S集群中的一类重要资源,节点的状态通常可以作为判断集群异常的重要手段。

为了展示节点在各方面的健康程度,在kubectl describe node k8s-master的输出结果中的Conditions部分可以查看k8s-master节点的一些状态数据:

  • NetworkUnavailable:网络配置是否正常
  • MemoryPressure:是否还有可用内存
  • DiskPressure:是否还有可用磁盘
  • PIDPressure:节点上是否有太多的进程
  • Ready:节点是否健康

每种类型用5个字段描述:

  • Status:状态,通常有三种状态:True、False、Unknown
  • LastHeartbeatTime:上一次心跳事件,也就是上次上报该状态信息的时间
  • LastTransitionTime:上一次状态转换的时间
  • Reason:处于当前状态的原因
  • Message:状态描述

NetworkUnavailable状态不是实时的,而是相关的网络插件启动后上报一次,表示网络插件正常启动,但是也无法表明当前的网络是否是正常的,而且,插件运行过程中也没办法知道当前网络是否正常,因此,NetworkUnavailabel只是表明插件成功启动过,无法知道当前的网络是否真的良好。

MemoryPerssure、DiskPressure、PIDPressure都可以通过采集当前节点的数据得到:

  • MemoryPerssure:采集当前节点的内存信息,
  • DiskPressure:采集当前节点的磁盘信息,
  • PIDPressure:采集当前节点的进程信息,

这三个状态值都是由kubelet定时向apiserver上报状态而来,而kube-controller-manager会判断一段时间未上报的情况。

kubectl get node展示的状态即为Conditions中的Ready,该状态由多个条件综合计算而来。

上述状态更新的流程:

  • kubelet会每隔一段时间(kubelet的–node-status-update-frequency参数,默认为10秒)更新节点状态到apiserver
  • NodeController每隔一段时间(kube-controller-manager的–node-monitor-period参数,默认为5秒)检查一次节点状态
  • 如果kubelet超过一段时间(kube-controller-manager的–node-monitor-grace-period参数,默认为50秒)未向apiserver上报,NodeController将节点状态标记为Unknown

2 Kubelet

kubelet在启动时会先上报一次节点状态。

  • fastNodeStatusUpdate(pkg/kubelet/kubelet_node_status.go)
    • originalNode, err := kl.GetNode() 获取当前节点的信息
    • readyIdx, originalNodeReady := nodeutil.GetNodeCondition(&originalNode.Status, v1.NodeReady) 获取当前节点的Condition中的NodeReady,如果为True,则直接返回
    • node, changed := kl.updateNode(ctx, originalNode) 更新当前节点的信息,并返回新的节点信息以及节点信息是否变化的状态,如果节点状态没有变化,则直接返回
    • readyIdx, nodeReady := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady) 获取当前节点的最新信息中的NodeReady状态,如果为False,则直接返回
    • kl.patchNodeStatus(originalNode, node) 此时节点状态发生了由NotReady向Ready的变化
      • nodeutil.PatchNodeStatus 向apiserver上报节点Ready(毕竟节点没办法自己上报NotReady)
    • kl.syncNodeStatus() 如果上面向apiserver上报节点Ready失败了,则调用syncNodeStatus()
      • kl.registerWithAPIServer() 向apiserver注册节点,如果已经注册过了则直接返回
      • kl.updateNodeStatus(ctx) 更新节点状态
        • kl.tryUpdateNodeStatus(ctx, i)
          • util.FromApiserverCache(&opts) 将GET操作的选项中的ResourceVersion设置为0
          • originalNode, err := kl.heartbeatClient.CoreV1().Nodes().Get(ctx, string(kl.nodeName), opts) 调用apiserver接口获取节点信息,为了减少apiserver访问etcd带来的性能影响,这里调用时apiserver会从缓存中获取,而不是读取etcd
          • updatedNode, err := kl.patchNodeStatus(originalNode, node) 如果检测出apiserver返回的节点信息和当前获取到的节点信息有变化,或者距离上次节点信息上报超过--node-status-update-frequency参数,则向apiserver更新节点状态

kubelet启动时为了尽可能快地将节点状态上报给apiserver,每隔100毫秒执行一次fastNodeStatusUpdate函数,有两种情况结束执行:

  • 成功地将Ready状态上报给apiserver
  • 启动后超过2分钟状态还未更新

在kubelet启动后,会每隔--node-status-update-frequency时间上报一次:

// pkg/kubelet/kubelet.go
// func (kl *Kubelet) Run(updates <-chan kubetypes.PodUpdate)
go wait.JitterUntil(kl.syncNodeStatus, kl.nodeStatusUpdateFrequency, 0.04, true, wait.NeverStop)

3 NodeLifecycleController

节点控制器在K8S中是NodeLifecycleController(节点生命周期控制器)。

kube-controller-manager在创建NodeLifecycleController时会传递三个参数:

  • NodeMonitorPeriod:检查节点状态的周期
  • NodeStartupGracePeriod:节点启动的缓冲期,当节点创建或者节点重启时会预留一段时间
  • NodeMonitorGracePeriod:检查节点状态的缓冲期

NodeLifecycleController在启动时会创建一个定时任务的协程:

// pkg/controller/nodelifecycle/node_lifecycle_controller.go
// func (nc *Controller) Run(ctx context.Context)
go wait.UntilWithContext(ctx, func(ctx context.Context) {if err := nc.monitorNodeHealth(ctx); err != nil {logger.Error(err, "Error monitoring node health")}}, nc.nodeMonitorPeriod)

monitorNodeHealth的调用流程如下:

  • monitorNodeHealth
    • nodes, err := nc.nodeLister.List(labels.Everything()) 获取所有的节点
    • added, deleted, newZoneRepresentatives := nc.classifyNodes(nodes) 将节点分为三类:新增的、删除的、no zone states?
    • 分别对上述的三种类别的节点进行处理
    • workqueue.ParallelizeUntil(ctx, nc.nodeUpdateWorkerSize, len(nodes), updateNodeFunc) 并发执行updateNodeFunc函数,updateNodeFunc的调用流程如下:
      • node := nodes[piece].DeepCopy() 函数的参数是个索引piece,然后从获取到的所有节点中根据索引piece取出节点
      • _, observedReadyCondition, currentReadyCondition, err = nc.tryUpdateNodeHealth(ctx, node) 尝试更新节点的健康状态
        • _, currentReadyCondition := controllerutil.GetNodeCondition(&node.Status, v1.NodeReady) 获取节点的Condition中的NodeReady
        • 如果当前节点的的ReadyCondition为空,说明kubelet从未上报过节点状态,则将gracePeriod设置为NodeStartupGracePeriod,否则将gracePeriod设置为NodeMonitorGracePeriod
        • observedLease, _ := nc.leaseLister.Leases(v1.NamespaceNodeLease).Get(node.Name) 获取节点的lease
        • 如果距离上次探测时间超过gracePeriod,说明节点状态更新已经超过缓冲期,则执行以下逻辑:
          • 遍历所有的Condition类型(此处不考虑NodeNetworkUnavailable)
          • 如果没有某个类型的Condition,则将Condition中的Reason设置为NodeStatusNeverUpdated
          • 如果存在某个类型的Condition,则将Condition中的Reason设置为NodeStatusUnknown
          • 如果Condition发生变化,则调用nc.kubeClient.CoreV1().Nodes().UpdateStatus(ctx, node, metav1.UpdateOptions{})更新Node的Status

4 总结

kubelet和kube-controller-manager更新Conditions的流程与前面说的基本一致:

  • kubelet会每隔一段时间(kubelet的–node-status-update-frequency参数,默认为10秒)更新节点状态到apiserver
  • NodeController每隔一段时间(kube-controller-manager的–node-monitor-period参数,默认为5秒)检查一次节点状态
  • 如果kubelet超过一段时间(kube-controller-manager的–node-monitor-grace-period参数,默认为50秒)未向apiserver上报,NodeController将节点的Condition中的Ready状态修改为False

相关文章:

【kubernetes】K8S节点状态的维护

1 节点状态 节点是K8S集群中的一类重要资源&#xff0c;节点的状态通常可以作为判断集群异常的重要手段。 为了展示节点在各方面的健康程度&#xff0c;在kubectl describe node k8s-master的输出结果中的Conditions部分可以查看k8s-master节点的一些状态数据&#xff1a; N…...

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结&#xff0c;具体如下&#xff1a; 一、按芯片类型 CCD相机&#xff1a;采用电荷耦合器件&#xff08;CC…...

Oracle查询-in条件超过1000

目录 1.不分页 2.分页 oracle数据库中&#xff0c;in的查询条件超过1000的话&#xff0c;就会报错&#xff0c;应该怎样处理这样的情况呢&#xff1f; 1.不分页 把查询条件分成几个list&#xff0c;每个list有1000个数据&#xff0c;有几个list查询几次数据库就行了 2.分…...

使用rknn进行retinaface部署(C++)

文章目录 RetinaFace导出ONNX导出RKNN编译运行学生课堂开源数据集RetinaFace RetinaFace是一种基于深度学习的高性能人脸检测方法,由InsightFace团队提出。它的核心思想是在单阶段检测器(如RetinaNet)的基础上,结合多任务学习来实现精确的人脸检测和特征点定位。以下是Ret…...

微服务拆分

微服务拆分 接下来&#xff0c;我们就一起将黑马商城这个单体项目拆分为微服务项目&#xff0c;并解决其中出现的各种问题。 熟悉黑马商城 首先&#xff0c;我们需要熟悉黑马商城项目的基本结构&#xff1a; 大家可以直接启动该项目&#xff0c;测试效果。不过&#xff0c…...

【matlab】matlab知识点及HTTP、TCP通信

1、矩阵运算 点乘&#xff1a;对于两个同维度的向量&#xff0c;点乘结果是这两个向量对应分量的乘积之和。 点除&#xff1a;是指对两个数组的对应元素进行除法运算。 点幂&#xff1a;表示元素对元素的幂运算。 >> A[1,2,3;4,5,6]; B[1,1,1;2,2,2]>> D1B.*AD…...

亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?

三防笔记本是什么意思&#xff1f;和普通笔记本的优势在哪里&#xff1f; 在现代社会中&#xff0c;笔记本电脑已经成为人们工作和生活中不可或缺的一部分。然而&#xff0c;在一些特殊行业或环境中&#xff0c;普通笔记本电脑由于其脆弱性和对环境条件的敏感性&#xff0c;往…...

C++并发编程之并发可扩展性与阿姆达尔定律

在C并发编程中&#xff0c;可扩展性和阿姆达尔定律&#xff08;Amdahl’s Law&#xff09;是两个非常重要的概念&#xff0c;它们帮助我们理解和优化并发程序的性能。下面我们分别讨论这两个概念&#xff0c;并探讨它们在C并发编程中的应用。 可扩展性 可扩展性&#xff08;S…...

java 迪米特法则,原理、思想、工作流程、实现细节、稳定性、优缺点、应用场景等

迪米特法则&#xff08;Law of Demeter&#xff0c;LoD&#xff09;&#xff0c;也被称为“最少知识原则”&#xff0c;是一种指导面向对象设计的原则&#xff0c;旨在减少对象之间的耦合度。以下是对迪米特法则的详细解析。 1. 定义 迪米特法则指出&#xff1a;一个对象应该…...

使用 Docker 部署 Java 项目(通俗易懂)

目录 1、下载与配置 Docker 1.1 docker下载&#xff08;这里使用的是Ubuntu&#xff0c;Centos命令可能有不同&#xff09; 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile&#xff0c;并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …...

DuckDB:精通Insert语句处理数据冲突

本文介绍DuckDB insert语句用法&#xff0c;包括常规的批量插入&#xff0c;尤其是插入数据冲突的处理&#xff0c;最后还提及returning子句的用法&#xff0c;每个用法提供示例说明。 insert插入数据 INSERT INTO向表中插入新行。可以插入由值表达式指定的一行或多行&#xf…...

DFT可测性设置与Tetramax测试笔记

1 DFT 1.1 DFT类型 1、扫描链&#xff08;SCAN&#xff09;&#xff1a; 扫描路径法是一种针对时序电路芯片的DFT方案.其基本原理是时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop&#xff0c;简称FF)的时序电路网络的反馈。 Scan 包括两个步骤&#xff0c;scan…...

AttributeError: Unknown IMAP4 command: ‘idle‘

imaplib 原生并不支持 IDLE 命令&#xff0c;这可能导致 AttributeError: Unknown IMAP4 command: idle 错误。解决办法是使用支持 IDLE 命令的库&#xff0c;例如 imapclient&#xff0c;或者通过扩展 imaplib 的方式实现。 以下是两种解决方案&#xff1a; 方法 1&#xff1…...

css实现响应式详解

一、媒体查询&#xff08;Media Queries&#xff09; 基本概念 媒体查询是 CSS3 中用于根据不同的设备特性&#xff08;如屏幕宽度、高度、设备类型等&#xff09;应用不同样式规则的技术。它允许你为特定的媒体类型&#xff08;如屏幕、打印、手持设备等&#xff09;和条件&a…...

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,1…...

【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论和实操解析

文章目录 14.1 选择题解题思路和参考答案14.2 理论题解题思路和参考答案14.3 实操题解题思路和参考答案思科&#xff08;Cisco&#xff09;设备华为&#xff08;Huawei&#xff09;设备小米/锐捷&#xff08;或其他支持标准CLI命令的设备&#xff09;通过网络管理工具注意事项 …...

c#-Halcon入门教程——标定

Halcon代码 read_image (NinePointCalibration, D:/Desktop/halcon/ca74d-main/九点标定/NinePointCalibration.gif)rgb1_to_gray (NinePointCalibration, GrayImage)get_image_size (GrayImage, Width, Height) dev_display (GrayImage)* 获取当前显示的窗口句柄 dev_get_win…...

设计和优化用于 AR、HUD 和高级显示系统的表面浮雕光栅

表面浮雕光栅是许多光学系统中的关键组件&#xff0c;在控制增强现实 &#xff08;AR&#xff09; 显示器、平视显示器 &#xff08;HUD&#xff09; 和其他先进光子器件中的光传播方面发挥着关键作用。作为在这个领域工作的工程师和设计师&#xff0c;您了解针对特定应用优化这…...

编译pytorch——cuda-toolkit-nvcc

链接 https://blog.csdn.net/wjinjie/article/details/108997692https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#switching-between-driver-module-flavorshttps://forums.developer.nvidia.com/t/can-not-load-nvidia-drivers-on-ubuntu-22-10/239750https://…...

Linux 系统资源监控笔记

本文介绍如何在 Linux 系统中查看服务资源剩余情况&#xff0c;包括 CPU、内存、磁盘、网络等资源的监控方法和常用命令。 目录 查看 CPU 和内存使用情况查看磁盘使用情况查看网络使用情况查看服务资源占用查看系统整体资源使用情况图形化工具 1. 查看 CPU 和内存使用情况 使…...

在Linux系统中无网络安装Nginx并配置负载均衡

在Linux系统中无网络安装Nginx并配置负载均衡 在现代的Web开发和运维中&#xff0c;Nginx作为一个高性能的HTTP和反向代理服务器&#xff0c;被广泛应用于负载均衡、静态资源服务、SSL终端等场景。然而&#xff0c;在某些特殊环境下&#xff0c;服务器可能无法访问互联网&…...

Franka例程学习——examples_common

这一次我们学习Franka所有例程里面都要调用的examples_common.h和examples_common.cpp&#xff0c;一个是.h头文件放置声明的函数、类、变量以及宏等内容&#xff0c;.c文件里面是具体的函数实现。 一、源代码 examples_common.h // Copyright (c) 2017 Franka Emika GmbH /…...

浅谈计算机网络02 | SDN控制平面

计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…...

Golang概述

文章目录 1. 什么是程序2. Go语言的诞生小故事2.1 Go 语言的核心开发团队--三个大牛2.2 Google 创造 Golang 的原因2.3 Golang 的发展历程 3. Golang 的语言的特点 1. 什么是程序 程序&#xff1a;就是完成某个功能的指令的集合。画一个图理解&#xff1a; 2. Go语言的诞生小故…...

【STM8S】STM8S之IIC从机

本文最后修改时间&#xff1a;2018年10月30日 18:48 一、本节简介 本文介绍STM8S系列如何使用IIC从机接收来自IIC主机的数据。 二、实验平台 编译软件&#xff1a;IAR for STM8 1.42.2 硬件平台&#xff1a;stm8s003f3p6开发板 仿真器&#xff1a;ST-LINK 库函数版本&…...

SDK调用文心一言如何接入,文心一言API接入教程

一、前期准备 注册百度智能云账号&#xff1a; 前往百度智能云官网注册一个账号。这是接入文心一言API的基础。 了解API接口&#xff1a; 在百度智能云开放平台中&#xff0c;找到文心一言API的详情页&#xff0c;了解提供的API接口类型&#xff08;如云端API、移动端API、离线…...

实战:FRP内网穿透部署-支持ssh、web访问

目录 1 准备工作2 公网服务器部署server端2.1 frps.ini配置 3 内网客户端部署client端3.1 frpc.ini配置&#xff08;内网服务器01&#xff09;3.2 frpc.ini配置&#xff08;内网服务器02&#xff09; 4 服务启动脚本4.1 公网服务器 server4.2 内网服务器 client 2 systemctl常见…...

基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

Pytorch基础教程:从零实现手写数字分类

文章目录 1.Pytorch简介2.理解tensor2.1 一维矩阵2.2 二维矩阵2.3 三维矩阵 3.创建tensor3.1 你可以直接从一个Python列表或NumPy数组创建一个tensor&#xff1a;3.2 创建特定形状的tensor3.3 创建三维tensor3.4 使用随机数填充tensor3.5 指定tensor的数据类型 4.tensor基本运算…...

使用Flink-JDBC将数据同步到Doris

在现代数据分析和处理环境中&#xff0c;数据同步是一个至关重要的环节。Apache Flink和Doris是两个强大的工具&#xff0c;分别用于实时数据处理和大规模并行处理&#xff08;MPP&#xff09;SQL数据库。本文将介绍如何使用Flink-JDBC连接器将数据同步到Doris。 一、背景介绍…...

【深度学习】自编码器(Autoencoder, AE)

自编码器&#xff08;Autoencoder, AE&#xff09;是一种无监督学习模型&#xff0c;主要用于特征提取、数据降维、去噪和生成模型等任务。它的核心思想是通过将输入压缩到一个低维的潜在空间表示&#xff08;编码过程&#xff09;&#xff0c;然后再从这个潜在表示重构输入&am…...

跨专业毕业论文写作

跨专业毕业论文写作是一项具有挑战性的任务&#xff0c;但通过合理的规划和方法&#xff0c;你可以顺利完成这篇论文。以下是一些关键步骤和建议&#xff0c;帮助你撰写一篇高质量的跨专业毕业论文。 一、确定研究方向和课题 选择与本科专业相关或感兴趣的研究方向&#xff1a;…...

在 Go语言中一个字段可以包含多种类型的值的设计与接种解决方案

在 Go 中&#xff0c;如果你希望一个字段可以包含多种类型的值&#xff0c;你可以使用以下几种方式来实现&#xff1a; ### 1. **使用空接口 (interface{})** Go 的空接口 interface{} 可以接受任何类型的值&#xff0c;因此&#xff0c;你可以将字段定义为一个空接口&#x…...

为AI聊天工具添加一个知识系统 之32 三“中”全“会”:推理式的ISA(父类)和IOS(母本)以及生成式CMN (双亲委派)之1

本文要点和问题 要点 三“中”全“会”&#xff1a;推理式的ISA的&#xff08;父类-父类源码&#xff09;和IOS的&#xff08;母本-母类脚本&#xff09;以及生成式 CMN &#xff08;双亲委派-子类实例&#xff09;。 数据中台三端架构的中间端(信息系统架构ISA &#xff1a…...

手撕Transformer -- Day6 -- DecoderBlock

手撕Transformer – Day6 – DecoderBlock 目录 手撕Transformer -- Day6 -- DecoderBlockTransformer 网络结构图DecoderBlock 代码Part1 库函数Part2 实现一个解码器Block&#xff0c;作为一个类Part3 测试 参考 Transformer 网络结构图 Transformer 网络结构 DecoderBlock 代…...

Docker常用命令大全

Docker容器相关命令&#xff1a; 创建并启动容器&#xff1a; docker run&#xff1a;创建一个新的容器并运行一个命令。例如&#xff1a;docker run -d -p 8080:80 nginx这将后台(-d)运行一个Nginx容器&#xff0c;并映射宿主机的8080端口到容器的80端口。 列出容器&#x…...

【Linux探索学习】第二十五弹——动静态库:Linux 中静态库与动态库的详细解析

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在 Linux 系统中&#xff0c;静态库和动态库是开发中常见的两种库文件类型。它们在编译、链接、内存管理以及程序的性能和可维护性方面有着…...

Vue 实现当前页面刷新的几种方法

以下是 Vue 中实现当前页面刷新的几种方法&#xff1a; 方法一&#xff1a;使用 $router.go(0) 方法 通过Vue Router进行重新导航&#xff0c;可以实现页面的局部刷新&#xff0c;而不丢失全局状态。具体实现方式有两种&#xff1a; 实现代码&#xff1a; <template&g…...

python mysql库的三个库mysqlclient mysql-connector-python pymysql如何选择,他们之间的区别

三者的区别 1. mysqlclient 特点&#xff1a; 是一个用于Python的MySQL数据库驱动程序&#xff0c;用于与MySQL数据库进行交互。 依赖于MySQL的本地库&#xff0c;因此在安装时需要确保系统上已安装了必要的依赖项&#xff0c;如libmysqlclient-dev等。 性能较好&#xff0c…...

【可持久化线段树】 [SDOI2009] HH的项链 主席树(两种解法)

文章目录 1.题目描述2.思路3.解法一解法一代码 4.解法二解法二代码&#xff08;版本一&#xff09;解法二代码&#xff08;版本二&#xff09; 1.题目描述 原题&#xff1a;https://www.luogu.com.cn/problem/P1972 [SDOI2009] HH的项链 题目描述 HH 有一串由各种漂亮的贝壳…...

【C语言】线程----同步、互斥、条件变量

目录 3. 同步 3.1 概念 3.2 同步机制 3.3 函数接口 1. 同步 1.1 概念 同步(synchronization)指的是多个任务(线程)按照约定的顺序相互配合完成一件事情 1.2 同步机制 通过信号量实现线程间的同步 信号量&#xff1a;通过信号量实现同步操作&#xff1b;由信号量来决定…...

15. 三数之和【力扣】--三指针

三数之和 已解答 中等 相关标签 相关企业 提示 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#x…...

大数据学习(35)- spark- action算子

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

vim使用指南

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 一、Vim 的基本概念 1.Vim 的主要模式&#xff1a; 1.1普通模式 (Normal Mode) 1.2插入…...

Docker 镜像制作原理 做一个自己的docker镜像

一.手动制作镜像 启动容器进入容器定制基于容器生成镜像 1.启动容器 启动容器之前我们首先要有一个镜像&#xff0c;这个镜像可以是从docker拉取&#xff0c;例如&#xff1a;现在pull一个ubuntu镜像到本机。 docker pull ubuntu:22.04 我们接下来可以基于这个容器进行容器…...

基于Java+SpringBoot+Vue的前后端分离的在线BLOG网

基于JavaSpringBootVue的前后端分离的在线BLOG网 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f3…...

Linux网络_套接字_UDP网络_TCP网络

一.UDP网络 1.socket()创建套接字 #include<sys/socket.h> int socket(int domain, int type, int protocol);domain (地址族): AF_INET网络 AF_UNIX本地 AF_INET&#xff1a;IPv4 地址族&#xff0c;适用于 IPv4 协议。用于网络通信AF_INET6&#xff1a;IPv6 地址族&a…...

Java学习教程,从入门到精通,JDBC驱动程序类型及语法知识点(91)

JDBC驱动程序类型及语法知识点 一、JDBC驱动程序类型 JDBC驱动程序主要有以下四种类型&#xff1a; 1. Type 1&#xff1a;JDBC - ODBC桥驱动程序&#xff08;JDBC - ODBC Bridge Driver&#xff09; 特点&#xff1a;这种驱动程序是Java与ODBC&#xff08;Open Database C…...

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator&#xff0c;点击Environment&#xff0c;再点击new(new是我下载anaconda的文件夹名称)&#xff0c;然后点击创建 点击绿色按钮&#xff0c;并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具&#xff0c;在上篇…...

3D目标检测数据集——Nusence数据集

链接地址 [官网] nuScenes[arXiv] nuScenes: A multimodal dataset for autonomous driving[GitHub] nuScenes devkitnuScenes devkit教程数据集概述 2.1 数据采集 2.1.1 传感器配置 nuScenes的数据采集车辆为Renault Zoe迷你电动车,配备6个周视相机&#x...