k8s record 20240705

k8s 安全管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
request 是1g,你得不到要求,我就不创建了,这就是准入控制二次校验

在这里插入图片描述

SA就是serviceAccount。 内部是SA和 token, 外部用户进来就是 .kube/config文件
namespace下的是role,整个集群是 ClusterRole. 动作就是Binding
limitRanger就是满足要求就让你创建,不满足要求就不让你创建,ResourceQuota资源配额。PodSecurityPolicy让我们超越pod的限制,进行一些宿主机级别的操作

SA 服务账号

集群内部使用 namespace级别的
创建ServiceAccount后会自带 Tokens

不是的,“可以访问被允许的 ConfigMap 资源”并不意味着可以访问所有的 ConfigMap 资源,而是指可以访问特定的、被授予权限的 ConfigMap 资源。这取决于你在 Role 和 RoleBinding 中配置的权限范围。

让我们更具体地看一下如何通过 Role 和 RoleBinding 来控制对 ConfigMap 的访问权限。

细粒度控制 ConfigMap 访问权限

在 Role 中,你可以指定允许访问的资源、操作和命名空间。例如:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: read-configmaps
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list"]
  resourceNames: ["my-configmap"]  # 仅允许访问名为 "my-configmap" 的 ConfigMap

上面的配置指定了一个 Role,该 Role 只允许读取名为 my-configmap 的 ConfigMap。

示例

创建一个 ServiceAccount:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-service-account
  namespace: default

  1. 创建 Role

创建一个只允许访问特定 ConfigMap 的 Role:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: read-specific-configmap
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list"]
  resourceNames: ["my-configmap"]  # 仅允许访问名为 "my-configmap" 的 ConfigMap

保存为 role-specific-configmap.yaml,然后应用:

kubectl apply -f role-specific-configmap.yaml
  1. 创建 RoleBinding

将这个 Role 绑定到 ServiceAccount:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-specific-configmap-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: my-service-account
  namespace: default
roleRef:
  kind: Role
  name: read-specific-configmap
  apiGroup: rbac.authorization.k8s.io

保存为 rolebinding-specific-configmap.yaml,然后应用:

kubectl apply -f rolebinding-specific-configmap.yaml

关联 ServiceAccount 和 Pod

将 ServiceAccount 关联到 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: default
spec:
  serviceAccountName: my-service-account
  containers:
  - name: my-container
    image: my-image

保存为 pod.yaml,然后应用:

kubectl apply -f pod.yaml

总结

通过上述步骤,你的 my-pod 将使用 my-service-account,并且只能读取名为 my-configmap 的 ConfigMap,而不能访问其他的 ConfigMap。这就是细粒度访问控制的意义所在。

  • Role:定义了可以访问的资源类型、操作以及具体的资源名称。
  • RoleBinding:将 Role 绑定到特定的 ServiceAccount。
  • ServiceAccount:为 Pod 提供身份和权限。

通过这种方式,你可以非常精细地控制每个 Pod 的权限,确保它们只能访问必要的资源。

UA 用户账号

k8s自己相关证书存放的目录 /etc/k8s/pki/

在linux操作系统中,我们有且仅有一个root账户,还能有若干个普通账户;root账户的权限最大,普通账户如果需要某些特殊的权限的话,是需要我们root账户去给它授权的。而这些给我们提供使用的,在k8s的具体体现,那就是user account
在企业中,并不是只有我们一个人使用k8s集群,还有很多的研发人员都是需要使用集群的;这时我们需要给他们创建一些账号,但是这些账号权限又不能太大,以防误删资源,这个时候我们就能使用user account了

user account如何和服务器的普通用户绑定?或者说怎么能让用户小明使用k8s的时候只能使用jane

将服务器的普通用户(例如“小明”)与 Kubernetes 中的 User Account(如“jane”)绑定通常涉及以下几个步骤:

  1. 创建 User Account(在 Kubernetes 中):定义并配置 Kubernetes 中的 User Account(例如“jane”)。
  2. 创建和分发认证凭证:为 User Account 创建 X.509 证书或 Bearer Token,并将其分发给小明。
  3. 配置 kubeconfig 文件:将认证凭证和集群信息配置到小明的 kubeconfig 文件中。
  4. 权限控制:使用 RBAC 将合适的权限分配给 User Account。

以下是详细步骤:

1. 创建和分发认证凭证

使用 X.509 证书
  1. 创建私钥和证书签名请求(CSR)

    openssl genrsa -out jane.key 2048
    openssl req -new -key jane.key -out jane.csr -subj "/CN=jane/O=developers"
    
  2. 签署证书(假设使用 Kubernetes 的 CA 证书进行签名):

    openssl x509 -req -in jane.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out jane.crt -days 365
    
  3. 分发证书和私钥

    jane.crtjane.key 分发给小明。

2. 配置 kubeconfig 文件

  1. 为小明配置 kubeconfig 文件

    创建或编辑小明的 kubeconfig 文件(通常位于 ~/.kube/config),添加以下内容:

    apiVersion: v1
    kind: Config
    clusters:
    - cluster:
        certificate-authority: /etc/kubernetes/pki/ca.crt
        server: https://<kubernetes-api-server>
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: jane
      name: jane-context
    current-context: jane-context
    users:
    - name: jane
      user:
        client-certificate: /path/to/jane.crt
        client-key: /path/to/jane.key
    

    确保 certificate-authorityclient-certificateclient-key 的路径正确。

  2. 将 kubeconfig 文件复制到小明的主目录

    cp /path/to/kubeconfig /home/xiaoming/.kube/config
    chown xiaoming:xiaoming /home/xiaoming/.kube/config
    

3. 配置 RBAC

  1. 创建 Role

    定义一个 Role,例如允许读取 Pods:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      namespace: default
      name: pod-reader
    rules:
    - apiGroups: [""]
      resources: ["pods"]
      verbs: ["get", "list"]
    

    保存为 role.yaml 并应用:

    kubectl apply -f role.yaml
    
  2. 创建 RoleBinding

    将 Role 绑定到 User Account:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: read-pods
      namespace: default
    subjects:
    - kind: User
      name: "jane"  # 这是 User Account 的名字
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
    

    保存为 rolebinding.yaml 并应用:

    kubectl apply -f rolebinding.yaml
    

总结

通过这些步骤,您可以将服务器上的普通用户(如小明)与 Kubernetes 中的 User Account(如“jane”)绑定。具体步骤包括:

  1. 为 User Account 创建认证凭证(如 X.509 证书)。
  2. 将认证凭证配置到小明的 kubeconfig 文件中。
  3. 使用 RBAC 为 User Account 分配适当的权限。

这样,小明在使用 kubectl 时就会以 User Account “jane”的身份进行操作,并且只能执行被授予的权限。

config

指定的用户,特定的集群
在这里插入图片描述
在这里插入图片描述
在 Kubernetes 中,xiaoming(或小明)的配置文件(kubeconfig 文件)、ServiceAccount(服务账号)和 User Account(用户账号)是 Kubernetes 认证和授权机制中的不同概念,它们各自扮演着不同的角色,但在一定情况下会有交集或者可以相互关联。

1. kubeconfig 文件

kubeconfig 文件是用来配置 Kubernetes 客户端工具(如 kubectl)如何连接到 Kubernetes 集群的文件。它包含了以下主要内容:

  • Clusters:定义可以访问的 Kubernetes 集群的位置和相关信息。
  • Users:定义用户如何进行身份验证(如使用用户名密码、客户端证书等)。
  • Contexts:定义了一个特定集群、用户和命名空间的组合,以及当前使用的上下文。

kubeconfig 文件中的用户(User)部分配置了用于身份验证的凭据,如证书、令牌或用户名密码。通过设置正确的上下文(Context),可以使 kubectl 在执行命令时使用正确的集群和用户凭据。

2. ServiceAccount(服务账号)

ServiceAccount 是 Kubernetes 中一种资源对象,用于授权 Pod 中运行的应用程序访问 Kubernetes API。每个 Pod 都会关联一个 ServiceAccount,默认情况下是 default ServiceAccount。ServiceAccount 提供了身份验证信息,允许 Pod 在集群内执行特定操作而无需直接使用集群用户的凭据。

ServiceAccount 主要用于控制 Pod 访问 Kubernetes API 的权限,例如,控制 Pod 是否具有创建其他资源的权限或访问特定 ConfigMap 或 Secret 的权限。

3. User Account(用户账号)

User Account 是指 Kubernetes 中配置的用户身份。这些用户通常用于管理 Kubernetes 集群,而不是在 Pod 内运行的应用程序。User Account 通常在 kubeconfig 文件中配置,用于管理员或其他有权限的用户访问 Kubernetes 集群。

User Account 可以通过不同的认证机制进行验证,如用户名密码、客户端证书等。它们与 ServiceAccount 不同,后者是用于授权 Pod 内的应用程序访问 Kubernetes API 的。

理解 kubectl config set-credentials 的关键在于知道它如何在 kubeconfig 文件中设置或更新用户的认证信息。让我通过一个具体的示例来详细解释这个命令的用途和使用方法。

具体示例

假设你有一个新的 Kubernetes 用户 xiaoming,你希望为他配置访问 Kubernetes 集群的认证信息。

1. 生成客户端证书和密钥

假设已经生成好了以下文件:

  • xiaoming.crt (客户端证书)
  • xiaoming.key (客户端密钥)
2. 使用 kubectl config set-credentials 命令配置认证信息

我们将在 kubeconfig 文件中添加用户 xiaoming 的认证信息。

kubectl config set-credentials xiaoming --client-certificate=/path/to/xiaoming.crt --client-key=/path/to/xiaoming.key

这个命令的意思是:

  • xiaoming:用户名称
  • –client-certificate:指向客户端证书的文件路径
  • –client-key:指向客户端密钥的文件路径

运行这个命令后,kubeconfig 文件会更新或添加如下内容:

users:
- name: xiaoming
  user:
    client-certificate: /path/to/xiaoming.crt
    client-key: /path/to/xiaoming.key
3. 配置集群和上下文

假设集群名称为 my-cluster,API 服务器的地址为 https://api-server.example.com,CA 证书文件路径为 /path/to/ca.crt

kubectl config set-cluster my-cluster --server=https://api-server.example.com --certificate-authority=/path/to/ca.crt

这条命令会在 kubeconfig 文件中添加或更新集群信息:

clusters:
- cluster:
    certificate-authority: /path/to/ca.crt
    server: https://api-server.example.com
  name: my-cluster
4. 创建上下文并切换到新上下文

上下文关联了集群和用户信息,便于 kubectl 使用。

kubectl config set-context xiaoming-context --cluster=my-cluster --user=xiaoming
kubectl config use-context xiaoming-context

这两条命令会在 kubeconfig 文件中添加或更新上下文信息,并设置当前上下文:

contexts:
- context:
    cluster: my-cluster
    user: xiaoming
  name: xiaoming-context
current-context: xiaoming-context
总结

通过以上步骤,用户 xiaoming 就可以使用 kubectl 访问 Kubernetes 集群了。以下是整个 kubeconfig 文件的内容示例:

apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority: /path/to/ca.crt
    server: https://api-server.example.com
  name: my-cluster
users:
- name: xiaoming
  user:
    client-certificate: /path/to/xiaoming.crt
    client-key: /path/to/xiaoming.key
contexts:
- context:
    cluster: my-cluster
    user: xiaoming
  name: xiaoming-context
current-context: xiaoming-context

主要步骤总结

  1. 生成客户端证书和密钥:为用户生成认证凭证。
  2. 配置认证信息:使用 kubectl config set-credentials 命令将用户的认证信息添加到 kubeconfig 文件中。
  3. 配置集群信息:使用 kubectl config set-cluster 命令添加集群信息。
  4. 配置上下文并切换:使用 kubectl config set-contextkubectl config use-context 命令添加上下文并设置当前使用的上下文。

通过上述步骤创建的用户 xiaoming,在 Kubernetes 中具有根据其配置的权限和角色所允许的能力。这取决于以下几个因素:

  1. 配置的 RBAC 角色和权限

    • 如果给 xiaoming 分配了适当的 Role 或 ClusterRole,并且这些 Role 具有对某些资源(如 Pods、Deployments 等)的特定操作权限(如创建、获取、删除等),那么 xiaoming 就能执行这些操作。
  2. 命名空间限制

    • 如果 xiaoming 被限制在特定的命名空间中,那么他只能在这个命名空间内执行操作,而不能跨命名空间操作资源。
  3. kubectl 命令使用权限

    • xiaoming 可以使用 kubectl 命令执行他具有权限的任何操作。例如,他可以列出 Pods、获取服务的详细信息、创建或删除资源等,取决于他被授予的具体权限。

优先级
在这里插入图片描述
.kube/config 小于 export KUBECONFIG=/tmp/superopesmsb.conf< admin.conf

用户 bind 角色。这个用户就有了这个角色操作相关资源的权限 — 这就是基于角色的权限访问控制 RBAC

在这里插入图片描述

  1. namespace:比如张三来了,赋予市场部经理的角色,那么他只负责市场部,role只赋予一个namespace的范围
  2. cluster: 张三提升为 总裁。比如ClusterRole, 多个命名空间,集群级别,是 ClusterRolebinding,不在是 Rolebinding
  3. 混合级别:张三虽然提升为总裁,但对能力不能确定,有个观察期,期间只负责财务部一个namespace. 虽然角色是ClusterRole,但是用的是Rolebinding, 不是 ClusterRolebinding。

在这里插入图片描述
Role就是 xx资源的 xx 权限
apiGroups可以是 α版本的,http,https等等。”“ 代表所有资源版本
主要是apiGroups和 resources,使用这两个列表
在这里插入图片描述

在 Kubernetes 的 RBAC(角色基于访问控制)系统中,apiGroups 列表用于指定资源所属的 API 组。Kubernetes 的 API 资源分布在不同的 API 组中,每个 API 组包含一组相关的资源和操作。通过在 RoleClusterRole 中指定 apiGroups,可以控制对特定 API 组中资源的访问权限。

常见的 API 组及其意义

以下是一些常见的 API 组及其含义:

  1. Core API Group ("")

    • 空字符串表示核心 API 组。
    • 包含 Kubernetes 的核心资源,如 Pods、Services、ConfigMaps、Secrets、Namespaces、Nodes 等。
    • 示例:
      apiGroups: [""]
      resources: ["pods", "services", "configmaps", "secrets"]
      
  2. apps

    • 包含与应用管理相关的资源。
    • 主要资源包括 Deployments、StatefulSets、DaemonSets、ReplicaSets 等。
    • 示例:
      apiGroups: ["apps"]
      resources: ["deployments", "statefulsets", "daemonsets", "replicasets"]
      
  3. batch

    • 包含与批处理作业相关的资源。
    • 主要资源包括 Jobs 和 CronJobs。
    • 示例:
      apiGroups: ["batch"]
      resources: ["jobs", "cronjobs"]
      
  4. extensions

    • 包含一些早期版本的资源,现在大多数资源已移到其他 API 组。
    • 示例:
      apiGroups: ["extensions"]
      resources: ["deployments", "daemonsets", "replicasets"]
      
  5. rbac.authorization.k8s.io

    • 包含与 RBAC 相关的资源。
    • 主要资源包括 Roles、RoleBindings、ClusterRoles、ClusterRoleBindings。
    • 示例:
      apiGroups: ["rbac.authorization.k8s.io"]
      resources: ["roles", "rolebindings", "clusterroles", "clusterrolebindings"]
      
  6. policy

    • 包含与策略管理相关的资源。
    • 主要资源包括 PodSecurityPolicies。
    • 示例:
      apiGroups: ["policy"]
      resources: ["podsecuritypolicies"]
      
  7. networking.k8s.io

    • 包含与网络相关的资源。
    • 主要资源包括 NetworkPolicies、Ingresses。
    • 示例:
      apiGroups: ["networking.k8s.io"]
      resources: ["networkpolicies", "ingresses"]
      
  8. storage.k8s.io

    • 包含与存储管理相关的资源。
    • 主要资源包括 StorageClasses、VolumeAttachments。
    • 示例:
      apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses", "volumeattachments"]
      
  9. autoscaling

    • 包含与自动扩缩相关的资源。
    • 主要资源包括 HorizontalPodAutoscalers。
    • 示例:
      apiGroups: ["autoscaling"]
      resources: ["horizontalpodautoscalers"]
      
  10. apiextensions.k8s.io

    • 包含与 API 扩展相关的资源。
    • 主要资源包括 CustomResourceDefinitions。
    • 示例:
      apiGroups: ["apiextensions.k8s.io"]
      resources: ["customresourcedefinitions"]
      

自定义 API 组

如果你在 Kubernetes 中使用自定义资源定义(CRD),可以定义自己的 API 组。这些 API 组通常是你自己定义的,与你的应用或业务逻辑相关。

例如,假设你创建了一个名为 example.com 的自定义 API 组,并在其中定义了一个名为 MyResource 的资源:

apiGroups: ["example.com"]
resources: ["myresources"]

kubeconfig里设置的用户,rolebinding 到一个角色。Role 和 RoleBinding 的 metadata.namespace 字段共同决定了权限在哪个命名空间内有效。binding后这个用户在其他命名空间就没了操作权限
在这里插入图片描述
在这里插入图片描述
SA的认证模式是 token, UA的认证模式是 证书+密钥,也就是那个config
RoleBinding 将 Role 绑定到一个或多个 ServiceAccount 或 UserAccount 上,使这些账户获得该 Role 中定义的权限。

ClusterRole cluster-admin
cluster-admin 是 Kubernetes 中预定义的一个 ClusterRole,它包含了所有的权限,可以对集群中的所有资源进行任意操作。绑定到 cluster-admin 角色的账户将获得集群管理员的全部权限。
如果一个 ServiceAccount 被绑定到 ClusterRole cluster-admin 通过 ClusterRoleBinding,那么这个 ServiceAccount 将获得集群中的所有权限
在这里插入图片描述

kubeConfig

kubeconfig 文件是 Kubernetes 客户端(如 kubectl)用来访问 Kubernetes 集群的配置文件。它定义了如何连接到集群、如何认证用户以及如何在多个集群和用户之间切换。具体来说,kubeconfig 文件主要包括以下几个部分:

  1. 定义集群(Clusters):描述如何连接到 Kubernetes API 服务器。
  2. 定义用户(Users):描述用于连接集群的用户凭证。
  3. 定义上下文(Contexts):将集群、用户和命名空间组合在一起,方便切换。
  4. 应用上下文(Current Context):指定当前使用的上下文。

示例 kubeconfig 文件

apiVersion: v1
kind: Config
clusters:
- cluster:
    server: https://kubernetes.example.com
    certificate-authority: /path/to/ca.crt
  name: my-cluster
users:
- name: my-user
  user:
    client-certificate: /path/to/client.crt
    client-key: /path/to/client.key
contexts:
- context:
    cluster: my-cluster
    user: my-user
    namespace: my-namespace
  name: my-context
current-context: my-context

解释

定义集群(Clusters)
clusters:
- cluster:
    server: https://kubernetes.example.com
    certificate-authority: /path/to/ca.crt
  name: my-cluster
  • clusters:包含一个或多个集群配置。
  • name:集群的名称,用于在上下文中引用。
  • server:API 服务器的地址。
  • certificate-authority:用于验证 API 服务器的证书。
定义用户(Users)
users:
- name: my-user
  user:
    client-certificate: /path/to/client.crt
    client-key: /path/to/client.key
  • users:包含一个或多个用户配置。
  • name:用户的名称,用于在上下文中引用。
  • client-certificateclient-key:用于客户端认证的证书和密钥。
定义上下文(Contexts)
contexts:
- context:
    cluster: my-cluster
    user: my-user
    namespace: my-namespace
  name: my-context
  • contexts:包含一个或多个上下文配置。
  • name:上下文的名称,可以任意指定。
  • cluster:引用定义的集群名称。
  • user:引用定义的用户名。
  • namespace(可选):默认的命名空间,如果未指定,则使用默认命名空间。
应用上下文(Current Context)
current-context: my-context
  • current-context:指定当前使用的上下文名称,决定了 kubectl 命令的默认集群、用户和命名空间。

使用示例

假设你有一个 kubeconfig 文件,名为 config.yaml。你可以使用以下命令来管理和使用 kubeconfig 文件中的配置:

  1. 查看当前上下文

    kubectl config current-context
    
  2. 切换上下文

    kubectl config use-context my-context
    
  3. 查看可用的上下文

    kubectl config get-contexts
    
  4. 指定使用特定的 kubeconfig 文件

    kubectl --kubeconfig=config.yaml get pods
    

通过定义集群、用户和上下文,并应用上下文,kubeconfig 文件使得 Kubernetes 客户端能够灵活地在不同的集群和用户之间切换,并确保连接的安全性和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/787212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文带你彻底搞懂什么是责任链模式!!

文章目录 什么是责任链模式&#xff1f;详细示例SpingMVC 中的责任链模式使用总结 什么是责任链模式&#xff1f; 在我们日常生活中&#xff0c;经常会出现一种场景&#xff1a;一个请求需要经过多个对象的处理才能得到最终的结果。比如&#xff0c;一个请假申请&#xff0c;需…

集训 Day 2 模拟赛总结

复盘 7&#xff1a;30 开题 想到几天前被普及组难度模拟赛支配的恐惧&#xff0c;下意识觉得题目很难 先看 T1&#xff0c;好像不是很难&#xff0c;魔改 Kruskal 应该就行 看 T2 &#xff0c;感觉很神奇&#xff0c;看到多串匹配想到 AC 自动机&#xff0c;又想了想 NOIP …

【开源】基于RMBG的一键抠图与证件照制作系统【含一键启动包】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

优秀策划人必逛的地方,你不会还不知道吧?

道叔今天依然记得当初刚入行的时候&#xff0c;每天为完成策划任务&#xff0c;焦虑的整晚睡不着觉的痛苦。 但其实……很多时候&#xff0c;选择比努力更重要 优秀的策划和文案&#xff0c;也从来不是天生&#xff0c;你要走的路&#xff0c;前人都已经走过,你要做的仅仅是整…

【计算几何】凸包问题 (Convex Hull)

【计算几何】凸包问题 (Convex Hull) 引言 凸多边形 凸多边形是指所有内角大小都在 [ 0 , π ] [0,π] [0,π]范围内的简单多边形 凸包 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为&#xff1a;对于给定集合 X&#xff0c;所有包含 X 的凸集的交集 S 被称…

QT文件生成可执行的exe程序

将qt项目生成可执行的exe程序可按照以下步骤进行&#xff1a; 1、在qt中构建运行生成.exe文件&#xff1b; 2、从自定义的路径中取出exe文件放在一个单独的空文件夹中&#xff08;exe文件在该文件夹中的release文件夹中&#xff09;&#xff1b; 3、从开始程序中搜索qt&#xf…

Python入门 2024/7/8

目录 数据容器 dict(字典&#xff0c;映射) 语法 定义字典字面量 定义字典变量 定义空字典 从字典中基于key获取value 字典的嵌套 字典的常用操作 新增元素 更新元素 删除元素 清空字典 获取全部的key 遍历字典 统计字典内的元素数量 练习 数据容器的通用操作…

运维锅总详解设计模式

本首先简介23种设计模式&#xff0c;然后用Go语言实现这23种设计模式进行举例分析。希望对您理解这些设计模式有所帮助&#xff01; 一、设计模式简介 设计模式是软件设计中用于解决常见设计问题的一套最佳实践。它们不是代码片段&#xff0c;而是解决特定问题的通用方案。设…

(图文详解)小程序AppID申请以及在Hbuilderx中运行

今天小编给大家带来了如何去申请APPID&#xff0c;如果你是小程序的开发者&#xff0c;就必须要这个id。 申请步骤 到小程序注册页面&#xff0c;注册一个小程序账号 微信公众平台 填完信息后提交注册 会在邮箱收到 链接激活账号 确认。邮箱打开链接后&#xff0c;会输入实…

线程并发库复习

1.进行和线程 什么是进程&#xff1a;进程是内存分配的基本单位&#xff0c;它是程序执行时的一个实例&#xff0c;会被放到进程就绪队列&#xff0c;等进程调度器选择它&#xff0c;给它时间片&#xff0c;它才会运行。在java中启动进程&#xff0c;main&#xff0c;test&…

14-54 剑和诗人28 - 用于实时嵌入查找的向量检索

介绍 LLM 成功的关键因素是向量嵌入的使用。通过将文本转换为数字向量表示&#xff0c;我们可以将语义含义映射到数学向量空间。这使得模型能够根据向量之间的相似性在语言中概括模式。 随着我们的模型和数据集变得越来越大&#xff0c;高效地存储、组织和检索这些嵌入变得至关…

STM32智能交通灯控制系统教程

目录 引言环境准备智能交通灯控制系统基础代码实现&#xff1a;实现智能交通灯控制系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;交通灯管理与优化问题解决方案与优化收尾与总结 1. 引言 智能交通灯控…

【UE5】仅修改结构体的若干个数据

蓝图中的结构体变量 | 虚幻引擎4.27文档 (unrealengine.com) 连线连到傻&#xff0c;因为如果某个变量set空值也一起过去了。一查发现有这个节点。

Kubernetes 为pod指定DNS

在k8s里面&#xff0c;默认创建pod会给pod默认分配一个默认的dns&#xff0c;这个dns是哪来的呢&#xff1f;可不可以改成其他的dns呢&#xff1f; 先进入到pod里面来&#xff0c;可以看到这里面默认设置的DNS服务器&#xff0c;这个服务器地址为10.96.0.10。这个地址是k8s自动…

Qt入门(二):Qt的基本组件

目录 Designer程序面板 1、布局Layout 打破布局 贴合窗口 2、QWidget的属性 3、Qlabel标签 显示图片 4、QAbstractButton 按钮类 按钮组 5、QLineEdit 单行文本输入框 6、ComboBox 组合框 7、若干与数字相关的组件 Designer程序面板 Qt包含了一个Designer程序 &…

【Notepad】Notepad_6.3.1 的中文版安装详情

目录 &#x1f33c;1. Notepad的认识 &#x1f33c;2. Notepad中文版安装详情 &#x1f33c;1. Notepad的认识 Notepad 是 Windows 操作系统中的一个文本编辑器程序&#xff0c;通常用于创建和编辑简单的文本文件&#xff0c;如文本文档 (.txt)。它非常轻量且功能简单&#…

Spring-AOP(二)

作者&#xff1a;月下山川 公众号&#xff1a;月下山川 1、什么是AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一种设计思想&#xff0c;是软件设计领域中的面向切面编程&#xff0c;它是面向对象编程的一种补充和完善&#xff0c;它以通过预编译方式和运行期…

算法学习笔记(8.2)-动态规划入门进阶

目录 问题判断: 问题求解步骤&#xff1a; 图例&#xff1a; 解析&#xff1a; 方法一&#xff1a;暴力搜索 实现代码如下所示&#xff1a; 解析&#xff1a; 方法二&#xff1a;记忆化搜索 代码示例&#xff1a; 解析&#xff1a; 方法三&#xff1a;动态规划 空间…

全球激光位移传感器市场规模逐渐扩大 企业数量不断增多

全球激光位移传感器市场规模逐渐扩大 企业数量不断增多 位移传感器又称为距离传感器&#xff0c;是用于测量与被测物体之间距离的一种传感器。根据工作原理&#xff0c;位移传感器可以分为超声波位移传感器、红外线位移传感器、激光位移传感器等。其中&#xff0c;激光位移传感…

2024年06月CCF-GESP编程能力等级认证Python编程五级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 在Python中&#xff0c;print((c for c in “GESP”))的输…