【Kubernets】容器网络基础二:通讲CNI(Container Network Interface)容器网络接口实现方案

文章目录

    • 背景知识
      • Underlay网络
      • Overlay网络
        • 一、基本概念
        • 二、工作原理
        • 三、实现方案
        • 四、应用场景
      • 两者对比示意图
    • CNI实现有哪些?
    • Flannel
      • Flannel 的工作原理
      • Flannel 的主要组件
      • 数据传输机制
      • 总结
    • Calico
      • 一、架构基础
      • 二、核心组件与功能
      • 三、路由与数据包转发
      • 四、安全策略
      • 五、数据路径模式
      • 六、集成与部署
    • Weave Net
      • 一、Weave Net概述
      • 二、Weave Net的组件
      • 三、Weave Net的通信机制
      • 四、Weave Net的拓扑与扩展
      • 五、总结
    • Bridge
      • 一、概述
      • 二、工作原理
      • 三、特点与优势
      • 四、应用场景
      • 五、注意事项
    • 容器网络示意
      • 容器内部网络
      • 主机间网络
    • 相关文献

背景知识

Underlay网络

Underlay网络是指物理网络,或称为基础网络层、承载网络。它是由各类物理设备(如交换机、路由器、防火墙、负载均衡器等)通过物理链路连接而成的网络架构。这些物理设备通过路由协议确保设备之间的IP连通性,为数据包在主机之间的传输提供基本路径。

Underlay网络提供了主机之间的基本连接能力,包括IP网络、子网划分、路由协议等。它是直接在物理层上建立的网络,负责数据包在主机之间的传输,并提供基本的网络互联性。Underlay网络通常是静态配置的,由网络管理员管理和维护,主要关注网络的可用性、性能和扩展性。

在传统网络中,Underlay网络扮演着至关重要的角色,它确保了数据包能够在不同的物理设备之间顺畅传输。而在现代数据中心和云计算环境中,Underlay网络仍然是基础架构的重要组成部分,但它往往与Overlay网络(逻辑网络层)相结合,以提供更高级别的网络功能和服务。

Overlay网络是在Underlay网络之上构建的逻辑网络层,通过使用虚拟化技术创建的网络。它可以在不改变底层Underlay网络的前提下,添加额外的功能,如隧道、加密、负载均衡、虚拟网络等。Overlay网络和Underlay网络是一组相对概念,它们共同构成了现代网络架构的基础。

Overlay网络

Overlay网络模式是一种网络架构上叠加的虚拟化技术模式,它建立在已有的物理网络(Underlay网络)基础之上,通过在其上构建虚拟网络来实现网络资源的虚拟化。以下是关于Overlay网络模式的详细介绍:

一、基本概念
  1. 定义:Overlay网络是在现有物理网络之上,利用虚拟化技术构建的一个逻辑网络。这个逻辑网络具有独立的控制和转发平面,使得连接到Overlay网络的终端设备(如服务器、虚拟机等)能够在一个虚拟化的网络环境中进行通信。

  2. 特点

    • 独立性:Overlay网络独立于Underlay网络,对于连接到Overlay的终端设备来说,物理网络是透明的。
    • 虚拟化:通过虚拟化技术,Overlay网络能够在单个物理网络上实现多个逻辑网络的并存。
    • 灵活性:Overlay网络配置灵活,易于管理,可以根据业务需求进行动态调整。
二、工作原理

Overlay网络模式的工作原理通常涉及以下几个关键步骤

  1. 封装:在发送端,原始数据报文被封装在特定的协议头部中,以形成Overlay报文。这个协议头部包含了用于在Overlay网络中路由和转发报文所需的信息。
  2. 转发:封装后的Overlay报文被发送到Underlay网络中进行传输。Underlay网络负责提供必要的物理路径和带宽,以确保Overlay报文能够顺利到达目的地。
  3. 解封装:在接收端,Overlay报文被解封装,以恢复原始的数据报文。然后,这个数据报文被传递给目标终端设备进行处理。
三、实现方案

实现Overlay网络的方案有多种,每种方案都有其特定的优势和应用场景。以下是一些常见的Overlay网络实现方案:

  1. VXLAN(Virtual Extensible Local Area Network)

    • 描述:VXLAN是一种广泛使用的Overlay网络协议,它允许在现有的IP网络上创建一个虚拟化的Layer 2网络。
    • 优点:支持更多的网络隔离段(最多1600万个VNI),具有较好的扩展性和灵活性。
    • 应用场景:数据中心网络虚拟化,特别适用于大规模云计算环境。
  2. NVGRE(Network Virtualization using Generic Routing Encapsulation)

    • 描述:NVGRE是另一种Overlay网络协议,它类似于VXLAN但使用GRE(Generic Routing Encapsulation)作为封装协议。
    • 优点:与VXLAN相比,NVGRE更易于与现有的网络管理工具集成。
    • 应用场景:多租户数据中心和云服务提供商。
  3. STT(Stateless Transport Tunneling)

    • 描述:STT是为数据中心设计的Overlay网络协议,它利用TCP协议来传输封装的以太网帧,从而实现虚拟网络间的通信。
    • 优点:利用TCP的性能优化和拥塞控制机制,改善了跨数据中心通信的性能。
    • 应用场景:需要跨数据中心通信的大规模网络环境。
  4. Geneve

    • 描述:Geneve是一种尝试统一VXLAN、NVGRE等协议特性的Overlay网络封装格式,提供了一种灵活的框架来适应不同的网络虚拟化需求。
    • 优点:极高的灵活性和可扩展性,可以支持多种不同的网络虚拟化场景。
    • 应用场景:下一代数据中心网络,支持高度定制的网络虚拟化需求。
四、应用场景

Overlay网络模式在多个场景中得到了广泛应用,包括但不限于:

  1. 数据中心网络虚拟化:通过Overlay网络,数据中心可以实现网络资源的灵活配置和管理,提高网络资源的利用率和可扩展性。
  2. 多租户环境:在云计算和虚拟化环境中,Overlay网络可以为不同的租户提供独立的网络环境,增强网络隔离和安全性。
  3. 跨数据中心通信:Overlay网络可以实现跨数据中心的虚拟网络互联,简化网络架构,提高网络性能。

综上所述,Overlay网络模式是一种强大的虚拟化技术,它通过在现有物理网络上构建虚拟网络来实现网络资源的灵活配置和管理。随着云计算和虚拟化技术的不断发展,Overlay网络模式将在更多场景中得到广泛应用。

两者对比示意图

overlay-underlay

CNI实现有哪些?

CNI(Container Network Interface)的实现有多种,这些实现通常被称为CNI插件。以下是一些常见的CNI实现:

  1. Flannel

    • Flannel是一个简单易用的CNI插件,专为Kubernetes设计,用于提供覆盖网络(overlay network)。
    • Flannel使用VXLAN隧道技术封装数据包,在集群节点之间传输。
    • Flannel可以与etcd集成,用于存储网络配置状态信息
  2. Calico

    • Calico是一个高性能的CNI插件,支持复杂的网络策略、IP路由和防火墙功能。
    • Calico使用BGP协议进行路由,支持大规模网络部署。
    • Calico还提供了丰富的网络策略功能,可以细粒度地控制容器间的网络通信。
  3. Weave Net

    • Weave Net是另一个为Kubernetes设计的CNI插件,提供了快速、可靠的容器网络。
    • Weave Net使用加密的Weave Router和Weave Switch组件,确保容器间的通信安全。
    • Weave Net还支持跨主机容器通信和自动IP地址分配。
  4. MidoNet

    • MidoNet是一款网络虚拟化软件,可以作为CNI插件为Kubernetes提供网络支持。
    • MidoNet支持大规模SDN集群,具有分布式、多层次的特点。
    • MidoNet为每个租户分配一个逻辑路由器,租户之间相互隔离,但内部可以相互通信。
  5. Host-local

    • Host-local是一个简单的CNI插件,用于从本地IP地址池中为容器分配IP地址。
    • 它通常与其他CNI插件(如bridge)结合使用,以提供完整的网络配置。
  6. Bridge

    • Bridge插件在宿主机上创建网桥,并通过veth pair的方式将容器连接到该网桥上。
    • 它是Kubernetes中内置的CNI插件之一,适用于简单的网络部署。
  7. Macvlan/Ipvlan

    • Macvlan和Ipvlan插件允许容器直接使用宿主机的网络接口,通过虚拟MAC地址或IP地址实现网络通信。
    • 这些插件适用于需要高性能网络通信的场景,因为它们减少了网络虚拟化层的开销。
  8. 其他Meta插件

    • 除了上述插件外,还有一些Meta插件,如portmap、firewall、tuning等。
    • 这些插件通常用于提供额外的网络功能,如端口映射、防火墙规则、网络设备参数调整等。

这些CNI插件各有特点,适用于不同的应用场景。在选择CNI插件时,需要根据具体需求和网络环境进行评估和选择。同时,也可以根据需要组合使用多个CNI插件,以实现更复杂的网络配置和功能。

Flannel

Flannel 是一个简单的、可扩展的网络覆盖层工具,它为 Docker 容器提供了跨主机的网络连接。Flannel 主要用于 Kubernetes 集群中的网络配置,它通过创建一个虚拟的二层网络来连接各个节点上的容器,使得不同节点上的 Pod 可以像在同一个物理网络上一样直接通信。

Flannel 的工作原理

  1. 分配子网段

    • 当一个新的节点加入到集群时,Flannel 会从预先定义的 IP 地址池中分配一个子网段给该节点。这个子网段会被用来分配给该节点上的 Pod 使用。
  2. 建立网络覆盖

    • Flannel 使用各种不同的数据传输机制来建立覆盖网络,包括 UDP、VXLAN、Host-GW(主机网关)、IPsec 等。这些机制允许数据包从一个节点传输到另一个节点,即使它们之间存在物理网络隔离。
  3. 封装和解封数据包

    • 当一个 Pod 发送数据包到另一个节点上的 Pod 时,源节点的 Flannel 代理会先对数据包进行封装,然后通过选定的数据传输机制发送到目标节点。目标节点接收到封装后的数据包后,再由其上的 Flannel 代理解封并转发给目标 Pod。

Flannel 的主要组件

  • etcd:用于存储网络配置信息,如每个节点分配的子网段等。
  • flanneld:运行在每个节点上的代理服务,负责管理本地网络接口,并处理数据包的封装和解封。
  • CNI 插件:Container Network Interface(容器网络接口)插件,用于创建和管理 Pod 的网络接口。

数据传输机制

  • UDP:早期版本的 Flannel 使用 UDP 封装数据包,这种方式简单但效率较低,目前较少使用。
  • VXLAN:Virtual eXtensible Local Area Network,提供了一个更高效的数据传输方式,支持大规模部署。
  • Host-GW:利用主机的路由表来实现 Pod 之间的通信,不需要额外的数据封装,性能较好,但适用范围有限。
  • IPsec:通过加密隧道传输数据,适用于安全性要求较高的场景。

总结

Flannel 的设计目的是为了简化 Kubernetes 集群中的网络配置,它通过分配子网段、建立网络覆盖以及封装和解封数据包的方式,实现了不同节点上 Pod 之间的直接通信。选择合适的数据传输机制可以根据具体需求优化网络性能和安全性。

Calico

Calico是一种开源的网络和安全解决方案,其实现原理主要基于以下几个方面:

一、架构基础

Calico使用了一种称为“纯三层”架构的方法来提供高效的网络和安全服务。这种架构避免了二层网络中的数据包封装和解封装操作,从而提高了网络通信的效率。

二、核心组件与功能

  1. Felix

    • Felix是Calico的agent,运行在每台需要运行workload(如容器或虚拟机)的节点上。
    • 它主要负责配置路由及ACLs(访问控制列表)等信息,以确保endpoint(如容器)的连通状态。
  2. etcd

    • etcd是一个分布式键值存储,主要负责网络元数据的一致性。
    • 它确保Calico网络状态的准确性,是Calico网络中不可或缺的一部分。
  3. BGPClient(BIRD)

    • BGPClient(通常使用BIRD实现)主要负责把Felix写入kernel的路由信息分发到当前Calico网络。
    • 它确保workload间的通信的有效性,是Calico实现BGP路由协议的关键组件。
  4. BGP Route Reflector(BIRD)

    • 在大规模部署时,BGP Route Reflector用于摒弃所有节点互联的mesh模式。
    • 它通过一个或多个BGP Route Reflector来完成集中式的路由分发,降低了网络开销。

三、路由与数据包转发

  1. BGP路由协议

    • Calico使用BGP(Border Gateway Protocol)在集群内传播路由信息。
    • 每个运行了Calico组件的节点都被配置为BGP客户端,并与集群中的其他节点建立BGP对等关系。
    • 当新的Pod创建时,其IP地址会被添加到本地节点的路由表并通过BGP发布到整个集群。
    • 由此确保所有节点都能直接通过三层网络访问任何Pod,无需额外的隧道封装。
  2. 数据包转发

    • Calico在每个计算节点上利用Linux Kernel实现了一个高效的vRouter来负责数据转发。
    • 每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播。
    • 当数据包到达宿主机时,根据路由表信息找到下一跳要到达的宿主机IP,并直接转发到对端容器的veth pair插在宿主机的一端,最终进入容器。

四、安全策略

Calico还使用了iptables规则来实现安全策略。每个容器都有自己的iptables规则,这些规则可以限制容器之间的网络访问,从而提高安全性。此外,Calico还支持网络流量的加密和身份验证,以保护敏感数据的安全。

五、数据路径模式

Calico支持多种数据路径模式,以适应不同的环境需求和性能要求。这些模式包括:

  1. 基于Linux内核功能的数据路径处理方式:如eBPF和XDP,它们提供了高性能的数据处理能力。
  2. 无隧道(纯L3)和有隧道(如VXLAN)的数据传输方式:无隧道模式直接利用IP路由进行数据包转发,而有隧道模式则使用隧道协议(如VXLAN)封装数据包进行传输。

六、集成与部署

作为Container Network Interface(CNI)插件,Calico可以无缝集成到Kubernetes集群中。它负责在Pod创建和销毁过程中自动配置网络接口、分配IP地址并设置相应的网络策略。此外,Calico还支持多种部署方式,包括在物理服务器、虚拟机(如OpenStack)或容器环境下部署。

综上所述,Calico通过结合BGP路由、iptables策略管理、CNI接口以及多种数据路径模式等关键技术,为Kubernetes等容器化平台提供了一个灵活、高效且安全的网络基础设施。

Weave Net

Weave Net的底层实现逻辑涉及多个组件和复杂的网络通信技术。以下是对Weave Net底层实现逻辑的详细说明:

一、Weave Net概述

Weave Net是一个流行的Overlay网络方案,它使用自家的Overlay技术来实现网络通信,并提供了网络策略和服务发现等功能。这些Overlay网络方案为Kubernetes集群提供了跨主机的容器通信能力,并确保容器之间的网络隔离和安全。

二、Weave Net的组件

Weave Net主要由以下几个组件构成:

  1. Weave Router(路由器)

    • 存在于不同的主机上,形成一系列的peers(对等体)。
    • 每个peer都有一个唯一的名字和标识符(UID),名字在重启后保持不变,便于用户理解和区分日志信息。
    • Weave路由器之间建立TCP连接,用于心跳握手和拓扑信息交换;同时建立UDP连接,用于网络包的封装和传输。
  2. Weave Agent

    • 每个节点上都有一个Weave Agent,负责与Weave Net进行交互。
    • Weave Agent与Weave Net守护进程通信,以建立和管理容器之间的网络连接。
  3. Weave Bridge(网桥)

    • 在主机上创建一个网桥,每个容器通过veth pair(虚拟以太网对)连接到网桥上。
    • 容器由用户或Weave网络的IPAM(IP地址管理)分配IP地址。

三、Weave Net的通信机制

  1. 封装与转发

    • Weave Net使用UDP封装二层以太网帧,并通过VTEP(VXLAN Tunnel End Point,即VXLAN隧道端点)设备实现原始以太报文的封装和解封装。
    • 数据包在发送时,首先被封装在UDP数据包中,然后发送到目标容器的VTEP。
    • 目标VTEP收到UDP数据包后,将其解封,并将数据包传递给目标容器。
  2. 路由决策

    • Weave网络路由器学习对端主机的特定MAC地址,并将这些信息和拓扑信息结合起来进行路由决策。
    • 路由器通过UDP转发数据包到目的主机上的Weave路由器,并注入到目的主机的内核空间,然后交给目的容器处理。
    • Weave还提供了两种路由模式:fast data path(完全工作在内核空间)和sleeve模式(通过用户空间进行路由决策)。
  3. 网络隔离与安全

    • Weave Net通过Overlay技术实现了网络隔离,使得不同租户或不同应用之间的流量被隔离。
    • Weave Net还提供了网络策略功能,允许用户定义精细的访问控制规则,以确保网络的安全性。

四、Weave Net的拓扑与扩展

  1. 扁平网络结构

    • Weave Net使用扁平的网络结构,所有容器都可以相互通信,而无需经过任何网关或路由器。
    • 这种设计简化了网络拓扑,提高了容器的可达性和可伸缩性。
  2. 自动发现与动态DNS

    • Weave Net支持自动发现和动态DNS功能,使得容器可以轻松地找到彼此并建立通信。
    • 这有助于在动态变化的云环境中实现高效的容器通信。
  3. 跨主机通信

    • Weave Net通过Overlay技术实现了跨主机的容器通信。
    • 容器可以通过Weave Net进行跨节点的通信,而无需担心底层网络的限制。

五、总结

Weave Net是一个功能强大且易于使用的容器网络插件。它通过Overlay技术实现了跨主机的容器通信,并提供了网络隔离、安全、自动发现和动态DNS等功能。Weave Net的底层实现逻辑涉及多个组件和复杂的网络通信技术,但通过这些组件和技术的协同工作,Weave Net能够为用户提供高效、可靠和安全的容器网络环境。

Bridge

容器网络中的Bridge模式,是Docker等容器技术中默认且广泛使用的网络类型。以下是对容器网络Bridge的详细解释:

一、概述

Bridge网络模式在宿主机上创建一个虚拟桥接器(通常命名为docker0),所有启动的容器都会连接到这个桥接器上,并被分配一个私有的IP地址。容器内部的网卡(通常是veth pair的一端)接入到docker0桥接器,而docker0桥接器则负责不同容器之间的数据包转发。

二、工作原理

  1. 虚拟网桥和虚拟网卡接口

    • 当Docker引擎创建一个Bridge网络时,它会在宿主机上创建一个新的虚拟网桥,例如docker0。
    • 接着,Docker引擎会将所有Docker容器的虚拟网卡接口连接到这个虚拟网桥上。
    • 每个容器的虚拟网卡接口都包含一个MAC地址和一个唯一的IP地址,这些信息用于标识和路由容器之间的数据包。
  2. 数据包转发

    • 当容器之间需要通信时,数据包会通过容器的虚拟网卡接口发送到docker0桥接器上。
    • docker0桥接器会检查数据包的目标IP地址,并根据路由表将数据包转发到正确的容器。
    • 如果数据包的目标IP地址与Bridge网络中的任何容器IP地址都不匹配,则docker0桥接器会将数据包转发到宿主机的默认路由。
  3. NAT技术

    • 为了实现容器访问外部网络,Bridge网络会自动为每个容器创建一个NAT(网络地址转换)规则。
    • 这些规则将容器内部的IP地址映射到宿主机的IP地址和端口上。
    • 当容器需要访问外部网络时,Docker引擎会将请求路由到宿主机上,并使用NAT规则将响应返回给容器。

三、特点与优势

  1. 简单易用
    • Bridge网络模式是Docker默认的网络类型,配置简单,适合单机多容器通信。
  2. 网络隔离性好
    • 通过Bridge网络,容器之间可以实现相互通信,同时与宿主机和其他外部网络保持隔离。
    • 这种隔离性提高了容器的安全性,防止了不同容器之间的网络干扰。
  3. 灵活性
    • 用户可以创建自定义的Bridge网络,并根据需要配置子网、网关等参数。
    • 这使得Bridge网络能够适应不同的应用场景和需求。

四、应用场景

  1. 单机多容器通信
    • 在单机环境下,多个容器需要相互通信时,可以使用Bridge网络模式。
    • 通过Bridge网络,容器可以方便地通过IP地址或容器名称进行通信。
  2. 与外部网络通信
    • 容器需要访问外部网络(如互联网)时,可以使用NAT技术将容器的流量伪装为宿主机的IP地址。
    • 这样,容器就可以通过宿主机的网络接口与外部网络进行通信。

五、注意事项

  1. 性能损耗
    • 在多层网络转发时,Bridge网络可能会带来一定的性能损耗。
    • 因此,在高性能要求的场景下,需要考虑其他网络模式(如Host网络模式)。
  2. 配置管理
    • 自定义Bridge网络需要用户自行配置和管理,包括子网、网关等参数的设置。
    • 用户需要具备一定的网络知识和管理经验来确保网络的正常运行。

综上所述,容器网络Bridge模式通过创建虚拟网桥和虚拟网卡接口,实现了容器之间的通信和与外部网络的访问。它具有简单易用、网络隔离性好和灵活性等优点,适用于单机多容器通信和外部网络通信等应用场景。然而,用户也需要注意性能损耗和配置管理等方面的问题。

容器网络示意

容器内部网络

network-inside

主机间网络

network-outside

相关文献

【计算机网络】网络相关技术介绍
【Kubernets】容器网络基础一:Veth Pair

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1560615.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

精华版80页PPT | 智能工厂数字化顶层架构

项目背景及需求理解 随着科技的飞速发展,智能工厂的概念逐渐从理论走向实践,成为制造业转型升级的重要方向。方案对智能工厂数字化顶层架构进行全面介绍。在当前的市场环境下,消费者需求日益多样化、个性化,对产品质量、价格、环…

PMP--冲刺题--解题--121-130

文章目录 9.资源管理--1.规划资源管理--可以直接使用排除法,A和C的做法都是逃避了组织和参与这个会议,D组织多次会议的做法明显不够高效。121、 [单选] 项目经理被指派与技术和运营团队一起负责现有产品新版本的设计。项目经理组织一次联合需求会议&…

【拥抱AIGC】应该如何衡量AI辅助编程带来的收益

本文主要介绍了如何度量研发效能,以及AI辅助编程是如何影响效能的,进而阐述如何衡量AI辅助编程带来的收益。 理解度量:有效区分度量指标 为了帮助研发团队更好地理解和度量研发效能,可以将指标分为三类:能力和行为指…

【C++入门篇 - 3】:从C到C++第二篇

文章目录 从C到C第二篇new和delete命名空间命名空间的访问 cin和coutstring的基本使用 从C到C第二篇 new和delete 在C中用来向系统申请堆区的内存空间 New的作用相当于C语言中的malloc Delete的作用相当于C语言中的free 注意:在C语言中,如果内存不够…

【数学分析笔记】第5章第1节 微分中值定理(1)

5. 微分中值定理及其应用 5.1 微分中值定理 5.1.1 极值与极值点 【定义5.1.1】 f ( x ) f(x) f(x)定义域为 ( a , b ) (a,b) (a,b), x 0 ∈ ( a , b ) x_0\in(a,b) x0​∈(a,b),若 ∃ O ( x 0 , ρ ) ⊂ ( a , b ) \exists O(x_0,\rho)\subset(a,b) ∃…

web基础-攻防世界

get-post 一、WP (题目本质:get与post传参方法) 用 GET 给后端传参的方法是:在?后跟变量名字,不同的变量之间用&隔开。例如,在 url 后添加/?a1 即可发送 get 请求。 利用 hackbar 进行…

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测,特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…

Python画图|多图共享X轴和Y轴

【1】引言 在python画图的众多场景中,存在多图对应X轴和Y轴可能一致的情形。 为此,尝试找到相关方法,不仅可以将代码写得更简洁,也更节省电脑内存,是提升工作效率的可选之路。 【2】官网教程 点击下方链接&#xf…

制造已然走出国门,数据如何走向全球?

1 行业趋势和背景 1.1 海外全球化——由中国制造到中国品牌全球造的全球化布局 为实现资源的最优配置、效率的最大化,现在越来越多的制造业企业,凭借着自己的品牌力和技术能力,进行全球化布局,加速从原来的“中国制造”到“中国…

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》学习笔记

EISS_2024企业信息安全峰会:《货拉拉信息安全实践》 企业安全目标设定和安全框架企业信息安全组织和机制技术体系建设方法信息安全指标建设构建安全数据和体系技术体系支撑合规治理安全融入企业体系内建文化,外建生态 企业安全目标设定和安全框架 要点&a…

门店展台客流量摄像机功能:准确计数、行为分析、客流趋势预测

在车展展厅中,门店展台客流量摄像机发挥着至关重要的作用,其功能涵盖准确计数、行为分析和客流趋势预测等多个方面。 一、车展展厅应用客流统计方案原因 1. 评估展会效果:准确了解每个展台的客流量,判断展会的吸引力和热度&#…

Linux相关概念和易错知识点(14)(进程终止、进程退出、退出信息)

1.进程终止 &#xff08;1&#xff09;错误码 对于程序常见错误信息&#xff0c;C/C提供了信息解释&#xff0c;保存在<string.h>&#xff0c;使用strerror(错误码)就可以查询 错误信息成立的前提是错误码要和错误信息匹配&#xff0c;我们需要结合C/C给我们的错误码来…

极狐GitLab X 某轨道交通控制系统龙头企业,助力业务研发敏捷化

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 60天专业…

java多态-cnblog

java多态 细分的重载会增加代码量&#xff0c;降低易用程度 定义一个类&#xff0c;继承所有类的对象&#xff0c;根据向上转型可以让每个类的对象都调用初始类的方法&#xff0c;在方法中设置判断&#xff0c;不同的对象导致方法做不同的事&#xff0c;这就是多态 写一个灯…

计算机的错误计算(一百一十九)

摘要 用错数解释计算机的错误计算&#xff08;一百一十八&#xff09;中的错误计算。 计算机的错误计算&#xff08;一百一十八&#xff09;给出一个循环迭代 用C语言或Java编程计算&#xff0c;则 均是错误结果。 下面用错数解释其出错原因。 首先&#xff0c;将迭代看作 …

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :从静态到运行时的秘密(三、Java常量池揭秘)

文章目录 【JVM系列】深入理解Java虚拟机&#xff08;JVM&#xff09;的核心技术 &#xff1a;从静态到运行时的秘密(二、Java常量池揭秘)1. 基本概念2. 常量池分类2.1 运行常量池2.2 静态常量池2.3 字符串常量池 3. String 类3.1 创建String对象的两种方式和区别3.2 字符串的特…

【Unity】背景图片随着背景里面内容大小而变化

今天制作项目里面的设置界面和暂停界面时&#xff0c;发现两个界面有很多重复部分&#xff0c;所以直接做一个界面就行了&#xff0c;但是两个界面的背景大小会有变化&#xff0c;图片在下面 这个是游戏暂停界面的&#xff0c;设置界面和这个界面有很多重复地方&#xff0c;仅仅…

Spring事务的1道面试题

每次聊起Spring事务&#xff0c;好像很熟悉&#xff0c;又好像很陌生。本篇通过一道面试题和一些实践&#xff0c;来拆解几个Spring事务的常见坑点。 原理 Spring事务的原理是&#xff1a;通过AOP切面的方式实现的&#xff0c;也就是通过代理模式去实现事务增强。 具体过程是…

【网页设计】CSS Part2

目标 能使用 emmet 语法能够使用 CSS 复合选择器能够写出伪类选择器的使用规范能够说出元素有几种显示模式能够写出元素显示模式的相互转换代码能够写出背景图片的设置方式能够计算 CSS 的权重 1. Emmet 语法 Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速…