K8S - 命名空间实战 - 从资源隔离到多环境管理
引言
在传统的物理机或虚拟机环境中,不同业务应用共享资源,容易导致权限冲突、资源争用和管理混乱。Kubernetes 通过 命名空间(Namespace)实现资源逻辑隔离,将集群划分为多个虚拟子集群,从而解决以下问题:
• 资源组织:按业务、团队或环境分类管理
• 权限控制:限制用户/服务账号的操作范围
• 资源限制:分配 CPU/内存配额,防止资源抢占
• 环境隔离:支持开发、测试、生产环境独立部署
一、核心原理
1.1 命名空间的本质
命名空间是一种 逻辑隔离机制,使得集群中的资源独立管理,但仍共享底层物理资源。
• 资源独立:同名资源(如 Deployment、Service)可在不同命名空间共存。
• 默认网络互通:跨命名空间访问需指定完整域名。
1.2 命名空间分类
系统级命名空间示例:
类型 | 说明 |
---|---|
系统级命令空间 | 由Kubernetes自动创建,存放核心组件 |
用户自定义命名空间 | 由用户创建,用于业务应用部署 |
• default:默认命名空间(未指定时资源部署至此)
• kube-system:存放集群核心组件(如 kube-proxy、CoreDNS)
• kube-public:可供所有用户读取(含未认证用户)
• kube-node-lease:管理节点心跳信息
注意:业务应用请勿部署到系统命名空间,避免影响集群稳定性!
二、实战:命名空间创建与应用部署
首先确保你已经完成如下环境准备。
2.1 环境搭建
1.安装必要工具
确保已安装并配置好以下环境:
• Kubernetes 集群(可使用 Minikube 或 Kind 进行本地测试)
• kubectl命令行工具
• Docker(用于构建镜像)
如果还没有环境,可使用如下命令安装。
# 安装 Docker 并验证
brew install docker
docker --version # 预期输出:Docker version 20.10.x
docker run hello-world # 验证基础功能
# 安装 kubectl 并验证
brew install kubectl
kubectl version --client # 预期输出:Client Version: v1.28.x
# 安装 kind 并验证
brew install kind
kind version # 预期输出:kind v0.20.x
2.创建本地 Kubernetes 集群
kind create cluster --name k8s-demo
kubectl cluster-info # 确认集群正常运
到此k8s 集群环境已经准备完毕。
2.2 创建与删除命名空间
空间命名规范:符合 DNS-1123 标准,
• 仅包含小写字母、数字和 -
• 以字母开头和结尾
方法 1:命令行创建命名空间
通过 kubectl命令行工具直接创建命名空间,适合快速操作。
# 创建命名空间
kubectl create namespace dev# 删除命名空间(谨慎操作)
kubectl delete namespace dev
删除命名空间是 异步过程,状态从 Active → Terminating,其下所有资源将被清理。在同一命名空间,不能重复创建相同的命名空间。示例# 第一次创建(成功)
kubectl create namespace dev
# Output: namespace/dev created# 第二次重复创建(失败)
kubectl create namespace dev
# Output: Error from server (AlreadyExists): namespaces "dev" already exists
方法 2:YAML文件创建命名空间
通过 YAML 文件创建命名空间,适合版本控制和自动化管理。
# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:name: testing
# 将 namespace空间设置应用到集群
kubectl apply -f namespace.yaml
# 第一次应用(成功)
kubectl apply -f namespace.yaml
# Output: namespace/dev created
# 第二次重复应用(无变化)
kubectl apply -f namespace.yaml
# Output: namespace/dev unchanged
特点
- 幂等性:如果命名空间已存在,不会报错,而是维持现状。
- 版本控制:YAML 文件可提交至 Git,便于团队协作和变更审计。
- 扩展性:支持添加标签(labels)和注解(annotations),例如:
apiVersion: v1
kind: Namespace
metadata:name: devlabels:env: development # 资源环境标签annotations:owner: team-a # 资源归属注解
也可通过命令为命名空间添加标签:
为命名空间添加标签
kubectl label ns dev env=development
# 按标签过滤资源
kubectl get pods -n dev -l env=development
方式3:通过 Kubernetes API 编程创建
示例(Python + Kubernetes API)
from kubernetes import client, config# 加载 kubeconfig 配置
config.load_kube_config()# 创建 API 客户端
v1 = client.CoreV1Api()# 定义命名空间对象
namespace_name = "dev"
namespace = client.V1Namespace(metadata=client.V1ObjectMeta(name=namespace_name))# 创建命名空间,异常处理
try:v1.create_namespace(body=namespace)print(f"Namespace '{namespace_name}' created successfully")
except client.exceptions.ApiException as e:if e.status == 409:print(f"Namespace '{namespace_name}' already exists.")else:print(f"Failed to create namespace '{namespace_name}': {e}")
适用场景
适用于 CI/CD,在部署流程中动态管理命名空间。
自动化集成,便于与 Python、Go、Java 编写的 Kubernetes 管理工具结合。
对比三种创建方式
2.3 在命名空间中部署应用
1.部署应用
方式 1:在 Manifest 文件中指定命名空间 (可使用 第4讲 2.3 中 示例 )
# k8s/deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: gitops-demo-appnamespace: dev # 指定命名空间spec:replicas: 2selector:matchLabels:app: gitops-demo-apptemplate:metadata:labels:app: gitops-demo-appspec:containers:- name: appimage: your-dockerhub-username/gitops-demo-app:v1 # 替换为你的镜像ports:- containerPort: 5000
# 检查命名空间是否存在,不存在则创建
kubectl get ns dev || kubectl create ns dev
把 deployment 应用到集群kubectl apply -f deployment.yaml
方式 2:命令行指定命名空间(推荐)
kubectl apply -f deployment.yaml -n dev
2.查看命名空间资源
查看上面示例输出:
#查看 dev 命名空间下的 deployment
kubectl get deployment -n devNAME READY UP-TO-DATE AVAILABLE AGE
gitops-demo-app 2/2 2 2 17h# 查看dev命名空间下的所有资源 (Pod/Service等)
kubectl get all -n devNAME READY STATUS RESTARTS AGE
pod/gitops-demo-app-5d7b98d8d-2j6qk 1/1 Running 0 17h
pod/gitops-demo-app-5d7b98d8d-8k9xv 1/1 Running 0 17hNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/gitops-demo-app 2/2 2 2 17hNAME DESIRED CURRENT READY AGE
replicaset.apps/gitops-demo-app-5d7b98d8d 2 2 2 17h
注:UP-TO-DATE 表示已更新的 Pod 数。
三、实战:跨命名空间通信
3.1 基础知识
Kubernetes 默认允许跨命名空间访问,但需要使用 完整的 DNS 名称:
<服务名>.<命名空间>.svc.cluster.local
• 服务名:Service 资源的名称(如 backend-service)。
• 命名空间:Service 所在的命名空间(如 dev)。
• svc.cluster.local:集群默认的 DNS 后缀(可配置)。
在同一命名空间中访问服务时,使用服务名即可:
• 同一命名空间:backend-service:80
在跨命名空间访问时,必须使用完整的 DNS 名称:
• 跨命名空间:backend-service.dev.svc.cluster.local:80
3.2 实战示例 - 跨命名空间访问
步骤 1:在 dev 命名空间创建 Service
通过 kubectl expose命令暴露 Deployment 为 Service(ClusterIP 类型):
kubectl expose deployment gitops-demo-app -n dev --port=80 --target-port=5000
参数说明:
• -n dev:指定命名空间为 dev。
• --port=80:Service 对外暴露的端口。
• --target-port=5000:容器内应用实际监听的端口(需与 Deployment 中定义的 containerPort一致)。
kubectl expose默认会直接创建 Service 并将其应用到集群中。等效的 Service YAML 配置(命令生成的 Service)为:
apiVersion: v1
kind: Service
metadata:name: gitops-demo-appnamespace: dev
spec:selector:app: gitops-demo-appports:- protocol: TCPport: 80targetPort: 5000type: ClusterIP
验证 Service
执行以下命令验证 Service 是否创建成功:
kubectl get svc -n dev
预期输出:NAME TYPE CLUSTER-IP PORT(S) AGE
gitops-demo-app ClusterIP 10.96.123.456 80/TCP 5s
步骤 2:从 prod 命名空间发起跨命名空间访问
启动一个临时 Pod 测试跨命名空间访问:
kubectl run curl-test -n prod \--image=curlimages/curl \--rm -it -- \curl http://gitops-demo-app.dev.svc.cluster.local
参数说明:
• -n prod:在 prod命名空间中运行 Pod。
• --rm -it:容器退出后自动删除此临时容器,并分配交互式终端。
• curl :测试访问目标 Service。
预期结果:
• 成功:返回 gitops-demo-app服务的响应内容(例如:GitOps Demo v1,具体内容可见 Deployment 文件)。
• 失败的可能原因:
1.目标 Service未正确暴露端口。
2.NetworkPolicy限制了跨命名空间访问。
四、实战:资源配额限制
创建命名空间时增加资源限制,可以通过创建一个 LimitRange对象来限制该命名空间中的资源。LimitRange是 Kubernetes 中用于定义资源限制的策略,可以限制容器的 CPU 和内存等资源。
将 LimitRange和 Namespace一起创建,确保命名空间创建后自动应用这些资源限制。
1.创建 namespace.yaml 和 limitrange.yaml
# namespace.yamlapiVersion: v1
kind: Namespace
metadata:name: testing---# limitrange.yamlapiVersion: v1
kind: LimitRange
metadata:name: default-limitnamespace: testing
spec:limits:- max: cpu: "2"memory: "4Gi"min:cpu: "200m"memory: "512Mi"default:cpu: "1"memory: "1Gi"defaultRequest:cpu: "500m"memory: "1Gi"type: Container
解析:
LimitRange资源限制了testing 命名空间中容器的资源使用:
1.max - 限制容器的 最大CPU 和内存使用量,防止某个容器占用过多资源。
• CPU 最大 2 核(2),即容器最多只能申请 2 核 CPU。
• 内存最大 4Gi(4Gi),即容器最多只能申请 4GB 内存。
2.min(最小值)- 规定容器的最小资源申请量,避免某些 Pod 资源太少而影响运行。
• 最小 CPU 为 200毫核(200m),内存为 512Mi。
3.default(默认值)-如果 Pod 没有明确指定资源限制,那么 Kubernetes 自动分配的资源值。
• 默认 CPU 为 1 核,内存为 1Gi。
4.defaultRequest(默认请求)- 如果 Pod 没有指定请求资源,Kubernetes 自动分配的最小起始值。
• 默认请求 CPU 为 500m,内存为 1Gi。
2.应用到集群中
kubectl apply -f namespace.yaml
kubectl apply -f limitrange.yaml
两个 YAML 文件都在同一个目录下,也可以一次性应用:
kubectl apply -f .
这样,testing命名空间会被创建,同时应用了资源限制策略。
五、使用场景与最佳实践
5.1 何时使用命名空间?
5.2 命名空间规划建议
小型团队:
• 按环境划分:dev、testing、prod
• 按业务划分:web、database
大型组织:
• 独立集群 + 命名空间:每个团队独立集群,内部再划分命名空间。
六、总结
6.1 核心重点
• 核心价值:命名空间通过逻辑隔离实现资源组织、权限控制和环境管理,是 Kubernetes 多租户能力的关键。
• 软隔离 vs 硬隔离:
• 软隔离:命名空间(同一集群内逻辑隔离)
• 硬隔离:独立集群(物理隔离)
最佳实践:
• 避免修改系统命名空间,业务应用请用自定义命名空间
• 使用 -n 参数指定部署环境,避免误操作
附:操作速查表
# 查看所有命名空间
kubectl get ns
# 快速切换默认命名空间(避免频繁输入 -n)
kubectl config set-context --current --namespace=dev
# 设置命名空间资源配额(需提前定义 ResourceQuota)
kubectl apply -f quota.yaml -n dev
相关文章:
K8S - 命名空间实战 - 从资源隔离到多环境管理
引言 在传统的物理机或虚拟机环境中,不同业务应用共享资源,容易导致权限冲突、资源争用和管理混乱。Kubernetes 通过 命名空间(Namespace)实现资源逻辑隔离,将集群划分为多个虚拟子集群,从而解决以下问题&…...
【安全扫描器原理】基于协议的服务扫描器
【安全扫描器原理】基于协议的服务扫描器 1.概述2.服务扫描的基本原理3.WWW服务扫描4.FTP服务扫描5.Telnet服务扫描1.概述 一台计算机逻辑上可以提供多项服务,每安装一个服务,即打开了一个或多个端口。从这个角度上看,每个服务对应一个或几个指定端口,反之,如果能检测到某…...
第十六届蓝桥杯 2025 C/C++组 数列差分
目录 题目: 题目描述: 题目链接: 思路: 核心算法: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P12342 [蓝桥杯 2025 省 B/Py…...
模式识别的基本概念与理论体系
前面在讨论专家系统时曾经说过,为了使计算机具有自动获取知识的能力,除了应使它具有学习能力外,还应使它具有能识别诸如文字、图形、图象、声音等的能力,计算机的这种识别能力是模式识别研究的主要内容。当然,模式识别…...
机器学习,深度学习
定义(非正式):不进行明确编程的情况下,提供大量数据让计算机进行自我学习分类:监督(supervised)学习,无监督(unsupervised)学习监督学习:提供的数据中包含了问题到正确答案(x到y)的映射…...
smolagents - Guided tour
https://colab.research.google.com/github/huggingface/notebooks/blob/main/smolagents_doc/en/pytorch/guided_tour.ipynbhttps://colab.research.google.com/github/huggingface/notebooks/blob/main/smolagents_doc/en/pytorch/guided_tour.ipynb...
【keil使用】无法打开keil工程,只有空白界面的解决方法
【keil使用】无法打开keil工程,只有空白界面的解决方法 一、最常见的原因 在我们新建keil工程或下载其他大佬的keil工程的时候可能会出现工程无法正常打开的情况,如图所示: 其中最常见的一个原因就是keil工程的目录路径太长了,W…...
openEuler 22.03 安装 Nginx,支持离线安装
目录 一、环境检查1.1 必要环境检查1.2 在线安装(有网络)1.3 离线安装(无网络) 二、下载Nginx2.1 在线下载2.2 离线下载 三、安装Nginx四、开机自启服务五、开放防火墙端口六、常用命令 一、环境检查 1.1 必要环境检查 # 查看 g…...
Excel 数组功能及应用示例
Excel表格中的数组(Array)是一个可以同时存储和操作多个数据的结构。数组可以是单行、单列(一维数组)或多行多列(二维数组)。在Excel中,数组公式或动态数组功能可以一次性处理多个值,…...
C++后端服务器开发:侵入式与非侵入式程序结构解析
在C后端服务器开发中,架构设计是决定系统性能、可扩展性和可维护性的关键因素之一。尽管不同的业务需求会导致服务器架构的多样化,但网络通信模块作为所有服务的通用部分,为我们提供了一个抽象和讨论的基础。基于此,我们可以将服务…...
「Mac畅玩AIGC与多模态09」开发篇05 - 使用自定义天气查询插件开发智能体应用
一、概述 本篇介绍如何在 macOS 环境下,通过编写自定义 OpenAPI Schema,将天气查询服务接入 Dify 平台,并开发基于实时天气信息的智能体应用。本案例培养路径参数与查询参数结合的插件开发技巧,实现智能体和外部实时数据的动态联动。 二、环境准备 1. 确认本地开发环境 …...
Maven插件学习(五)—— 将项目构建生成的 OSGi Bundles(或 Features)发布到一个 P2 仓库
发布OSGi Bundles到一个 P2 仓库 读取项目中properties文件中的属性 <plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><executions><exec…...
欧拉计划 Project Euler61(循环的多边形数)题解
欧拉计划 Project Euler 61 题解 题干思路code 题干 思路 先生成所有四位数的多边形数集合分类保存,然后dfs找即可 code // 2512 1281 8128 2882 8256 5625 // 28684 #include <bits/stdc.h>using namespace std;using ll long long;typedef vector<i…...
C语言与Unix的传奇起源
C语言与Unix的传奇起源 背景:Multics项目的困境 这段历史要从20世纪60年代中叶的美国说起。当时,三大技术巨头——麻省理工学院(MIT)、AT&T贝尔实验室和通用电气(GE)——联手为GE-645大型机开发一个名…...
C#扩展方法与Lambda表达式基本用法
C# 扩展方法与 Lambda 表达式详解 一、扩展方法详解 1. 基本概念 扩展方法允许为现有类型"添加"方法,而无需修改原始类型或创建派生类型。 定义条件: 必须在静态类中定义方法本身必须是静态的第一个参数使用this修饰符指…...
C#规避内存泄漏的编码方法
C#规避内存泄漏的编码方法 内存泄漏是C#开发中常见的问题,尽管.NET有垃圾回收机制(GC),但不当的编码实践仍可能导致内存无法被及时回收。以下是系统性的规避内存泄漏的方法: 一、理解内存泄漏的常见原因 未释放的事件订阅静态…...
ARM 指令集(ubuntu环境学习) 第一章:ARM 指令集概述
1.1 ARM 架构简介 ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)架构,最初由英国的 ARM Holdings 公司设计。与复杂指令集计算机(CISC)不同,RISC 架构通过使用简单且高效的指令集,使得处理器能够以更高的速度和更低的功耗执行任务。ARM 架构被广泛应用于各…...
OpenCV实战教程:从零开始的计算机视觉之旅
第一部分:基础入门 OpenCV简介 什么是OpenCV及其应用领域开发环境搭建(Windows/MacOS/Linux)安装配置和第一个程序"Hello OpenCV" 图像基础 图像的数字表示方式色彩空间(RGB、HSV、灰度图)图像读取、显示与…...
零基础做自动驾驶集成测试(仿真)
图 1:使用 GPUDrive 进行极快的多代理模拟。上图:GPUDrive 中 Waymo Open Motion Dataset 场景的鸟瞰图,方框表示受控智能体,圆圈表示其目标。底部:相应的代理视图,以一个代理为中心。可以根据用户的目标轻…...
阿里云dns服务器不可用怎么办?dns可以随便改吗?
阿里云DNS服务器不可用怎么办?dns可以随便改吗? 当DNS服务器不可用时,可能导致无法访问网站或网络服务。以下是常见的解决方法: 1. 检查网络连接 确保设备已连接到互联网(如Wi-Fi或有线网络)。 尝试访问其他网站或服务&#x…...
神经网络用于地震数据时空均匀插值的方法与开源资料
神经网络用于地震数据时空均匀插值的方法与开源资料 地震数据的不均匀采样是一个常见问题,神经网络提供了一种有效的解决方案。以下是关于如何使用神经网络进行地震数据时空均匀插值的概述和可用资源。 主要方法 1. 基于深度学习的插值方法 卷积神经网络(CNN)&a…...
线性微分方程与非线性微分方程
方程一 d x d t x \frac{dx}{dt} x dtdxx 这是一个一阶线性常微分方程,可以直接分离变量求解。 将变量分离: d x x d t \frac{dx}{x} dt xdxdt 两边积分: ∫ 1 x d x ∫ 1 d t ⇒ ln ∣ x ∣ t C \int \frac{1}{x} \, dx \…...
Windows查看和修改IP,IP互相ping通
Windows系统 查看IP地址 winr 输入cmd 打开终端使用 ipconfig 或 ipconfig -all 命令查看当前网络 IPV4地址 Windows系统 修改IP地址 自动获取IP(DHCP): 打开 控制面板,点击 网络和Internet。点击 网络和共享中心。选择 更改适配…...
ESP32开发之freeRTOS的信号量
什么是信号量信号量能干啥信号量的函数实例举例总结什么是信号量 简而言之,就是发出通知,接收通知的任务获得通知后去干啥啥。通知有多有少。自定义通知数量的,叫计数型信号量;只有有无(即“0”,“1”)通知的,叫二进制信号量。 信号量能干啥 资源管理:控制多个任务对…...
CRMEB-PRO系统定时任务扩展开发指南
适用场景 当系统内置定时任务类型无法满足业务需求时,开发者可通过本教程快速掌握自定义定时任务的扩展方法。本指南以"定时检测服务"为例,演示完整开发流程。 我想添加一个定时任务 ,而这里没有我需要的,我怎么来添加 比如我想添加一个定时检…...
单片机不同通信方式的适用场景
一、串口通信 UART 通信双方约定好波特率,每次发送一个字节(8位数据) 这种通信方式一共有2根线,且互相独立不受影响。 串口通信的缺点 二、RS232和RS485 优点是能够远距离传输信号 RS232达到30m RS485达到1000m 同时RS485还具有一对多的功能 三、S…...
【神经网络与深度学习】探索全连接网络如何学习数据的复杂模式,提取高层次特征
引言 全连接网络(Fully Connected Network,FCN)是深度学习中的重要架构,广泛用于模式识别、分类和回归任务。其强大的特征提取能力使其能够自动学习输入数据中的复杂模式,并逐步形成高层次特征。这种能力主要依赖于参…...
股指期货贴水对对冲的影响大吗?
如果你持有股票,又担心股市下跌,可能会想到用股指期货来“对冲风险”——比如买入股票的同时,卖出股指期货合约。但如果股指期货处于贴水状态(期货价格低于现货价格),对冲效果会受影响吗? 一、…...
浙江大学 | DeepSeek系列公开课 | 当艺术遇见AI:科艺融合的前沿探索
今天要给大家分享一份由浙江大学出品的DeepSeek系列公开课第三季第一期,公开课的主题是当艺术遇见AI,科艺融合的新探索。本报告系统展示了浙江大学在艺术与人工智能融合领域的研究成果,涵盖古画修复流程、色彩复原技术、诗画融合模型、图像召…...
(Go Gin)Gin学习笔记(三)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
1. 数据解析和绑定 bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将请求体中的参数值绑定到对应的结构体上,以方便后续业务逻辑的处理 1.1 JSON数据解析和绑定 客户端传参,后端接收并解析到结构体 package mainim…...
【JavaEE】网络原理之初识(1.0)
目录 编辑 局域网与广域网 IP地址和端口号 实现简单的服务器客户端交互 简单理解socket TCP和UDP的差别(初识) socket面对udp DatagramSocket API DatagramSocket 构造方法 DatagramSocket 方法: DatagramPacket API Data…...
Go与Cpp的本质区别
这个问题是我们经常听到的问题 常见的观点有 Go 与 C 的差异主要体现在设计哲学、内存管理、并发模型、语法特性及应用场景等方面,以下从多个维度进行详细对比: 一、内存管理机制 C:需手动管理内存(如 new/delete、智能…...
Vulkan 学习(16)---- 使用 VertexBuffer
Vertex Buffer 创建一个 VertexBuffer 存储 Vertex data,代替之前在 Shader 中使用固定顶点值的做法 Vertex Shader 修改 GLSL 的 VertexShader 如下: 注意这里指定了 input Vertex data 的 location 和 格式 #version 450 layout(location 0) in vec2 inPosit…...
论文阅读 2024 arxiv Comprehensive Assessment of Jailbreak Attacks Against LLMs
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Comprehensive Assessment of Jailbreak Attacks Against LLMs https://arxiv.org/pdf/2402.05668 https://www.doubao.com/chat/4015423571416834 速览 这篇论文是关于大…...
SIFT特征点检测
刚看完了SIFT特征点检测的原理,阅读的是两篇csdn博客,一个全面和一个最全面,不得不说,你俩写的都很全面,这么用心奉献知识的博主是全人类的财富。 现在用我这张笨拙的嘴先说一下我理解的流程 首先先将图像扩大一倍&a…...
开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验-pipeline方式(二)
一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…...
Python os.path.join()路径拼接异常
问题 在使用os.path.join()对两个路径进行拼接,如:/University/School/和/Department/Class/进行拼接,最终的结果为/Department/Class/,而/University/School/却不知所踪。 import osos.path.join(“/University/School/”, “/…...
Flink之DataStream
Apache Flink 的 DataStream API 是用于 处理无限(流)或有限(批)数据流的核心编程模型,适用于事件驱动、实时分析、ETL 等场景。相比 Flink Table API,DataStream API 提供了更强的灵活性和底层控制能力。 …...
WHAT - Tailwind CSS + Antd = MetisUI组件库
文章目录 Tailwind 和 Antd 组件库MetisUI 组件库 Tailwind 和 Antd 组件库 在 WHAT - Tailwind 样式方案(不写任何自定义样式) 中我们介绍了 Tailwind,至于 Antd 组件库,我们应该都耳熟能详,官网地址:htt…...
【LLM】MOE混合专家大模型综述(重要模块原理)
note 当前的 MoE 架构就是一个用显存换训练时长/推理延迟的架构MoE 目前的架构基本集中在于将原先 GPT 每层的 FFN 复制多份作为 n 个 expert,并增加一个 router,用来计算每个 token 对应到哪个 FFN(一般采用每个 token 固定指派 n 个 exper…...
量子机器学习中的GPU加速实践:基于CUDA Quantum的混合编程模型探索
引言:量子机器学习的新范式 在量子计算与经典机器学习交叉融合的前沿领域,量子机器学习(Quantum Machine Learning, QML)正经历着革命性突破。然而,随着量子比特规模的增长和算法复杂度的提升,传统计算架构…...
CentOS Linux 环境二进制方式安装 MySQL 5.7.32
文章目录 安装依赖包新建用户解压初始化配置文件启动服务登录MySQL修改密码停止数据库 安装依赖包 yum -y install libaio perl perl-devel libncurses* autoconf numactl新建用户 useradd mysql解压 tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.32-l…...
数学:拉马努金如何想出计算圆周率的公式?
拉马努金(Srinivasa Ramanujan)提出的圆周率(π)计算公式,源于他对数学模式的超凡直觉、对无穷级数和模形式的深刻洞察,以及独特的非传统数学思维方式。尽管他的思考过程带有强烈的个人色彩,甚至…...
Java 未来技术栈:从云原生到 AI 融合的企业级技术演进路线
一、云原生架构:重构 Java 应用的运行范式 1.1 微服务架构的深度进化 Java 在微服务领域的实践正从 Spring Cloud 向服务网格(Service Mesh)演进。以 Istio 为代表的服务网格技术,通过 Sidecar 模式实现服务间通信的透明化管理&…...
mid360驱动安装以及联合相机标定
1 mid360 安装 1.1 安装 一定要使用 SDK2和 ROS2驱动(livox_ros_driver2) 先安装SDK2,再安装livox_ros_driver2 GitHub - Livox-SDK/Livox-SDK2: Drivers for receiving LiDAR data and controlling lidar, support Lidar HAP and Mid-360. GitHub - Livox-SDK/l…...
LeetCode —— 572. 另一棵树的子树
572. 另一棵树的子树 题目:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所…...
模型部署技巧(一)
模型部署技巧(一) 以下内容是参考CUDA与TensorRT模型部署内容第六章,主要针对图像的前/后处理中的trick。 参考: 1.部署分类器-int8-calibration 2. cudnn安装地址 3. 如何查找Tensor版本,与cuda 和 cudnn匹配 4. ti…...
PostgreSQL中的SSL
PGSQL数据库的默认隔离级别是读提交,并且同时支持可重复读和序列化模式。但是在9.1之前的版本中,序列化模式等价于快照隔离,并非是真正的序列化模式。 这样的话就会存在一个问题,那就是写偏序(Write Skew)…...
使用 Spring Data Redis 实现 Redis 数据存储详解
使用 Spring Data Redis 实现 Redis 数据存储详解 Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块,它封装了 Redis 客户端的底层细节(如 Jedis 或 Lettuce),提供了统一的 API 来操作 Redis 的数据结构。以下是详细实现…...
短视频矩阵系统贴牌开发实战:批量剪辑文件夹功能设计与实现
摘要:在短视频矩阵系统的开发中,批量处理功能是提升运营效率的关键。本文将深入探讨如何实现基于文件夹的短视频批量剪辑功能,涵盖技术选型、核心功能实现及代码示例。 一、需求背景与场景价值 在短视频矩阵运营场景中,运营者常面…...