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

一文读懂什么是K8s Admission Controller

#作者:曹付江

文章目录

  • 1、什么是 Admission Controllers?
  • 2、如何创建 Admission Controllers?
  • 3、Admission 控制器的最佳实践

K8s 中的操作与安全标准执行机制:
在这里插入图片描述

1、什么是 Admission Controllers?

Admission controllers 是一段拦截请求的代码,它会在请求被持久化之前验证或更改(变更)这些请求。Admission controllers 与外部 WebHook 连接,处理入驻请求。因此,它们也被称为 Admission WebHook。该 WebHook 在对象创建、修改或删除最终确定之前接收 K8s 的入驻请求。

我们可以定义两种类型的 Admission controllers:

  • MutatingAdmissionWebhook:该控制器既可以验证也可以更改请求。
  • ValidatingAdmissionWebhook:该控制器只能验证请求。
    Admission Controller 是在需要强制执行特定组织政策时最有效的选项之一,例如:
  • 确保所有容器都有资源限制,以避免资源占用过多。
  • 阻止某些常见的镜像标签。
  • 强制执行资源的命名规范。
  • 限制仅允许来自受信任注册表的批准容器镜像。
    检查内建的 Admission controllers:
    在这里插入图片描述
    在这里插入图片描述

2、如何创建 Admission Controllers?

要创建一个 Mutating Admission Webhook,我们需要以下内容:

  1. 用于 Webhook 的 Web 应用程序
  2. 运行 Web 应用程序的服务帐户
  3. 用于托管 Web 应用程序的 Deployment
  4. 用于将流量路由到 Web 应用程序的 Service
  5. 一个 ClusterRole,定义 API 级别的访问权限(此博客未详细介绍)
  6. 一个 ClusterRoleBinding,将服务帐户与 ClusterRole 关联
  7. 一个 Secret,包含 Web 应用程序用于提供 TLS 的证书。(K8s 会向我们的服务发起 HTTPS 调用,因此需要有效的 SSL/TLS 证书)

WebHook 服务器
在本文章中,我将使用基于 Python 的 Webhook,使用 Sanic 框架。

FROM sanicframework/sanic:LTS
RUN pip install jsonpatch
COPY apps.py apps.py
ENTRYPOINT ["sanic", "apps:app", "--host=0.

上面的 Dockerfile 将创建用于运行 Web 服务器的镜像。这里我们挂载了一个卷(来自 secret),该卷将用于 TLS 证书。

apps.py 的内容:

import base64
import json as nativejson
from copy import deepcopy
from pprint import pformatimport jsonpatch
from sanic import Request, Sanic
from sanic.log import logger
from sanic.response import jsonapp = Sanic(name=__name__)@app.post("/validate")
async def validate(request: Request):allowed = Truemessage = ""try:pass # add logic to validate th# update allowed & message accordinglyexcept KeyError:passreturn json({"response": {"allowed": allowed,"uid": request.json["request"]["uid"],"status": {"message": message},}})@app.post("/mutate")
async def mutate(request: Request):logger.info(f"Obtained Request \n {pformat(request.json)}")original_spec = request.json["request"]["object"]modified_spec = deepcopy(spec)try:pass# add logic to update# update the modified_specexcept KeyError:passpatch = jsonpatch.JsonPatch.from_diff(spec, modified_spec)return json({"response": {"allowed": True,"uid": request.json["request"]["uid"],"patch": base64.b64encode(nativejson.dumps(patch).encode()).decode(),"patchtype": "JSONPatch",}})if __name__ == "__main__":app.run(host="0.0.0.0", port=443)

Kubernetes 对验证的期望是返回一个简单的响应,值为 False 或 True。因此,在上述代码中,我们返回 allowed 为 True 或 False。在变更 Webhook 的情况下,我们还返回补丁(新旧对象的差异)。

创建 Webhook 的清单:

apiVersion: v1
kind: ServiceAccount
metadata:name: admission-controllernamespace: admission-webhook-ns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admission-demo-rbac
subjects:- kind: ServiceAccountname: admission-controllernamespace: admission-webhook-ns
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io---
apiVersion: v1
kind: Service
metadata:name: admission-webhook-svcnamespace: admission-webhook-nslabels:app: admission-webhook-demo
spec:ports:- port: 443targetPort: 3030selector:app: admission-webhook-demo
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:name: admission-controller-certnamespace: admission-webhook-ns
spec:dnsNames:- admission-webhook-svc- admission-webhook-svc.admission-webhook-ns- admission-webhook-svc.admission-webhook-ns.svcissuerRef:kind: ClusterIssuername: ca-issuersecretName: admission-controller-secret
---
apiVersion: apps/v1
kind: Deployment
metadata:name: admission-webhook-deploymentnamespace: admission-webhook-nslabels:app: admission-webhook-demo
spec:replicas: 1selector:matchLabels:app: admission-webhook-demotemplate:metadata:labels:app: admission-webhook-demospec:serviceAccountName: admission-controllercontainers:- name: admission-webhook-demoimage: asrathore08/admission-controller:latestimagePullPolicy: Alwaysresources:limits:cpu: 1000mmemory: 512MivolumeMounts:- name: webhook-certsmountPath: /mnt/certsreadOnly: true- name: admission-controller-confmountPath: /mnt/confvolumes:- name: webhook-certssecret:secretName: admission-controller-secret- name: admission-controller-confconfigMap:name: admission-controller-configmap

在 Kubernetes 中注册 Webhook:
创建一个 ValidatingWebhookConfiguration,指向我们的 webhook 服务器。

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:name: admission-service-delete-pod-validatenamespace: admission-webhook-nslabels:app: admission-webhook-demoannotations:cert-manager.io/inject-ca-from: admission-webhook-ns/admission-controller-cert
webhooks:
- name: validate.webhook.democlientConfig:service:name: admission-webhook-svcnamespace: admission-webhook-nspath: "/validate"admissionReviewVersions: ["v1"]sideEffects: Nonerules:- operations: ["CREATE", "UPDATE"]apiGroups: [""]apiVersions: ["v1", "v1beta1"]resources: ["configmaps"]scope: "Namespaced"namespaceSelector:matchLabels:demo-admission-validation: enabledfailurePolicy: Ignore

注意:这里我使用了 cert-manager CRD 来生成 TLS/SSL 证书。注解 cert-manager.io/inject-ca-from 有助于获取证书。

创建一个 MutatingWebhookConfiguration,指向我们的 webhook 服务器:

apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:name: admission-service-configmap-mutatenamespace: admission-webhook-nslabels:app: mutating-admission-webhookannotations:cert-manager.io/inject-ca-from: admission-webhook-ns/admission-controller-cert
webhooks:
- name: mutate.webhook.democlientConfig:service:name: admission-webhook-svcnamespace: admission-webhook-nspath: "/mutate"admissionReviewVersions: ["v1"]sideEffects: Nonerules:- operations: ["CREATE", "UPDATE"]apiGroups: [""]apiVersions: ["v1", "v1beta1"]resources: ["configmaps"]scope: "Namespaced"namespaceSelector:matchLabels:demo-admission-validation: enabledfailurePolicy: Ignore

上面,我们定义了一个 mutating 和一个 validating webhook。我们只启用了这些 webhooks 处理在具有标签 demo-admission-validation 设置为 enabled 的命名空间中创建或更新的对象。此功能允许我们控制 webhook 的作用范围。

  • MutatingAdmissionWebhook — 转换器
  • ValidatingAdmissionWebhook — 审核员

注意:在上述 webhook 中,我将资源限制为 configmap。K8s 上的 Apache Spark 使用 configmap 来存储 Spark 配置。这种 webhook 可以控制用户为某些配置提供的值,并且可以为某些配置注入特定的默认值。

一旦部署,Webhook 将接收以下请求体的请求。

#
{"kind": "AdmissionReview","request": {"kind": {"kind": "Pod","version": "v1","group": ""},"resource": {"resource": "pods","version": "v1","group": ""},"uid": "b06b6ec2-681d-11e9-a645-06b44ed6a042","object": {"status": {},"spec": {"dnsPolicy": "ClusterFirst","securityContext": {},"serviceAccountName": "","schedulerName": "default-scheduler","serviceAccount": "","priority": 0,"terminationGracePeriodSeconds": 30,"restartPolicy": "Always","containers": [{"name": "","image": "","imagePullPolicy": "Always","ports": [{"protocol": "TCP","containerPort": 80}],"resources": {}}]},"metadata": {}},"namespace": "","userInfo": {"username": "","groups": ["system:masters","system:authenticated"]},"oldObject": null,"dryRun": false,"operation": "CREATE"},"apiVersion": "admission.k8s.io/v1beta1"
}

控制器将以特定格式返回响应。响应格式如下所述。

# Response
{"body": {"kind": "AdmissionReview","apiVersion": "admission.k8s.io/v1","response": {"uid": "request.uid","allowed": "True","patch": "patch_base64","patchType": "JSONPatch"},"headers": {"Content-Type": "application/json"},"statusCode": 200
}# patch_base64[{"op": "replace","path": "/spec/containers/0/image","value": "xxxx.dkr.ecr.us-west-2.amazonaws.com/nginx:latest"}
]

3、Admission 控制器的最佳实践

  1. 我们应该确保 webhook 尽可能轻量化。
  2. 我们应该在开发环境中彻底测试我们的 webhook,以确保它们不会无意中阻止合法的请求。
  3. 我们应该详细记录 admission 控制决策,并对被拒绝的请求进行故障排除。

相关文章:

一文读懂什么是K8s Admission Controller

#作者:曹付江 文章目录 1、什么是 Admission Controllers?2、如何创建 Admission Controllers?3、Admission 控制器的最佳实践 K8s 中的操作与安全标准执行机制: 1、什么是 Admission Controllers? Admission contro…...

江协科技/江科大-51单片机入门教程——P[1-3] 单片机及开发板介绍

前言:本节主要的任务是了解一下 51 单片机和所用的普中51开发板。 目录 一、单片机介绍 二、单片机的应用领域 三、STC89C52单片机 四、命名规则 五、单片机内部拆解 六、单片机内部结构图 七、单片机管脚图 八、单片机最小系统 九、开发板介绍 十、开发…...

一周学会Flask3 Python Web开发-Jinja2模板继承和include标签使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 不管是开发网站还是后台管理系统,我们页面里多多少少有公共的模块。比如博客网站,就有公共的头部&…...

4.3MISC流量分析练习-wireshark-https

流量分析题目的例题 1.了解wireshark的过滤方式 2.了解tls跟ssl协议基本还原 3.了解xor基本变换方式,获取flag 附件是一个流量包,打开之后有各种流量,但是分析无果,然后丢到kali中使用binwalk进行分析,发现有一个r…...

wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别

wifi5和wifi6的区别 是Wi-Fi 5和Wi-Fi 6的选择与路由器密切相关。路由器是创建和管理无线网络的设备,它决定了网络的类型和性能。具体来说: 路由器的标准支持:路由器可以支持不同的Wi-Fi标准,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能够提供更高…...

【二分查找】P9698 [GDCPC2023] Path Planning|普及

本文涉及的基础知识点 本博文代码打包下载 C二分查找 [GDCPC2023] Path Planning 题面翻译 【题目描述】 有一个 n n n 行 m m m 列的网格。网格里的每个格子都写着一个整数,其中第 i i i 行第 j j j 列的格子里写着整数 a i , j a_{i, j} ai,j​。从 0…...

请介绍一下Java的面向对象特性

Java是一种纯面向对象的语言,它支持类、继承、封装和多态等面向对象的基本概念。以下是Java面向对象特性的详细介绍: 一、封装 封装是面向对象编程的核心思想之一,它指的是将对象的属性和方法结合在一起,并隐藏对象的内部实现细…...

使用ZFile打造属于自己的私有云系统结合内网穿透实现安全远程访问

文章目录 前言1.关于ZFile2.本地部署ZFile3.ZFile本地访问测试4.ZFile的配置5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定ZFile公网地址 前言 在数字化的今天,我们每个人都是信息的小能手。无论是职场高手、摄影达人还是学习狂人,每天都在创造…...

Spring 源码硬核解析系列专题(八):Spring Security 的认证与授权源码解析

在前几期中,我们从 Spring 核心到 Spring Boot,再到 Spring Cloud,逐步探索了 Spring 生态的底层原理。作为企业级应用的关键组件,Spring Security 提供了全面的安全解决方案,包括认证(Authentication)和授权(Authorization)。本篇将深入 Spring Security 的源码,剖析…...

Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(七)

亮度数据 为了确保用户不会因为切换而注意到亮度变化,GPU0 和 GPU1 显示的所有亮度属性都必须相同。 此要求可确保在切换 GPU0 至 GPU1 之前的任何亮度级别,在切换至 GPU1 后都可以支持。 为此,GPU0 和 GPU1 的驱动程序必须: 使…...

Android ObjectBox数据库使用与集成指南

ObjectBox其核心特点ObjectBox与 SQLite 和 Realm 的对比Android集成ObjectBox创建ObjectBox实体对象创建ObjectBox操作管理类OBManager在Application初始化ObjectBox插入或更新数据查询数据统计数据分页数据查询删除数据总结今天分享一套Android另一个数据库ObjectBox。Object…...

C++ Qt常见面试题(3):Qt内存管理机制

Qt 内存管理机制是其框架的重要组成部分,目的是简化开发者对内存的管理,减少内存泄漏的风险,同时提供高效的资源使用方式。Qt 的内存管理机制主要依赖于 对象树(Object Tree) 和 父子关系(Parent-Child Relationship) 的设计,通过智能管理对象的生命周期来实现自动化的…...

到底什么是认证?

哈喽!欢迎来到程序视点,我是小二哥!本店菜品如下: #风暴过后以桶 认证和授权 什么是认证 认证 (Authentication) 是根据凭据验明访问者身份的流程。即验证“你是你所说的那个人”的过程。 身份认证,通常通过用户名…...

量子计算可能改变世界的四种方式

世界各地的组织和政府正将数十亿美元投入到量子研究与开发中,谷歌、微软和英特尔等公司都在竞相实现量子霸权。 这其中的利害关系重大,有这么多重要的参与者,量子计算机的问世可能指日可待。 为做好准备,,我们必须了…...

【Web安全】图片验证码DOS漏洞

文章目录 免责声明一、漏洞原理二、测试步骤三、测试案例四、修复方式免责声明 在网络安全领域,技术文章应谨慎使用,遵守法律法规,严禁非法网络活动。未经授权,不得利用文中信息进行入侵,造成的任何后果,由使用者自行承担,本文作者不负责。提供的工具仅限学习使用,严禁…...

鸿蒙Next如何自定义标签页

前言 项目需求是展示标签,标签的个数不定,一行展示不行就自行换行。但是,使用鸿蒙原生的 Grid 后发现特别的难看。然后就想着自定义控件。找了官方文档,发现2个重要的实现方法,但是,官方的demo中讲的很少&…...

一周学会Flask3 Python Web开发-Jinja2模板过滤器使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 在Jinja2中,过滤器(filter)是一些可以用来修改和过滤变量值的特殊函数,过滤器和变量用一个竖线 | &a…...

HarmonyOS 5.0应用开发——鸿蒙接入高德地图实现POI搜索

【高心星出品】 文章目录 鸿蒙接入高德地图实现POI搜索运行结果:准备地图编写ArkUI布局来加载HTML地图 鸿蒙接入高德地图实现POI搜索 在当今数字化时代,地图应用已成为移动设备中不可或缺的一部分。随着鸿蒙系统的日益普及,如何在鸿蒙应用中…...

浅谈HTTP及HTTPS协议

1.什么是HTTP? HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…...

内存泄漏指什么?常见的内存泄漏有哪些?

内存泄漏是指程序在运行过程中,由于某些原因导致程序无法释放已经不再使用的内存,使得这部分内存持续被占用,最终可能导致系统可用内存逐渐减少,严重时会影响系统性能甚至导致程序崩溃。(内存泄漏是指程序中已经分配的…...

FFmpeg视频处理入门级教程

一、FFmpeg常规处理流程 #mermaid-svg-W8X1llNEyuYptV3I {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-W8X1llNEyuYptV3I .error-icon{fill:#552222;}#mermaid-svg-W8X1llNEyuYptV3I .error-text{fill:#552222;str…...

PINN求解固体力学问题——论文加代码

PINN求解固体力学问题——论文加代码 1. 训练2. 可视化 论文:Physics-Informed Deep Learning and its Application in Computational Solid and Fluid Mechanics 1. 训练 # %load Plane_Stress_W-PINNs.py """ Forward Problem for Plane Stress …...

HC32F460_SCI驱动(一)

在开始介绍HC32F460的SCI驱动之前,先重点说明一下功能组与串口相关参数,以便于更好的描述SCI驱动。 1. 功能组 1.1 基本概念 HC32F460的引脚功能复用机制通过Func_Grp(功能组)实现,其灵活性显著高于传统单片机(如STM32系列)。每个引脚支持多种外设功能,具体功能通过选…...

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们来学习指针的相关知识,学习内存和地址,指针变量和地址,包…...

QT:QPen、QBrush、与图形抗锯齿的关联

QPen QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和…...

数据结构秘籍(一)线性数据结构

1.数组 数组(Array)是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引(index)计算出该元素对应的存储地址。 数组的特…...

【数据分享】2000-2024年全国逐年归一化植被指数(NDVI)栅格数据(年平均值)

NDVI,全名为Normalized Difference Vegetation Index,中文名称为归一化植被指数。这个指数可以用来定性和定量评价植被覆盖及其生长活力,我们也可以简单地将它理解为体现植被密度和健康状况的一个指标。 之前我们给大家分享了来源于MOD13A3数…...

解决前端计算的浮点精度问题

问题:比如1001*1.11等于110.11 但是如果用前端开发处理的话 ,因为涉及到浮点数运算(这是因为JavaScript(以及其他许多编程语言)使用IEEE 754标准来表示浮点数,导致某些十进制小数无法精确表示,…...

C语言基本知识------指针(4)

1. 回调函数是什么? 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。 void qsort(void base,//指针…...

004 Kafka异常处理

6.异常处理 文章目录 6.异常处理1.异常分类与处理原则2.生产者异常处理1. 同步发送捕获异常2. 异步发送回调处理 3.消费者异常处理1.全局异常处理器2.方法级处理3.重试yml配置 4.死信队列(DLQ)配置1. 启用死信队列2. 手动发送到DLQ 5.事务场景异常处理1.…...

C++模拟实现map和set

C模拟实现map和set 1、STL源代码分析2、实现出复用红黑树的框架3、实现红黑树的迭代器4、解决map和set中key不可修改问题5、解决insert返回值问题完整代码 模拟实现map和set实际上是对红黑树的封装,如对红黑树的实现有疑问,请移步:C手撕红黑树…...

使用elasticdump导出/导入 -- ES数据

导出指定索引数据到指定文件夹: ./elasticdump --inputhttp://用户:密码IP:9201/索引名字 --output导出路径/out.json --typedata 将导出的文件导入 ./elasticdump --input路径/out.json --outputhttp://账号:密码IP:9201/索引名称 --typedata --fileTypejson 【el…...

CSDN年度评选揭晓,永洪科技AI技术与智能应用双星闪耀

近日,永洪科技在CSDN(中国专业开发者社区)的年度评选中,凭借在人工智能技术创新与vividime在行业应用中的卓越表现,一举斩获“人工智能企业”及“智能应用”双料大奖。这一荣誉不仅彰显了永洪科技在AI领域的领先地位&a…...

Kubernetes 资源利用率翻倍?离在线混合部署深度解析

还在为 Kubernetes 集群资源利用率低而烦恼?还在为高昂的云成本而头疼?今天,我们就来聊聊 Kubernetes 中的一项黑科技——离在线混合部署,让大家的集群资源利用率翻倍,成本减半! 🤔 什么是离在线…...

【Java】Spring Boot全量YAML配置说明

目录 Spring Boot 配置文件基础核心配置日志配置Web 服务器配置数据源配置JPA 配置缓存配置国际化配置邮件服务配置自定义配置使用示例1. Spring Boot 配置文件基础 Spring Boot 的配置文件可以使用以下文件格式: application.propertiesapplication.ymlSpring Boot 默认加载…...

【STL】7.STL常用算法(1)

STL常用算法(1) 前言简介一.遍历算法1.for_each2.transform 二.查找算法1.find2.find_if3.adjacent_find4.binary_search5.count6.cout_if 三.排序算法1.sort2.random_shuffle3.merge4.reverse 总结 前言 stl系列主要讲述有关stl的文章,使用S…...

弱监督语义分割学习计划(1)-简单实现CAM但是效果不好

零: 项目说明 是这样的一个事情,经过与deepseek的一番讨论和交流,DeepSeek为我设计了一个30天高强度学习计划,重点聚焦弱监督/无监督语义分割在野外场景的应用,结合理论与实践,并最终导向可落地的开源项目。目前开始了…...

内存泄漏问题分享

在前端开发中,内存泄漏(Memory Leak)是指由于代码问题导致浏览器无法回收不再使用的内存,从而影响网页的性能,导致页面变慢,甚至崩溃。前端内存泄漏通常由以下几种原因引起,理解和修复这些问题对…...

用 DeepSeek 打样!KubeSphere LuBan 用 3 天/3 分钟“干掉”大模型部署焦虑

用 DeepSeek 打样!KubeSphere LuBan 用 3 天/3 分钟“干掉”大模型部署焦虑 大模型落地,如何告别“部署焦虑”? DeepSeek-R1 的惊艳表现无需赘述,但企业落地时的高门槛却让许多开发者望而却步——复杂的部署流程、资源调度难题、…...

Java在云计算平台中的应用研究

Java在云计算平台中的应用研究 随着云计算的广泛应用,越来越多的企业和开发者开始选择基于云计算的架构来构建和部署应用。Java作为一种成熟的编程语言,凭借其跨平台性、强大的生态系统以及优秀的并发处理能力,已成为云计算平台中常用的编程…...

【学写LibreCAD】0 仿写LibreCAD简介

一、LibreCAD 核心模块: 核心模块(Core) 功能:处理 CAD 的核心逻辑,如几何计算、图形对象管理、坐标系转换等。关键组件: 图形对象:如直线、圆、圆弧、多段线等。数学工具:向量、矩…...

【质量管理】怎么评估职能部门当前质量管理成熟度

评估目的 在做质量管理时,我们需要先了解各职能部门当前质量管理成熟度。从而识别改进机会,为各职能部门后续质量提升计划提供依据。 直白说:就是让那些不肯动的人动起来,同时往往总经理对各部门的质量管理成熟度的评分要更低&…...

音乐游戏Dance Dance Revolution(DDR)模拟器

文章目录 (一)Dance Dance Revolution(1.1)基本情况(1.2)机体 (二)模拟器(2.1)主程序(2.2)模拟器主题 (三)曲谱…...

【Pandas】pandas Series filter

Pandas2.2 Series Computations descriptive stats 方法描述Series.align(other[, join, axis, level, …])用于将两个 Series 对齐,使其具有相同的索引Series.case_when(caselist)用于根据条件列表对 Series 中的元素进行条件判断并返回相应的值Series.drop([lab…...

SpringBoot项目注入 traceId 来追踪整个请求的日志链路

SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排查问题的时候,可以迅速根据 traceId 查找到相关请求的日志,特别是在生产环境的时候,用户可能只提供一个错误截图,我们作为开发…...

UVM 软链接应用

软链接在环境中主要是为了代码复用,目前用到的场景有两种: 1)将UT 环境的代码 链接到ST环境上复用: 将ut 的transaction和sequence等在ST上复用 使用方法 在st对应目录下执行命令: ln -s 。…/xxxx/UT/xxx/xx_transact…...

SCIKIT-LEARN 决策树实现csv文档简单的推论预测

一.学习背景 原文来自scikit-learn的学习拓展,根据樱花分类示例衍生而来。源文开源地址:scikit-learn: machine learning in Python — scikit-learn 0.16.1 documentation,想学机器学习和数据挖掘的可以去瞧瞧! 二.读取csv文档 …...

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…...

使用 Ray的可观察性功能监控和调试 Ray 应用程序和集群

一、引言 在分布式系统中,监控和调试是确保系统稳定运行的关键环节。Ray 作为一款高性能的分布式计算框架,提供了丰富的可观察性(Observability)功能,帮助用户监控和调试 Ray 应用程序和集群。本文将详细介绍如何使用 Ray 的可观察性功能,包括监控工具、调试流程、日志管…...

jmeter 如何做移动端的测试 特别是兼容性测试

JMeter本身主要是一款用于性能测试和功能测试的工具,虽然它并非专门为移动端测试设计,但可以通过一些方式来对移动端应用进行测试,以下从测试准备、测试过程及注意事项等方面为你详细介绍: 一、测试准备 (一)环境搭建 JMeter安装与配置:确保JMeter已经正确安装在测试机…...