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

架构14-资源与调度

零、文章目录

架构14-资源与调度

1、资源模型

(1)概述
  • 在 Kubernetes 中,资源模型是一个非常重要的概念,它涉及如何管理和分配集群中的资源,以确保 Pod 能够在最合适的节点上运行。
  • 资源模型不仅包括物理资源,如处理器、内存、存储和网络资源,还包括各种抽象资源,如策略、依赖、权限等。
(2)广义资源 vs 狭义资源
  • **广义资源:**Kubernetes 系统中所有你能接触的方方面面,都被抽象成了资源。例如:
    • **工作负荷资源:**Pod、ReplicaSet、Service 等。
    • **存储资源:**Volume、PersistentVolume、Secret 等。
    • **策略资源:**SecurityContext、ResourceQuota、LimitRange 等。
    • **身份资源:**ServiceAccount、Role、ClusterRole 等。
  • **狭义资源:**特指能够与真实物理底层硬件对应起来的资源,如处理器资源、内存资源、磁盘存储资源等。
(3)物理资源
  • 资源单位
    • 处理器资源:
      • 默认计量单位是“逻辑处理器的个数”。
      • 如果不明确标注单位,直接写 0.5,默认单位是 Core,即 0.5 个处理器。
      • 也可以明确使用 Millcores 为单位,例如 500 m,同样代表 0.5 个处理器,因为 1 Core = 1000 Millcores。
    • 内存资源:
      • 默认计量单位是 Bytes。
      • 为了实际设置的方便,Kubernetes 还支持以 Ei、Pi、Ti、Gi、Mi、Ki 以及 E、P、T、G、M、K 为单位。
      • 例如,Mi 表示 Mebibytes(1024×1024 Bytes),M 表示 Megabytes(1000×1000 Bytes)。
  • 资源类型
    • **可压缩资源:**如处理器资源,当资源不足时,Pod 只会处于“饥饿状态”,运行变慢,但不会被系统杀死。
    • **不可压缩资源:**如内存资源,当资源不足或超过容器声明的最大限度时,Pod 会被系统直接杀掉(Out-Of-Memory, OOM)。
(4)资源需求与配额
  • **资源需求:**通过 spec.containers[].resources.requests 字段设置,用于告诉调度器 Pod 需要多少资源。
  • **资源配额:**通过 spec.containers[].resources.limits 字段设置,用于告诉 cgroups Pod 最多可以使用多少资源。

2、服务质量与优先级

(1)概述
  • 在 Kubernetes 中,为了更好地管理和分配集群资源,确保重要服务的稳定性和资源利用率的最大化,引入了服务质量(Quality of Service, QoS)和优先级(Priority)两个重要概念。
(2)服务质量(QoS)
  • 服务质量是 Pod 的一个隐含属性,用于衡量 Kubernetes 在资源紧张时优先保障哪些 Pod 的运行。
  • Kubernetes 目前提供了三个级别的服务质量,由高到低分别为:
    • Guaranteed
      • **定义:**Pod 中所有容器都设置了 limitsrequests,且两者的值相等。
      • **特点:**这类 Pod 的资源需求非常明确,Kubernetes 会尽力保证它们的资源需求得到满足。除非 Pod 使用超过了它们的 limits 所描述的不可压缩资源,或者节点的内存压力大到 Kubernetes 已经杀光所有等级更低的 Pod 了,否则它们都不会被系统自动杀死。
      • **适用场景:**适合数据库应用等有状态的应用,或者是一些重要的、要保证不能中断的业务。
    • Burstable
      • **定义:**Pod 中有部分容器的 requests 值小于 limits 值,或者只设置了 requests 而未设置 limits
      • **特点:**这类 Pod 有一定的灵活性,可以在资源充足时使用更多的资源,但在资源紧张时可能会被系统降低优先级。
      • **适用场景:**适合大多数中间件服务,如缓存服务、消息队列等。
    • BestEffort
      • **定义:**Pod 中没有任何容器设置了 limitsrequests
      • **特点:**这类 Pod 可以使用节点上所有可用的计算资源,但也是最不稳定的风险来源。在资源紧张时,它们最容易被系统杀掉。
      • **适用场景:**适合临时的、不那么重要的任务,如批处理任务、临时测试环境等。
(3)优先级(Priority)
  • 优先级允许系统管理员自行决定 Pod 的优先级,通过类型为 PriorityClass 的资源来实现。优先级不仅影响 Pod 的调度顺序,还会影响 Kubernetes 的抢占机制。
  • 调度影响
    • **高优先级 Pod:**在多个 Pod 同时被调度时,高优先级的 Pod 会优先被调度。
    • **低优先级 Pod:**越晚被调度的 Pod,越大概率地会因节点资源已被占用而不能成功。
  • 抢占机制(Preemption)
    • **定义:**当一个设置了明确优先级的 Pod 调度失败时,Kubernetes 会在系统中寻找出一批牺牲者(Victims),把它们杀掉以便给更高优先级的 Pod 让出资源。
    • **原则:**在优先级低于待调度 Pod 的所有已调度的 Pod 里,按照优先级从低到高排序,从最低的杀起,直至腾出的资源可以满足待调度 Pod 的成功调度为止,或者已经找不到更低优先级的 Pod 为止。

3、驱逐机制

(1)概述
  • 在 Kubernetes 中,驱逐机制是一种重要的资源管理手段,用于确保节点上的资源在紧张时能够合理分配,防止因为资源耗尽而导致整个节点或关键服务崩溃。
  • 驱逐机制由 kubelet 负责执行,kubelet 是部署在每个节点上的集群管理程序,能够实时监控节点的资源使用情况。
(2)驱逐机制的触发条件
  • 驱逐机制主要针对不可压缩资源,如内存、磁盘空间、文件系统 inode 数量等。当这些资源即将耗尽时,kubelet 会触发驱逐操作。具体的触发条件如下:
    • 内存:
      • memory.available < 100Mi
    • 磁盘空间:
      • nodefs.available < 10%
    • 文件系统 inode 数量:
      • nodefs.inodesFree < 5%
    • 容器运行时镜像存储空间:
      • imagefs.available < 15%
  • 这些阈值可以通过 kubelet 的命令行参数进行调整,例如:
--eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<15%
(3)驱逐机制的类型
  • 软驱逐
    • 软驱逐通常配置一个较低的警戒线,当资源使用率达到这个警戒线时,系统会进入一段观察期。如果资源在观察期内恢复正常,就不会启动驱逐操作。如果资源持续超过警戒线一段时间,系统会触发 Pod 的优雅退出(Graceful Shutdown),通知 Pod 进行必要的清理工作,然后自行结束。如果在优雅退出期结束后,Pod 仍未自行终止,系统会强制杀掉 Pod。
    • 例如:
--eviction-soft=memory.available<200Mi 
--eviction-soft-grace-period=memory.available=30s 
--eviction-max-pod-grace-period=120
  • 硬驱逐
    • 硬驱逐通常配置一个较高的终止线,一旦资源使用率达到这个终止线,系统会立即强制杀掉 Pod,不理会优雅退出。
    • 例如:
--eviction-hard=memory.available<100Mi 
(4)驱逐机制的执行流程
  • 资源监控:kubelet 持续监控节点的资源使用情况。
  • **触发条件判断:**当资源使用率达到软驱逐或硬驱逐的阈值时,触发驱逐操作。
  • 选择驱逐目标:kubelet 会选择服务质量等级(QoS)较低的 Pod 进行驱逐。
  • **优雅退出:**对于软驱逐,系统会通知 Pod 进行优雅退出。
  • **强制终止:**如果 Pod 在优雅退出期内未自行终止,系统会强制杀掉 Pod。
  • **资源释放:**被驱逐的 Pod 被终止后,其占用的资源会被释放。
(5)驱逐机制的注意事项
  • **资源抖动:**资源使用率可能会出现短暂的波动,因此软驱逐机制可以帮助减少因资源抖动导致的频繁驱逐。
  • **资源预留:**驱逐机制不仅要考虑当前资源的释放,还要为新 Pod 的调度和旧 Pod 的运行预留足够的资源。
  • **参数配置:**合理的配置驱逐参数可以避免资源浪费和不必要的服务中断。
  • **特殊 Pod 处理:**对于由 DaemonSet 等管理的 Pod,需要特别注意驱逐后的重新调度问题,避免出现“阴魂不散”的情况。

4、 默认调度器

(1)概述
  • Kubernetes 的默认调度器是负责将新创建的 Pod 分配到合适的节点上运行的关键组件。调度器的设计旨在高效地处理大规模集群中的资源分配问题,同时确保服务的稳定性和资源的充分利用。
(2)调度流程
  • 调度器的工作流程可以分为两个主要的控制循环:Informer LoopScheduler Loop
    • Informer Loop
      • **作用:**持续监视 etcd 中与调度相关资源(主要是 Pod 和 Node)的变化情况。
      • 具体操作:
        • **Pod 变化:**当有新 Pod 生成时,将其入队(Enqueue)到调度队列中。
        • **Node 变化:**当有新的节点加入集群或已有的节点资源信息发生变动时,更新调度缓存中的信息。
    • **Scheduler Loop **
      • **作用:**从调度队列中取出 Pod,使用 Predicate 和 Priority 算法进行节点选择和评分,最终确定目标节点。
      • 具体步骤:
        • **出队:**从调度队列中取出一个 Pod。
        • **Predicate 筛选:**使用一组节点过滤器(Filter)筛选出符合要求的节点。
          • **通用过滤策略:**检查节点是否满足 Pod 声明中需要的资源。
          • **卷过滤策略:**检查节点挂载的 Volume 是否存在冲突。
          • **节点过滤策略:**检查节点的污点与容忍度机制。
        • **Priority 评分:**对筛选出的节点进行评分,选择得分最高的节点。
          • **LeastRequestedPriority:**选择处理器和内存空闲资源最多的节点。
          • **BalancedResourceAllocation:**选择资源分配最均衡的节点。
        • **绑定:**更新 Pod 的 nodeName 字段为目标节点的名字,通知目标节点的 kubelet 创建 Pod。
(3)调度缓存
  • **作用:**作为两个控制循环的共享状态,避免调度器每次调度时主动轮询所有集群节点,提高调度器的执行效率。
  • **局限:**不能完全避免因节点信息同步不及时导致的资源变化情况,因此在 kubelet 创建 Pod 前还需要进行二次确认(Admit 操作)。
(4)乐观绑定
  • **作用:**提高调度器的效率,避免等待 kubelet 完成 Pod 创建后再宣告调度成功。
  • 具体操作:
    • **同步更新:**在调度缓存中更新 Pod 的 nodeName 字段。
    • **异步更新:**在 etcd 中更新 Pod 的 nodeName 字段。
    • **失败处理:**如果调度失败,由 Informer 根据 Pod 的变动,将调度成功但未创建成功的 Pod 清空 nodeName 字段,重新同步回调度缓存中。
(5)扩展性
  • **Scheduler Framework:**通过暴露扩展点(如 Predicate、Priority 等),允许用户自定义调度逻辑。
  • **实现方式:**通过 Golang 的 Plugin 机制实现,需静态编译,属于高级的 Kubernetes 管理技能。
(6)关键概念
  • **服务质量(QoS):**Pod 的隐含属性,分为 Guaranteed、Burstable 和 BestEffort 三级。
  • **优先级(Priority):**通过 PriorityClass 资源实现,影响 Pod 的调度顺序和抢占机制。
  • **驱逐机制(Eviction):**当节点资源不足时,根据 QoS 和优先级选择牺牲的 Pod,以保证重要服务的稳定。

相关文章:

架构14-资源与调度

零、文章目录 架构14-资源与调度 1、资源模型 &#xff08;1&#xff09;概述 在 Kubernetes 中&#xff0c;资源模型是一个非常重要的概念&#xff0c;它涉及如何管理和分配集群中的资源&#xff0c;以确保 Pod 能够在最合适的节点上运行。资源模型不仅包括物理资源&#…...

uni-app H5端使用注意事项 【跨端开发系列】

&#x1f517; uniapp 跨端开发系列文章&#xff1a;&#x1f380;&#x1f380;&#x1f380; uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…...

springboot407美发管理系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装美发管理系统软件来发挥其高效地信息处理的作用&#xff0…...

Apache-HertzBeat 开源监控默认口令登录

0x01 产品描述: HertzBeat(赫兹跳动) 是一个开源实时监控系统,无需Agent,性能集群,兼容Prometheus,自定义监控和状态页构建能力。HertzBeat 的强大自定义,多类型支持,高性能,易扩展,希望能帮助用户快速构建自有监控系统。0x02 漏洞描述: HertzBeat(赫兹跳动) 开源实时…...

发送请求时遇到了数据库完整性约束错误 1048 Column ‘platform‘ cannot be null

可以这样解决 在 Vue 2 中封装接口请求时&#xff0c;确保每次请求都包含 platform Header 参数的最佳实践是通过创建一个全局的 Axios 实例&#xff0c;并为这个实例设置默认的 Header。这样可以确保所有通过该实例发送的请求都会自动包含 platform 参数。此外&#xff0c;你…...

Go快速开发框架集成Vue3漂亮的动态流程图编辑和动态流程展示插件

温馨提示&#xff1a;我们分享的文章是给需要的人&#xff0c;不需要的人请绕过&#xff0c;文明浏览&#xff0c;误恶语伤人&#xff01; 前言 为大家在开发流程相关业务时有个漂亮流程图展示&#xff0c;我们集成一个实用的流程图编辑器&#xff0c;让流程开发变得简单&…...

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片GET请求测试编写测试代码域名不合法问题 GET和POST请求测试 微信小程序字符串 字符串模板 这是ES6引入的特性&#xff0c;允许你通过反引号&#xff08;&#xff09;创建模板字符串&#xff0c;并在其中嵌入变量或表达…...

NanoLog起步笔记-6-StaticLogInfo

nonolog起步笔记-6-StaticLogInfo StaticLogInfo文件名和行号文件名和行号的传入log参数 RuntimeLogger::registerInvocationSitelogid为什么只能被赋一次值 reserveAlloc加入消息头finishAlloc返回 StaticLogInfo 写C语言编译前端时&#xff0c;给我印象深刻的一部分是&#…...

【OpenCV】视频录制

初始化一个视频写入对象&#xff0c;目的是将图像帧序列保存为视频文件。使用了OpenCV库中的cv2.VideoWriter类来创建这个对象&#xff0c;并且设置了视频的编码格式、帧率以及分辨率。 导入库 import cv2 import datetime cv2 是 OpenCV 库的 Python 接口&#xff0c;提供了…...

同城到家预约上门服务解决方案:家政预约同城服务小程序

### 系统架构"同城到家预约上门服务解决方案&#xff1a;PHP家政预约同城服务小程序"采用B/S架构&#xff0c;后端使用PHP语言开发&#xff0c;前端则基于微信小程序平台。系统分为用户端、服务端和后台管理端&#xff0c;各端相互依赖又相互独立&#xff0c;支持多种…...

linux-14 关于shell(十三)type,内置命令和外部命令

我们说一个命令&#xff0c;叫做type&#xff0c;先来看看type的效果&#xff0c;比如说我指定type后面这个命令叫cd&#xff0c;如下图&#xff0c; 你看它说什么&#xff1f;cd is a shell builtin&#xff0c;我再 type ls&#xff0c;看它会说什么&#xff1f;如下图&#…...

使用php生成、识别二维码

1、生成二维码 要求&#xff1a; # 详见&#xff1a;https://packagist.org/packages/bacon/bacon-qr-code php: ^8.1iconv Library imagick Library # 或者&#xff1a;GD library 下载&#xff1a; # 详见&#xff1a;https://packagist.org/packages/bacon/bacon-qr-cod…...

pytorch多GPU训练教程

pytorch多GPU训练教程 文章目录 pytorch多GPU训练教程1. Torch 的两种并行化模型封装1.1 DataParallel1.2 DistributedDataParallel 2. 多GPU训练的三种架构组织方式2.2 数据不拆分&#xff0c;模型拆分&#xff08;Model Parallelism&#xff09;2.3 数据拆分&#xff0c;模型…...

日拱一卒(12)——leetcode学习记录:2的幂

一、题目 判断一个整数n是否是2的幂次&#xff0c;是返回True&#xff0c;否返回False 二、分析 1. 递归法&#xff1a;如果n是0&#xff0c;返回False&#xff0c;如果n是1&#xff0c;返回True&#xff0c;其他情况&#xff0c;将n//2递归 2. 数学法&#xff1a;还是从数…...

非文件形式的内存动态函数库调用接口

使用memfd的系统调用接口将动态库加载到proc虚拟文件系统&#xff0c;提供的fd为进程持有的句柄&#xff0c;通过dlopen的path指向此句柄&#xff0c;即可实现非文件系统加载动态链接库。 文章目录 一、memfd_create二、dl_open三、示例参考 一、memfd_create 接口名称int mem…...

TimeXplusplus——提高时间序列数据的可解释性,避免琐解和分布偏移问题的深度学习可解释性的框架

摘要 论文地址&#xff1a;https://arxiv.org/abs/2405.09308 源码地址&#xff1a;https://github.com/zichuan-liu/timexplusplus 信号传输技术的优化对于推动光通信的发展至关重要。本文将详细探讨线路编码技术的目标及其实现方式。线路编码旨在提高带宽和功率效率&#xf…...

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题②

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题② 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志监控&#xff08;Windows&#xff09;A-4中间件…...

嵌入式蓝桥杯学习9 usart串口

复制一下之前ADC的工程&#xff0c;打开cubemx cubemx配置 1.在Connectivity中点击USART1 Mode&#xff08;模式&#xff09;:Asynchronous&#xff08;异步模式&#xff09; 2.将PA9设置为USART1_TX&#xff0c;PA10设置为USART1_RX。 3.配置Parameter Settings. Baud R…...

golang实现简单的redis服务4.0(持久化)

redis的持久化机制与实现原理RDB工作原理问题1:如果数量很大怎么办?问题2:子线程在持久化期间有新的数据写入会发生什么?如何保证数据一致性? AOF的原理如何解决aof文件越来越大的问题aof文件如何重写?aof如何恢复数据aof文件有问题(损坏了)恢复会发生什么?怎么办?aof有哪…...

安卓底层相机流的传输方式

这是安卓 相机流的定义 typedef enum {CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */CAM_STREAMING_MODE_BURST, /* burst streaming */CAM_STREAMING_MODE_BATCH, /* stream frames in batches */CAM_STREAMING_MODE_MAX} cam_streaming_mode_t; 在ca…...

【YashanDB知识库】使用c-调用yashandb odbc驱动执行SQL时报YAS-08008 not all variables bounded

本文内容来自YashanDB官网&#xff0c;原文内容请见 https://www.yashandb.com/newsinfo/7508307.html?templateId1718516 问题现象 某客户的应用(c# asp.net)在运行时报如下异常&#xff1a; 问题的风险及影响 客户的应用无法正常运行 问题影响的版本 所有的yashandb版本…...

SQL项目实战与综合应用——项目设计与需求分析

项目设计与需求分析是软件开发过程中的核心环节&#xff0c;尤其在涉及数据库的应用时&#xff0c;良好的设计将直接影响到项目的可扩展性、性能和维护性。本文将深入探讨数据库设计的最佳实践&#xff0c;结合 C 与 SQL 的实际应用场景&#xff0c;涵盖项目需求收集、数据库设…...

JAVA基础学习笔记_反射+动态代理

文章目录 反射获取class对象的三种方式获取构造方法获取成员变量获取成员方法反射的作用 动态代理 反射 允许对成员变量\成员方法\构造方法的信息进行编程访问 把类内的信息扒的干干净净,获取解剖 获取从class字节码文件中获取 获取class对象的三种方式 public static void …...

Go 协程上下文切换的代价

在 Go 语言中&#xff0c;协程&#xff08;Goroutine&#xff09;是一种非常轻量级的并发执行单元&#xff0c;设计之初就是为了简化并发编程并提高性能。协程的上下文切换被认为是非常高效的&#xff0c;但是它的真正性能优势需要我们深入了解其背后的机制。 本文将深入探讨 …...

TikTok代理IP:如何帮助解决限流、封号问题?

在当今的社交媒体领域&#xff0c;TikTok仍然是“当红”平台。然而&#xff0c;许多用户在使用 TikTok 的过程中&#xff0c;常常会遇到限流和封号的问题&#xff0c;比如视频零播放&#xff0c;带来了极大的困扰。 这些限流和封号问题的出现&#xff0c;引发了用户对解决方法…...

vue中验证码的实现方式

在写登录页的时候有的系统会让你也进行一下验证码绘制&#xff0c;那么验证码如何实现的呢&#xff1f;我在写登录页的时候通过将登录框&#xff0c;验证码分开页面来写&#xff0c;最后将它们变成标签来导入到我的样式页面中&#xff0c;这样写不仅方便&#xff0c;更容易修改…...

从零开始学习18串锂电池BMS保护板

18串锂电池BMS保护板实物开源资料&#xff01; BMS系统ADBMS1818/LTC6813凌力尔特主从一体机采集板&#xff1a;STM32F103LTC6813/ADBMS1818程序已调通: 1:18串电池电压&#xff08;采集精度1.2mV/3mV&#xff09; 2:8通道温度采集 3:一通道电流采集 4:RS485通信&#xff08;楼…...

最左侧1问题的一种二分法解法

背景 最近看TI的C6000系列DSP文档时了解到Leftmost 1 or 0 counting功能&#xff0c; 网上搜索到这篇相关博客&#xff08;最左侧1问题&#xff09;&#xff0c;发现里面的二分法代码自己看不懂&#xff0c;于是尝试用更容易看懂的方式重写一下。 思路 假设输入数据不超过3…...

HarmonyOS-中级(四)

文章目录 Native适配开发三方库的基本使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的…...

rust中self、self、self区别

self的类型&#xff0c;在给出调用者和方法名的前提下&#xff0c;Rust可以准确地推导出方法是否是只读的&#xff08;&self&#xff09;&#xff0c;是否需要修改数据&#xff08;&mut self&#xff09;&#xff0c;是否会获取数据的所有权&#xff08;self&#xff0…...

种子流和花粉流怎么理解它们之间的大小关系

种子流和花粉流是植物繁殖和遗传多样性研究中的两个重要概念&#xff0c;它们分别描述了种子和花粉在空间上的传播过程。理解它们之间的大小关系&#xff0c;即传播距离和对遗传结构的影响&#xff0c;对于生态学和保护生物学具有重要意义。 种子流&#xff08;Seed Dispersal&…...

Mybatis-plus 源码解读

简述 本篇主要针对MybatisPlus源码进行解读。 案例 上一篇已经讲了Springboot如何集成MybatisPlus&#xff1a; springboot-mybatis-plus集成篇 源码解析 和Springboot集成Mybatis一样&#xff0c; 依赖了mybatis-plus-spring-boot3-starter&#xff0c;其中主要关注spri…...

web 期末作业简单设计网页——“我的家乡”网站简单设计

1、网页效果 首页 七彩云南页 旅游攻略页 用户页面 2、源代码 首页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><link rel"stylesheet" href"out.css&quo…...

Redis篇-3--原理篇2--Redis事务

1、概述 Redis 提供了简单的事务机制&#xff0c;Redis 事务的本质是一组命令的集合。当执行redis事务时&#xff0c;即一次性按照添加顺序依次执行这些命令&#xff0c;中间不会被打断或者干扰。 Redis 的事务机制并不像关系型数据库中的事务那样提供完整的ACID特性&#xf…...

GEE:CCDC 分类组件,对每个分段进行分类

作者:CSDN @ _养乐多_ 连续变化检测与分类(Continuous Change Detection and Classification, CCDC) 利用了时间序列拟合来对影像中的像素值随时间的变化趋势建模。每一段模型代表一个时间段内的地表覆盖类型和状态。 本文将解释如何在谷歌地球引擎(Google Earth Engine,…...

常见排序算法总结 (四) - 快速排序与随机选择

快速排序 算法思想 每一轮在数组相应的范围上随机找一个元素进行划分&#xff0c;将不大于它的所有元素都放到左边&#xff0c;将大于它的元素都放到右边。在左右两个子数组上不断地递归&#xff0c;直到整个数组上有序。 注意&#xff1a;实现时选择的时参考荷兰国旗问题优化…...

[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机

目录 一、UTStarcom&#xff08;UT斯达康&#xff09;的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程&#xff0c;如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…...

C缺陷与陷阱 — 3 深入理解表达式

目录 1 表达式的运算次序 1.1 自增或自减操作符 1.2 函数参数 1.3 函数指针 1.4 函数调用 1.5 嵌套赋值语句 2 函数调用不作为函数参数 3 赋值语句的谨慎使用 1 表达式的运算次序 除了少数操作符&#xff08;函数调用操作符 ( )、&&、| |、? : 和 ,&#xff…...

Next.js 系统性教学:中间件与国际化功能深入剖析

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件&#xff1f; 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...

openWebUI+ollamawindows+不用docker+webLite本地安装

openWebUI & ollama & windows & 不用docker & webLite 本地安装 总结一下安装教程 10核CPU16G内存 两个web框架都可以&#xff0c;先说简单的 ollama-webui-lite(https://github.com/ollama-webui/ollama-webui-lite) 轻量级&#xff0c;只使用nodejs 先装…...

动态规划——机器分配、01背包问题

一、机器分配 题目名称&#xff1a;机器分配 题目描述&#xff1a; 总公司拥有高效设备M台&#xff0c;准备分给下属的N个分公司。 各分公司若获得这些设备&#xff0c;可以为国家提供一定的盈利。 问&#xff1a;如何分配这M台设备才能使国家得到的盈利最大&#xff1f;求出最…...

leetcode——哈希表1

242.有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词 。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false 提示: 1 < s.le…...

STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?

主要问题&#xff1a; 1&#xff0c;使用STM32F103C8T6&#xff0c;模拟IIC&#xff0c;SCL和SDA口配置为推挽输出上拉&#xff0c;主要是SDA脚&#xff0c;每次都要输出输入模式重新配置&#xff0c;虽然也能通信&#xff0c;但不稳定&#xff0c;出错率大&#xff1b; 2&…...

Android四大组件——Activity(二)

一、Activity之间传递消息 在&#xff08;一&#xff09;中&#xff0c;我们把数据作为独立的键值对进行传递&#xff0c;那么现在把多条数据打包成一个对象进行传递&#xff1a; 1.假设有一个User类的对象&#xff0c;我们先使用putExtra进行传递 activity_demo06.xml <…...

PHP实现华为OBS存储

一&#xff1a;华为OBS存储文档地址 官方文档&#xff1a;https://support.huaweicloud.com/obs/index.html github地址&#xff1a;https://github.com/huaweicloud/huaweicloud-sdk-php-obs 二&#xff1a;安装华为OBS拓展 composer require obs/esdk-obs-php 三&#x…...

SQL连续登录问题(详细案例分析)

如果要统计用户活跃度&#xff0c;那就涉及连续登录问题&#xff0c;接下来将举一个简单的例子来详细说明这个问题&#xff1a; 一、创建一些模拟数据 一些测试数据如下&#xff1a; deviceid1,2022-10-26,2022-10-26,2022-11-01 deviceid1,2022-10-26,2022-11-03,2022-11-0…...

OpenCV相机标定与3D重建(9)相机标定函数calibrateCameraRO()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::calibrateCameraRO 是 OpenCV 中用于相机标定的函数&#xff0c;它允许固定某些点来进行更精确的标定。 函数原型 double cv::calibrateCa…...

【一本通】农场派对

【一本通】农场派对 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; N头牛要去参加一场在编号为x(1≤x≤n)的牛的农场举行的派对(1≤N≤1000)&#xff0c;有M(1≤m≤100000)条有向道路&#xff0c;每条路长ti(1≤ti≤100)&#xff1b;每头牛…...

uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录

上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...

基础暴力算法

线性枚举 线性枚举&#xff08;Linear Enumeration&#xff09;是一种暴力枚举的方法&#xff0c;它逐一检查每个可能的解&#xff0c;适用于搜索和枚举问题。 其核心思路是&#xff1a;对问题的所有可能情况逐一进行遍历&#xff0c;并针对每种情况判断是否满足条件&#xf…...