Kubernetes 架构图和组件
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,
15年
工作经验,精通Java编程
,高并发设计
,Springboot和微服务
,熟悉Linux
,ESXI虚拟化
以及云原生Docker和K8s
,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea
介绍
Kubernetes 已成为众多企业的超级英雄,为微服务实施中复杂的 API 结构可能引起的潜在混乱带来了秩序。
然而,就像任何超级英雄一样,Kubernetes 也有其局限性。这就是理解 Kubernetes 架构图变得至关重要的地方。
了解 Kubernetes 架构图使您能够掌握 Kubernetes 架构的重要元素并对其进行微调以实现有效操作。不可否认,Kubernetes 赋予了自动化功能,简化了应用程序的管理和部署。但是,为了实现高效的 Kubernetes 部署,利用适当的工具和技术来确保更好的投资回报至关重要。
本文将探讨 Kubernetes 架构的关键组件以及如何优化它们以实现高效的容器部署。
什么是 Kubernetes?
Kubernetes 是一个开源系统,用于自动部署、扩展和管理容器化应用程序。
它将构成应用程序的容器分组到逻辑单元中,以便于管理和发现。Kubernetes 是一个可移植的可扩展平台,可促进声明式配置和自动化。它最初由 Google 设计,现在由全球贡献者社区维护。
什么是 Kubernetes 架构?
Kubernetes 是一个强大的开源容器编排平台,它彻底改变了组织管理和部署容器化应用程序的方式。Kubernetes 的核心是提供了一个强大的框架,用于自动部署、扩展和管理容器化工作负载。
了解架构
Kubernetes 架构遵循主工作模型,其中控制平面监督和管理集群,而工作节点执行实际的容器化应用程序。
Kubernetes 架构组件:控制平面
控制平面是 Kubernetes 集群的大脑,负责编排和管理各种组件。它由几个关键要素组成:
1. kube-apiserver:
- 处理 API 请求和管理集群状态的中央通信中心。
- 充当用户和其他组件与集互的网关。
- 验证 API 请求、验证和授权用户,并协调控制平面和 Worker 节点之间的流程。
- 使用 etcd 存储和检索集群状态信息。
2. etcd (等注):
- 一个高度可用的分布式键值存储,用于存储有关集群配置和状态的关键信息。
- 由 kube-apiserver 用于存储和检索有关 Pod、服务、部署和其他 Kubernetes 对象的数据。
- 保证集群状态的一致性和可靠性。
3. kube-scheduler 调度器:
- 负责根据资源需求、约束和调度策略将 Pod 分配给 worker 节点。
- 使用 etcd 中存储的信息来做出调度决策。
- 考虑节点容量、关联规则和反关联规则等因素。
4. kube-controller-manager:
- 管理负责集群内特定任务的各种控制器。
- 包括用于复制集、部署、有状态集、守护程序集和作业的控制器。
- 通过根据需要创建、更新和删除 Pod 来确保集群的所需状态得到维护。
5. cloud-controller-manager(可选):
- 将 Kubernetes 与云提供商集成,以获得特定于云的功能。
- 提供用于与云资源(如虚拟机、负载均衡器和存储卷)交互的 API。
- 简化云环境中 Kubernetes 集群的管理。
Kubernetes 架构组件:Worker 节点
Worker 节点是 Kubernetes 集群的基本组件,用于执行实际的容器化应用程序。他们负责运行 Pod,Pod 是 Kubernetes 中最小的部署单元,可以包含一个或多个容器。
Worker 节点的关键组件:
- kubelet 的
- 在每个 worker 节点上运行的代理,充当节点和控制平面之间的接口。
- 负责向 control plane 注册节点,管理节点上的 Pod,以及与 kube-apiserver 通信。
- 处理创建、启动、停止和删除容器以及管理卷和网络接口等任务。
- kube-proxy 的
- 负责集群内的服务发现和负载均衡。
- 创建网络规则,以根据服务定义将流量路由到 Pod。
- 确保可以从集群内部和外部访问服务。
- 容器运行时:
- 在 worker 节点上运行容器的引擎。
- 常用容器运行时的示例包括 Docker、containerd 和 CRI-O。
- 负责拉取容器镜像、创建和管理容器以及为容器提供资源。
Worker 节点的工作原理:
- 控制平面根据各种因素(例如资源需求和约束)安排在 worker 节点上执行 pod。
- worker 节点上的 kubelet 接收 Pod 规范,并使用容器运行时创建必要的容器。
- kube-proxy 确保服务向外界公开,并确保流量在服务的多个实例之间进行负载均衡。
- Worker 节点为运行容器化应用程序提供底层基础设施和资源。
Kubernetes 集群附加组件
附加组件组件是可选组件,可以添加到 Kubernetes 集群中以增强其功能并满足特定要求。这些组件通常提供核心 Kubernetes 发行版中未包含的专用服务或功能。
附加组件的重要性:
- 增强功能:附加组件可以提供其他特性和功能,例如网络管理、DNS 解析和资源监控。
- 定制:您可以选择最适合您的特定需求和使用案例的附加组件。
- 集成:许多附加组件与 Kubernetes 无缝集成,因此可以轻松地将它们整合到您的集群中。
流行的附加组件:
- CNI 插件:容器网络接口 (CNI) 插件用于为 Kubernetes 集群中的容器提供网络连接。流行的 CNI 插件包括 Calico、Flannel 和 Weave Net。
- CoreDNS 的:一个 DNS 服务器,为 Kubernetes 集群中的服务提供 DNS 解析。
- Metrics 服务器:一种收集和公开 Kubernetes 集群资源使用指标的工具,允许您监控和优化资源分配。
Web 用户界面:用于管理 Kubernetes 集群的基于 Web 的用户界面,提供了一种更加用户友好的方式来与平台交互。
顶级 Kubernetes 工具
Kubernetes 为管理容器化应用程序提供了一个强大的平台,但掌握其功能需要一套强大的工具。以下是按用途分类的一些基本工具的细分:
1. Kubernetes CLI 工具:
这些命令行工具提供了一种直接与 Kubernetes 集互的强大方式。
- kubectl 的Kubernetes 工具的瑞士军刀。它允许您执行各种任务,包括管理部署、Pod、服务和命名空间。
- 掌舵:适用于 Kubernetes 的软件包管理器,可简化应用程序的部署和管理。Helm 图表提供了一种在 Kubernetes 集群中打包和安装应用程序的标准化方法。
- 脚手架:一种开发工具,可简化容器化应用程序的本地开发和测试。它可以自动构建、推送镜像并将其部署到 Kubernetes 集群。
- Customize:用于自定义 Kubernetes 清单和部署的工具。它简化了对多个资源的更改应用过程,而无需修改原始配置文件。
- Kubeval:用于在部署之前验证 Kubernetes YAML 文件的工具。它有助于确保您的配置在语法上正确并符合最佳实践。
2. Kubernetes 监控工具:
有效监控对于维护正常运行的 Kubernetes 集群至关重要。这些工具提供对资源利用率、应用程序运行状况和整体集群性能的见解。
- 语义文本监控:一个全面的监控解决方案,提供对 Kubernetes 集群的详细见解,包括资源使用情况、应用程序性能和基础设施指标。
- Kubernetes 仪表板:一个简单的基于 Web 的 UI,用于查看和管理 Kubernetes 集群。它概述了资源、部署和 Pod 运行状况。
- 普罗 米修斯: 一种流行的开源监控系统,用于收集和存储来自容器化应用程序和 Kubernetes 资源的指标。
- Grafana:一种可视化工具,允许您创建自定义控制面板,用于可视化 Prometheus 和其他监控工具收集的指标。
- Jaeger:一个分布式跟踪平台,可帮助您了解通过微服务应用程序的请求流。Jaeger 可以与 Kubernetes 集成,以监控容器化服务的性能和运行状况。
3. Kubernetes 安全工具:
安全性对于任何容器化环境都至关重要。这些工具可帮助您强化 Kubernetes 集群并识别潜在的安全漏洞。
- 开放策略代理 (OPA): 一个强大的策略引擎,允许您在 Kubernetes 集群内的各个级别实施安全策略。
- KubeLinter 的 KubeLinter 中: 一种分析 Kubernetes YAML 文件以获取安全最佳实践和潜在漏洞的工具。
- Kube-bench 的实例: 对 Kubernetes 集群配置执行安全审计的工具。它可以识别潜在的安全风险并建议补救措施。
- Kube-hunter 的:一种安全工具,通过识别未经授权的部署、特权容器和错误配置来扫描 Kubernetes 集群中的漏洞。
- Terrascan:用于基础设施安全扫描的工具。它可以与 Kubernetes 集成,以扫描您的集群配置是否存在安全风险。
4. Kubernetes 部署工具:
这些工具可自动执行容器化应用程序的构建、测试和部署过程,使您能够简化 CI/CD(持续集成/持续交付)管道。
- 詹金斯: 一种流行的开源 CI/CD 工具,可用于自动构建、测试和将容器化应用程序部署到 Kubernetes 集群。
- Spinnaker:一个强大的 CI/CD 平台,提供持续交付功能,用于将容器化应用程序部署到 Kubernetes。
- Fluxcd.io:一种 GitOps 工具,使用 Git 作为在 Kubernetes 中管理部署的事实来源。它根据对 Git 存储库所做的更改自动部署应用程序。
选择正确的工具
最佳工具的选择取决于您的具体需求和用例。考虑集群的大小和复杂性、监控和安全要求以及您首选的 CI/CD 管道结构等因素。通过利用正确的工具组合,您可以有效地管理 Kubernetes 环境、优化性能并确保容器化应用程序的可靠性和安全性。
Kubernetes 架构最佳实践
Kubernetes 作为一个强大的容器编排平台,提供了许多特性和功能来有效地管理容器化应用程序。为了优化 Kubernetes 部署并确保最佳性能、可靠性和安全性,必须遵守最佳实践。
1. 利用命名空间:
- 逻辑隔离:命名空间提供了一种将集群逻辑划分为不同环境或项目的方法。
- 资源管理:它们通过隔离不同的团队或应用程序来帮助更有效地管理资源。
- 安全:命名空间可用于实现基于角色的访问控制 (RBAC) 并限制对特定资源的访问。
2. 实施就绪情况和活跃度探测:
- 健康检查:就绪情况探测检查 Pod 是否已准备好接收流量,而存活度探测确保容器仍在运行且运行状况良好。
- 自动重启:Kubernetes 可以自动重启未通过运行情况探测或未准备好接收流量的 Pod。
3. 设置资源请求和限制:
- 资源配置:定义 Pod 所需的最小和最大资源(CPU 和内存)。
- 防止过度使用: 设置限制有助于防止 Pod 消耗过多资源并影响其他应用程序。
- 服务质量:保证关键应用程序达到一定级别的性能。
4. 利用高级部署对象:
- 抽象: 使用更高级别的部署对象(如 Deployments、ReplicaSets、StatefulSets 和 DaemonSets)来简化应用程序管理。
- 声明式配置:描述应用程序的所需状态,Kubernetes 将自动协调实际状态以匹配所需状态。
- 滚动更新:使用滚动更新等功能轻松更新应用程序,无需停机。
5. 在多个节点之间分配工作负载:
- 可用性: 将 Pod 分布在多个节点上,以提高容错能力和可用性。
- 负载均衡:在 Pod 之间均匀分配流量,以防止单个节点过载。
- 资源优化: 确保整个集群的资源得到有效利用。
6. 实施基于角色的访问控制 (RBAC):
- 安全:根据用户角色和权限限制对资源的访问。
- 粒度控制: 为不同的用户或组授予特定权限,防止未经授权的访问。
- 合规: 确保遵守安全法规和最佳实践。
7. 考虑为外部托管提供云服务:
- 托管 Kubernetes:利用 AWS EKS、Azure AKS 或 Google Kubernetes Engine 等云托管的 Kubernetes 服务来简化管理和可扩展性。
- 附加功能:受益于负载均衡、自动扩展和集成监控工具等内置功能。
8. 定期更新到最新版本:
- 安全补丁:及时了解最新的 Kubernetes 版本,以从安全补丁和错误修复中受益。
- 新功能: 访问较新版本中引入的新功能和增强功能。
- 改进的性能: 享受性能改进和优化。
9. 监控集群资源和审计策略日志:
- 故障 排除: 监控资源使用情况、识别瓶颈并排查性能问题。
- 安全:审核策略日志以检测和解决安全威胁。
- 优化: 做出数据驱动的决策,以提高集群效率和资源分配。
10. 对配置文件使用版本控制:
- 协作: 使用 Git 等版本控制系统协作管理 Kubernetes 配置文件。
- 跟踪更改:轻松跟踪更改、恢复到以前的版本并与团队成员协作。
- 自动化: 将版本控制与 CI/CD 管道集成,以实现自动化部署。
通过遵循这些最佳实践,您可以优化 Kubernetes 部署、提高性能、增强安全性并确保容器化应用程序的可靠性。
相关文章:
Kubernetes 架构图和组件
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计…...
不建模,无代码,如何构建一个3D虚拟展厅?
在数字化浪潮的推动下,众多企业正积极探索线上3D虚拟展厅这一新型展示平台,旨在以更加生动、直观的方式呈现其产品、环境与综合实力。然而,构建一个既专业又吸引人的3D虚拟展厅并非易事,它不仅需要深厚的技术支持,还需…...
MMDetection学习系列(5)——Mask R-CNN深度探索与实战指南
目录 实例分割 R-CNN系列 R-CNN Fast R-CNN Faster R-CNN Mask R-CNN Mask R-CNN 头部结构细节 两阶段架构 损失函数 掩码 RoIAlign Faster R-CNN中的RoIPool Mask R-CNN 中的RoIAlign 实例分割实验 消融研究 定性结果 SOTA 方法比较 Coovally AI模型训练与…...
Oracle SQL: TRANSLATE 和 REGEXP_LIKE 的知识点详细分析
目录 前言1. TRANSLATE2. REGEXP_LIKE3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. TRANSLATE TRANSLATE 用于替换字符串中指定字符集的每个字符,返回替换后的字符串 逐一映射输入字…...
PHP语言的软件工程
PHP语言的软件工程 引言 软件工程是计算机科学中的一个重要分支,它涉及软件的规划、开发、测试和维护。在现代开发中,PHP作为一种流行的服务器端脚本语言,广泛应用于网页开发和各种企业应用中。本文将深入探讨PHP语言在软件工程中的应用&am…...
量变引起质变
量变引起质变,这个是最本质的规律,重复进行一件事情,这件事情就会越来越完善,越来越完美,哪怕是菜鸟,重复多了就是大佬。 我从说话结结巴巴,到说话流畅,只是用了15天直播写代码&…...
【专题】为2025制定可付诸实践的IT战略规划报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p39055 在当今瞬息万变的商业环境中,制定有效的 IT 战略规划对于企业的成功与可持续发展至关重要。本报告深入探讨了制定 IT 战略规划的关键活动,旨在为企业和决策者提供全面且实用的指导。 Gartner的《为202…...
Linux内核 -- Linux 的 BIO框架
深入理解 Linux 的 BIO 在 Linux 内核中,BIO(Block I/O)是块层(block layer)用于描述块设备 I/O 请求的核心数据结构。它在文件系统与块设备驱动程序之间充当“载体”,负责把数据页及相关元数据从上层提交…...
Spring WebFlux 和 Spring MVC 的主要区别是什么?
Spring WebFlux 和 Spring MVC 都是 Spring 框架中用于构建 Web 应用的模块,但它们在设计理念、编程模型、性能特性等方面存在显著区别。以下是它们的主要区别: ### 1. **编程模型** - **Spring MVC**: - **同步和阻塞**:Spri…...
卸载和安装Git小乌龟、git基本命令
卸载 Git 打开控制面板: 按 Win R 打开运行对话框,输入 control 并按回车键。或直接在功能搜索里搜索“控制面板”。在控制面板中,选择“程序”或“程序和功能”。 查找并卸载 Git: 在程序列表中找到“Git”或“Git for Windows…...
正向代理与反向代理的主要区别
正向代理与反向代理的主要区别 正向代理与反向代理都是中间服务器 特性正向代理反向代理位置客户端和目标服务器之间客户端和后端服务器之间客户端感知客户端知道代理的存在,并主动连接代理客户端不知道代理的存在,认为直接连接目标服务器主要用途隐藏…...
vue组件学习三(插槽)
目录 1、匿名插槽2、渲染作用域3、默认内容4、具名插槽5、条件插槽6、作用域插槽7、具名作用域插槽最后 1、匿名插槽 父组件调用Mycomponet1组件 <Mycomponet1>click me </Mycomponet1>子组件为 <button><slot></slot> </button>最后结…...
Django 的 `Meta` 类和外键的使用
Django 的 Meta 类和外键的使用 1. Meta 类的常用选项2. 外键(ForeignKey)字段的使用2.1 基本用法2.2 ForeignKey 参数2.3 外键删除选项(on_delete) 3. 外键和查询3.1 获取作者的所有书籍3.2 通过书籍查找作者3.3 使用 select_rel…...
DP动态规划字典版递归
https://blog.csdn.net/m0_74408723/article/details/145303575?spm1001.2014.3001.5501 一只青蛙,可以一次跳上1级台阶,也可以一次跳上2级台阶。求这只青蛙跳10级台阶有多少种跳法? 优化上一篇青蛙跳台阶问题。可以采用Map字典存放f(n-1)f(…...
图论 八字码
我们可能惊异于某些技巧。我们认为这个技巧真是巧妙啊。或者有人认为我依靠自己的直觉想出了这个表示方法。非常自豪。我认为假设是很小的时候,比如说小学初中,还是不错的。到高中大学,就有一些不成熟了。因为这实际上是一个竞技。很多东西前…...
Vscode:问题解决办法 及 Tips 总结
Visual Studio Code(简称VSCode)是一个功能强大的开源代码编辑器,广泛用于各种编程语言和开发场景,本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法,使用过程中的技巧 文章目录 扩展安装失败调试配…...
Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
本文讲了如何在Excel中抠图头像,换背景色。 1,如何在Excel中抠图头像,换背景色 大家都知道在PS中可以很容易抠图头像,换背景色,其实Excel中也可以抠简单的图,换背景色。 ※所用头像图片为百度搜索&#x…...
vue项目动态div滚动条滑动到指定位置效果
标题首先我们得明确几个知识点 element.scrollIntoView this.$el.querySelector 文档对象模型Document引用的 querySelector() 方法返回文档中与指定选择器或选择器组匹配的第一个 Element对象。如果找不到匹配项,则返回null。 用来匹配动态document 代码 // t…...
2K高刷电竞显示器怎么选?
2K高刷电竞显示器怎么选?哪个价格适合你?哪个配置适合你呢? 1.HKC G27H2Pro - 2K高刷电竞显示器怎么选 外观设计 - HKC G27H2Pro 2K高刷电竞显示器 电竞风拉满:作为猎鹰系列的一员,背部 “鹰翼图腾” 切割线搭配炎红…...
Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)
https://codeforces.com/contest/2063/problem/C 牢记一棵树上两个节点如果相邻,它们有一条边会重叠,两个节点延伸出去的所有不同边是两个节点入度之和-1而不是入度之和,那么如果这棵树上有三个节点它们的入度都相同,那么优先选择非相邻的两个节点才能使所有不同边的数量最大!!…...
【2024年华为OD机试】 (E卷,200分) - 寻找符合要求的最长子串(JavaScriptJava PythonC/C++)
一、问题描述 给定一个字符串 s,找出满足以下条件的最长子串: 任意一个字符最多出现2次:子串中的每个字符在子串中出现的次数不能超过2次。子串不包含指定字符:子串不能包含输入的指定字符。 请找出满足该条件的最长子串的长度…...
c++常见设计模式之装饰器模式
基础介绍 装饰器模式是结构型设计模式,从字面意思看装饰器设计模式就是用来解决在原有的实现基础上添加一些额外的实现的问题。那么正统的概念是什么呢?装饰器模式允许我们动态的向对象添加新的 行为,同时不改变其原有的结构。它是一种比继承…...
如何在Python中进行数据分析?
数据分析是现代数据科学中的核心环节之一,它能够帮助我们从数据中提取有价值的信息,并为决策提供依据。在Python中,进行数据分析非常方便,因为Python有着丰富的库和工具,能够帮助处理和分析各种类型的数据。本篇文章将…...
linux网络 | 传输层TCP | 认识tcp报头字段与分离
前言: 本节内容继续传输层的讲解, 本节讲解的是tcp协议。 tcp协议是我们日常中最常用的协议。就比如我们浏览网页,我们知道网页时http或者https协议。 其实http或者https底层就是用的tcp协议。tcp协议,全名又称为传输控制协议&…...
定位,用最通俗易懂的方法2.1:CRLB实例
二郎就不设置什么VIP可见啥的了,这样大家都能看到。 如果觉得受益,可以给予一些打赏,也算对原创的一些鼓励,谢谢。 钱的用途:1)布施给他人;2)二郎会有更多空闲时间写教程 起因&…...
深入内核讲明白Android Binder【三】
深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …...
vim如何显示行号
:set nu 显示行号 :set nonu 不显示行号...
【线性代数】列主元法求矩阵的逆
列主元方法是一种用于求解矩阵逆的数值方法,特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵,然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤: [精确算法] 列主元高斯消元法 步骤 1&am…...
T-SQL语言的数据库编程
T-SQL语言的数据库编程 1. 引言 在信息化迅速发展的今天,数据库已经成为数据管理和使用的重要工具。其中,T-SQL(Transact-SQL)作为微软SQL Server的扩展SQL语言,不仅用于数据查询和管理,还能够进行复杂的…...
【Linux】18.Linux进程控制(2)
文章目录 3. 进程程序替换3.1 单进程版 -- 看看程序替换3.2 替换原理3.3 替换函数函数解释命名理解 3.4 多进程版 -- 验证各种程序替换接口3.5 自定义shell 3. 进程程序替换 3.1 单进程版 – 看看程序替换 makefile mycommand:mycommand.cgcc -o $ $^ -stdc99 .PHONY:clean …...
在 Ubuntu 上安装 MySQL 的详细指南
在Ubuntu环境中安装 mysql-server 以及 MySQL 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方…...
Hive: Hive的优缺点,使用方式,判断Hive是否启动(jps),元数据的存储,Hive和Hadoop的关系
hive 是一个构建在 Hadoop 上的数据仓库 工具 ( 框架 ) ,可以将结构化的数据文件映射成一张数据表,并可以使用类sql 的方式来对这样的数据文件进行读,写以及管理(包括元数据)。这套 HIVE SQL 简称 HQL。 hive 的执行引…...
Social LSTM:Human Trajectory Prediction in Crowded Spaces | 文献翻译
概要 行人遵循不同轨迹以避免障碍物和容纳同行者。任何在这种场景中巡航的自动驾驶车辆都需要能够遇见行人的未来位置并相应地调整其路线以避免碰撞。轨迹预测问题能够被看作一个顺序生成任务,其中我们对基于行人过去的位置预测其未来的轨迹感兴趣。根据最近RNN&am…...
前后端交互过程
一、前后端交互过程 前后端交互是指客户端(前端)与服务器(后端)之间的数据通信。以下是一个典型的前后端交互流程: 前端请求: 用户在浏览器上与前端界面交互,如点击按钮、提交表单。前端使用 A…...
【计算机视觉】人脸识别
一、简介 人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比,判断输入人脸是否与数据库中的某一张人脸匹配,即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。 人脸识别属于1:N的比对,输入人脸身份是1&…...
Spark Streaming的核心功能及其示例PySpark代码
Spark Streaming是Apache Spark中用于实时流数据处理的模块。以下是一些常见功能的实用PySpark代码示例: 基础流处理:从TCP套接字读取数据并统计单词数量 from pyspark import SparkContext from pyspark.streaming import StreamingContext# 创建Spar…...
高效实现 Markdown 转 PDF 的跨平台指南20250117
高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐,但如何将其转换为易于分享和打印的 PDF 格式,是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法,并探讨…...
冯诺依曼架构和哈佛架构的主要区别?
冯诺依曼架构(Von Neumann Architecture)和哈佛架构(Harvard Architecture)是两种计算机体系结构,它们在存储器组织、指令处理和数据存取等方面有明显的不同。以下是它们的主要区别: 1.存储器结构 冯诺依曼…...
AI 新动态:技术突破与应用拓展
目录 一.大语言模型的持续进化 二.AI 在医疗领域的深度应用 疾病诊断 药物研发 三.AI 与自动驾驶的新进展 四.AI 助力环境保护 应对气候变化 能源管理 后记 在当下科技迅猛发展的时代,人工智能(AI)无疑是最具影响力的领域之一。AI 技…...
Java锁 从乐观锁和悲观锁开始讲 面试复盘
目录 面试复盘 Java 中的锁 大全 悲观锁 专业解释 自我理解 乐观锁 专业解释 自我理解 悲观锁的调用 乐观锁的调用 synchronized和 ReentrantLock的区别 相同点 区别 详细对比 总结 面试复盘 Java 中的锁 大全 悲观锁 专业解释 适合写操作多的场景 先加锁可以…...
【RabbitMq】RabbitMq高级特性-延迟消息
延迟消息 什么是延迟消息死信交换机延迟消息插件-DelayExchange其他文章 什么是延迟消息 延迟消息:发送者发送消息时指定一个时间,消费者不会立刻收到消息,而是在指定时间之后才收到消息。 延迟任务:设置在一定时间之后才执行的任…...
MindAgent:基于大型语言模型的多智能体协作基础设施
2023-09-18 ,加州大学洛杉矶分校(UCLA)、微软研究院、斯坦福大学等机构共同创建的新型基础设施,目的在评估大型语言模型在游戏互动中的规划和协调能力。MindAgent通过CuisineWorld这一新的游戏场景和相关基准,调度多智…...
Linux内存管理(Linux内存架构,malloc,slab的实现)
文章目录 前言一、Linux进程空间内存分配二、malloc的实现机理三、物理内存与虚拟内存1.物理内存2.虚拟内存 四、磁盘和物理内存区别五、页页的基本概念:分页管理的核心概念:Linux 中分页的实现:总结: 六、伙伴算法伙伴算法的核心…...
【机器学习实战中阶】比特币价格预测
比特币价格预测项目介绍 比特币价格预测项目是一个非常有实用价值的机器学习项目。随着区块链技术的快速发展,越来越多的数字货币如雨后春笋般涌现,尤其是比特币作为最早的加密货币,其价格波动备受全球投资者和研究者的关注。本项目的目标是…...
【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例
在Java应用程序的性能调优和故障排查中,jmap(Java Memory Map)是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况,生成堆转储文件(Heap Dump),并查看内存中的对象分布。无论是内…...
使用vscode在本地和远程服务器端运行和调试Python程序的方法总结
1 官网下载 下载网址:https://code.visualstudio.com/Download 如下图所示,可以分别下载Windows,Linux,macOS版本 历史版本下载链接: https://code.visualstudio.com/updates 2 安装Python扩展工具 打开 VS Code,安装 Microsoft 提供的官…...
AI 编程工具—Cursor 对话模式详解 Chat、Composer 与 Normal/Agent 模式
Cursor AI 对话模式详解:Chat、Composer 与 Normal/Agent 模式 一、简介 Cursor 是一个强大的 AI 辅助编程工具,它提供了多种对话模式来满足不同的开发需求。主要包括: Chat 模式:直接对话交互Composer 模式:结构化编程助手Normal/Agent 模式:不同的 AI 响应策略打开Ch…...
【MySQL】数据库基础知识
欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】数据库基础知识 发布时间:2025.1.21 隶属专栏:MySQL 目录 什么是数据库为什么要有数据库数据库的概念 主流数据库mysql的安装mysql登录使用一下mysql显示数据库内容创建一个数据库创…...
ChatGPT开发教程指南
ChatGPT开发教程指南 一、ChatGPT 概述二、开发环境搭建(一)硬件要求(二)软件要求 三、开发流程(一)数据处理(二)模型选择与训练(三)接口开发 四、示例代码 随…...
OpenEuler学习笔记(四):OpenEuler与CentOS的区别在那里?
OpenEuler与CentOS的对比 一、基本信息 起源与背景: OpenEuler:由华为发起,后捐赠给开放原子开源基金会,旨在构建一个开放、多元化的云计算和边缘计算平台,以满足华为及其他企业的硬件和软件需求。CentOS:…...