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

【Kubernetes基础--Pod深入理解】--查阅笔记2

深入理解Pod

  • 为什么要有个Pod
    • 1. 容器协作与资源共享
    • 2. 简化调度和资源管理
    • 3. 设计模式支持
  • Pod 基本用法
  • Pod 容器共享 Volume
  • Pod 的配置管理
    • ConfigMap 概述
    • 创建 ConfigMap 资源对象
    • 在 Pod 中使用 ConfigMap
    • 使用 ConfigMap 的限制条件

为什么要有个Pod

Pod 的引入并非技术冗余,而是 k8s 为应对容器编排复杂性的关键设计。它提供的是一种编排思想,而非具体的技术方案。

Pod 作为 k8s 最小的调度和管理单元,解决了容器化环境中的多个关键问题:

1. 容器协作与资源共享

  • 亲密关系容器组:Pod 允许同一组容器共享 Network Namespace 和 Volume,这些容器需要紧密协作(如共享网络、存储或进程空间)。例如,日志收集容器与应用容器共享日志目录,或 Sidecar 模式下的代理容器与主应用容器通过本地 Socket 通信
  • 统一网络和存储:Pod 内容器共享 同一个 IP 和端口范围,可以通过 localhost 直接通信;共享 Volume 可以实现文件交换(配置文件、临时数据等)

2. 简化调度和资源管理

  • 成组调度:需要共同运行的容器(比如 Web 服务与缓存服务)必须部署在同一个节点。Pod 作为整体调度单位,避免因分散部署导致资源不足或依赖失效。例如,k8s 直接以 Pod 为粒度分配 CPU、内存资源,而非逐个容器计算
  • 统一生命周期:Pod 内的容器具有一致的生命周期。若某个容器异常退出,K8S 可基于 Pod 的重启策略(如 Always、OnFailure)统一处理,而非单独管理每个容器。
  • 统一运维:扩缩容、滚动升级等操作以 Pod 为单位,当节点故障时,K8S 可直接重建整个 Pod,而非逐个恢复容器,提升系统健壮性

3. 设计模式支持

  • Infra 容器:每个 Pod 默认有一个 Infra 容器(pause 容器),负责创建共享的 Network Namespace 和 Volume。用户容器通过加入 Infra 容器的命名空间实现资源共享,解决了容器启动顺序依赖问题
  • 扩展设计:Pod 支持 Init 容器(初始化任务)、Sidecar 容器(辅助功能如日志转发)等模式,增强了应用的可维护性。例如,通过 Sidecar 实现服务网格的流量代理

Pod 基本用法

使用 Docker 时,我们使用 docker run 来创建并启动一个容器。但是,在 k8s 中对长时间运行容器的要求是:其主程序需要一直在前台执行

比如,我们使用 ./start.sh & 在后台执行程序,则在 k8s 创建包含这个容器的 Pod 之后运行完该命令,即认为 Pod 执行结束,将立刻销毁。如果为该 Pod 定义了 RC,则系统会监控到该 Pod 已经终止,之后根据 RC 定义中 Pod 的 replicas 副本数量生成一个新的 Pod。一旦创建新的 Pod,就在执行完启动命令后陷入无限循环的过程中。这就是Kubernetes需要我们自己创建的 Docker 镜像并以一个前台命令作为启动命令的原因。

以一种场景举例,frontend 和 redis 两个容器应用为紧耦合的关系,并组合成一个整体对外提供服务时,应将这两个容器打包为一个Pod,配置文件 frontend-localredis-pod.yaml:

apiVersion: v1
kind: Pod
metadata:name: redis-phplabels:name: redis-php
spec: containers:- name: frontendimage: kubeguide/guestbook-php-frontend:localredisports:- containerPort: 80- name: redisimage: kubeguide/redis-masterports:- containerPort: 6379

属于同一个 Pod 的多个容器应用之间相互访问时仅需要通过 localhost 就可以通信,使得这一组容器被“绑定”在了一个环境中。

kubectl create -f frontend-localredis-pod.yaml
# pod "redis-php" createdkubectl get pods   # READAY 2/2 表示两个容器都成功运行了
kubectl describe pod redis-php # 显示 pod 详细信息

Pod 容器共享 Volume

同一个 Pod 中的多个容器能够共享 Pod 级别的存储卷 Volume。Volume 可以被定义为各种类型,多个容器各自进行挂载操作,将一个 Volume 挂载为容器内部需要的目录。

看个例子:在 Pod 内包含两个容器:tomcat 和 busybox,在 Pod 级别设置 Volume “app-logs”​,用于tomcat向其中写日志文件,busybox 读日志文件,配置文件 pod-volume-applogs.yaml:

apiVersion: v1
kind: Pod
metadata:name: volume-pod
spec:containers:- name: tomcatimage: tomcatports:- containerPort: 8080volumeMounts:- name: app-logsmountPath: /usr/local/tomcat/logs- name: busyboximage: busyboxcommand: ["sh", "-c", "tail -f /logs/catalina*.log"]volumeMounts:- name: app-logsmountPath: /logsvolumes:- name: app-logsemptyDir: {}

Volume 名为 app-logs,类型为 emptyDir(还可设置其他类型,如 hostPath,configMap等),挂载到 tomcat 容器内的/usr/local/tomcat/logs 目录,同时挂载到 busybox 容器内的 /logs 目录。tomcat 容器在启动后会向 /usr/local/tomcat/logs 目录写文件,busybox 容器就可以读取其中的文件了。

# busybox 容器的启动命令为tail -f /logs/catalina*.log,我们可以通过 kubectl logs 命令查看 busybox 容器的输出内容:
kubectl logs volume-pod -c busybox
# 登录 tomcat 容器进行查看
kubectl exec -ti volume-pod -c tomcat -- ls /usr/local/tomcat/logs
kubectl exec -ti volume-pod -c tomcat -- tail /usr/local/tomcat/logs/catalina*.log

Pod 的配置管理

将应用所需的配置信息与程序进行分离,可以使应用程序被更好地复用,通过不同的配置也能实现更灵活的功能。
将应用打包为容器镜像后,可以通过环境变量或者外挂文件的方式在创建容器时进行配置注入。k8s 1.2开始提供统一的应用配置管理–ConfigMap,实现多个容器的配置。

ConfigMap 概述

  • 生成为容器内的环境变量
  • 设置容器启动命令的启动参数(需设置为环境变量)​
  • 以 Volume 的形式挂载为容器内部的文件或目录

ConfigMap 以 key:value 的形式保存在 k8s 系统中供应用使用,既可以用于表示一个变量的值(例如 apploglevel=info)​,也可以用于表示一个完整配置文件的内容(例如server.xml=<?xml…>…)。

可以通过 YAML 配置文件或者直接使用 kubectl create configmap 命令行的方式来创建 ConfigMap。

创建 ConfigMap 资源对象

  1. 通过 YAML 配置文件方式创建
    举例 cm-appvars.yaml 将几个应用所需的变量定义为 ConfigMap 的用法:
apiVersion: v1
kind: ConfigMap
metadata:name: cm-appvars
data:apploglevel: infoappdatadir: /var/data

执行 create 命令创建

kubectl create -f cm-appvars.yaml  # ConfigMap "cm-appvars" createdkubectl get configmapkubectl describe configmap cm-appvarskubectl get configmap cm-appvars -o yaml

cm-appconfigfiles.yaml 描述了将两个配置文件 server.xml 和 logging.properties 定义为 ConfigMap 的用法,设置 key 为配置文件的别名,value 则是配置文件的全部文本内容:

apiVersion: v1
kind: ConfigMap
metadata:name: cm-appconfigfiles
data:key-serverxml: |<?xml version='1.0' encoding='utf-8' ?><Server port="8080" shutdown="SHUTDOWN"><Listener className="xxx" />...</Server>key-loggingproperties: "handles=filehanlder\r\n\r\nformatter=simpleformater\r\n\r\nlevel=info\r\n\r\n"
  1. 通过 kubectl 命令创建
  • 通过 --from-file 参数从文件中进行创建,可以指定 key 的名称,也可以在一个命令行中创建包含多个 key 的 ConfigMap:
kubectl create configmap NAME --from-file=[key=]source --from-file=[key=]sourcekubectl create configmap cm-server.xml --from-file=server.xml # ConfigMap "cm-server.xml" created
kubectl describe configmap cm-server.xml
  • 通过 --from-file 参数从目录中进行创建,该目录下的每个配置文件名都被设置为 key,文件的内容被设置为 value:
kubectl create configmap NAME --from-file=config-files-dirkubectl create configmap cm-appconf --from-file=configfiles
kubectl describe configmap cm-appconf
  • 使用 --from-literal 时会从文本中进行创建,直接将指定的 key=value创建为 ConfigMap 的内容:
kubectl create configmap NAME --from-literal=key1=value1 --from-literal=key2=value2kubectl create configmap cm-appenv --from-literal=loglevel=info --from-literal=appdatadir=/var/data
kubectl describe configmap cm-appenv

在 Pod 中使用 ConfigMap

  1. 通过环境变量使用 ConfigMap
    以前面的 ConfigMap “cm-appvars” 为例,在 Pod “cm-test-pod” 中,将 ConfigMap “cm-appvars” 中的内容以环境变量方式设置为容器内部的环境变量,容器的启动命令将显示这两个环境变量
apiVersion: v1
kind: Pod
metadata:name: cm-test-pod
spec:containers:- name: cm-testimage: busyboxcommand: [ "/bin/sh", "-c", "env | grep APP" ]env:- name: APPLOGLEVEL             # 定义环境变量的名称valueFrom:                     # key“apploglevel”对应的值configMapKeyRef:name: cm-appvars          # 环境变量的值取自cm-appvars:key: apploglevel          # key为apploglevel- name: APPDATADIR              # 定义环境变量的名称valueFrom:                     # key“appdatadir”对应的值configMapKeyRef:name: cm-appvars          # 环境变量的值取自cm-appvarskey: appdatadir           # key为appdatadirrestartPolicy: Never            # 不会自动重启

使用 kubectl create -f 命令创建该 Pod,由于是测试 Pod,所以该 Pod 在执行完启动命令后将会退出,并且不会被系统自动重启(restartPolicy=Never)​:

kubectl create -f cm-test-pod.yaml  # pod "cm-test-pod" createdkubectl get pods --show-all # 使用kubectl get pods --show-all查看已经停止的 Pod
# 查看该Pod的日志,可以看到启动命令“env | grep APP”的执行结果
kubectl logs cm-test-pod
# APPDATADIR=/var/data
# APPLOGLEVEL=info

k8s 1.6版本开始,引入新的字段 envFrom,实现了在 Pod 环境中将 ConfigMap(也可用于 Secret 资源对象)中所有定义的 key=value 自动生成为环境变量:

apiVersion: v1
kind: Pod
metadata:name: cm-test-pod
spec:containers:- name: cm-testimage: busyboxcommand: [ "/bin/sh", "-c", "env" ]envFrom:- configMapRefname: cm-appvars      # 根据cm-appvars中的 key=value 自动生成环境变量restartPolicy: Never

注意:环境变量的名称受POSIX命名规范(​[a-zA-Z_]​[a-zA-Z0-9_]*)约束,不能以数字开头。如果包含非法字符,则系统将跳过该条环境变量的创建,并记录一个Event来提示环境变量无法生成,但并不阻止Pod的启动

  1. 通过 volumeMount 使用 ConfigMap
    在Pod “cm-test-app” 的定义中,将 ConfigMap “cm-appconfigfiles” 中的内容以文件的形式 mount 到容器内部的 /configfiles 目录下。Pod 配置文件cm-test-app.yaml:
apiVersion: v1
kind: Pod
metadata:name: cm-test-app
spec:containers:- name: cm-test-appimage: tomcat-app:v1ports:- containerPort: 8080volumeMounts:- name: serverxml                    # 引用Volume的名称mountPath: /configfiles            # 挂载到容器内的目录volumes:- name: serverxml                      # 定义Volume的名称configMap:name: cm-appconfigfiles            # 使用ConfigMap“cm-appconfigfiles”items:- key: key-serverxml               # key=key-serverxmlpath: server.xml                 # value将server.xml文件名进行挂载- key: key-loggingproperties       # key=key-loggingpropertiespath: logging.properties         # value将logging.properties文件名进行挂载

创建 Pod,进入容器,查看 /configfiles 目录下存在 serverl.xml 和 logging.properties 文件,内容为 ConfigMap “cm-appconfigfiles” 中两个 key 定义的内容:

kubectl create -f cm-test-app.yamlkubectl exec -ti cm-test-app -- bashcat /configfiles/server.xml
cat /configfiles/logging.properties

在引用 ConfigMap 时不指定 items,则使用 volumeMount 方式在容器内的目录下为每个 item 都生成一个文件名为 key 的文件:

apiVersion: v1
kind: Pod
metadata:name: cm-test-app
spec:containers:- name: cm-test-appimage: tomcat-app:v1imagePullPolicy: Neverports:- containerPort: 8080volumeMounts:- name: serverxml               # 引用Volume的名称mountPath: /configfiles      # 挂载到容器内的目录volumes:- name: serverxml                 # 定义Volume的名称configMap:name: cm-appconfigfiles      # 使用ConfigMap“cm-appconfigfiles”

查看到在 /configfiles 目录下存在key-loggingproperties和key-serverxml文件,文件的名称来自在ConfigMap cm-appconfigfiles中定义的两个key的名称,文件的内容则为value的内容

kubectl create -f cm-test-app.yamlls /configfiles  # key-loggingproperties  key-serverxml        

使用 ConfigMap 的限制条件

  • ConfigMap 必须在 Pod 之前创建
  • ConfigMap 受 Namespace 限制,只有处于相同 Namespace 中的 Pod 才可以引用它
  • kubelet 只支持可以被API Server管理的 Pod 使用 ConfigMap。kubelet 在本 Node 上通过–manifest-url 或 --config 自动创建的静态 Pod将无法引用 ConfigMap
  • 在 Pod 对 ConfigMap 进行挂载(volumeMount)操作时,在容器内部只能挂载为“目录”​,无法挂载为“文件”​。

相关文章:

【Kubernetes基础--Pod深入理解】--查阅笔记2

深入理解Pod 为什么要有个Pod1. 容器协作与资源共享2. 简化调度和资源管理3. 设计模式支持 Pod 基本用法Pod 容器共享 VolumePod 的配置管理ConfigMap 概述创建 ConfigMap 资源对象在 Pod 中使用 ConfigMap使用 ConfigMap 的限制条件 为什么要有个Pod Pod 的引入并非技术冗余&…...

【euclid】10.3 2D变换模块(transform2d.rs)bytemuck trait

这段代码是一个 Rust 的 unsafe trait 实现&#xff0c;用于标记 Transform2D 类型在特定条件下可以安全地被视为由全零字节组成的有效实例。让我们详细解释每个部分&#xff1a; 代码分解&#xff1a; #[cfg(feature "bytemuck")] unsafe impl<T: Zeroable, S…...

Maven超级详细安装部署

1.到底什么是Maven&#xff1f;搞清楚这个 Maven 是一个项目管理工具&#xff0c;主要用于 Java 项目的构建、依赖管理和文档生成。 它基于项目对象模型&#xff08;POM&#xff09;&#xff0c;通过 pom.xml 文件定义项目的配置。 &#xff08;简单说破&#xff1a;就是工程…...

C# + Python混合开发实战:优势互补构建高效应用

文章目录 前言&#x1f94f;一、典型应用场景1. 桌面应用智能化2. 服务端性能优化3. 自动化运维工具 二、四大技术实现方案方案1&#xff1a;进程调用&#xff08;推荐指数&#xff1a;★★★★☆&#xff09;方案2&#xff1a;嵌入Python解释器&#xff08;推荐指数&#xff1…...

云服务模式全知道:IaaS、PaaS、SaaS与DaaS深度解析

云服务模式详解&#xff1a;IaaS、PaaS、SaaS与DaaS 在当今数字化快速发展的时代&#xff0c;云计算已经成为企业和开发者不可或缺的一部分。它提供了灵活的资源和服务&#xff0c;使得用户可以根据自己的需求选择最合适的解决方案。本文将详细介绍四种主要的云服务模式&#…...

电机控制-隆博戈观测器(Luenberger state observer)

本文围绕基于无传感器控制策略的状态观测器展开&#xff0c;介绍其在电机领域的应用、原理、性能表现及无传感器驱动的优劣&#xff1a; 应用场景&#xff1a;适用于燃油泵、风扇等大量固定转速和低成本应用场景。工作原理&#xff1a;状态观测器利用完整的电机微分模型&#…...

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh &#xff0c;这脚本会下载一个压缩包&#xff0c;然后解压缩&#xff0c;设置x权限等等。但是目标板子连不上&#xff0c;就想办法获取到下载路径&#xff0c;修改这个脚本&#xff0c;显示这个下载链接后&#xff0c;复制一下&#xff0c;用电脑下下来 修改好…...

【16】数据结构之基于树的排序算法篇章

目录标题 选择排序简单选择排序树形选择排序 堆排序堆的定义Heap小跟堆大根堆堆的存储堆的代码设计堆排序的代码设计 排序算法综合比较 选择排序 基本思想&#xff1a;从待排序的序列中选出最大值或最小值&#xff0c;交换该元素与待排序序列的头部元素&#xff0c;对剩下的元…...

华熙生物亮相消博会,这次又带来了什么样的变化?

首先&#xff0c;从展示层面来看&#xff0c;华熙生物在消博会上构建科技桥梁&#xff0c;展台主视觉展示糖生物学发展历程与自身发展交织历程&#xff0c;这象征着中国生物科技企业从产业突围到定义全球标准的蜕变。这一展示不仅提升了华熙生物的品牌形象&#xff0c;更向外界…...

python自动化浏览器标签页的切换

#获取全部标签页的句柄返回句柄的列表 handleswebdriver.window_handles#获取全部标签页的句柄返回句柄的列表 print(len(handles)) 切换标签页 handleswebdriver.window_handles webdriver.switch_to.window(handles[index])#切换到第几个标签页就写几 关闭标签页 关闭标…...

大象机器人推出myCobot 280 RDK X5,携手地瓜机器人共建智能教育机

摘要 大象机器人全新推出轻量级高性能教育机械臂 myCobot 280 RDK X5&#xff0c;该产品集成地瓜机器人 RDK X5 开发者套件&#xff0c;深度整合双方在硬件研发与智能计算领域的技术优势&#xff0c;实现芯片架构、软件算法、硬件结构的全栈自主研发。作为国内教育机器人生态合…...

Redis 数据类型全解析:从基础到实战应用

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Redis 作为高性能的键值对存储系统&#xff0c;其丰富的数据类型是实现复杂业务逻辑的核心优势。本文将深入解析 Redis 六大核心数据类型及扩展类型&#xff…...

第一天 unity3D 引擎入门

一、为什么选择Unity进行3D开发&#xff1f; Unity作为全球使用最广泛的游戏引擎&#xff0c;在2022年的开发者调查中占据了62%的市场份额。它不仅支持3D/2D游戏开发&#xff0c;更在VR/AR、工业仿真、影视动画等领域大放异彩。对于初学者而言&#xff0c;Unity的独特优势在于…...

【初阶数据结构】——算法复杂度

一、前言 1、数据结构是什么&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的⽅式&#xff0c;指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤&#xff0c;所以我们要学各式各样的数据结构&#xff0c; 如&…...

MySQL:存储函数和存储过程

系列文章目录 1.MySQL编程基础 2.程序控制流语句 3.存储过程 4.游标 5.嵌入式SQL 文章目录 系列文章目录前言一、程序控制流语句&#xff1a;二、存储函数&#xff1a; 1.存储函数的特点&#xff1a;2.存储函数的定义&#xff1a;3.调用存储函数 三、存储过程&#xff1a;…...

常见的 API 设计风格

在软件开发中&#xff0c;常见的 API 设计风格主要有以下几种&#xff0c;每种风格适用于不同的场景和需求&#xff1a; 1. RESTful API (主流) 特点&#xff1a; 基于 HTTP 协议&#xff0c;使用标准方法&#xff08;GET/POST/PUT/DELETE&#xff09;资源导向&#xff08;UR…...

Google-A2A协议全面解析:一文掌握Agent-to-Agent协议的核心与应用

前言&#xff1a; 在当今人工智能技术飞速发展的时代&#xff0c;智能体&#xff08;Agent&#xff09;已悄然融入我们生活的各个角落。无论是个人智能助手&#xff0c;还是企业的自动化工具&#xff0c;各类AI代理的应用愈发广泛。但目前这些智能体之间大多处于孤立状态&…...

Linux-服务器添加审计日志功能

#查看audit软件是否在运行(状态为active而且为绿色表示已经在运行) systemctl start auditd #如果没有在运行的话,查看是否被系统禁用 (audit为0表示被禁用) cat /proc/cmdline | grep -w "audit=0" #修改/etc/default/grub里面audit=0 改为audit=1 #更新GRUB…...

基于机器视觉的多孔零件边缘缺陷检测(源码C++、opencv、凸包、凸缺陷检测)

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; 基于机器视觉的多孔零件边缘缺陷检测&#xff08;源码C、ope…...

汇川PLC通信

汇川PLC通信协议及读写 引言 汇川PLC&#xff08;Programmable Logic Controller&#xff0c;可编程逻辑控制器&#xff09;广泛应用于工业自动化领域。汇川PLC支持多种通信协议&#xff0c;包括Modbus、Ethernet/IP、PPI等。本文将详细介绍汇川PLC的通信协议&#xff0c;并通…...

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

一、引言 CSS3 作为最新的 CSS 标准&#xff0c;引入了众多新特性&#xff0c;如弹性布局、网格布局等&#xff0c;极大地丰富了网页样式的设计能力。然而&#xff0c;CSS3 的样式规则繁多&#xff0c;记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中&#xff0c…...

MySQL入门:数据表的创建

​今天我们来介绍一下除HTML外的另一种语言&#xff1a;MySQL语言&#xff1b; MySQL&#xff1a;即一种用于管理和处理关系数据库的标准语言。要用于执行查询、更新、管理数据库中的数据以及定义和操作数据库结构。 接下来我会逐一介绍它的作用以及其中数据表&#xff0c;数据…...

数据库的基本原则

数据库的核心原则 原子性与持久性&#xff1a;原子性&#xff08;Atomicity&#xff09;确保一个事务中的所有操作要么全部完成&#xff0c;要么完全不执行&#xff0c;不会出现部分完成的情况。持久性&#xff08;Durability&#xff09;则保证一旦事务提交成功&#xff0c;即…...

Rust 中的Relaxed 内存指令重排演示:X=0 Y=0 是怎么出现的?

&#x1f525; Rust 中的内存重排演示&#xff1a;X0 && Y0 是怎么出现的&#xff1f; 在并发编程中&#xff0c;我们经常会听说“内存重排&#xff08;Memory Reordering&#xff09;”这个术语&#xff0c;但它似乎总是只出现在理论或者别人口中的幻觉里。本文将通过…...

C++进程间通信开发实战:高效解决项目中的IPC问题

C进程间通信开发实战&#xff1a;高效解决项目中的IPC问题 在复杂的软件项目中&#xff0c;进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是实现模块化、提高系统性能与可靠性的关键技术之一。C作为一门高性能的编程语言&#xff0c;广泛应用于需要高效…...

FPGA-DDS技术的波形发生器

1.实验目的 1.1掌握直接数字频率合成&#xff08;DDS&#xff09;的基本原理及其实现方法。 1.2在DE2-115 FPGA开发板上设计一个可调频率的正弦波和方波发生器&#xff0c;频率范围10Hz~5MHz&#xff0c;最小分辨率小于1kHz。 1.3使用Quartus II进行仿真&#xff0c;并通过S…...

C#实现通过MQTT Broker——EMQX发布订阅消息及其认证、授权的安全配置操作

一、准备内容 MQTT的构成、使用场景、工作原理介绍-CSDN博客文章浏览阅读656次,点赞7次,收藏12次。MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议【适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境】它在物联网应用中…...

考研单词笔记 2025.04.15

addition n添加&#xff0c;增加&#xff0c;加法 additional a附加的&#xff0c;额外的 in addition 另外&#xff1b;除此之外&#xff1b;加之 augment v增加&#xff0c;增强&#xff0c;提高 explode v急剧增长&#xff0c;爆炸&#xff0c;爆发&#xff0c;迸发 gr…...

【双指针】三数之和(medium)

三数之和&#xff08;medium&#xff09; 题⽬描述&#xff1a;解法&#xff08;排序双指针&#xff09;&#xff1a;算法思路&#xff1a;C 算法代码&#xff1a;Java 算法代码&#xff1a;注&#xff1a;数组转列表 题⽬链接&#xff1a;15. 三数之和 题⽬描述&#xff1a; …...

【项目管理】第17章 项目干系人管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...