K8S 容器调度
在Kubernetes中,容器调度是一个自动化的过程,负责将容器(在Kubernetes中称为Pod)分配到集群中的合适节点上运行。这一过程由Kubernetes的调度器(kube-scheduler)控制,它通过一系列算法和策略来确保Pod被高效且合理地分配到节点上。以下是关于Kubernetes容器调度的详细解释:
一、调度器的作用
Kubernetes调度器是一个独立的控制平面组件,它负责监视新创建的Pod,这些Pod尚未被分配到节点上,或者Pod当前运行的节点不再满足其要求。调度器通过一系列算法和策略,为这些未调度的Pod找到一个最合适的节点来运行。
二、调度过程
Kubernetes的调度过程主要分为两个阶段:节点筛选(Predicates)和节点优先级选择(Priorities)。
- 节点筛选(Predicates):
- 在此阶段,调度器会检查每个节点的资源是否满足Pod的需求,如CPU、内存、存储等。
- 同时,还会考虑Pod的亲和性(affinity)、节点的污点(taints)设置等因素,从而过滤出符合Pod运行条件的节点候选集。
- 节点优先级选择(Priorities):
- 在筛选出的节点候选集中,调度器会根据一系列优先级函数为每个节点打分。
- 最终选择得分最高的节点来运行Pod。如果存在多个得分最高的节点,调度器会从中随机选取一个。
kube-scheduler工作流程
- 监听Pod创建事件:
- kube-scheduler持续监听API服务器上的Pod创建事件。当有新Pod需要被调度时,kube-scheduler会介入处理。
- 预选阶段(Predicates):
- kube-scheduler遍历集群中的所有节点,应用一系列的预选策略来过滤节点。
- 预选策略包括但不限于:节点资源是否充足(如CPU、内存)、节点标签是否与Pod的NodeSelector匹配、节点上是否有与Pod请求的端口冲突等。
- 只有通过所有预选策略的节点才会被保留作为候选节点。
- 优选阶段(Priorities):
- 在预选阶段之后,kube-scheduler会对剩余的候选节点应用一系列优选函数进行打分。
- 优选函数考虑的因素可能包括节点的资源空闲比例、负载均衡情况、节点的亲和性偏好等。
- kube-scheduler根据优选函数的打分结果,选择分数最高的节点作为Pod的最终运行节点。
- 绑定Pod到节点:
- kube-scheduler将Pod绑定到选定的节点上,并将这一信息更新到API服务器中。
- 被绑定的节点上的kubelet组件会从API服务器获取Pod的详细信息,并启动容器。
三、调度策略
Kubernetes提供了多种调度策略,以满足不同的应用场景和需求,包括:
- 优先级调度:通过配置不同的优先级规则,可以确保高优先级的Pod优先获得资源。
- 亲和性调度:允许Pod指定偏好运行在某些具有特定标签的节点上,或者避免运行在具有特定标签的节点上。
- 反亲和性调度:与亲和性调度相反,反亲和性调度用于确保Pod之间的分散性,避免它们运行在同一节点上。
策略:
- NodeSelector:
用户可以在Pod的定义中指定NodeSelector,要求Pod只能被调度到具有特定标签的节点上。
这是一种简单且直接的调度方式,适用于基于节点标签进行调度的场景。 - NodeAffinity:
NodeAffinity提供了比NodeSelector更灵活的调度规则,包括硬亲和性和软亲和性。
硬亲和性规则是强制性的,如果找不到满足条件的节点,Pod将保持未调度状态。
软亲和性规则是优先级的,调度器会尽量满足这些规则,但如果找不到完全满足条件的节点,也会选择其他节点来运行Pod。 - PodAffinity和PodAntiAffinity:
这些调度策略允许用户根据Pod的标签来选择或避免与特定Pod调度到同一个节点上。
PodAffinity用于将具有相同或相似属性的Pod调度到同一个节点上,以优化缓存、数据局部性等。
PodAntiAffinity则用于将具有不同属性的Pod分散到不同的节点上,以提高应用的可用性和容错性。 - 污点和容忍度(Taints and Tolerations):
污点(Taints)允许节点拒绝某些Pod的调度,除非这些Pod声明了能够容忍节点的污点。
容忍度(Tolerations)是Pod定义中的一个字段,用于指定Pod能够容忍哪些节点的污点。
这种机制提供了一种灵活的方式来控制Pod的调度位置,特别是当某些节点具有特殊属性(如只能运行特定类型的Pod)时。
四、自定义调度策略
Kubernetes允许用户根据需要自定义调度策略,主要通过定义自定义的Predicates和Priorities来实现。此外,用户还可以通过设置节点亲和性和污点来进一步细化调度策略。
- 如果内置的kube-scheduler无法满足用户的特殊需求,用户可以编写自定义调度器。
- 自定义调度器需要监听API服务器上的Pod创建事件,并根据自己的调度算法来选择节点。
- 用户可以通过Pod的spec.schedulerName字段来指定使用哪个调度器(内置或自定义)。
五、使用示例
要使用Kubernetes进行容器调度,首先需要创建一个资源清单文件(YAML文件),其中包含了容器的资源需求和约束信息。然后,使用kubectl命令行工具将资源清单文件应用到Kubernetes集群中。调度完成后,可以使用kubectl命令行工具查看Pod的运行状态和所在的节点。
1. NodeSelector
- 节点标签:首先,用户需要为集群中的节点打上相应的标签。这些标签可以是任意的键值对,用于描述节点的特性,如硬件配置、地理位置、网络特性等。
- Pod定义:在创建Pod时,用户可以在Pod的定义中指定NodeSelector。NodeSelector是一个字段,包含了一个或多个键值对,这些键值对需要与节点的标签相匹配。
- 调度过程:当Pod被创建时,Kubernetes调度器会检查Pod的NodeSelector,并遍历集群中的所有节点,寻找具有匹配标签的节点。如果找到匹配的节点,调度器就会将Pod调度到该节点上;如果没有找到匹配的节点,Pod将保持未调度状态,直到有节点满足条件或NodeSelector被修改。
使用场景 - 资源隔离:将不同类型的应用程序或服务调度到专门标记的节点上,以便更好地隔离资源,避免资源争用和干扰。
- 硬件约束:根据节点的硬件特性(如GPU、CPU架构等)将Pod调度到特定的节点上,以满足应用的硬件需求。
- 地理位置:在多地域集群中,通过NodeSelector将Pod调度到特定地理位置的节点上,以降低网络延迟和提高用户体验。
- 版本控制:将Pod调度到具有特定软件版本或配置的节点上,以便更好地控制应用程序的版本和兼容性。
示例
apiVersion: v1
kind: Pod
metadata: name: example-pod
spec: containers: - name: example-container image: nginx nodeSelector: disktype: ssd
2. NodeAffinity
NodeAffinity允许开发者通过定义Pod与节点之间的亲和性关系,来影响Pod的调度位置。它允许用户根据节点的标签(Label)和表达式(Expression)来指定Pod应该被调度到哪些节点上,或者应该避免被调度到哪些节点上。
- 两种类型
- 硬亲和性:
- 硬亲和性规则是强制性的。如果找不到满足条件的节点,Pod将保持未调度状态,直到有节点满足条件或NodeAffinity规则被修改。
- 它确保了Pod只能被调度到符合特定条件的节点上,有助于满足应用的硬件、软件或地理位置等需求。
- 软亲和性:
- 软亲和性规则是优先级的。调度器会尽量满足这些规则,但如果找不到完全满足条件的节点,也会选择其他节点来运行Pod。
- 它提供了一种灵活的调度方式,允许在满足其他调度条件的前提下,优先将Pod调度到符合特定条件的节点上。
- 使用场景
- 硬件约束:将需要特定硬件资源的Pod调度到具有相应硬件标签的节点上,如GPU、特定型号的CPU等。
- 数据本地性:将依赖特定数据存储的Pod调度到具有相同存储特性的节点上,以减少数据访问延迟和提高性能。
- 地理位置感知:将需要在同一地理位置运行的Pod调度到具有相同地理位置标签的节点上,以满足应用的地理位置要求。
- 负载均衡:通过软亲和性规则,将Pod优先调度到负载较低的节点上,以实现集群的负载均衡。
- 示例
apiVersion: apps/v1
kind: Deployment
metadata: name: example-deployment
spec: replicas: 3 selector: matchLabels: app: example-app template: metadata: labels: app: example-app spec: containers: - name: example-container image: nginx affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disktype operator: In values: - ssd preferredDuringSchedulingIgnoredDuringExecution: - weight: 10 preference: matchExpressions: - key: zone operator: In values: - us-west-1
注意事项
- 在使用NodeAffinity时,需要确保集群中有足够数量的节点具有匹配的标签,否则Pod可能会无法被调度。
- NodeAffinity的表达式和操作符需要正确配置,以确保调度规则能够按预期工作。
- 硬亲和性规则是强制性的,如果配置不当可能会导致Pod无法被调度。因此,在配置硬亲和性规则时需要谨慎考虑。
3. PodAffinity(Pod亲和性)
定义:
PodAffinity使得一个Pod倾向于与其具有相同标签选择器的其他Pod安排在同一节点(或同一拓扑域),或者与具有特定标签的已运行Pod靠近。这有助于保持相关工作负载的紧密耦合,比如将微服务的多个组件部署在一起以减少网络延迟。
使用场景:
- 故障区域感知:将同一应用程序的Pod调度到不同的故障区域,提高应用程序的高可用性。
- 数据本地性:将需要紧密协同工作的Pod调度到同一节点,减少网络延迟,提高性能。
- 硬件依赖性:将依赖相同硬件资源的Pod调度到同一节点,避免硬件争用。
示例:
apiVersion: v1
kind: Pod
metadata: name: my-pod
spec: affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - my-app topologyKey: kubernetes.io/hostname
在这个示例中,requiredDuringSchedulingIgnoredDuringExecution规则表示,Pod在调度时必须被安排到与具有app=my-app标签的Pod相同的节点上(由topologyKey: kubernetes.io/hostname指定)。
4. PodAntiAffinity(Pod反亲和性)
定义:
PodAntiAffinity则确保一个Pod不与具有特定标签的已运行Pod安排在同一节点(或同一拓扑域),从而实现故障隔离或资源分散。例如,避免在同一节点上部署两个消耗大量内存的应用实例。
使用场景:
- 故障隔离:避免将所有副本或相关服务的实例部署在同一节点或同一可用区,以降低单点故障的风险。
- 资源隔离或竞争:防止资源消耗相似的Pod集中在一个节点上,导致资源争抢或过度使用。
示例:
apiVersion: v1
kind: Pod
metadata: name: my-pod
spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - my-other-app topologyKey: kubernetes.io/hostname
在这个示例中,requiredDuringSchedulingIgnoredDuringExecution规则表示,Pod在调度时必须被安排到与不具有app=my-other-app标签的Pod相同的节点上(由topologyKey: kubernetes.io/hostname指定),从而实现反亲和性。
5. Taints(污点)
Taints(污点)是一种节点属性,用于确保Pod不会被调度到不希望的节点上。污点可以被添加到节点上,以表示该节点具有某些不希望的特性或问题,比如节点正在维护中、节点具有特定的硬件或软件限制等。然后,只有那些能够容忍(Tolerate)这些污点的Pod才会被调度到这些节点上。
- 组成
三个部分组成:- key:污点的键,用于唯一标识污点。
- value:污点的值,与键一起形成污点的唯一标识。这个值可以是空字符串,但在某些情况下,它可能包含有关污点性质的额外信息。
- effect:污点的作用效果,它决定了Pod与污点节点的交互方式。Kubernetes定义了三种effect:
- NoSchedule:如果节点上存在至少一个未被Pod容忍的污点,则Kubernetes不会将新的Pod调度到该节点上。但是,已经在该节点上运行的Pod不会被驱逐。
- PreferNoSchedule:这是一个软性约束,Kubernetes会尽量避免将Pod调度到具有该污点的节点上,但如果没有其他更合适的节点,Pod仍然可能被调度到该节点上。
- NoExecute(仅当节点出现问题时):一旦节点上添加了具有NoExecute effect的污点,并且Pod不能容忍该污点,则Pod将被立即驱逐出节点。这通常用于节点维护或节点出现故障时。
- 设置和移除污点
可以使用kubectl taint命令来设置或移除节点的污点。- 设置污点:
kubectl taint nodes <node-name> key=value:effect
例如,要给名为node1的节点添加一个key=specialUser、value=user1、effect=NoSchedule的污点,你可以运行:
kubectl taint nodes node1 specialUser=user1:NoSchedule
- 移除污点:
kubectl taint nodes <node-name> key:effect-
注意,在移除污点时,不需要指定value(如果value不是空字符串的话)。例如,要移除上面添加的污点,你可以运行:
kubectl taint nodes node1 specialUser:NoSchedule-
- 应用场景
污点和容忍度机制在Kubernetes中非常有用,可以用于多种场景,如: - 节点维护:在节点进行维护之前,给节点添加污点,防止新的Pod被调度到该节点上。
- 资源隔离:将具有特殊资源需求的Pod调度到具有相应资源的节点上,通过给这些节点添加污点,并只给需要这些资源的Pod设置容忍度,实现资源隔离。
- 故障隔离:在节点出现故障时,给节点添加具有NoExecute effect的污点,将已经在该节点上运行的Pod驱逐出去,防止故障扩散。
6. Tolerations(容忍度)
Tolerations(容忍度)是Pod规格(spec)中的一部分,用于定义Pod能够容忍的节点上的Taints(污点)。当节点被标记了污点时,只有那些具有相应容忍度的Pod才能被调度到该节点上。这提供了一种机制,允许Pod根据节点的特定属性或条件进行调度。
- 组成
每个Toleration都由以下部分组成:- key:可选。如果指定,则必须与节点上Taint的key相匹配。如果未指定,则Toleration将容忍所有具有相应effect的Taints,而不考虑它们的key和value。
- operator:可选。用于定义key与value的匹配方式。默认值为Equal,表示key和value都必须匹配。另一个可能的值是Exists,表示只需检查key是否存在,而不需要匹配value。
- value:可选。与key一起使用,表示要匹配的Taint的值。如果operator是Exists,则不需要指定value。
- effect:可选。表示Toleration可以容忍的Taint的effect。如果未指定,则Toleration将容忍所有具有相应key和value(如果指定了)的Taints,而不考虑它们的effect。但是,通常建议明确指定effect,以确保Pod只容忍期望的Taints。
- tolerationSeconds:可选。仅当effect为NoExecute时有效。表示Pod在节点上停留的最长时间(以秒为单位),在超过这个时间后,如果Pod仍然不能容忍节点的Taints,则Pod将被驱逐。
- 示例
以下是一个Pod的YAML定义示例,其中包含了对特定Taints的容忍度:
apiVersion: v1
kind: Pod
metadata: name: my-pod
spec: containers: - name: my-container image: my-image tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule" - key: "key2" operator: "Exists" effect: "NoExecute" tolerationSeconds: 300
在这个示例中,Pod my-pod 定义了两个容忍度:
1. 第一个容忍度容忍了具有key1=value1和effect=NoSchedule的Taints。这意味着,即使节点上有这样的Taints,Pod仍然可以被调度到该节点上。
2. 第二个容忍度容忍了具有key2(不关心value)和effect=NoExecute的Taints,并且设置了tolerationSeconds为300秒。这意味着,如果节点上出现了这样的Taints,并且Pod已经在该节点上运行,Pod将在接下来的300秒内继续在该节点上运行。但是,如果300秒后Pod仍然不能容忍这些Taints(例如,如果Taints没有被移除或Pod没有更新其容忍度),则Pod将被驱逐出节点。
- 应用场景
Tolerations在Kubernetes中非常有用,特别是在以下场景中: - 节点维护:在节点进行维护之前,给节点添加Taints,并通过在Pod上设置相应的Tolerations来允许特定的维护Pod被调度到这些节点上。
- 资源隔离:通过给具有特定资源的节点添加Taints,并只给需要这些资源的Pod设置Tolerations,可以实现资源隔离。
- 故障隔离:在节点出现故障时,给节点添加具有NoExecute effect的Taints,并设置tolerationSeconds,以便在一段时间内允许已经在该节点上运行的Pod完成其任务,然后再被驱逐出节点。
六、注意事项
- 确保集群中的节点满足容器的资源需求和约束。
- 如果需要对多个Pod进行统一的调度策略设置,可以考虑使用Deployment或StatefulSet等控制器对象。
- 在生产环境中,建议使用持久化存储来存储应用程序的数据,并根据实际需求选择合适的存储类型。
- 为了提高集群的可用性和容错能力,建议部署多个副本的Pod,并根据负载情况自动调整副本数量。
综上所述,Kubernetes的容器调度是一个复杂但高效的过程,它通过智能的调度策略和算法确保了Pod能够被合理地分配到集群中的节点上运行。
相关文章:
K8S 容器调度
在Kubernetes中,容器调度是一个自动化的过程,负责将容器(在Kubernetes中称为Pod)分配到集群中的合适节点上运行。这一过程由Kubernetes的调度器(kube-scheduler)控制,它通过一系列算法和策略来确…...

C++ //练习 17.2 定义一个tuple,保存一个string、一个vector<string>和一个pair<string, int>。
C Primer(第5版) 练习 17.2 练习 17.2 定义一个tuple,保存一个string、一个vector和一个pair<string, int>。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /**********************…...

外观检测设备真的能提高生产效率吗?
零部件外观检测设备是一种专业的设备,用于对各类零部件的外观进行检测和评估。现代制造业中扮演着重要的角色,能够有效提升产品质量,确保产品符合国家标准和客户需求。 首先,零部件外观检测设备具备高精度和高效率的特点。通过采用…...

ant design pro 中用户的表单如何控制多个角色
ant design pro 如何去保存颜色ant design pro v6 如何做好角色管理ant design 的 tree 如何作为角色中的权限选择之一ant design 的 tree 如何作为角色中的权限选择之二ant design pro access.ts 是如何控制多角色的权限的 看上面的图片 当创建或编辑一个用户时,…...

Prometheus监控系统
目录 1.Prometheus概述 1.1 TSDB时序数据库 1.2 Prometheus 的特点 1.3 Prometheus 的生态组件 1.4 Prometheus 的工作模式: 1.5 Prometheus 的工作流程 1.6 Prometheus 的局限性 2.部署Prometheus 2.1 Prometheust Server 端安装和相关配置 2.2 部署 Expo…...

mq-fanout交换机
交换机 交换机是什么?步骤 交换机本身具备路由功能 消息先发到交换机,交换机在路由到队列,消费者监听队列拿到消息 广播模式是什么 是什么 例如:每个微服务创建队列,订单服务只启动1台,1个消费者,订单 怎么创建 创建一个队列 -交换机里type-选择模式(广播模式) 在交换…...

android13禁用打开wifi ap 热点
总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 这个文章介绍的是如何禁止用户打开wifi热点,禁止用户安装app后,打开wifi热点。 2.情况分析 android13 应用层打开wifi AP public void setWifiApEnabled(boolean isEn…...
前端宝典之六:React源码解析之lane模型
本文主要内容: 介绍lane模型 一、 lane模型 lane模型就是react优先级的机制,可以用来 可以表示优先级的不同可能同时存在几个同优先级的更新,所以还得能表示批的概念方便进行优先级相关计算 1、表示优先级不同 lane模型使用31位的二进制…...

邦德咖啡线下门店盛大开业,引领国产健康咖啡新风尚
近日,国内咖啡市场迎来了一股清新的绿色风潮,邦德咖啡线下门店正式拉开帷幕,以其独特的健康理念和创新的产品,誓要成为国产咖啡界的一股强劲力量。 邦德咖啡线下门店以阿卡迪亚绿色为品牌主色调,立志打造国产健康咖啡…...

Elasticsearch + Search UI 构建一个文件搜索引擎
目录 Elasticsearch使用优势App Search Search UI配置engine集中管理配置和提供实用工具函数配置和初始化一个基于Elasticsearch的搜索界面应用程序Search UI 基础用法 好书推荐 Elasticsearch 使用优势 使用ElasticSearch的主要好处在于其强大的全文搜索和实时分析能力。Elas…...

机械学习—零基础学习日志(如何理解概率论2)
全概率公式与贝叶斯公式 上面所提到的公式,可以使用上一篇文章的基本公式推导。 使用到了概率的基本运算公式。 完整的公式展示: 习题练习: 剩余的练习: 第二题解析: 第三题: 第四题: 注意&…...
鸿蒙关于手机全局本地文件读取,写入
一.背景 需求是需要操作用户手机中的文件,不是应用沙箱 二.解决方案 这里要注意的一点拿到fsOpen.path的路径再去进行open文件,因为这里还不知道本地文件路径在哪里,需要选择一下路径再拿到路径去请求 1.这里就是进行两个fs.open…...
嵌入式企业面试真题
1.C语言中指针数组和数组指针的区别是什么? 答:指针数组是指数组的元素都是指针类型的数组。数组指针是指一个指向数组的指针。指向的是数组第一个元素的地址,每次偏移一个数组的大小。 2.讲一下什么是结构体字节对齐? 答:结构体字节对齐是指当结构体中元素的物理内存大…...

开源一款H5自适应留言表白墙php源码下载
开源一款H5自适应留言表白墙php源码下载,优点就是安装简单,功能实用[滑稽][滑稽] 缺点就是UI简陋,功能稀少 第一张是首页,第二张是查看留言 第三张是留言列表(10秒自动刷新),第四张是表白墙界面...

jmeter引入jar包的三种方式
示例 实现对登录密码进行MD5加密 pom文件依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.12&l…...

零基础学习Redis(5) -- redis单线程模型介绍
前面我们提到过,redis是单线程的,这期我们详细介绍一下redis的单线程模型 1. redis单线程模型 redis只使用一个线程处理所有的请求,并不是redis服务器进程内部只有一个线程,其实也存在多个线程,只不过多个线程是在处…...
Android Audio
audio概述: Android Audio知识梳理 看完这一篇就够了!-CSDN博客 Android audio篇章(1)------Audio架构_android audio(1)-CSDN博客 android audio google: 音频 | Android Open Source Project (google.cn) 音频…...

远程MySQL数据库:定义、优势及cPanel的数据库工具
在现代网站和应用程序开发中,数据库是必不可少的核心部分。通常情况下,数据库与网站托管在同一台服务器上,但为了提升性能和安全性,越来越多的用户选择使用远程MySQL数据库。那么,什么是远程MySQL数据库呢?…...
【docker】Dockerfile
Dockerfile是用于构建Docker镜像的文本文件,其中包含一组用于定义镜像构建过程的指令。下面是常见的Dockerfile指令及其解释: FROM:指定基础镜像,用于构建新镜像。COPY:将文件或目录从构建上下文复制到镜像中。ADD&am…...
Redis 的 List 结构非常适合用于实现消息队列php
1. Redis List 结构消息队列简介 Redis 的 List 结构非常适合用于实现消息队列。你可以通过 LPUSH 或 RPUSH 命令将消息推入队列,通过 BLPOP 或 BRPOP 命令从队列中弹出消息。BLPOP 和 BRPOP 命令支持阻塞操作,适合在消费者端等待消息的到来。 2. 实现…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...