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

概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?

随着容器技术的日渐成熟,不少企业用户都对应用系统开展了容器化改造。而在容器基础架构层面,很多运维人员都更熟悉虚拟化环境,对“容器圈”的各种概念容易混淆:容器就是 Kubernetes 吗?容器云又是什么?容器怎么部署?裸金属和物理机有什么区别?容器虚拟化和虚拟化容器是一个东西吗?他们都算云原生吗?......为了帮助大家更好地理解容器基础架构层面的各种技术、选择适合自己的容器平台搭建方案,本文将针对 9 个容器热门概念进行解读和区分。

概括版

  • 云原生:专为充分利用和实现云计算特性而生(的技术/产品),围绕容器技术进行发展。

  • 容器:操作系统级虚拟化技术,“操作系统解耦”特性使得容器更具敏捷和可移植性。

  • Kubernetes:使用最为广泛的容器编排平台,可以大规模、自动化实现很多容器部署、管理和扩展等方面的操作。

  • 容器管理(软件/平台):简化 Kubernetes 的管理与运维操作,提升容器环境整体的管理效率。

  • 容器-虚拟化融合:目前一些企业用户可能同时在使用容器和虚拟化,“容器-虚拟化融合”技术能够实现两个环境互联互通、统一管理、统一调度,降低混合环境运维管理负担。主流技术有以下两种:

    • 容器虚拟化:在 Kubernetes 集群中创建、运行、管理虚拟机,以 KubeVirt 为代表。

    • 虚拟化容器:在虚拟化环境中部署、运行、管理容器和虚拟机,以 VMware Tanzu 和 SmartX SKS 为代表。

  • 容器云:以云化交付的形式提供的容器平台,一般包含 IaaS 层和 PaaS 层能力。

  • 裸金属:云化交付的物理服务器,在使用 Kubernetes 时,“裸金属“也可表示以物理机作为运行环境,与基于虚拟化环境运行 Kubernetes 进行对比。

概念全景图 

云原生(Cloud Native)

根据 Gartner 在《中国 IT 基础设施技术成熟度曲线,2024》中的定义,云原生即“专为充分利用和实现云计算特性而生”,这些特性既包括一部分云计算的原始定义,也包括以服务形式提供的功能。

因此,“云原生”是一个比较包容的概念,Gartner 也提到,目前用户对“云原生”有两种常见的理解:一种是“cloud-service-provider-native”,由云服务商原生的技术或产品;另一种是“container-native”,专为容器环境原生的技术或产品。其中,后面这种理解更符合“云原生”的初衷,也得到更多人的使用。在这种理解下,“云原生”技术/产品充分发挥容器、服务网格、基础设施自动化、CI/CD 等技术特性,加速并简化应用程序生命周期,从而提升 IT 生产力和敏捷性。

容器(Container)

参考 Kubernetes 指南的定义,容器是“一种便携式、轻量级的操作系统级虚拟化技术。它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行”。

容器 vs 虚拟化

与“软硬件解耦”的虚拟化技术不同,容器技术只对操作系统以上的层级进行虚拟化,容器间共享操作系统,在“硬件解耦”的同时实现了“操作系统解耦”,使得容器能够灵活地在多种运行环境间迁移(包括私有云、公有云、虚拟化、物理机等),获得超越虚拟机的敏捷性、数据一致性和可移植性,加快企业 IT 技术发展和业务效率。

云原生 vs 容器

容器是云原生技术发展的基石,但并不是所有支持容器/能在容器环境中使用的技术都是“云原生”技术。例如,用户可以采用本地磁盘/外置集中式存储为容器环境提供存储服务,但本地磁盘并不算是“云原生存储”。

Kubernetes(K8s)

Kubernetes 是一个开源容器编排平台,也是目前使用最为广泛的容器编排平台,由云原生计算基金会(CNCF)进行管理。以容器运行应用程序,传统的运维方式要求运维人员同时管理数个容器的创建、销毁、迁移、扩容等动作,非常耗费时间和精力。Kubernetes 能够帮助运维人员,将部署、管理和扩展容器化应用过程中涉及的许多手动操作以自动化的方式完成,提供的服务包括服务发现和负载均衡、存储编排、自动部署和回滚、资源计算、自我修复、密钥管理、水平扩展等,有效降低容器部署与运维难度,提高应用开发和交付速度。

Kubernetes 以集群的方式进行部署,每个 Kubernetes 集群由一个控制平面(Control Plane)和一个或多个工作节点(Node)组成,其中控制平面用来管理集群的整体状态,Node 是真正运行容器的主机,以 Pod 进行容器的管理。

Kubernetes vs Docker

Docker 是一个开源平台,进一步对容器进行了封装,以便各个进程相互独立运行。Docker 可以作为独立平台部署,也可被用作由 Kubernetes 编排的容器运行时(container runtime),将 Docker 在所有节点上对所有容器执行的操作进行自动化处理。Docker 和 Kubernetes 可以搭配使用,开发人员往往会使用 Docker 来建立和操作容器映像,使用 Kubernetes 进行大规模的容器编排。举例来说就是,容器是一个个集装箱,Docker 是装载集装箱的货船,Kubernetes 将货船组成同一个舰队,而更上层的容器管理服务(见下)就是码头的调度。

容器管理(Container Management)

虽然 Kubernetes 能够帮助用户轻松地进行容器编排,但其学习成本较高,原生 Kubernetes 也只支持命令行模式(Kubectl),对于一些习惯了虚拟化图形式操作界面的运维人员并不友好,带来了较大的管理难度。因此,一些厂商提供了容器管理软件/平台,简化 Kubernetes 的管理与运维操作,帮助用户高效进行容器管理。

根据 Gartner 在《中国 IT 基础设施技术成熟度曲线,2024》中的描述,容器管理平台的主要功能包括编排和调度、服务发现和注册、镜像注册表、路由和网络、服务目录、管理用户界面以及 API。借助这些能力,企业能够更加轻松地管理、扩展基于微服务的应用程序,加速实现应用云原生架构和基础设施现代化转型。不过,目前国内很多容器管理产品和云原生生态系统严重依赖开源技术,建议用户(尤其是对数据合规性要求严格的企业)仔细甄别产品能力和潜在安全风险。

Kubernetes vs 容器管理

容器管理软件/平台一般构建在 Kubernetes 之上,协助进行 Kubernetes 集群生命周期的自动化管理,如自动化完成 Kubernetes 集群创建、删除、更新、扩缩容等原本流程繁琐的重复性操作。另外,针对混合环境带来的应用交互与管理难题,一些容器管理服务/软件(如 SKS)还可帮助企业实现多个应用运行环境(如虚拟化和容器环境)的统一管理与网络互通。欲深入了解中国容器管理产品现状与挑战,请阅读:趋势分享|Gartner解读中国企业容器管理新挑战:混合环境、容器安全、AI支持。

容器-虚拟化融合

目前,企业内部虽然越来越倾向于以容器化的方式部署新的业务应用,但仍有不少应用系统需要运行在虚拟机上,如难以容器化改造的传统应用系统、容器化后会大大增加运维复杂度的一些有状态应用等。因此,不少用户会在未来 3-5 年内存在虚拟化与容器环境共存的情况。但这两个环境往往难以统一管理,应用网络也难以互联互通,资源使用也不能统一调度(详见往期文章),这些挑战就催生了两种主要的“容器-虚拟化融合”技术。

容器虚拟化(VM in Container)

在 Kubernetes 集群中创建、运行、管理虚拟机,以 KubeVirt 为代表。这种方案下,Kubernetes 部署在裸金属上,用户使用 Kubernetes API 对 Kubernetes 集群上的容器和虚拟机进行统一管理,降低学习成本。

虚拟化容器(Coexist)

在虚拟化环境中部署、运行、管理容器和虚拟机,以 VMware Tanzu 和 SmartX SKS 为代表。这种方案下,用户部署虚拟化/超融合平台运行虚拟机,Kubernetes 集群构建在其中一部分虚拟机之上,用户通过管理平台对 Kubernetes 集群和虚拟机进行统一管理。

容器虚拟化 vs 虚拟化容器

可以看到,“容器虚拟化”和“虚拟化容器”这两种方案的主要区别在于主要运行环境,具体架构对比见下图。根据 Gartner《容器技术成熟度曲线报告》,容器虚拟化方案仍处于技术起步期,距离成熟的市场应用还有很长(5-10 年)的时间,目前比较适合具备专业技术能力的用户在测试环境使用。而虚拟化容器方案不仅基于更成熟的虚拟化/超融合技术,而且具备更高的基础设施融合度、更广泛的高级虚拟化特性和设备支持,以及更稳定可靠的存储能力,因此更适合用户在现阶段采用,以支持生产环境中的虚拟化容器融合部署。

左:虚拟化容器方案 右:容器虚拟化方案

容器云(Cloud Container)

为了帮助用户更方便地获得容器优势、简化 IaaS 层的各种运维管理负担,一些厂商可以以云化交付的形式提供容器平台(一般包含 IaaS 层和 PaaS 层能力),用户可以基于符合兼容性的自有平台和设备部署容器云,在其上直接运行容器化应用,无需管理和运维容器基础架构层面的软硬件。常见的容器云包括 AWS、灵雀云等。

容器 vs 容器云 vs 容器管理

如前所述,容器是一种操作系统级别的虚拟化技术,为云原生/云计算提供敏捷能力,但容器本身可以在本地进行部署,并不一定以云的方式进行交付。“容器云”则是一个云化平台,以云的方式交付容器服务。一些容器云(PaaS)厂商可提供 IaaS 层容器管理的能力,用户也可使用 IaaS 厂商的容器管理服务/软件,以获取相对更完善的容器管理能力。

裸金属(Bare Metal)

裸金属是英文“Bare Metal”的直接翻译,有两种常见用法:

  • 裸金属服务器/裸金属云:云化交付的物理服务器,仅提供给单一用户/租户使用。裸金属服务器通常允许用户自行配置和管理操作系统、虚拟化层、中间件、应用层等,厂商负责提供、管理和运维裸金属物理服务器(含计算、存储和网络)。
  • 裸金属(Kubernetes 集群):在使用 Kubernetes 时,不少用户会将“裸金属”和“物理机”混淆使用,以“裸金属 Kubernetes 集群”表达采用物理机部署 Kubernetes 集群的意思。此时,“裸金属”仅表示以物理机作为运行环境,并不一定具备公有云属性。

裸金属 vs 物理机 vs 虚拟化

使用 Kubernetes 时,用户既可以将 Kubernetes 部署在物理机上,也可以部署在虚拟机上,两者的架构区别如下图所示。“裸金属 Kubernetes 集群”表达的含义与“物理机 Kubernetes 集群”相同。虚拟化和物理机环境运行 Kubernetes 在性能、稳定性、扩展能力、安全性、成本等方面都各有千秋,一些用户也可能会采用混合部署的方式,同时以物理机和虚拟机部署 Kubernetes 集群。欲深入了解两种部署环境的差异和混合部署的方案,请阅读:

  • 虚拟化 vs. 裸金属:K8s 部署环境架构与特性对比
  • 适合在虚拟化环境中部署 Kubernetes 的三个场景

 

为了帮助用户更简单、灵活、便捷地使用容器带来的各种优势,专业的现代化 IT 基础设施产品与解决方案提供商——志凌海纳 SmartX——推出了生产级容器管理与服务产品 SMTX Kubernetes 服务和虚拟化容器融合基础设施方案,帮助用户基于一套超融合基础设施实现虚拟机集群、虚拟机 Kubernetes 集群与物理机 Kubernetes 集群的统一管理,满足多种应用系统对于基础设施资源的不同需求。 

您还可点击下方链接,下载电子书《IT 基础架构团队的 Kubernetes 管理:从入门到评估》,了解更多 Kubernetes 管理与运维的干货知识! 

《IT 基础架构团队的 Kubernetes 管理:从入门到评估》icon-default.png?t=O83Ahttps://mobile.smartx.com/p/6c2769

相关文章:

概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?

随着容器技术的日渐成熟,不少企业用户都对应用系统开展了容器化改造。而在容器基础架构层面,很多运维人员都更熟悉虚拟化环境,对“容器圈”的各种概念容易混淆:容器就是 Kubernetes 吗?容器云又是什么?容器…...

分层架构 IM 系统之架构演进

在电商业务日活几百万的情况下,IM 系统采用分层架构方式,如下图。 分层架构的 IM 系统,整体上包含了【终端层】、【入口层】、【业务逻辑层】、【路由层】、【数据访问层】和【存储层】,我们在上篇文章(分层架构 IM 系…...

公司金融期末考试题目

公司金融期末考试题 选择题 1.现金折扣和信用条件(教材P253) 题目类似: 下列不属于信用条件的是()。 现金折扣 数量折扣信用期限 折扣期限 给定的信用条件为"1/10,n/40",则其含义…...

Dev C++ 配置C99标准

这里写自定义目录标题 Dev C 配置C99标准 Dev C 配置C99标准 选择工具-编译选项-编译器-编译时加入以下命令-确定即可 -stdc99...

ubuntu安装Eclipse

版本 ubuntu16.04 64bitEclipse 2019-12 (太高容易崩溃)下载:wget https://archive.eclipse.org/technology/epp/downloads/release/2019-12/R/eclipse-java-2019-12-R-linux-gtk-x86_64.tar.gzjdk安装 将jdk1.8.0_211-linux-x64.tar.gz解压到…...

Android 网络请求(一)初识HTTP网络通信

学习笔记 代码样例 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class HttpURLConnectionExample {public String getDataFromServer() {String result ""; // 存储请求返…...

AIOps案例剖析 | 告警收敛增强:相似告警由千化一

业务规模的指数级增长、稳敏双态共存以及云上云下架构复杂化是近几年企业客户运维部门的最大头疼点,其中告警风暴这一现象在传统AIOps的工作形式下尤难处理。 一、案例背景 某大型企业在过去一年中,业务规模实现了翻倍增长,伴随着业务的迅速…...

压缩感知理论

一、概念理解 压缩感知是什么 压缩感知(Compressed Sensing,CS)是一种基于稀疏表示的采样理论,是一种革命性的信号处理方法,它通过利用信号的稀疏性,在远低于传统采样要求的速率下捕获和重构信号。 信号的稀疏性和压缩感知的关系 信号的稀疏…...

深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验

目录 一、模型构建 1.1残差单元 1.2 残差网络的整体结构 二、统计模型的参数量和计算量 三、数据预处理 四、没有残差连接的ResNet18 五、带残差连接的ResNet18 附:完整的可运行代码 实验大体步骤: 先前说明: 上次LeNet实验用到的那…...

关于SpringBoot集成Kafka

关于Kafka Apache Kafka 是一个分布式流处理平台,广泛用于构建实时数据管道和流应用。它能够处理大量的数据流,具有高吞吐量、可持久化存储、容错性和扩展性等特性。 Kafka一般用作实时数据流处理、消息队列、事件架构驱动等 Kafka的整体架构 ZooKeeper:…...

windows C#-取消任务列表(上)

如果不想等待异步控制台应用程序完成,可以取消该应用程序。 通过遵循本文的示例,可将取消添加到下载网站内容的应用程序。 可通过将 CancellationTokenSource 实例与每个任务进行关联来取消多个任务。 如果选择 Enter 键,则将取消所有尚未完成…...

RabbitMQ4:work模型

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

《筑牢安全防线:培养 C++安全编程思维习惯之道》

在当今数字化飞速发展的时代,软件安全的重要性已提升到前所未有的高度。C作为一种广泛应用于系统开发、游戏制作、高性能计算等众多领域的编程语言,其程序的安全性更是关乎重大。培养 C安全编程的思维习惯,不仅是开发者个人能力提升的关键&am…...

Python Flask中集成SQLAlchemy和Flask-Login

在现代Web应用开发中,数据库和用户认证是两个非常重要的功能。Flask作为一个轻量级的Python Web框架,本身只提供了最基本的Web功能。但是,它可以通过集成各种优秀的扩展库来增强功能。本文将介绍如何在Flask应用中集成SQLAlchemy(数据库)和Flask-Login(用户认证),并提供一个完整…...

Kafka 生产者优化与数据处理经验

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)

判断注入类型 a OR 1 1# 发现没有报错 ,说明单引号不是闭合类型 测试别的注入条件 a) OR 1 1# a)) OR 1 1# a" OR 11 发现可以用双引号闭合 发现是")闭合 之后的流程还是与11关一样 爆破显示位 先抓包 是post传参,用hackbar来传参 unam…...

Spring |(二)IoC相关内容 | bean

文章目录 📚bean基础配置🐇bean的id和class🐇bean的name属性🐇bean作用范围scope配置🐇bean基础配置小结 📚bean实例化🐇构造方法实例化(常用)🐇静态工厂实例…...

flux的版本

1.flux1-dev.safetensors https://huggingface.co/black-forest-labs/FLUX.1-devhttps://huggingface.co/black-forest-labs/FLUX.1-dev原生的23.8G的模型。原生12B的模型,float16的。需要配合ae.safetensors,flux1-dev.safetensors以及clip-l和T5的权重使用,注意ae.sft和f…...

基于Springboot+Vue的房屋系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...

【Bluedroid】A2DP SINK播放流程源码分析

在Bluedroid协议栈中,A2DP(Advanced Audio Distribution Profile)SINK播放流程是一个复杂但有序的过程,它涉及多个层次和组件的交互。 一、概述 1.1. 初始化流程 在A2DP SINK播放之前,系统需要进行一系列初始化操作,以确保A2DP SINK服务能够正确运行。这些操作包括启动…...

【什么是Redis?】

Redis:高性能内存数据库的深度探索 在当今这个数据驱动的世界里,数据库的选择直接关系到应用程序的性能、可扩展性和可靠性。在众多数据库解决方案中,Redis以其卓越的性能、丰富的数据结构和灵活的使用场景脱颖而出,成为众多开发…...

TCL大数据面试题及参考答案

Mysql 索引失效的场景 对索引列进行运算或使用函数:当在索引列上进行数学运算、函数操作等,索引可能失效。例如,在存储年龄的列上建立了索引,若查询语句是 “SELECT * FROM table WHERE age + 1 = 20”,这里对索引列 age 进行了加法运算,数据库会放弃使用索引而进行全表扫…...

提高总线数据传输率

提高总线数据传输率是一个涉及多个方面的技术问题,以下是一些有效的方法: 一、提高总线时钟频率 总线时钟频率是影响总线传输速率的重要因素之一。通过提高总线时钟频率,可以缩短每个时钟周期的时间,从而在相同的时间内传输更多…...

_FYAW智能显示控制仪表的简单使用_串口通信

一、简介 该仪表可以实时显示位移传感器的测量值,并可设定阈值等。先谈谈简单的使用方法,通过说明书,我们可以知道长按SET键可以进入参数选择状态,按“↑”“↓”可以选择该组参数的上一个或者下一个参数。 从参数一览中可以看到有…...

图的遍历。

图的遍历这一部分,离不开广度优先和深度优先,如果大家已经学过搜索算法的话,这部分将是易如反掌。 万能搜索算法-CSDN博客 文章中不会提太多离散数学中图的专有名词,因为本篇博客只涉及最简单的图的遍历,故以练习题为主…...

Methode Electronics EDI 需求分析

Methode Electronics 是一家总部位于美国的全球性技术公司,专注于设计和制造用于多个行业的电子和电气组件,产品涵盖汽车、工业、电信、医疗设备以及消费电子等多个领域,提供创新的解决方案。 填写Methode_EDI_Parameters_Template Methode_…...

IT资产管理工具-NetBox

IT资产管理工具-NetBox 推荐一款IT资产管理工具 了解推荐阅读官方中文文档 https://docs.wangluohe.com/introduction/ 硬件要求 ​ - 建议4Core 8G以上,100G存储空间 这里我使用的Linux镜像为 CentOS8-Stream 提前关闭Selinux和防火墙 部署NetBox 一&#…...

uniapp接入BMapGL百度地图

下面代码兼容安卓APP和H5 百度地图官网:控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...

AWTK 最新动态:支持鸿蒙系统(HarmonyOS Next)

HarmonyOS是全球第三大移动操作系统,有巨大的市场潜力,在国产替代的背景下,机会多多,AWTK支持HarmonyOS,让AWTK开发者也能享受HarmonyOS生态的红利。 AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C…...

React基础知识一

写的东西太多了,照成csdn文档编辑器都开始卡顿了,所以分篇写。 1.安装React 需要安装下面三个包。 react:react核心包 react-dom:渲染需要用到的核心包 babel:将jsx语法转换成React代码的工具。(没使用jsx可以不装)1.1 在html中…...

Oracle热备过程中对数据库崩溃的处理方法

引言 在热备过程中如果发生数据库崩溃、断电等情况该如何处理? 如果正在备份 users 表空间的数据文件过程中,此时的数据文件表头 SCN 会被锁定,此时正在复制数据文件时数据库崩溃,系统断电。 从而导致数据文件表头与控制文件中的不一致,导致数据库无法打开,会要求介质恢…...

身份证实名认证API接口助力电商购物安全

亲爱的网购达人们,你们是否曾经因为网络上的虚假信息和诈骗而感到困扰?在享受便捷的网购乐趣时,如何确保交易安全成为了我们共同关注的话题。今天,一起来了解一下翔云身份证实名认证接口如何为电子商务保驾护航,让您的…...

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径: (1)计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings (2)按照格式,创建文件命名: FlightSettingsMaxPauseDays (3&…...

运维百科:网络性能20大关键指标

网络性能评估是确保网络服务质量和用户体验的关键环节。在网络、运维领域中,存在着一系列关键的性能指标,共同构成了衡量网络性能的基础。以下是网络性能的20大关键指标,每个指标都承载着特定的意义和重要性。 1.速率(Rate&#…...

java编程开发基础,正则表达式的使用案例Demo

java编程开发基础,正则表达式的使用案例Demo!实际开发中,经常遇到一些字符串,信息的裁剪和提取操作,正则表达式是经常使用的,下面的案例,可以帮助大家快速的了解和熟悉,正则表达式的使用技巧。 package com…...

结构控制

目录​​​​​​​ 1.顺序结构 2.分支结构 2.1.单分支结构 2.2.二分支结构 2.3.多分支结构 2.4.嵌套分支结构 3.循环结构 3.1.while 循环结构 3.2.while...else 循环结构 PS:break 关键字 PS:pass 关键字 3.3.for 循环结构 PS:…...

Go语言中的内存分配与初始化:new与make函数详解

在Go语言中,内存分配和初始化是编程的基础操作。Go提供了两个内置函数new和make,用于不同场景下的内存分配和初始化。理解这两个函数的区别和适用场景对于编写高效、安全的Go代码至关重要。本文将详细介绍new和make函数,并提供示例说明它们的…...

The 2024 ICPC Kunming Invitational Contest

VP链接:https://codeforces.com/gym/105386 B. Gold Medal 签到题。对每一个读入的数 a,先记录已有奖牌数量,即 ,再将 a 对 k 取模。然后将 a 数组从大到小排序,将每个不足 k 的数补到 k。如果 m 有剩余,…...

对原jar包解压后修改原class文件后重新打包为jar

文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…...

【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究

ReadFile 函数概述 ReadFile 是 Windows API 函数,用于从文件或设备(如串口、硬盘等)中读取数据。它是同步和异步 I/O 操作的基础函数。 函数原型 BOOL ReadFile(_In_ HANDLE hFile, // 文件或设备句柄_Out_write…...

WebGL进阶(十一)层次模型

理论基础&#xff1a; 效果&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架&#xff0c;以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发&#xff0c;旨在简化Web应用的开发过程。作为一个开放源代码项目&#xff0c;Django迅速吸引了大量的开发…...

C++设计模式行为模式———中介者模式

文章目录 一、引言二、中介者模式三、总结 一、引言 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 中介者模式可以减少对象之间混乱无序的依赖关系&…...

Perfetto学习大全

Perfetto 是一个功能强大的性能分析和追踪工具&#xff0c;主要用于捕获和分析复杂系统中的事件和性能数据&#xff0c;特别是在 Android 和 Linux 环境下。它的核心目标是帮助开发者深入了解系统和应用程序的运行状态&#xff0c;以便优化性能和诊断问题。 Perfetto的主要作用…...

管家婆财贸ERP BR040.销售单明细表变更

最低适用版本&#xff1a; C系列 23.8 插件简要功能说明&#xff1a; 销售明细表支持直接修改单据自由项1-16更多细节描述见下方详细文档 插件操作视频&#xff1a; 进销存类定制插件--销售单明细表变更 1. 应用中心增加菜单【销售单明细表变更】 a. 复制23.8版本销售单明细…...

2411rust,实现特征

原文 在Rust2024中,impl Trait在中位置的默认工作方式有了变化.是为了简化impl Trait,以更好地匹配人们一般的需求. 还添加了一个灵活的语法,让你需要时可完全控制. 从Rust2024开始,一直在更改,何时可在返回位置impl Trait的隐藏类型中使用泛型参数的规则: 1,即对返回位置i…...

SpringBoot3与JUnit5集成测试

你可以在 Spring Boot 3 中轻松设置和运行 JUnit 集成测试。合理使用 Spring 提供的注解和工具&#xff0c;可以确保测试的高效性和可靠性。以下是集成测试的步骤和示例&#xff1a; 1. 添加依赖 在 pom.xml 中添加 Spring Boot Starter Test 依赖&#xff0c;它包含 JUnit 5 …...

工程企业需要什么样的物资管理系统?为什么需要物资管理系统?

一、背景与意义 在工程项目的建设中&#xff0c;无论是高楼大厦的拔地而起&#xff0c;还是高速公路的绵延铺展&#xff0c;物资都是最基础的要素之一。从钢筋水泥到施工机械&#xff0c;任何一种物资的管理不善都可能导致项目延误、成本超支&#xff0c;甚至质量问题。然而&a…...

Vue + Websocket播放PCM(base64转ArrayBuffer、 字符串转ArrayBuffer)

文章目录 引言I 音视频处理相关概念和APIII 案例:基于开源库 pcm-player方式播放借助MediaSource和Audio对象播放音频流。基于原生api AudioContext 播放操作III 格式转换js字符串转ArrayBufferbase64 转 ArrayBufferIV 解决pcm-player分片播放问题引言 需求: 基于webscoket传…...

华为防火墙技术基本概念学习笔记

1.防火墙概述 1.1防火墙与交换机、路由器对比 路由器与交换机的本质是转发&#xff0c;防火墙的本质是控制。 防火墙与路由器、交换机是有区别的。路由器用来连接不同的网络&#xff0c;通过路由协议保证互联互通&#xff0c;确保将报文转发到目的地;交换机则通常用来组建局域…...