Kubernetes面試題分享

目錄

前言

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<…