目录

前言

1.Kubernetes的控制平面包括哪些核心组件?它们各自的作用是什么?

2.Kubernetes的数据平面涉及哪些组件?它们如何协作?

3.什么是Pod?为什么它是Kubernetes的基本单元?

4.Service如何实现服务发现和负载均衡

5.Kubernetes网络模型的核心原则是什么?

6.Kubernetes如何管理持久化存储?

7.Kubernetes如何实现访问控制和权限管理?

8.如何确保Kubernetes集群的安全性?

9.在Kubernetes中,你如何管理持久化存储?

10.描述Kubernetes的亲和性和反亲和性规则,并解释它们如何影响Pod的调度

11.Kubernetes中的Ingress是什么,它如何工作?

12.描述Kubernetes中Pod的生命周期以及常见的生命周期钩子?

13.Kubernetes的自动伸缩(Autoscaling)是如何工作的?

14.什么是Kubernetes的Service Account,它有什么用途?

15.描述Kubernetes的滚动更新(Rolling Update)和重新创建(Recreate)策略?

16.Kubernetes中的DaemonSet是什么,它通常用于什么场景?

17.Kubernetes中的StatefulSet和Deployment有什么区别?

18.Kubernetes中的ConfigMap和Secret如何用于应用程序配置?

19. Kubernetes中的Sidecar容器是什么,它有什么用途?

20.Kubernetes中的准入控制器(Admission Controllers)是什么,它们如何影响集群的行为?

21.Kubernetes中的Taint和Toleration是什么,它们如何影响Pod的调度?

22.Kubernetes中的CNI(容器网络接口)是什么,它在集群中的作用是什么?

23.Kubernetes的Pod亲和性和反亲和性是什么,它们在调度中的作用是什么?

24.在Kubernetes中,QoS类别是如何定义的?请解释Guaranteed、Burstable和BestEffort的区别。

25.Kubernetes中的服务发现是如何工作的?

26.Kubernetes中的PodSecurityPolicy是什么?它如何帮助增强集群的安全性?

27.Kubernetes中的Custom Resource Definition (CRD) 和 Operator 是什么?它们如何一起工作?

28.Kubernetes中的Service Account是什么?它与User Account有何不同?

29.Kubernetes中的PodDisruptionBudget是什么?它如何帮助确保应用程序的高可用性?

30.Kubernetes中的Ingress是什么?它如何与Service一起工作?

总结


前言

在当今快速发展的云原生技术领域,Kubernetes 作为容器编排领域的事实标准,其重要性不言而喻。随着企业对微服务架构的广泛采纳,掌握 Kubernetes 已成为云时代技术人才的必备技能之一。

这篇文章主要针对 Kubernetes 原生技术栈的组件理解和问题解决提供一些帮助

1.Kubernetes的控制平面包括哪些核心组件?它们各自的作用是什么?

  • API Server:提供集群的前端接口,处理REST请求,存储数据到etcd,并与其他组件通信。
  • etcd:分布式键值存储,保存集群的配置数据和状态。
  • Controller Manager:管理控制器,如ReplicationController、Deployment Controller,确保实际状态与期望状态一致。
  • Scheduler:根据资源情况,将待调度的Pod分配到合适的节点上。

2.Kubernetes的数据平面涉及哪些组件?它们如何协作?

  • kubelet:在每个节点上运行,负责Pod的创建、启停等生命周期管理。
  • kube-proxy:实现服务的网络代理功能,如负载均衡,确保 Pod 间通讯。
  • 容器运行时(如Docker或containerd):在节点上执行容器。

3.什么是Pod?为什么它是Kubernetes的基本单元?

Pod是最小的可部署单元,可以包含一个或多个紧密相关的容器,共享存储和网络命名空间。Pod设计允许容器间紧密交互,简化配置管理,因此成为部署和管理的最小单位。

4.Service如何实现服务发现和负载均衡

Service定义了访问一组Pod的方式,通过Cluster IP、NodePort、LoadBalancer或Ingress等,提供稳定的访问地址和负载均衡,确保请求均匀分配到后端Pod。

5.Kubernetes网络模型的核心原则是什么?

核心原则是 “每个Pod一个IP”,确保Pod间通信像在同一局域网内一样简单,且不依赖于Pod所在的节点。网络插件(如Flannel、Calico)实现此模型。

6.Kubernetes如何管理持久化存储?

通过Persistent Volumes (PV) 和 Persistent Volume Claims (PVC)。PV代表集群中的一块存储资源,而PVC是用户对存储的请求。Kubernetes自动或手动匹配PV和PVC,实现存储资源的动态分配和回收。

7.Kubernetes如何实现访问控制和权限管理?

使用Role-Based Access Control (RBAC),通过角色和角色绑定来控制用户或服务账户对资源的操作权限,确保最小权限原则。

  • Role(角色):Role 定义了一组操作权限的集合,可以授予指定命名空间内的用户或用户组。Role 只能用于授予命名空间内资源的权限,如 Pod、Service、Deployment 等。
  • RoleBinding(角色绑定):RoleBinding 将 Role 与用户或用户组之间进行绑定,指定了哪些用户或用户组具有特定的权限。一个 RoleBinding 可以将多个用户或用户组与一个 Role 相关联。
  • ClusterRole(集群角色):ClusterRole 类似于 Role,但作用范围更广泛,可以授予集群范围内资源的权限,如节点、命名空间、PersistentVolume 等。ClusterRole 不限于单个命名空间。
  • ClusterRoleBinding(集群角色绑定):ClusterRoleBinding 将 ClusterRole 与用户或用户组之间进行绑定,指定了哪些用户或用户组具有特定的集群级别权限。一个 ClusterRoleBinding 可以将多个用户或用户组与一个 ClusterRole 相关联。

8.如何确保Kubernetes集群的安全性?

安全措施包括:使用安全网络策略限制Pod间通信,加密通信(如TLS),使用安全的容器运行时,定期安全扫描,管理好Secrets和ConfigMaps,以及启用网络策略和Pod安全策略等。

9.在Kubernetes中,你如何管理持久化存储?

在Kubernetes中,管理持久化存储通常使用PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC)。PV是集群中一块可用的网络存储,而PVC是用户存储需求的声明。PVC和PV之间的关系是通过匹配PVC的需求与PV的属性来实现的。

用户通过创建PVC来请求特定大小和访问模式的存储,而集群管理员则负责创建PV,这些PV可以绑定到PVC上以满足用户的存储需求。此外,还可以使用StorageClass来实现动态的存储供应,即当PVC被创建时,会自动根据StorageClass的定义来创建PV。

10.描述Kubernetes的亲和性和反亲和性规则,并解释它们如何影响Pod的调度

Kubernetes的亲和性和反亲和性规则用于影响Pod的调度

  • 亲和性 (Affinity):指定Pod倾向于被调度到哪些Node上。这可以通过节点亲和性(基于Node的标签)或Pod亲和性(基于其他Pod的标签)来实现。例如,你可能希望将某些Pod调度到具有特定硬件或特定版本操作系统的节点上。

  • 反亲和性 (Anti-Affinity):指定Pod不应该被调度到哪些Node上。这通常用于确保Pod之间的高可用性。例如,你可以设置反亲和性规则,使得同一服务的Pod不会被调度到同一个节点上,从而防止节点故障导致服务中断。

11.Kubernetes中的Ingress是什么,它如何工作?

Ingress是Kubernetes的一个API对象,用于管理外部对集群服务的HTTP和HTTPS访问。它提供了一个外部URL路由到集群内部服务的方式,可以基于域名、路径等规则进行路由。

Ingress控制器负责实现Ingress对象定义的路由规则。当Ingress对象被创建时,Ingress控制器会读取该对象的配置,并根据配置设置路由规则。常见的Ingress控制器有Nginx Ingress Controller、Traefik等。这些控制器会将Ingress规则转换为Nginx、HAProxy或其他负载均衡器的配置,以实现HTTP和HTTPS路由。

12.描述Kubernetes中Pod的生命周期以及常见的生命周期钩子?

Pod的生命周期从创建开始,经历运行、重启、终止等状态,最终可能被删除。在这个过程中,Kubernetes提供了多个生命周期钩子,允许用户在Pod的不同阶段执行自定义操作。

常见的生命周期钩子包括:

  • PostStart:在容器创建后立即执行一次。常用于初始化容器环境或启动后台进程。
  • PreStop:在容器终止之前执行。常用于优雅地关闭容器中的服务或清理资源。

13.Kubernetes的自动伸缩(Autoscaling)是如何工作的?

Kubernetes支持两种自动伸缩机制:水平伸缩(Horizontal Pod Autoscaling, HPA)和垂直伸缩(Vertical Pod Autoscaling, VPA)。

  • 水平伸缩(HPA):根据Pod的资源使用情况(如CPU、内存)或自定义指标(如应用特定的性能指标)自动增加或减少Pod的副本数量。HPA控制器会定期查询API服务器以获取Pod的资源使用情况,并根据配置的策略进行伸缩操作。
  • 垂直伸缩(VPA):根据Pod的资源使用情况自动调整Pod的资源请求(requests)和限制(limits)。VPA控制器会分析Pod的历史资源使用情况,并预测其未来的资源需求,然后更新Pod的YAML配置文件以实现垂直伸缩。

14.什么是Kubernetes的Service Account,它有什么用途?

Service Account是Kubernetes中用于访问API服务器的身份凭证。每个Service Account都与一个或多个Secret相关联,这些Secret包含用于身份验证的令牌(token)和证书。

Service Account的主要用途是为运行在集群中的Pod提供API访问权限。与常规用户账户不同,Service Account与特定的命名空间相关联,并且只能在该命名空间内访问资源。这使得Service Account成为管理Pod对API服务器访问权限的便捷方式。

15.描述Kubernetes的滚动更新(Rolling Update)和重新创建(Recreate)策略?

  • 滚动更新(Rolling Update):滚动更新是Kubernetes中一种用于更新应用程序版本的策略,它可以在不中断服务的情况下逐步替换旧版本的Pod。在滚动更新过程中,新的Pod实例会逐步替换旧的Pod实例,同时确保服务始终可用。这种策略允许管理员控制更新的速度和进度,以便在必要时进行干预和调整。滚动更新可以通过Kubernetes的Deployment对象来实现,它会自动处理Pod的创建、更新和删除操作。
  • 重新创建(Recreate):重新创建是一种更为直接和简单的部署策略,它首先会停止并删除所有旧的Pod实例,然后再创建新的Pod实例。在这个过程中,服务可能会经历短暂的中断。重新创建策略适用于那些可以容忍短暂中断的应用程序,或者当需要进行较大规模的结构性更改时。与滚动更新相比,重新创建策略更为简单和直接,但可能会导致服务的可用性下降。

16.Kubernetes中的DaemonSet是什么,它通常用于什么场景?

DaemonSet确保在集群中的每个节点上运行一个Pod的副本。当节点加入集群时,DaemonSet会为其调度一个Pod。当节点从集群中移除时,DaemonSet也会清理该节点上的Pod。DaemonSet通常用于运行集群级别的守护进程,例如存储守护进程、日志收集器、网络插件等。

17.Kubernetes中的StatefulSet和Deployment有什么区别?

StatefulSet用于管理有状态的应用程序,例如数据库、分布式存储系统等。StatefulSet提供了稳定的网络标识符、稳定的存储和有序的部署、扩展和删除。与Deployment不同,StatefulSet中的Pod不是完全可替换的,每个Pod都有一个唯一的标识。而Deployment主要用于管理无状态的应用程序,它提供了滚动更新、回滚和扩展等功能。

18.Kubernetes中的ConfigMap和Secret如何用于应用程序配置?

ConfigMap和Secret都是Kubernetes中用于存储应用程序配置信息的资源对象。ConfigMap用于存储非敏感的配置信息,如配置文件、环境变量等。Secret则用于存储敏感的配置信息,如密码、密钥等。这些信息可以被挂载到Pod中的容器文件系统中,或者以环境变量的形式注入到容器中,供应用程序使用。

19. Kubernetes中的Sidecar容器是什么,它有什么用途?

Sidecar容器是与主应用程序容器一起运行的辅助容器,它们共享相同的Pod和网络命名空间。Sidecar容器可以用于提供额外的功能或服务给主应用程序容器,例如日志收集、监控代理、服务发现等。由于它们与主应用程序容器共享相同的网络和存储资源,因此它们可以轻松地访问主应用程序的日志、环境变量和配置信息等。

20.Kubernetes中的准入控制器(Admission Controllers)是什么,它们如何影响集群的行为?

准入控制器是Kubernetes API服务器中的一段代码,用于拦截发送到API服务器的请求,在它们持久化到存储之前进行更改或拒绝。这些控制器允许集群管理员定义并强制执行自定义的策略,以确保请求满足集群的安全性和业务规则。例如,准入控制器可以用于限制对资源的访问、验证Pod的安全配置或实施配额。

21.Kubernetes中的Taint和Toleration是什么,它们如何影响Pod的调度?

Taint是附加到节点的键值对,用于表示节点上的某些属性或条件,这些属性或条件可能会阻止Pod在该节点上运行。Toleration是Pod的规格中的字段,用于表示Pod可以容忍哪些Taint。当调度器尝试将Pod调度到节点时,它会检查节点的Taint和Pod的Toleration,以确保Pod可以容忍节点的所有Taint。这允许管理员更精细地控制Pod的调度,例如,将某些类型的Pod限制到具有特定硬件或软件配置的节点上。

22.Kubernetes中的CNI(容器网络接口)是什么,它在集群中的作用是什么?

CNI(容器网络接口)是一个规范,用于定义容器如何连接到网络。在Kubernetes集群中,CNI允许使用各种网络插件来实现Pod之间的网络通信。这些插件负责设置网络接口、分配IP地址、配置路由等。通过使用CNI,Kubernetes可以支持多种网络解决方案,包括Flannel、Calico等。

23.Kubernetes的Pod亲和性和反亲和性是什么,它们在调度中的作用是什么?

Pod亲和性和反亲和性是Kubernetes调度器中的两个概念,用于控制Pod在集群中的位置。亲和性规则允许管理员指定Pod应该运行(或不应该运行)在具有某些属性的节点上。这些属性可以包括节点的标签、其他Pod的存在或不存在等。通过使用亲和性和反亲和性规则,管理员可以确保Pod被调度到满足其需求的节点上,从而提高集群的可用性和性能。

24.在Kubernetes中,QoS类别是如何定义的?请解释Guaranteed、Burstable和BestEffort的区别

在Kubernetes中,QoS类别是根据Pod的资源请求(request)和限制(limit)来定义的。QoS类别有三种:

  • Guaranteed:Pod中的每个容器都设置了CPU和内存的资源限制,并且限制值等于请求值。这种Pod的QoS最高,调度器会优先调度它们,并且在资源紧张的情况下,它们会被最后终止。
  • Burstable:Pod中的至少一个容器设置了资源请求,但没有设置相应的限制,或者限制值大于请求值。这种Pod的QoS中等,调度器会正常调度它们,并在资源紧张时,根据资源使用情况来决定是否终止它们。
  • BestEffort:Pod没有设置任何资源请求或限制。这种Pod的QoS最低,调度器在资源紧张时会优先终止它们。

25.Kubernetes中的服务发现是如何工作的?

Kubernetes通过DNS和Service资源对象来实现服务发现。当Pod启动时,它会向集群的DNS服务器注册自己的IP地址和主机名。然后,其他Pod可以通过服务名来访问该Pod,DNS服务器会将服务名解析为对应的Pod IP地址。此外,Kubernetes还提供了Service对象来抽象Pod的集合,并为它们提供负载均衡和发现功能。管理员可以创建Service对象来定义服务的名称、端口和选择器等属性,并将它们与Pod关联起来。其他Pod可以通过Service的名称和端口来访问该服务。

26.Kubernetes中的PodSecurityPolicy是什么?它如何帮助增强集群的安全性?

PodSecurityPolicy(PSP)是一种集群级别的资源,用于控制Pod创建的安全上下文。通过PSP,管理员可以定义一系列的安全策略,如限制容器的运行用户、限制容器的文件系统访问权限等。这些策略可以帮助增强集群的安全性,防止潜在的安全风险。

27.Kubernetes中的Custom Resource Definition (CRD) 和 Operator 是什么?它们如何一起工作?

CRD允许用户定义自己的Kubernetes资源类型,而Operator则是一种控制循环,用于管理这些自定义资源的生命周期。Operator通过监听自定义资源的事件,并根据需要执行相应的操作,如创建、更新或删除相关的Kubernetes资源。这使得用户能够更灵活地扩展Kubernetes的功能,并管理自己的应用程序。

28.Kubernetes中的Service Account是什么?它与User Account有何不同?

在Kubernetes中,Service Account是用于为Pod中的进程提供身份和权限的一种机制。每个Pod在创建时都会自动关联一个Service Account,该Service Account具有一组默认的权限和角色绑定。与User Account不同,Service Account主要用于Pod内部的进程与Kubernetes API服务器进行交互,而User Account则用于外部用户或客户端与Kubernetes API服务器进行交互。此外,Service Account的生命周期与Pod相关联,当Pod被删除时,其关联的Service Account也会被自动删除。

29.Kubernetes中的PodDisruptionBudget是什么?它如何帮助确保应用程序的高可用性?

PodDisruptionBudget(PDB)是Kubernetes中的一种资源对象,用于限制在自愿或非自愿中断(如节点维护、节点故障等)期间可以同时终止的Pod的数量。通过定义PDB,管理员可以指定在给定时间窗口内可以终止的Pod的最小数量或百分比。这有助于确保在发生中断时,应用程序仍然具有足够的容量来处理请求,从而保持高可用性。

30.Kubernetes中的Ingress是什么?它如何与Service一起工作?

Ingress是Kubernetes的一个API对象,用于管理集群外部对集群内部服务的HTTP和HTTPS路由。Ingress提供了一种集中定义路由规则的方式,使得来自集群外部的请求能够被正确地转发到集群内部的服务上。Ingress需要配合Ingress Controller一起使用,Ingress Controller是一个负责监听Ingress对象并据其配置转发规则的组件。Service是Kubernetes中的另一个API对象,用于为Pod提供稳定的网络访问地址。Ingress通常会将请求转发到某个Service上,再由Service将请求分发到具体的Pod上。

总结

如上这些数据包括但不限于 Kubernetes 的核心概念、工作原理、服务发现、负载均衡、资源管理等方面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/20916.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/20916.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/20916.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自动驾驶技术】自动驾驶汽车AI芯片汇总——地平线篇

0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。 本篇文章是这个系列的第二篇&#x…

[AIGC] DAG任务调度的概述与实践

DAG(Directed Acyclic Graph,有向无环图)作为任务调度的基础模型,在大规模数据处理和计算过程中有着广泛的应用。本文将对DAG模型的原理进行解释并列出一些常用的任务调度工具。 文章目录 一、什么是DAG?二、DAG任务调度的原理三、常用的DAG任…

50个常用的Docker命令及如何使用

这里整理了50个常用的Docker命令以及每个命令的使用方法。 docker version:显示Docker版本信息。 示例:docker version docker info:显示Docker系统信息。 示例:docker info docker pull <image>:从Docker Hub下载镜像。 示例:docker pull ubuntu docker run <i…

spring xml配置文件中的bean标签属性

概述 在Spring框架中&#xff0c; 标签用于定义和配置 Spring 容器管理的对象&#xff08;即 bean&#xff09;。 标签有许多属性&#xff0c;每个属性都用来配置 bean 的特定方面。下面是一些主要属性及其默认值的详细说明。 属性 1 id 说明: 用于标识 bean 的唯一标识符。…

一文带你了解python

一文带你了解python 简单介绍 python是脚本语言,不需要在使用变量前进行声明,代码不需要编译,由解释器来解释执行。python简洁的语法可以让你写出比静态语言更短的程序。使用交互式解释器时,会自动打印输入的一些包含值的东西;在非交互式的程序中,需要使用print函数打印…

Python获取文件MD5值方法

Python的标准库中提供了一个名为hashlib的模块&#xff0c;可以用来生成MD5值。 下面是两个方法的实现&#xff1a; 1. 通过文件路径获取MD5值&#xff1a; import hashlibdef calculate_md5_file(file_path):md5 hashlib.md5()with open(file_path, "rb") as f:…

启发式算法教程(个人总结版)

1. 引言 1.1 什么是启发式算法 启发式算法是一类用于寻找复杂优化问题近似解的方法&#xff0c;特别适用于在计算资源有限的情况下求解大型问题。与精确算法不同&#xff0c;启发式算法不保证找到全局最优解&#xff0c;但能在可接受的时间内提供一个质量较高的解。 1.2 启发…

CMake编译安装、生成可执行程序、生成静态动态库以及静态动态库的链接

1 CMake介绍 CMake是一个开源的、跨平台的构建系统&#xff0c;用于管理软件从源代码到可执行文件的整个构建过程。它最初由Kitware公司为ITK&#xff08;Insight Segmentation and Registration Toolkit&#xff09;和VTK&#xff08;Visualization Toolkit&#xff09;等开源…

在Linux kali下载、安装Perl环境

目录 Perl介绍 下载安装 官网下载 在Windows安装 在Linux和Mac OS安装 Perl介绍 Perl一种功能丰富的计算机程序语言&#xff0c;运行在超过100种计算机平台上&#xff0c;适用广泛&#xff0c;从最初是为文本处理而开发的&#xff0c;现在用于各种任务&#xff0c;包括系统…

C语言编程数学:探索、挑战与深度应用

C语言编程数学&#xff1a;探索、挑战与深度应用 C语言&#xff0c;作为计算机编程的基石之一&#xff0c;不仅广泛应用于系统级编程&#xff0c;还在数学计算领域发挥着重要作用。本文将围绕C语言在数学编程中的四个方面、五个方面、六个方面和七个方面展开探讨&#xff0c;带…

面试官:Spring中都应用了哪些设计模式?

设计模式是我们项目中经常会涉及到的项目进行重构、解构时的一种方法。 比如我们常见的单例模式、工厂模式、策略模式、装饰器模式等都是比较常用的&#xff1b;关于 23 种设计模式&#xff0c;大家可以找本书专门去学习一下&#xff0c;在 Java 框架的源码中也不例外&#xf…

SRE养成计划之01-基本命令(持续更新)

基本命令&#xff08;续&#xff09; 软连接 软连接 --> 原始文档 --> 文档数据格式&#xff1a;ln -s 原始文件或目录 软连接文件若原始文件或目录被删除&#xff0c;链接文件将失效软连接可存放在不同分分区/文件系统 硬链接 硬链接 --> 文档数据格式&#xff1…

如何用python做一个用户登录界面——浔川python社

1 需解决的问题&#xff1a; 1.1如何用python做一个用户登录界面&#xff1f; 1.2需要用到哪些库、模块&#xff1f; 2 问题解决&#xff1a; 2.1 回答 1.1 &#xff1a;合理即可&#xff0c;无标准回答。 2.2 回答 1.2 &#xff1a;tk库&#xff08;缩写&#xff09;、GUL界面…

C++20实战之channel

C20实战之channel 继前面两节的直播&#xff0c;讲解了thread、jthread、stop_token、stop_source、stop_callback、cv、cv_any等的用法与底层实现&#xff0c;那么如何基于这些知识实现一个小项目呢&#xff1f; 于是引出了这篇&#xff0c;写一个channel出来。 注&#xff1a…

【算法】快速幂

算法-快速幂 前置知识 倍增 思路 我们要求 a n a^n an。 简单的方法是 a n a n − 1 ⋅ a a^na^{n-1}\cdot a anan−1⋅a 但是我们不妨使用倍增的思想 若 2 ∣ n 2\mid n 2∣n&#xff0c;则 a n a n 2 2 a^n{a^{\frac n 2}}^2 ana2n​2 若 2 ∤ n 2\nmid n 2∤n&…

【AI】设计师人人必备的Ai课程,AIGC实战教学

课程介绍 专为设计师定制的AI绘画视觉课程&#xff0c;包含排版、插画、海报和动漫等。共43节课程&#xff0c;2.06G视频&#xff0c;教授AI应用技巧&#xff0c;提高设计效率和质量。内容涵盖词生图方法、AI风格设计等&#xff0c;帮助学员在设计领域取得成就。 1_01-ai课程…

Flutter 中的 SliverPersistentHeader 小部件:全面指南

Flutter 中的 SliverPersistentHeader 小部件&#xff1a;全面指南 Flutter 是一个功能强大的 UI 工具集&#xff0c;用于创建美观、高性能的移动和 web 应用。在 Flutter 的滚动组件中&#xff0c;SliverPersistentHeader 是一个特殊的组件&#xff0c;它用于在 CustomScroll…

zustand修改一个object对象的嵌套属性,会触发更新吗

在 Zustand 状态管理库中&#xff0c;当使用 set 方法来更新一个对象的嵌套属性时&#xff0c;并不会触发整个对象的更新操作。相反&#xff0c;Zustand 使用了浅比较来检测状态的变化&#xff0c;只有当状态内部的引用发生变化时&#xff0c;才会触发更新操作。 因此&#xf…

jrt落地deepin

经过昨天一晚上的努力&#xff0c;把deepin和win10的双系统安装好了。同时把jrt开发需要的svn&#xff0c;jdk,idea安装好里&#xff0c;代码也checkout里。 首先安装系统碰到安装deepin后启动时候无法选择win10,在宏伟兄帮助下找到资料执行sudo update-grub解决了。 然后程…

糖果促销【百度之星】/思维

糖果促销 思维 大佬的解法&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; int main() {ll t;cin>>t;for(int i0;i<t;i){ll p,k;cin>>p>>k;if(k0) cout<<0<<endl;else{k-(k-1)/p;cout<<k<…