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

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录

一、起源与背景

1.1 Google的内部项目

1.2 Omega的出现

二、Kubernetes的诞生

2.1 开源的决策

2.2 初期发布

三、Kubernetes的发展历程

3.1 社区的成长

3.2 生态系统的壮大

3.3 重大版本和功能

3.4 多云和混合云的支持

四、Kubernetes的核心概念

4.1 Pod

4.2 节点和集群

4.3 控制器

4.4 服务和负载均衡

4.5 存储和持久化

五、Kubernetes的应用场景

5.1 微服务架构

5.2 DevOps和CI/CD

5.3 大数据和AI应用

5.4 边缘计算

六、Kubernetes的未来

6.1 社区的持续发展

6.2 与其他技术的集成

6.3 性能和安全的提升

七、Kubernetes的关键技术和工具

7.1 网络插件和CNI

7.2 存储插件和CSI

7.3 Helm

7.4 Istio和服务网格

7.5 Operator框架

7.6 Prometheus和监控

7.7 Jaeger和分布式追踪

八、Kubernetes的最佳实践

8.1 资源请求和限制

8.2 配置管理

8.3 滚动更新和回滚

8.4 健康检查和自动重启

8.5 自动扩展

九、Kubernetes的挑战和未来方向

9.1 性能优化

9.2 安全性

9.3 多集群管理

9.4 边缘计算和物联网

9.5 无服务器架构

结语


容器化技术的发展为现代软件开发和部署带来了革命性的改变。而在容器编排领域,Kubernetes(简称K8s)无疑是其中的佼佼者。Kubernetes自诞生以来,已经成为云原生应用的核心支柱。本文将详细介绍Kubernetes的发展历史,从其起源到成为当前行业标准的整个历程。

一、起源与背景

1.1 Google的内部项目

Kubernetes的起源可以追溯到Google的内部项目。2003年,Google开始开发一个名为Borg的集群管理系统。Borg的主要目的是在大规模集群环境中管理和调度海量的计算任务。Borg的成功为Google的基础设施提供了强大的支持,使其能够高效地运行数以千万计的容器。

1.2 Omega的出现

在Borg之后,Google又开发了另一个名为Omega的集群管理系统。Omega的设计更加灵活,采用了一个基于事务的调度系统。尽管Omega并没有完全取代Borg,但它为Google在集群管理方面提供了更多的经验和教训。

二、Kubernetes的诞生

2.1 开源的决策

2014年,Google决定将其在容器管理方面的经验分享给社区,并启动了一个名为Kubernetes的开源项目。Kubernetes的设计理念深受Borg和Omega的影响,但它是一个全新的系统,专为开源社区和多云环境设计。

2.2 初期发布

Kubernetes的首个版本(v1.0)于2015年7月正式发布。这个版本标志着Kubernetes从一个内部项目转变为一个公开的开源项目。Kubernetes v1.0的发布伴随着Cloud Native Computing Foundation(CNCF)的成立。CNCF的目标是促进云原生技术的发展,而Kubernetes则成为其第一个托管项目。

三、Kubernetes的发展历程

3.1 社区的成长

Kubernetes的成功离不开其强大的社区支持。从一开始,Kubernetes项目就吸引了大量的开发者和企业的关注。社区的快速成长使得Kubernetes能够快速迭代和改进。每年,Kubernetes都会发布多个新版本,每个版本都带来新的特性和改进。

3.2 生态系统的壮大

随着Kubernetes的普及,一个庞大的生态系统也随之形成。许多公司开始开发与Kubernetes兼容的工具和平台,例如容器网络插件(CNI)、容器存储接口(CSI)等。这些工具和平台极大地扩展了Kubernetes的功能,使其能够适应各种复杂的应用场景。

3.3 重大版本和功能

  • v1.2(2016年3月):引入了Horizontal Pod Autoscaler(HPA),使得Kubernetes能够根据资源使用情况自动扩展Pod的数量。
  • v1.5(2016年12月):增加了StatefulSet,用于管理有状态应用。
  • v1.6(2017年3月):引入了RBAC(Role-Based Access Control),增强了安全性。
  • v1.9(2017年12月):引入了Device Plugin框架,使得Kubernetes能够支持更多类型的硬件资源。
  • v1.12(2018年9月):增加了对容器运行时接口(CRI)的支持,使得Kubernetes能够与多种容器运行时兼容。
  • v1.14(2019年3月):引入了Topology Manager,优化了多节点集群中的资源分配。
  • v1.16(2019年9月):引入了Custom Resource Definition(CRD)的新版本,使得用户能够更灵活地扩展Kubernetes API。
  • v1.18(2020年3月):增加了对Windows节点的支持,扩大了Kubernetes的适用范围。

3.4 多云和混合云的支持

Kubernetes的设计初衷就是为了支持多云环境。随着时间的推移,越来越多的云服务提供商开始提供托管的Kubernetes服务,例如Google Kubernetes Engine(GKE)、Amazon Elastic Kubernetes Service(EKS)和Azure Kubernetes Service(AKS)。这些服务使得用户能够更加方便地在不同的云环境中部署和管理Kubernetes集群。

四、Kubernetes的核心概念

4.1 Pod

Pod是Kubernetes中最小的部署单元。一个Pod可以包含一个或多个容器,这些容器共享网络和存储资源。Pod的设计使得应用能够更加灵活地部署和扩展。

4.2 节点和集群

一个Kubernetes集群由多个节点组成,每个节点都是一个运行着容器的物理机或虚拟机。集群中的每个节点都由一个主节点(Master Node)进行管理,主节点负责调度和管理所有的Pod。

4.3 控制器

控制器是Kubernetes中实现自我修复和自动化管理的核心组件。常见的控制器包括Replication Controller、Deployment、StatefulSet和DaemonSet等。这些控制器负责确保应用的状态符合预期。

4.4 服务和负载均衡

Kubernetes中的服务(Service)用于将一组Pod暴露为一个网络服务。服务提供了负载均衡和服务发现的功能,使得应用能够在集群内部或外部访问。

4.5 存储和持久化

Kubernetes支持多种存储卷类型(Volume),包括本地存储、网络存储和云存储。持久化存储使得有状态应用能够在Pod重启或迁移时保留数据。

五、Kubernetes的应用场景

5.1 微服务架构

Kubernetes非常适合部署和管理微服务架构。其自动化的部署、扩展和管理能力使得开发者能够更加专注于业务逻辑,而不必担心底层基础设施。

5.2 DevOps和CI/CD

Kubernetes与DevOps和CI/CD流程天然契合。通过Kubernetes,开发团队可以实现持续集成和持续部署,快速迭代和发布新版本。

5.3 大数据和AI应用

Kubernetes也被广泛应用于大数据和AI领域。通过Kubernetes,用户可以轻松部署和管理大数据处理框架(如Apache Spark)和机器学习平台(如TensorFlow)。

5.4 边缘计算

随着物联网(IoT)和边缘计算的兴起,Kubernetes也开始在边缘计算场景中发挥作用。通过在边缘设备上运行Kubernetes,用户可以实现边缘计算资源的统一管理和调度。

六、Kubernetes的未来

6.1 社区的持续发展

Kubernetes社区的持续发展将继续推动其技术进步。随着更多企业和开发者的加入,Kubernetes将不断扩展其功能和应用场景。

6.2 与其他技术的集成

Kubernetes将继续与其他云原生技术进行深度集成,如服务网格(Service Mesh)、无服务器计算(Serverless)和边缘计算等。这些技术的结合将进一步增强Kubernetes的能力,使其能够应对更加复杂的应用需求。

6.3 性能和安全的提升

Kubernetes的性能和安全性将继续得到提升。通过优化调度算法、改进网络性能和增强安全机制,Kubernetes将能够更加高效和安全地运行大规模应用。

七、Kubernetes的关键技术和工具

7.1 网络插件和CNI

Kubernetes的网络模型允许Pod之间的通信,同时也需要与外部世界进行交互。为了实现这一点,Kubernetes采用了容器网络接口(CNI)标准。CNI插件允许Kubernetes与多种网络方案集成,如Calico、Flannel、Weave和Cilium等。这些插件各有特点,可以根据具体需求选择适合的方案。

7.2 存储插件和CSI

Kubernetes的容器存储接口(CSI)标准化了存储系统与Kubernetes的集成方式。CSI插件使得Kubernetes能够支持多种存储后端,包括本地存储、网络存储(如NFS和iSCSI)以及云存储(如AWS EBS、GCE PD和Azure Disk)。通过CSI,用户可以灵活地选择和配置存储解决方案,满足不同应用的持久化需求。

7.3 Helm

Helm被称为Kubernetes的包管理器,它简化了应用的部署和管理。通过Helm Chart,用户可以定义、安装和升级复杂的Kubernetes应用。Helm提供了模板化的配置文件,使得应用的部署更加灵活和可重复。Helm的出现极大地降低了Kubernetes应用部署的复杂性,受到了广泛的欢迎。

7.4 Istio和服务网格

Istio是一个开源的服务网格(Service Mesh)项目,它为Kubernetes提供了强大的流量管理和安全功能。通过Istio,用户可以轻松实现服务间的负载均衡、流量控制、安全认证和监控。Istio的引入使得微服务架构的管理变得更加高效和安全。

7.5 Operator框架

Operator是一种扩展Kubernetes原生能力的方法。通过Operator,用户可以将复杂应用的管理和操作逻辑封装成Kubernetes原生的API对象。Operator极大地简化了有状态应用(如数据库、中间件等)的部署和管理。Operator Framework提供了一系列工具和库,帮助开发者快速创建和管理Operator。

7.6 Prometheus和监控

Prometheus是一个开源的监控系统,它与Kubernetes紧密集成。通过Prometheus,用户可以收集和存储Kubernetes集群的各种指标数据,并通过Grafana等工具进行可视化展示。Prometheus的强大查询语言(PromQL)使得用户可以灵活地分析和报警,确保集群的健康运行。

7.7 Jaeger和分布式追踪

Jaeger是一个开源的分布式追踪系统,用于监控和排查微服务架构中的性能问题。通过Jaeger,用户可以追踪请求的整个生命周期,识别和定位性能瓶颈。Jaeger与Kubernetes结合,使得微服务的调试和优化更加直观和高效。

八、Kubernetes的最佳实践

8.1 资源请求和限制

在Kubernetes中,为Pod设置适当的资源请求和限制(CPU和内存)是确保集群稳定性和性能的关键。资源请求定义了Pod运行所需的最小资源量,而资源限制则定义了Pod能够使用的最大资源量。通过合理配置资源请求和限制,可以避免资源争用和过度消耗,确保集群内的所有应用都能平稳运行。

8.2 配置管理

Kubernetes提供了ConfigMap和Secret来管理应用的配置和敏感信息。ConfigMap用于存储非敏感的配置数据,而Secret则用于存储敏感信息(如密码、密钥等)。通过将配置和代码分离,用户可以更加灵活地管理和更新应用配置,提高应用的安全性和可维护性。

8.3 滚动更新和回滚

Kubernetes的Deployment控制器支持滚动更新和回滚功能。滚动更新允许用户在不中断服务的情况下逐步更新应用,确保新版本稳定后再完全替换旧版本。如果新版本出现问题,回滚功能可以快速恢复到上一个稳定版本,减少服务中断时间。

8.4 健康检查和自动重启

Kubernetes支持两种类型的健康检查:Liveness Probe和Readiness Probe。Liveness Probe用于检测Pod是否处于健康状态,如果检查失败,Kubernetes会自动重启该Pod。Readiness Probe用于检测Pod是否已经准备好接受流量,只有通过该检查的Pod才会被加入到负载均衡中。通过健康检查和自动重启机制,Kubernetes能够自动恢复故障,提高应用的可用性。

8.5 自动扩展

Kubernetes的自动扩展功能包括Horizontal Pod Autoscaler(HPA)和Cluster Autoscaler。HPA根据Pod的资源使用情况(如CPU和内存)自动调整Pod的副本数量,而Cluster Autoscaler则根据集群的资源需求自动调整节点的数量。通过自动扩展功能,用户可以灵活应对流量波动,确保应用的性能和可用性。

九、Kubernetes的挑战和未来方向

9.1 性能优化

随着应用规模的不断扩大,Kubernetes的性能优化变得越来越重要。如何在大规模集群中高效调度和管理Pod,如何优化网络和存储性能,都是Kubernetes面临的重要挑战。未来,Kubernetes将继续在性能优化方面进行探索和改进,确保其能够支持更大规模的应用和集群。

9.2 安全性

Kubernetes的安全性一直是社区关注的重点。如何保护集群和应用免受攻击,如何确保数据的安全传输和存储,都是Kubernetes需要解决的问题。未来,Kubernetes将继续加强安全机制,包括身份认证、访问控制、加密等,确保集群和应用的安全性。

9.3 多集群管理

随着Kubernetes的普及,越来越多的企业开始部署多集群环境。如何高效地管理和协调多个Kubernetes集群,是一个新的挑战。未来,Kubernetes将继续在多集群管理方面进行探索,提供更加完善的解决方案,帮助用户简化多集群环境的管理和运维。

9.4 边缘计算和物联网

边缘计算和物联网的兴起,为Kubernetes带来了新的应用场景和挑战。如何在资源受限的边缘设备上高效运行Kubernetes,如何实现边缘设备与中心集群的协同工作,都是需要解决的问题。未来,Kubernetes将继续在边缘计算和物联网领域进行创新,扩展其应用范围。

9.5 无服务器架构

无服务器架构(Serverless)是一种新的计算模式,用户只需关注业务逻辑,而无需管理底层基础设施。Kubernetes与无服务器架构的结合,将为用户提供更加灵活和高效的计算平台。未来,Kubernetes将继续探索与无服务器架构的深度集成,推动这一计算模式的发展。

结语

Kubernetes作为云原生时代的核心技术,已经成为现代应用开发和部署的标准。其强大的功能和灵活的架构,使得开发者能够更加专注于业务逻辑,而不必担心底层基础设施。Kubernetes的发展历程充满了创新和变革,从Google的内部项目到全球开源社区的明星项目,Kubernetes在短短几年内取得了巨大的成功。

未来,随着技术的不断进步和社区的持续努力,Kubernetes必将继续引领云原生应用的发展方向。无论是在性能优化、安全性、多集群管理,还是在边缘计算、物联网和无服务器架构等新兴领域,Kubernetes都有着广阔的前景。让我们共同期待Kubernetes在未来的发展和创新,为现代应用开发和部署带来更多的可能性。

相关文章:

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…...

/proc/config.gz

前言 有时候,我们想知道一个运行着的内核都打开了哪些编译选项,当然,查看编译环境的 .config 文件是一个不错的选择,除此之外,还有没有别的办法呢?当然有,那就是 /proc/config.gz。 一睹风采 …...

论坛万能粘贴手(可将任意文件转为文本)

该软件可将任意文件转为文本。 还原为原文件的方法:将得到的文本粘贴到记事本,另存为UUE格式,再用压缩软件如winrar解压即可得到原文件。建议用于小软件。 下载地址:https://download.csdn.net/download/wgxds/89505015 使用演示…...

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…...

Mybatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)

目录 一、JDBC编程和ORM模型 1. JDBC回顾 2. JDBC的弊端 3. ORM模型 Mybatis和hibernate 区别: 4. mybatis 解决了jdbc 的问题 二、MyBatis简介 1. MyBatis快速开始 1.1 导入jar包 1.2 引入 mybatis-config.xml 配置文件 1.3 引入 Mapper 映射文件 1.3 测试 …...

论文阅读YOLO-World: Real-Time Open-Vocabulary Object Detection

核心: 开放词汇的实时的yolo检测器。重参数化的视觉语言聚合路径模块Re-parameterizable VisionLanguage Path Aggregation Network (RepVL-PAN)实时核心:轻量化的检测器离线词汇推理过程重参数化 方法 预训练方案:将实例注释重新定义为区域…...

SM2的签名值byte数组与ASN.1互转

ASN.1抽象语言标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式,它提供了一整套正规的格式用于描述对象的结构。 一、该结构的应用场景 例如在做待签名的数字信封时,数字信封使用ASN.1封装,这个时…...

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day ,干货很多内容非常硬核,不仅有技术分享学习前沿AI技术,大家在现场还可以动手实践沉浸式体验大模型,另外参与现场活动还可以领取诸多精…...

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档:Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…...

前程无忧滑块

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi …...

一站式uniapp优质源码项目模版交易平台的崛起与影响

一、引言 随着信息技术的飞速发展,软件源码已成为推动行业进步的重要力量。源码的获取、交易和流通,对于开发者、企业以及项目团队而言,具有极其重要的意义。为满足市场对高质量源码资源的迫切需求,一站式uniapp优质源码项目模版…...

Python中vars用法

在 Python 中,vars() 函数返回对象的 __dict__ 属性的字典。这个字典包含了对象的所有属性和它们的值。vars() 函数可以用于模块、类、实例,或者拥有 __dict__ 属性的任何其它对象。这里有几个使用 vars() 的例子: 一.模块 如果对一个模块使…...

【机器学习】基于Transformer的迁移学习:理论与实践

引言 在机器学习领域,迁移学习已成为提升模型训练效率和性能的重要策略,特别是在标注数据稀缺的场景下。Transformer模型自2017年由Google提出以来,在自然语言处理(NLP)领域取得了突破性进展,并逐渐扩展到…...

如何应对情绪和培养理性的书

以下是几本关于如何应对情绪和培养理性的书籍推荐: 《情绪智商》(Emotional Intelligence) - 丹尼尔戈尔曼(Daniel Goleman) 这本书探讨了情绪智商(EQ)的重要性以及如何通过提高EQ来改善个人和职…...

[数据集][目标检测]电缆钢丝绳线缆缺陷检测数据集VOC+YOLO格式1800张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1800 标注数量(xml文件个数):1800 标注数量(txt文件个数):1800 标注…...

【Git 学习笔记】Ch1.1 Git 简介 + Ch1.2 Git 对象

还是绪个言吧 今天整理 GitHub 仓库,无意间翻到了几年前自学 Git 的笔记。要论知识的稳定性,Git 应该能挤进前三——只要仓库还在,理论上当时的所有开发细节都可以追溯出来。正好过段时间会用到 Git,现在整理出来就当温故知新了。…...

Python 中别再用 ‘+‘ 拼接字符串了!

目录 引言 为什么不推荐使用 "" 示例代码 更高效的替代方法 使用 join 方法 示例代码 使用格式化字符串(f-strings) 示例代码 引言 大家好,在 Python 编程中,我们常常需要对字符串进行拼接。你可能会自然地想到…...

六西格玛绿带培训的证书有什么用处?

近年来,六西格玛作为一套严谨而系统的质量管理方法,被广泛运用于各行各业。而六西格玛绿带培训证书,作为这一方法论中基础且重要的认证,对于个人和企业而言,都具有不可忽视的价值。本文将从多个角度深入探讨六西格玛绿…...

《妃梦千年》第二十章:风雨欲来

第二十章:风雨欲来 战斗的胜利让林清婉和皇上的关系更加亲密,但宫中的阴谋却并未因此而停止。一天,林清婉正在寝宫中思考未来的对策,忽然接到一个紧急消息。小翠匆匆跑来,神色紧张:“娘娘,太后…...

深入理解二分法

前言 二分法(Binary Search)是一种高效的查找算法,广泛应用于计算机科学和工程领域。它用于在有序数组中查找特定元素,其时间复杂度为 O(log n),显著优于线性搜索的 O(n)。本文将深入介绍二分法的原理、实现及其应用场…...

【C命名规范】遵循良好的命名规范,提高代码的可读性、可维护性和可复用性

/******************************************************************** * brief param return author date version是代码书写的一种规范 * brief :简介,简单介绍函数作用 * param :介绍函数参数 * return:函数返回类型说明 * …...

Hbase面试题总结

一、介绍下HBase架构 --HMaster HBase集群的主节点,负责管理和协调整个集群的操作。它处理元数据和表的分区信息,控制RegionServer的负载均衡和故障恢复。--RegionServer HBase集群中的工作节点,负责存储和处理数据。每个RegionServer管理若…...

C语言部分复习笔记

1. 指针和数组 数组指针 和 指针数组 int* p1[10]; // 指针数组int (*p2)[10]; // 数组指针 因为 [] 的优先级比 * 高,p先和 [] 结合说明p是一个数组,p先和*结合说明p是一个指针 括号保证p先和*结合,说明p是一个指针变量,然后指…...

Rust学习笔记 (命令行命令) : 用override set 设置工具链

在cargo run某个项目时出现了如下错误:error: failed to run custom build command for ring v0.16.20(无法运行“Ring v0.16.20”的自定义构建命令),在PowerShell命令行运行命令 rustup override set stable-msvc后成功运行。 o…...

cv::Mat类的矩阵内容输出的各种格式的例子

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 我们可以这样使用&#xff1a;cv::Mat M(…); cout << M;&#xff0c;直接将矩阵内容输出到控制台。 输出格式支持多种风格&#xff0c;包括O…...

Redis--注册中心集群 Cluster 集群-单服务器

与“多服务器集群”一致需要创建redis配置模板 参照以下链接 CSDN 创建redis容器 node01服务器上创建容器 docker run -d --name redis-6381 --net host --privilegedtrue \ -v /soft/redis-cluster/6381/conf/redis.conf:/etc/redis/redis.conf \ -v /soft/redis-cluster/6…...

CV01_相机成像原理与坐标系之间的转换

目录 0.引言&#xff1a;小孔成像->映射表达式 1. 相机自身的运动如何表征&#xff1f;->外参矩阵E 1.1 旋转 1.2 平移 2. 如何投影到“像平面”&#xff1f;->内参矩阵K 2.1 图像平面坐标转换为像素坐标系 3. 三维到二维的维度是如何丢失的&#xff1f;…...

Android Lint

文章目录 Android Lint概述工作流程Lint 问题问题种类警告严重性检查规则 用命令运行 LintAndroidStudio 使用 Lint忽略 Lint 警告gradle 配置 Lint查找无用资源文件 Android Lint 概述 Lint 是 Android 提供的 代码扫描分析工具&#xff0c;它可以帮助我们发现代码结构/质量…...

【算法刷题 | 动态规划14】6.28(最大子数组和、判断子序列、不同的子序列)

文章目录 35.最大子数组和35.1题目35.2解法&#xff1a;动规35.2.1动规思路35.2.2代码实现 36.判断子序列36.1题目36.2解法&#xff1a;动规36.2.1动规思路36.2.2代码实现 37.不同的子序列37.1题目37.2解法&#xff1a;动规37.2.1动规思路37.2.2代码实现 35.最大子数组和 35.1…...

vue3 vxe-grid列中绑定vxe-switch实现数据更新

1、先上一张图&#xff1a; <template #valueSlot"{ row }"><vxe-switch :value"getV(row.svalue)" change"changeSwitch(row)" /></template>function getV(value){return value 1;};function changeSwitch(row) {console.l…...

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数&#xff1a; EXPLODE(ARRAY)&#xff1a;将ARRAY中的每一元素转换为每一行 EXPLODE(MAP)&#xff1a;将MAP中的每个键值对转换为两行&#xff0c;其中一行数据包含键&#xff0c;另一行数据包含值 数据样例&#xff1a; 1、将每天的课程&#…...

MD5算法详解

哈希函数 是一种将任意输入长度转变为固定输出长度的函数。 一些常见哈希函数有&#xff1a;MD5、SHA1、SHA256。 MD5算法 MD5算法是一种消息摘要算法&#xff0c;用于消息认证。 数据存储方式&#xff1a;小段存储。 数据填充 首先对我们明文数据进行处理&#xff0c;使其…...

ES6的代理模式-Proxy

语法 target 要使用 Proxy 包装的目标对象&#xff08;可以是任何类型的对象&#xff0c;包括原生数组&#xff0c;函数&#xff0c;甚至另一个代理handler 一个通常以函数作为属性的对象&#xff0c;用来定制拦截行为 const proxy new Proxy(target, handle)举个例子 <s…...

排序(堆排序、快速排序、归并排序)-->深度剖析(二)

前言 前面介绍了冒泡排序、选择排序、插入排序、希尔排序&#xff0c;作为排序中经常用到了算法&#xff0c;还有堆排序、快速排序、归并排序 堆排序&#xff08;HeaSort&#xff09; 堆排序的概念 堆排序是一种有效的排序算法&#xff0c;它利用了完全二叉树的特性。在C语言…...

七一建党节|热烈庆祝中国共产党成立103周年!

时光荏苒&#xff0c;岁月如梭。 在这热情似火的夏日&#xff0c; 我们迎来了中国共产党成立103周年的重要时刻。 这是一个值得全体中华儿女共同铭记和庆祝的日子&#xff0c; 也是激励我们不断前进的重要时刻。 103年&#xff0c; 风雨兼程&#xff0c;砥砺前行。 从嘉兴…...

Spring Boot应用知识梳理

一.简介 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的工具。它简化了基于 Spring 的应用程序的配置和部署过程&#xff0c;提供了一种快速、便捷的方式来构建独立的、生产级别的 Spring 应用程序。 Spring Boot 的一些主要优点包括&#xff1a; 1. 简化配置…...

Spring中利用重载与静态分派

Spring中利用重载与静态分派 在Java和Spring框架中&#xff0c;重载&#xff08;Overloading&#xff09;和静态分派&#xff08;Static Dispatch&#xff09;是两个非常重要的概念&#xff0c;它们在处理类方法选择和执行过程中扮演着关键角色。本文旨在深入探讨Spring环境下…...

文本三剑客之awk:

文本三剑客awk&#xff1a; grep 查 sed 增删改查 主要&#xff1a;增改 awk 按行取列 awk awk默认的分隔符&#xff1a;空格&#xff0c;tab键&#xff0c;多个空格自动压缩为一个。 awk的工作原理&#xff1a;根据指令信息&#xff0c;逐行的读取文本内容&#xff0c;然…...

SpringSecurity-授权示例

用户基于权限进行授权 定义用户与权限 authorities()。 package com.cms.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.userdetails.User; import…...

选哪个短剧系统源码好:全面评估与决策指南

在短剧内容创作和分享日益流行的今天&#xff0c;选择合适的短剧系统源码对于构建一个成功的短剧平台至关重要。短剧系统源码不仅关系到平台的稳定性和用户体验&#xff0c;还直接影响到内容创作者和观众的互动质量。本文将提供一份全面的评估指南&#xff0c;帮助您在众多短剧…...

AI时代的软件工程:挑战与改变

人工智能&#xff08;AI&#xff09;正以惊人的速度改变着我们的生活和工作方式。作为与AI关系最为密切的领域之一&#xff0c;软件工程正经历着深刻的转变。 1 软件工程的演变 软件工程的起源 软件工程&#xff08;Software Engineering&#xff09;是关于如何系统化、规范化地…...

Zuul介绍

Zuul 是 Netflix 开源的一个云平台网络层代理&#xff0c;它主要用于路由、负载均衡、中间件通信和动态路由。Zuul 本质上是一个基于 JVM 的网关&#xff0c;它提供了以下功能&#xff1a; 1.路由&#xff1a;Zuul 允许客户端和服务器之间的所有入站和出站请求通过一个中心化的…...

7-1作业

1.实验目的&#xff1a;完成字符收发 led.h #ifndef __GPIO_H__ #define __GPIO_H__#include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h"//RCC,GPIO,UART初始化 void init();//字符数据发送 void set_tt…...

ElasticSearch安装、配置详细步骤

一、环境及版本介绍 操作系统&#xff1a; Windows 10 软件版本&#xff1a; elasticsearch-7.17.22、kibana-7.17.22、IK-7.17.22 开发环境选择软件版本应提前考虑正式系统环境&#xff0c;否则会产生软件与服务器环境不兼容的问题出现&#xff0c;ElasticSearch与环境支持…...

【Mybatis 与 Spring】事务相关汇总

之前分享的几篇文章可以一起看&#xff0c;形成一个体系 【Mybatis】一级缓存与二级缓存源码分析与自定义二级缓存 【Spring】Spring事务相关源码分析 【Mybatis】Mybatis数据源与事务源码分析 Spring与Mybaitis融合 SpringManagedTransaction&#xff1a; org.mybatis.spri…...

Leetcode 2065. 最大化一张图中的路径价值(DFS / 最短路)

Leetcode 2065. 最大化一张图中的路径价值 暴力DFS 容易想到&#xff0c;从0点出发DFS&#xff0c;期间维护已经走过的距离&#xff08;时间&#xff09;和途径点的权值之和&#xff0c;若访问到0点则更新答案&#xff0c;若下一步的距离与已走过的距离和超出了maxTime&#…...

SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

CVPR2024 香港理工大学&OPPO&bytedancehttps://github.com/cswry/SeeSR?tabreadme-ov-file#-licensehttps://arxiv.org/pdf/2311.16518#page5.80 问题引入 因为有些LR退化情况比较严重&#xff0c;所以超分之后的结果会出现语义的不一致的情况&#xff0c;所以本文训…...

七月论文审稿GPT第5版:拿我司七月的早期paper-7方面review数据集微调LLama 3

前言 llama 3出来后&#xff0c;为了通过paper-review的数据集微调3&#xff0c;有以下各种方式 不用任何框架 工具 技术&#xff0c;直接微调原生的llama 3&#xff0c;毕竟也有8k长度了 效果不期望有多高&#xff0c;纯作为baseline通过PI&#xff0c;把llama 3的8K长度扩展…...

盘古5.0,靠什么去解最难的题?

文&#xff5c;周效敬 编&#xff5c;王一粟 当大模型的竞争开始拼落地&#xff0c;商业化在B端和C端都展开了自由生长。 在B端&#xff0c;借助云计算向千行万业扎根&#xff1b;在C端&#xff0c;通过软件App和智能终端快速迭代。 在华为&#xff0c;这家曾经以通信行业起…...

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富&#xff0c;主要分为以下几种类型&#xff0c;每种类型都有其特定的用途和特性。 一、整型数值 1.定义&#xff1a;整数类型用于表示整数值&#xff0c;如1、-5、100等。 2.特点&#xff1a; Python 3中的…...

ASPICE培训:推动汽车行业软件质量的新高度

在当今日新月异的汽车行业中&#xff0c;软件技术已经成为推动行业发展的核心动力。随着智能化、网联化、电动化等趋势的加速&#xff0c;汽车软件的质量和性能要求也越来越高。为了满足这一需求&#xff0c;ASPICE&#xff08;Automotive SPICE&#xff09;标准应运而生&#…...

探索 Java 8 中的 Stream API

探索 Java 8 中的 Stream API Java 8 引入了 Stream API&#xff0c;极大地简化了对集合&#xff08;如 List、Set&#xff09;的操作。Stream 提供了一种声明式的方式来处理数据&#xff0c;允许我们使用类似 SQL 的操作来操作集合。本文将详细介绍 Java 中的 Stream API&…...

使用Java和Spring Cloud构建分布式系统

使用Java和Spring Cloud构建分布式系统 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代软件开发中&#xff0c;构建高效的分布式系统是一个关键挑战。使…...

docker配置redis主从复制

下载redis,复制redis.conf 主节点(6379) 修改redis.conf # bind 127.0.0.1 # 注释掉这里 protected-mode no # 改为no port 6379从节点(6380) 修改redis.conf bind 127.0.0.1 protected-mode no # 改为no port 6380 replicaof 172.17.0.2 6379 # 这里的ip为主节点容器的i…...

为什么我感觉 C 语言在 Linux 下执行效率比 Windows 快得多?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;Windows的终端或者叫控制台…...

k8s及常用对象简介

文章目录 一、k8s是什么应用程序早期部署形式容器的引入k8s的作用 二、k8s中的常用对象1、Node获取node信息 2、Namespacenamespace的使用 3、Pod生命周期pod的使用 4、DaemonSetDaemonSet的使用 5、Deployment创建deploy 6、ReplicaSet7、StatefulSet创建StatefulSet 8、更新操…...

现代或将为印度子公司IPO支付4,000万美元

盖世汽车讯 据路透社报道,有三位知情人士透露,为现代汽车印度首次公开募股提供咨询服务的银行将获得高达4,000万美元的佣金。这将是投资银行帮助企业在印度进行首次公开募股的第二高收费。现代汽车印度子公司本月已经向印度监管部门申请批准上市,这有望成为该国历史上最大的…...

沃尔沃S90:从设计到实践的安全标杆

“网上没赢过,实战没输过”,沃尔沃用每一次安全事故生动诠释了这句话。虽然包括沃尔沃品牌本身和车主在内,平时都比较低调,是“车圈逐渐粉圈化”大环境下的一股清流,但真正遇到交通事故的时候,你才知道,沃尔沃是真能保命啊。这不,最近就有位沃尔沃S90车主在高速上以100…...

7. 核心功能(Core Features)

7. 核心功能&#xff08;Core Features&#xff09; 本章节深入介绍 Spring Boot 的详细信息。在这里&#xff0c;你可以了解想要使用的和自定义的主要功能。如果您还没有阅读 “Getting Started” 和 “Developing with Spring Boot” 这两节内容&#xff0c;不放先去阅读这两…...

最长递增子序列,交错字符串

第一题&#xff1a; 代码如下&#xff1a; int lengthOfLIS(vector<int>& nums) {//dp[i]表示以第i个元素为结尾的最长子序列的长度int n nums.size();int res 1;vector<int> dp(n, 1);for (int i 1; i < n; i){for (int j 0; j < i; j){if (nums[i]…...

分布式拒绝服务解决方式

在网络安全领域中&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击始终占据着举足轻重的地位&#xff0c;其影响力不容忽视。随着网络技术的日新月异和网络环境的日益复杂化&#xff0c;DDoS攻击不仅变得愈发频繁&#xff0c;而且其破坏性和影响力也呈现出惊人的增…...

ROS基础学习-话题通信机制研究

研究ROS通信机制 研究ROS通信机制 0.前言1.话题通信1.1 理论模型1.2 话题通讯的基本操作1.2.1 C++1.2.2 Python中使用自己的虚拟环境包1.2.2.1 参考11.2.2.2 参考21.2.2.3 /usr/bin/env:“python”:没有那个文件或目录1.2.3 Python1.2.2.1 发布方1.2.2.2 订阅方1.2.2.3 添加可执…...