k8s中资源的介绍及标准资源namespaces实践
文章目录
- 第1章 k8s中的资源(resources)介绍
- 1.1 k8s中资源(resouces)的分类
- 1.2 k8s中资源(resources)的级别
- 1.3 k8s中资源(resources)的API规范
- 1.4 k8s中资源(resources)的manifests
- 第2章 k8s中的标准资源之namespaces的实践
- 2.1 基本介绍
- 2.2 编写相关ns资源对象的manifests
- 2.3 应用相关ns资源对象的manifests
- 2.4 列出相关ns资源对象
- 2.5 ns资源对象的name
- 2.6 ns资源对象的labels
- 2.7 列出ns资源对象所包含非namespace资源对象
- 2.8 ns资源对象的删除
- 第3章 基于ns资源对象实践理解Label的管理
第1章 k8s中的资源(resources)介绍
1.1 k8s中资源(resouces)的分类
我们用 kubectl api-resources 可看到其 kubernetes 中的所有资源(当然kubectl所用的kubeconfig所承载的帐户得具备超级权限)。
root@master01:~# kubectl api-resources | head -4 # 只取了前4行
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
这些资源可分为标准资源(安装好kubernetes后就有)、非标准资源(扩展kubernetes后才有),我们可用 kubectl get crd 看到有哪些非标准资源,其结果 NAME 字段对应值以点号"."分隔的第一列就是其资源的name。
root@master01:~# kubectl get crd | head -4 # 只取了前4行
NAME CREATED AT
analysisruns.argoproj.io 2025-04-23T02:32:30Z
analysistemplates.argoproj.io 2025-04-23T02:32:30Z
applications.argoproj.io 2025-04-19T17:46:46Z
root@master01:~#
root@master01:~# kubectl api-resources | grep -w applications
applications app,apps argoproj.io/v1alpha1 true Application
1.2 k8s中资源(resources)的级别
不管是标准资源、非标准资源,它们要么是namespace级别、非namespace级别(也称cluster级别)。可从 kubectl api-resources 结果的 NAMESPACE字段中看到,也可用 kubectl api-resources --namespaced=true/false 列出所有namespace级别或非namespace级别的资源
## kubectl工具看某个资源属于什么级别
root@master01:~# kubectl api-resources | grep -w Namespace
namespaces ns v1 false Namespace # <== false表示 非namespace级别
root@master01:~#
root@master01:~# kubectl api-resources | grep -w Pod
pods po v1 true Pod # <== true表示 namespace级别## kuectl工具列出所有namespace级别或所有非namespace级别的资源
kubectl api-resources --namespaced=true
kubectl api-resources --namespaced=false
注意:namespace级别的资源其实例化出来的对象得放在已存在的ns资源对象(由Kind为Namespace的资源namespaces实例化出来的)中。
1.3 k8s中资源(resources)的API规范
我们可用以下方法获取标准资源、非标准资源类的某资源其API规范中有哪些一级字段。
## 参考
root@master01:~# kubectl api-resources | head -1
NAME SHORTNAMES APIVERSION NAMESPACED KIND## 规范的
# <== 格式
kubectl explain --api-version='<APIVERSION>' <KIND># <== 例如
kubectl explain --api-version='v1' Pod## 简化的
# <== 格式
kubectl explain <KIND># <== 例如
kubectl explain Pod
标准资源、非标准资源其API规范一定会有apiVersion、kind、metadata这三个一级字段,在编写其对象的manifests是得写上。
大多数资源其API规范中有spec这个一级字段,用于定义期望状态,在编写其对象的manifests时得写上。
标准资源、非标准资源的API规范一定会有status这个一级字段,在编写其对象的manifests时不用写。当对象创建后其status是由其spec转换而来(期望状态转换成实际状态)。
我们也可以查看某资源其API规范中一级字段下有哪些二级字段,二级字段有哪些三级字段。如下所示。
## 规范的
kubectl explain --api-version='<APIVERSION>' <KIND> # 可看到有哪些一级字段
kubectl explain --api-version='<APIVERSION>' <KIND>.某一级字段 # 可看到有哪些二级字段
kubectl explain --api-version='<APIVERSION>' <KIND>.某一级字段.某二级字段 # 可看到有哪些三级字段 ## 简化的
kubectl explain <KIND> # 可看到有哪些一级字段
kubectl explain <KIND>.某一级字段 # 可看到有哪些二级字段
kubectl explain <KIND>.某一级字段.某二级字段 # 可看到有哪些三级字段
前面提到
namespace级别的资源其实例化出来的对象得放在某ns资源对象(由Kind为Namespace的资源namespaces实例化出来)中。
那么所以
namespace级别的资源其API规范中metadata字段下的namespace字段,在编写manifests时得指定。
非namespace级别的资源其API规范中metadata字段下的namespace字段,在编写manifests时不用指定,指定也没用的。
# namespace级别的资源其API规范中metadata字段下的namespace字段,在编写manifests时得指定。
root@master01:~# kubectl explain Pod.metadata.namespace # 在编写manifests时得指定# 非namespace级别的资源其API规范中metadata一级字段下的namespace字段,在编写manifests时不用指定,指定也没用的。
root@master01:~# kubectl explain Namespace.metadata.namespace # 在编写manifests时不用指定
1.4 k8s中资源(resources)的manifests
资源实例化出对象
可以使用kubectl工具在命令行直接创建(默认只支持使用相应的标准资源),但这种方式不推荐(若要在线修改呢、若被删除了且在没备份的情况下你如何快速恢复呢)。
也可以根据其API规范编写manifests,其manifests可以放在一个文件中,这个文件中可以存在多个不同类型的资源对象的manifests,得用三个横杠(—)独占一行进行分隔,这个文件中的内容其格式要么是json/yaml,其文件的扩展名也得是json/yaml,推荐内容格式为yaml,文件扩展名为yaml,易于人类可读。最后可用kubectl apply -f /path/xxx.yaml -f /path/yyy.yaml 或 cd /path/ && kubectl apply -f . 或 kubectl apply -f /path/ 进行应用(不存在就创建,存在就更新其差异的,有些字段是不可在线更新的)
在版书时可用 “资源类型或资源name/所实例化出对象的name”来表示一个对象,如下所示
# 以下表示的是同一个对象
Namespace/a 等于 namespaces/a
前面提到
标准资源、非标准资源都有namespace级别、非namespace级别(也称cluster级别),均有一级字段之metadata字段,而metadata字段下的name字段是必须指定的。
那么所以
非namespace级别的某资源所实例化出来的对象不允许重名,不同资源间所实例化出来的对象是允许重名的。如下所示:
Namespace/a# # 若存在# kubectl工具命令行再创建Namespace/a,不允许,直接报错。# kubectl工具apply -f Namespace/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)#
PersistentVolume/a # # 若存在# kubectl工具命令行再创建PersistentVolume/a,不允许,直接报错。# kubectl工具apply -f PersistentVolume/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)#
namespace级别的某资源所实例化出来的对象不能在所指定 ns 中与现有某资源对象重名,可与非指定ns中现有某资源对象重名。
Namespace/a 对象中Deployment/a # 若存在# kubectl工具命令行再创建Deployment/a,不允许,直接报错。# kubectl工具apply -f Deployment/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)# Service/a# 若存在# kubectl工具命令行再创建Service/a,不允许,直接报错。# kubectl工具apply -f Service/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)# Namespace/b 对象中Deployment/a## 若存在,跟 Namespace/a 中的 Deployment/a 没有任何关系# kubectl工具命令行再创建Deployment/a,不允许,直接报错。# kubectl工具apply -f Deployment/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)# Service/a## 若存在,跟 Namespace/a 中的 Service/a 没有任何关系# kubectl工具命令行再创建Service/a,不允许,直接报错。# kubectl工具apply -f Service/a <其manifests所在的文件>,其实是# 更新(有些字段是不允许更新的,例如metadata.name,有些字段更新后的影响你得心中有数)#
第2章 k8s中的标准资源之namespaces的实践
2.1 基本介绍
namespaces资源(简写ns)是kubernetes中的标准资源,属于非namespace级别,其实例化出来的对象用于逻辑存放namespace级别资源所实例化出来的对象。
当ns资源对象被删除后,其里面所包含的非namespace级别资源所实例化出来的对象也会被删除。得小心哦。
2.2 编写相关ns资源对象的manifests
我们应该让各ns资源对象的manifests独占一个文件。因为在删除资源对象时可以使用kubectl delete -f <文件> 来删除,当ns资源对象被删除后,其里面所包含的非namespace级别资源所实例化出来的对象也会被删除。
ns/dev-wyc对象的manifests,手动编写
cat >./ns_dev-wyc.yaml<<'EOF'
apiVersion: v1
kind: Namespace
metadata:name: dev-wyclabels:env: dev proj: wyc
EOF
ns/test-wyc对象的manifests,手动编写
cat >./ns_test-wyc.yaml<<'EOF'
apiVersion: v1
kind: Namespace
metadata:name: test-wyclabels:env: testproj: wyc
EOF
ns/prod-wyc对象的manifests,手动编写
cat >./ns_prod-wyc.yaml<<'EOF'
apiVersion: v1
kind: Namespace
metadata:name: prod-wyclabels:env: prodproj: wyc
EOF
ns/uat-wyc对象的manifests,kubectl工具快速生成
kubectl create namespace uat-wyc --dry-run=client -o yaml >./ns_uat-wyc.yaml
ls -l ./ns_uat-wyc.yaml## 命令行快速生成ns资源对象的manifests,并保存于一个文件中。# 命令行无法指定ns/uat-wyc对象的相应label(不是必须的,可命令行添加,也可编辑文件后并保存)。# PS:我这里没有修改,主要是与后面的步骤有关联#
2.3 应用相关ns资源对象的manifests
应用ns_dev-wyc.yaml这个manifests
# -->检查语法
kubectl apply -f ./ns_dev-wyc.yaml --dry-run=client
# -->应用manifests
kubectl apply -f ./ns_dev-wyc.yaml
# -->列出manifests中的相关资源对象
kubectl get -f ./ns_dev-wyc.yaml
# -->列出ns/dev-wyc对象
kubectl get ns/dev-wyc
# -->列出所有的ns资源对象,并根据labels过滤,且显示所有labels
kubectl get ns -l kubernetes.io/metadata.name=dev-wyc --show-labels
应用ns_test-wyc.yaml这个manifests
kubectl apply -f ./ns_test-wyc.yaml --dry-run=client
kubectl apply -f ./ns_test-wyc.yaml
kubectl get -f ./ns_test-wyc.yaml
kubectl get ns/test-wyc
kubectl get ns -l kubernetes.io/metadata.name=test-wyc --show-labels
应用ns_prod-wyc.yaml这个manifests
kubectl apply -f ./ns_prod-wyc.yaml --dry-run=client
kubectl apply -f ./ns_prod-wyc.yaml
kubectl get -f ./ns_prod-wyc.yaml
kubectl get ns/prod-wyc
kubectl get ns -l kubernetes.io/metadata.name=prod-wyc --show-labels
应用ns_uat-wyc.yaml这个manifests
kubectl apply -f ./ns_uat-wyc.yaml --dry-run=client
kubectl apply -f ./ns_uat-wyc.yaml
kubectl get -f ./ns_uat-wyc.yaml
kubectl get ns/uat-wyc
kubectl get ns -l kubernetes.io/metadata.name=uat-wyc --show-labels
# --> 命令行给其打上相应的标签。规范的是修改其manifests,再应用manifests,这里只是引出命令行如何给某资源对象打Label
kubectl label Namespace uat-wyc env=uat proj=wyc
# --> 再通过相应标签进行查看
kubectl get ns -l kubernetes.io/metadata.name=uat-wyc --show-labels
2.4 列出相关ns资源对象
列出所有的ns资源对象
## 格式
kubectl get <某资源的kind>## 示例
kubectl get Namespace
列出已存在的一个或多个ns资源对象
## 格式1
kubectl get <某资源的kind> <对象name> [对象name]## 格式2
kubectl get <某资源的kind>/<对象name> [某资源的kind]/[对象的name]## 格式1示例
kubectl get Namespace dev-wyc test-wyc uat-wyc prod-wyc## 格式2示例
kubectl get Namespace/dev-wyc Namespace/test-wyc Namespace/uat-wyc Namespace/prod-wyc
通过标签列出wyc项目相关的ns资源对象
# 列出wyc项目相关的所有ns资源对象
kubectl get ns -l proj=wyc# 列出dev环境之wyc项目所用的ns资源对象
kubectl get ns -l env=dev,proj=wyc # 指定多个标签进行过滤,当有多个时,用逗号分隔,且是与(and)关系# 列出test环境之wyc项目所用的ns资源对象
...................................# 列出uat环境之wyc项目所用的ns资源对象
...................................# 列出prod环境之wyc项目所用的ns资源对象
...................................
2.5 ns资源对象的name
非namespace级别的某资源所实例化出来的对象不能重名,不同资源间所实例化出来的对象是可以重名的。
namespace级别的某资源所实例化出来的对象不能在所指定 ns 中与现有某资源对象重名,可与非指定ns中现有某资源对象重名。
kubernetes中所有资源对象的name规范均遵循一定的规范:
https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names
ns资源对象的name规范得遵循 RFC 1123。
2.6 ns资源对象的labels
kubernetes中的各资源对象均有 labels 这一属性,属于元数据(metadata)的一部分,支持在线更新,我们不能随便在线更新。
各ns资源对象具备默认的标签之 app.kubernetes.io/instance=<ns资源对象的name> ,我们可以给ns资源对象额外的添加 labels。
有些场景下,ns资源对象可能需要打上特定的标签,例如:Istio部署到kubernetes平台上,其业务所用标签就得打上 Istio 所规定的标签。
2.7 列出ns资源对象所包含非namespace资源对象
首先,kubectl -n <ns资源对象> get all 是看不到 <ns资源对象> 所包含的所有非namespace资源所实例化出来的对象,即使kubernetes中的标准资源。
## 查看 ns/uat-wyc 对象中所包含的所有资源对象,(不严谨)
root@master01:~# kubectl -n uat-wyc get all
No resources found in uat-wyc namespace.
root@master01:~# ## 可用以下命令查看某 ns资源对象 中所包含的所有资源对象 (严谨)
# <== 列出namespace级别的resources,且只显示name
kubectl api-resources --verbs=list --namespaced=true -o name# <== 列出某ns资源对象中所包含namespace级别资源的相关资源对象
kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl -n <ns资源对象> get --show-kind --ignore-not-found | sed '/^NAME/'d | awk -F " " '{print $1}' # <== 示例
root@master01:~# kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl -n uat-wyc get --show-kind --ignore-not-found | sed '/^NAME/'d | awk -F " " '{print $1}'
configmap/kube-root-ca.crt # --> configmap是k8s中的标准资源
serviceaccount/default # --> serviceaccount是k8s中的标准资源
2.8 ns资源对象的删除
第3章 基于ns资源对象实践理解Label的管理
相关文章:
k8s中资源的介绍及标准资源namespaces实践
文章目录 第1章 k8s中的资源(resources)介绍1.1 k8s中资源(resouces)的分类1.2 k8s中资源(resources)的级别1.3 k8s中资源(resources)的API规范1.4 k8s中资源(resources)的manifests 第2章 k8s中的标准资源之namespaces的实践2.1 基本介绍2.2 编写相关ns资源对象的manifests2.3…...
k8s学习记录(四):节点亲和性
一、前言 在上一篇文章里,我们了解了 Pod 中的nodeName和nodeSelector这两个属性,通过它们能够指定 Pod 调度到哪个 Node 上。今天,我们将进一步深入探索 Pod 相关知识。这部分内容不仅信息量较大,理解起来也有一定难度࿰…...
联想笔记本电脑在Windows下通过联想驱动实现风扇控制
概述 本文旨在解决部分联想笔记本电脑无法使用主流的风扇控制工具(如Fan Control, SpeedFan)控制风扇的问题。主流的风扇控制工具在这些电脑上会因无法找到控制风扇的EC寄存器而无法发挥作用。但这是不是就意味着没办法控制风扇了呢?答案是否…...
Java单链表题目
Java链表题目练习 移除链表元素反转单链表链表的中间节点返回倒数第K个节点合并两个有序列表判断链表是否回文 学习了知识,就要进行其检验自己是否真正学会,练习题目来加强对知识的理解,今天就来练习一下链表题目 移除链表元素 目的ÿ…...
springboot入门-controller层
在 Spring Boot 中,Controller 层是处理 HTTP 请求的核心组件,负责接收客户端请求、调用业务逻辑(Service 层)并返回响应。其核心原理基于 Spring MVC 框架,通过注解驱动的方式实现请求的路由和参数绑定。以下是 Contr…...
游戏引擎学习第245天:wglChoosePixelFormatARB
Blackboard: PBO(像素缓冲对象) 我们将一起编写一个完整的游戏。老实说,我原本以为我们会花更长时间来实现异步纹理上传,结果我们只用了两天时间,主要原因是我们没有设置标志来真正告诉程序下载纹理,所以这…...
中国大陆DNS服务选择指南:阿里云VS AWS,合规性与最佳实践
导语 在中国大陆开展互联网业务时,DNS服务的选择不仅关乎性能,更涉及合规性问题。本文将深入探讨DNS服务商选择的自由度、阿里云与AWS DNS服务的优劣势,以及如何在确保合规的同时优化您的域名解析策略。无论您是初创公司还是跨国企业,这份指南都将助您在复杂的中国互联网环境中…...
LLaMa Factory大模型微调
LLaMa Factory大模型微调 大模型微调平台&硬件LLaMA-Factory安装hfd下载hugging face模型自我认知微调Alpaca数据集指令监督微调断点续训 大模型微调 微调自我认知微调特定领域数据集。 平台&硬件 Ubuntu20.04显卡:M40 24G 2080TI 22G微调框架ÿ…...
git和github的使用指南
目录 1.git初始化本地仓库 2.远程仓库 3.如何将自己的代码上传到远程仓库的某一个分支 1.git初始化本地仓库 在项目目录中初始化 Git 仓库: cd your-project-directory git init 将文件添加到暂存区: git add . //添加所有文件 git add <fi…...
如何快速轻松地恢复未保存的 Word 文档:简短指南
文字处理器已经存在了几十年,其中许多已经变得非常擅长防止问题。丢失未保存的数据是一个常见问题,因此办公软件通常带有恢复文件的方法。在本文中,我们将介绍如何恢复 Word 文档,即使您尚未保存它。 确保数据安全的最佳方法是保…...
【Linux网络】打造初级网络计算器 - 从协议设计到服务实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
基于STM32定时器中断讲解(HAL库)
基于STM32定时器中断讲解(HAL库) 1、定时器简单介绍 以STM32F103C8T6中几个定时器为例: TIM1:这是一个高级定时器,不仅具备基本的定时中断功能,还拥有内外时钟源选择、输入捕获、输出比较、编码器接口以…...
《Vue3学习手记5》
pinia 共享的数据交给集中状态管理 引入与使用 //main.ts // 引入Pinia import {createPinia} from "pinia"const piniacreatePinia() app.use(pinia)案例: <template><div class"count"><h2>当前和为:{{ sum…...
MySQL多查询条件下深度分页性能优化技巧及示例总结
深度分页(Deep Pagination)是MySQL中常见的性能瓶颈问题,特别是在多查询条件下,当offset值很大时,查询性能会急剧下降。本文将总结多种优化技巧,并提供实际示例。 一、深度分页的性能问题分析 当执行类似SELECT * FROM table WHERE condition1 AND condition2 LIMIT 1000…...
3、初识RabbitMQ
界面上的导航栏共分6部分,分别代表不同的意思 一、Producer和Consumer Producer: 生产者, 是RabbitMQ Server的客户端, 向RabbitMQ发送消息 Consumer: 消费者, 也是RabbitMQ Server的客⼾端, 从RabbitMQ接收消息 Broker:其实就是RabbitMQ Server, 主要…...
量子计算与GPU的异构加速:基于CUDA Quantum的混合编程实践
一、量子模拟的算力困境与GPU破局 量子计算模拟面临指数级增长的资源需求:n个量子比特的态向量需要存储2^n个复数。当n>30时,单机内存已无法承载(1TB需求)。传统CPU模拟器(如Qiskit Aer)在n28时计算…...
在Spring Boot项目中实现Word转PDF并预览
在Spring Boot项目中实现Word转PDF并进行前端网页预览,你可以使用Apache POI来读取Word文件,iText或Apache PDFBox来生成PDF文件,然后通过Spring Boot控制器提供文件下载或预览链接。以下是一个示例实现步骤和代码: 1. 添加依赖 …...
Windows怎样使用curl下载文件
安装curl 从官网下载:访问curl官方网站,根据系统位数(32 位或 64 位)选择相应的版本进行下载。下载完成后,双击安装程序并按照提示进行安装。也可以选择自定义安装路径,记住安装路径,后续配置环…...
priority_queue的学习
priority_queue的介绍 优先级队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被…...
浅谈Java 内存管理:栈与堆,垃圾回收
在Java编程世界里,内存管理是一项极为关键的技能,它就像程序运行背后的“隐形守护者”,默默影响着程序的性能与稳定性。今天,咱们就来简单学习一下Java内存管理中的两大核心要点:栈与堆的内存分配机制,以及…...
windows下查看idea运行的进程占的JVM情况工具
jconsole 查看JVM 查看线程数 自己测试时,可以先不把线程关闭查效果。 也可以用这工具查下是不是有线程一直在增加。...
【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析
目录 一、什么是 Azure Test Impact Analyzer?二、核心功能与优势三、如何掌握 Azure TIA?四、工作中的典型应用场景五、最佳实践与注意事项六、总结 一、什么是 Azure Test Impact Analyzer? Azure Test Impact Analyzer (TIA) 是微软 Azur…...
JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?
1. 分析 : 年轻代GC正常,说明年轻代的对象回收没有问题,可能大部分对象都是朝生夕死的,所以Minor GC能有效清理。但Full GC频繁,通常意味着老年代空间不足,导致频繁进行Full GC来回收老年代。而内存缓慢上…...
浏览器界面无显示,提示“代理服务器可能有问题”,这是怎么回事呢?
前言 🌟🌟本期讲解浏览器代理服务器解决办法介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…...
C#中的弱引用使用
弱引用(Weak Reference)是一种特殊的引用类型,它允许你引用一个对象,但不会阻止该对象被垃圾回收器(GC)回收。弱引用通常用于需要缓存或跟踪对象,但又不希望因保留引用而导致内存泄漏的场景。弱…...
在Linux虚拟机下使用vscode,#include无法跳转问题
总结:需要通过Linux指令来添加编译器和压缩文件,解压,这样获得的编译器会具有可执行权限类似于 -rwxr-xr-x 1 user user 12345 Apr 26 14:22 myscript.sh 如果你直接从window中拖入文件到Linux文件下,你需要自己来再度开启可编译…...
MIL、SIL、HIL与Back-to-Back测试详解:从模型到硬件的完整验证链
1. 引言 在嵌入式系统和控制算法开发中,MIL、SIL、HIL和Back-to-Back测试构成了从模型设计到硬件部署的完整验证流程。它们覆盖不同开发阶段,确保系统功能正确性、实时性和可靠性。 本文将清晰解析这四种测试方法的核心概念、应用场景及差异。 2. 四种测…...
【Android Compose】焦点管理
官方文档链接: https://developer.android.google.cn/develop/ui/compose/touch-input/focus?hlzh-cn 1、更改焦点遍历顺序 1.1、替换一维遍历顺序 (1)创建焦点引用对象: /// 创建4个引用对象(二选一)…...
启动命令汇总(Redis / Kafka / Flume / Spark)
本文总结了本地开发环境(Windows系统)中启动推荐系统所需的所有组件命令,包括 Redis、Kafka、Flume 及 SparkStreaming 程序的启动流程。 1. 启动 Redis 进入 Redis 安装目录,执行: redis-server.exe测试连接&#x…...
python 画折线统计图
Python 画折线统计图(line chart)最常用的是 matplotlib。 最基本的折线图代码如下: import matplotlib.pyplot as plt# 假设这是你的数据 x [1, 2, 3, 4, 5] y [2, 3, 5, 7, 11]# 创建折线图 plt.plot(x, y, markero) # markero 是在点…...
java面向对象编程【高级篇】之继承
目录 🚀前言🤔什么是继承?🌟权限修饰符💯private 修饰符💯默认(无修饰符)💯protected 修饰符💯public 修饰符💯归纳 🦜继承的特点&…...
【数论分块】数论分块算法模板及真题
1.数论分块的含义 数论分块算法,就是枚举出使得取整函数发生变化的地方。 例如,对表达式 ⌊ n i ⌋ \lfloor \frac{n}{i} \rfloor ⌊in⌋使用数论分块算法,就可以在 O ( n ) O(\sqrt n) O(n )的时间复杂度下枚举所有满足 ⌊ n i − 1 ⌋…...
DIY 3D打印机 原理及步骤概况
一、3D打印机的基本原理 硬件组成: 运动系统:控制X/Y/Z轴的步进电机(或直线电机),决定打印头的移动精度。 热端(挤出机):加热并挤出材料(如PLA、ABS塑料)。 …...
深度探索:DeepSeek赋能WPS图表绘制
一、研究背景 在当今数字化信息爆炸的时代,数据处理与可视化分析已成为众多领域研究和决策的关键环节。随着数据量的急剧增长和数据维度的不断丰富,传统的数据可视化工具在应对复杂数据时逐渐显露出局限性。Excel作为广泛应用的电子表格软件,…...
内存四区(栈)
今天我再次学到了有趣的知识,内存四区! 内存四区分为代码区,全局区,栈区,堆区,今天我们详细来讲讲栈区! 内存四区和栈区都是用来存放数据的,而栈区存放的数据具体有两类 1.形参数…...
Nginx性能优化:从配置到缓存,全面提升Web服务器性能
一、基础配置优化:释放硬件潜能 进程与连接调优 worker_processes: 推荐设置为 auto(自动匹配CPU核心数),但在特殊场景下需手动优化:worker_processes 8; # 8核CPU手动指定 worker_cpu_affinity 000…...
系统架构设计(三):质量属性
常见分类 一般来说,质量属性可以分为以下几类: 类别常见质量属性性能相关响应时间、吞吐量、资源利用率、实时性、可扩展性可用性相关可用性、高可用性(HA)、可靠性、容错性、恢复性可维护性相关可维护性、可测试性、可扩展性、…...
C#中常见的设计模式
文章目录 引言设计模式的分类创建型模式 (Creational Patterns)1. 单例模式 (Singleton)2. 工厂方法模式 (Factory Method)3. 抽象工厂模式 (Abstract Factory)4. 建造者模式 (Builder) 结构型模式 (Structural Patterns)5. 适配器模式 (Adapter)6. 装饰器模式 (Decorator)7. 外…...
C# 枚举(Enum)声明与使用详解
在 C# 编程中,枚举(Enum)是一种非常实用的数据类型,它允许你定义一组具有名称的整型常量,使代码更具可读性和可维护性。枚举可以有效地替代使用硬编码数值,尤其是在处理状态、选项或标志时。本文将深入探讨…...
Linux-进程控制
目录 一、进程创建 1.1、fork()函数 1.2、fork的返回值 1.3、写实拷贝(Copy-on-Write,COW) 1.4、fork常规用法 1.5、fork调用失败的原因 二、进程退出 三、进程等待 1、wait和waitpid 1.1、解决僵尸进程问题 1.2、status参数 程序正…...
【优选算法 | 滑动窗口】滑动窗口算法:高效处理子数组和子串问题
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针 在本篇文章中,我们将深入剖析滑动窗口算法的核心原理。从基础概念到实战应用,带你了解如何利用滑动窗口高效解决连续子数组和子串等问题。无论你是算法入门的新手,还是…...
RabbitMQ全栈实践手册:从零搭建消息中间件到SpringAMQP高阶玩法
目录 前言 认识MQ 同步调用 异步调用 技术选型 安装 SpringAMQP 交换机类型 队列交换机绑定 环境搭建 Fanout交换机 声明队列和交换机 消息发送 消息接收 总结 Direct交换机 声明队列和交换机 消息发送 消息接收 总结 Topic交换机 声明队列和交换机 消息…...
头歌实训之存储过程、函数与触发器
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
系统架构设计中的DSSA方法:理论、实践与行业深度应用
引言 在软件架构设计领域,DSSA(Domain-Specific Software Architecture,领域特定软件架构)是一种专注于垂直行业或业务领域的架构设计方法论。与通用架构设计不同,DSSA通过提炼领域共性需求、构建可复用资产库&am…...
设计心得——数据结构的意义
一、数据结构 在老一些的程序员中,可能都听说过,程序其实就是数据结构算法这种说法。它是由尼克劳斯维特在其著作《算法数据结构程序》中提出的,然后在一段时期内这种说法非常流行。这里不谈论其是否正确,只是通过这种提法&#…...
【C】初阶数据结构12 -- 冒泡排序
本篇文章主要讲解经典排序算法 -- 冒泡排序。 目录 1 算法思想 2 代码 3 时间复杂度与空间复杂度分析 1) 时间复杂度 2) 空间复杂度 1 算法思想 选择排序是一种经典的交换排序算法。其算法思想也比较简单,主要是比较相邻元素&…...
HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
目录 🔗 一、共同点(联系): 🔍 二、区别对比: 📘 三、简要说明 1. HTTP 2. AMQP 3. MQTT 🔗 四、三者联系(在华为云IoT平台中的应用) 🎯 …...
WPF之项目创建
文章目录 引言先决条件创建 WPF 项目步骤理解项目结构XAML 与 C# 代码隐藏第一个 "Hello, WPF!" 示例构建和运行应用程序总结相关学习资源 引言 Windows Presentation Foundation (WPF) 是 Microsoft 用于构建具有丰富用户界面的 Windows 桌面应用程序的现代框架。它…...
CrewAI Community Version(二)——Agent
目录 1. Agent总览2. Agent属性3. 创建Agent3.1 YAML配置3.2 直接用代码定义3.3 运行结果 参考 1. Agent总览 在CrewAI框架中,Agent是一个能具备下列能力的自主单元: 1. 执行特定的任务 2. 基于它的角色和目标进行决策 3. 使用工具完成任务 …...
阿里云VS AWS中国区:ICP备案全攻略与常见误区解析
导语 在中国大陆开展互联网服务时,ICP备案是必不可少的合规步骤。然而,随着云服务的多样化,许多企业在选择备案路径时常常感到困惑。本文将深入解析阿里云和AWS中国区的备案区别,为您提供清晰的操作指南,助您避开备案陷阱,确保业务合规运营。 一、备案基本原则 1. 服务器决定…...