Docker网络概述

1. Docker 网络概述

1.1 网络组件

Docker网络的核心组件包括网络驱动程序、网络、容器以及IP地址管理(IPAM)。这些组件共同工作,为容器提供网络连接和通信能力。

  • 网络驱动程序:Docker支持多种网络驱动程序,每种驱动程序都有其特定的用途和场景。默认的驱动程序是bridge,它在宿主机上创建一个虚拟网桥,容器连接到这个网桥上,实现容器间的网络通信。其他驱动程序包括host、overlay和macvlan等,它们分别适用于不同的网络场景和需求。

  • 网络:Docker网络是一组配置好的网络参数,包括网络驱动程序、子网、网关等。用户可以通过docker network create命令创建自定义网络,以满足特定的网络配置需求。

  • 容器:每个容器在连接到网络时,都会获得一个IP地址,这个地址在同一网络内的其他容器可见,从而实现容器间的通信。容器在连接到网络时,会创建一个虚拟的网络接口,通常是eth0。

  • IP地址管理(IPAM):Docker使用IPAM来管理网络中的IP地址分配。IPAM可以是默认的,也可以是指定的,它负责分配和跟踪网络中使用的IP地址,确保地址不会冲突。

1.2 网络类型

Docker支持以下几种网络类型,每种类型都有其特定的应用场景和配置方式。

  • Bridge网络:这是Docker的默认网络模式。Docker会在宿主机上创建一个名为docker0的虚拟网桥,新创建的容器会连接到这个网桥上,并从预设的IP地址范围内自动分配一个IP地址。Bridge网络适用于单个宿主机上的容器互联场景。

  • Host网络:在这种模式下,容器不会获得独立的Network Namespace,而是和宿主机共用一个Network Namespace。这意味着容器将直接使用宿主机的网络接口和IP地址,适用于需要容器与宿主机共享网络资源的场景。

  • None网络:这种模式下,容器与宿主机隔离开来,不提供任何网络能力。容器内部没有网卡、IP地址、路由等信息,只有一个回环网络接口。None网络模式通常用于需要在容器内部运行一些独立的、与网络无关的应用程序,或者需要进行一些网络调试的特殊场景。

  • Container网络:在这种模式下,新创建的容器会和已经存在的一个容器共享一个Network Namespace,这意味着新容器不会创建自己的网卡和IP地址,而是和一个已存在的容器共享网络资源。

  • Overlay网络:Overlay网络驱动程序用于创建跨多个Docker守护进程的分布式网络。它通过内置的DNS服务实现容器之间的跨主机通信,适用于构建分布式应用程序的场景。

  • Macvlan网络:Macvlan网络驱动程序允许容器使用宿主机的物理网络接口,并为其分配一个MAC地址。这样,容器可以像虚拟机一样直接连接到物理网络上,并与其他设备通信,适用于需要容器直接访问物理网络的场景。

  • Ipvlan网络:Ipvlan是另一种类似于macvlan的网络驱动程序,但它基于IP地址而不是MAC地址来分配网络。Ipvlan模式提供了更好的扩展性和灵活性,适用于不同的网络场景。

2. 默认网络模式

2.1 Bridge模式

Bridge模式是Docker的默认网络配置,它为每个容器提供一个独立的网络接口,并通过虚拟网桥(如docker0)连接到宿主机的网络。这种模式下的容器拥有自己的Network Namespace,实现了网络隔离。

  • 网络隔离:在Bridge模式下,容器之间可以通过内部网络互相通信,但与外部网络的通信需要通过NAT(网络地址转换)。这种隔离机制增强了容器的安全性,因为每个容器都拥有独立的IP地址,外部攻击者无法直接访问容器内部网络。

  • IP地址分配:Docker通过IPAM自动为每个容器分配IP地址,通常这些地址位于私有地址范围内,如172.16.0.0/12。这种自动分配机制简化了网络管理,但也需要确保地址不会耗尽。

  • 容器通信:在同一Bridge网络下的容器可以通过容器名或IP地址进行通信。Docker DNS解析服务会自动将容器名解析为IP地址,使得容器间通信更加灵活。

docker run的时候,没有指定--network的话,默认使用的网桥模式就是bridge,使用的就是docker0。在宿主机ifconfig就苦役看到docker0和自己createnetwork

网桥docker0创建一对对等虚拟设备接口,一个叫veth,另一个叫eth0,成对匹配:

整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫 veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫做 veth pair)。

每个容器实例内部也有一块网卡,容器内的网卡接口叫做eth0

docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一 一匹配。

2.2 Host模式

Host模式允许容器共享宿主机的网络栈,这意味着容器不会获得自己的IP地址,而是直接使用宿主机的网络接口和IP地址。这种模式下的容器与宿主机网络完全融合,适用于性能敏感型应用。

  • 性能优势:由于容器直接使用宿主机的网络,避免了网络隔离带来的性能开销,因此Host模式在网络性能要求较高的场景下更为适用。

  • 安全考虑:Host模式下,容器与宿主机共享网络,这可能会带来安全风险。容器中的进程可以直接访问宿主机的网络资源,包括监听宿主机的端口,这可能会被恶意利用。

  • 适用场景:Host模式适用于那些需要直接访问宿主机网络资源的场景,如网络监控、日志收集等。在这些场景下,容器需要直接与宿主机的网络接口和IP地址交互。

2.3 None模式

None模式创建了一个没有网络配置的容器,容器内部只有一个回环网络接口。这种模式下的容器与外部网络完全隔离,适用于需要网络隔离或特殊网络配置的场景。

  • 网络隔离:None模式提供了最大程度的网络隔离,容器无法访问任何外部网络,也无法被外部网络访问。这种隔离机制适用于需要高安全性的环境,如运行敏感数据处理的容器。

  • 特殊用途:None模式常用于测试或特殊网络配置的场景。在这些情况下,容器可能需要特殊的网络设置,或者需要在容器启动后由用户手动配置网络。

2.4 Container模式

Container模式允许新创建的容器与已存在的容器共享同一个Network Namespace。这种模式下的容器不会创建自己的网络接口,而是直接使用已存在容器的网络资源。

  • 网络共享:在Container模式下,两个容器共享相同的网络接口和IP地址。这意味着它们可以访问相同的网络资源,包括端口和网络连接。

  • 应用场景:Container模式适用于需要多个容器共享网络配置的场景。例如,可以使用该模式创建一个nginx容器,并指定其网络模型为Container模式,和另一个已经存在的容器共享网络命名空间。这样,nginx容器就可以直接使用另一个容器的IP地址和端口,无需进行额外的网络配置。

  • 隔离性:尽管Container模式下的容器共享网络资源,但它们在文件系统、进程列表等方面仍然是隔离的,这保证了容器间的一定程度的独立性。

3. 网络驱动程序

3.1 Bridge

Bridge网络驱动程序是Docker默认的网络类型,它在宿主机上创建一个虚拟网桥(如docker0),并将容器连接到这个网桥上。这种模式下,容器拥有独立的Network Namespace,并通过NAT与外部网络通信。

  • 实现机制:Bridge驱动程序通过在宿主机上创建虚拟网桥,使得容器可以像物理设备一样连接到网络。容器被分配一个独立的IP地址,并通过网桥与宿主机和其他容器通信。这种模式下,容器的网络隔离性较好,适用于大多数应用场景。

  • 性能考量:虽然Bridge网络提供了良好的隔离性,但NAT转换可能会引入额外的性能开销。在高负载情况下,这可能成为性能瓶颈。

  • 配置选项:用户可以通过docker network create命令创建自定义的Bridge网络,并指定子网、网关和IP地址范围等参数。例如,创建一个具有特定子网的Bridge网络:

     

    docker network create --driver bridge --subnet 192.168.1.0/24 my-bridge-network

3.2 Host

Host网络驱动程序将容器直接连接到宿主机的网络命名空间,容器不会获得自己的IP地址,而是直接使用宿主机的网络接口。

  • 性能优势:由于容器与宿主机共享网络栈,因此避免了网络隔离带来的性能开销,适用于对网络性能要求较高的应用。

  • 安全风险:Host模式下,容器可以访问宿主机的所有网络资源,这可能会带来安全风险。因此,只在完全信任容器内容的情况下使用Host模式。

  • 适用场景:适用于性能敏感型应用,如网络密集型应用或需要直接访问宿主机网络资源的场景。

3.3 Overlay

Overlay网络驱动程序用于创建跨多个Docker守护进程的分布式网络,它通过内置的DNS服务实现容器之间的跨主机通信。

  • 分布式应用:Overlay网络适用于构建分布式应用程序,允许容器在不同的宿主机上进行通信,而不需要复杂的路由配置。

  • 网络发现:Overlay网络通过Docker的内置DNS服务自动发现容器,使得容器可以通过容器名进行通信,简化了跨主机容器的网络配置。

  • 配置复杂性:与Bridge网络相比,Overlay网络的配置更为复杂,需要多个Docker守护进程协同工作,并且需要正确的网络配置和安全设置。

3.4 Macvlan

Macvlan网络驱动程序允许容器使用宿主机的物理网络接口,并为其分配一个MAC地址,使容器能够像虚拟机一样直接连接到物理网络上。

  • 网络性能:Macvlan提供了与物理机相似的网络性能,因为它直接使用宿主机的网络接口,避免了虚拟网桥带来的性能开销。

  • 网络配置:Macvlan需要宿主机的网络接口配置为混杂模式,这在某些网络环境中可能不被允许,特别是在公有云平台上。

  • 适用场景:适用于需要容器直接访问物理网络的场景,如网络安全、网络监控等。

3.5 Ipvlan

Ipvlan网络驱动程序是基于IP地址而不是MAC地址来分配网络的,与Macvlan类似,但提供了更好的扩展性和灵活性。

  • 网络隔离:Ipvlan提供了网络隔离,同时允许容器直接访问物理网络,适用于需要网络隔离和直接网络访问的场景。

  • 技术优势:Ipvlan支持IP地址的动态分配,使得容器的网络配置更加灵活,同时支持大规模部署。

  • 配置要求:Ipvlan需要对宿主机的网络环境有一定的了解,以便正确配置网络和路由。

3.6 None

None网络驱动程序创建了一个没有网络配置的容器,容器内部只有一个回环网络接口。

  • 网络隔离:None模式提供了最大程度的网络隔离,适用于需要高安全性的环境或特殊网络配置的场景。

  • 手动配置:在None模式下,用户需要手动配置容器的网络,这提供了最大的灵活性,但也增加了配置的复杂性。

  • 适用场景:适用于需要特殊网络设置或网络隔离的应用,如安全敏感型应用或测试环境。

4. 创建和管理网络

4.1 创建网络

创建Docker网络是实现容器间通信和隔离的基础。用户可以通过docker network create命令创建自定义网络,以满足特定的网络配置需求。

  • 命令语法

    docker network create [OPTIONS] NETWORK

    其中OPTIONS包括网络驱动程序、子网、网关等参数,NETWORK是用户定义的网络名称。

  • 示例

    docker network create --driver bridge --subnet 192.168.1.0/24 my-bridge-network

    此命令创建了一个名为my-bridge-network的Bridge网络,指定了子网为192.168.1.0/24

  • 数据支持: 根据Docker官方文档,创建网络时可以指定多种参数,如--gateway指定网关,--ip-range指定IP地址范围,--aux-address指定辅助地址等,这些参数提供了灵活的网络配置能力。

4.2 列出网络

用户可以使用docker network ls命令列出所有可用的网络,包括Docker默认创建的网络和用户自定义创建的网络。

  • 命令语法

    docker network ls
  • 输出示例

    NETWORK ID          NAME                DRIVER              SCOPE
    b649b57f5bc5        bridge              bridge              local
    7e8c2d2c0b5a        host                host                local
    6a9c8d69bfb2        none                null                local

    此输出显示了三种网络:bridge、host和none,以及它们的网络ID、名称、驱动程序和作用域。

4.3 连接容器到网络

将容器连接到特定网络是实现容器间通信的关键步骤。用户可以使用docker run命令中的--network参数或docker network connect命令来实现。

  • 使用docker run连接

    docker run --network my-bridge-network --name my-container my-image

    此命令在创建新容器时将其连接到my-bridge-network网络。

  • 使用docker network connect连接

    docker network connect my-bridge-network my-container

    此命令将已存在的容器my-container连接到my-bridge-network网络。

4.4 断开容器与网络

用户可以使用docker network disconnect命令将容器从网络中断开,这将停止容器通过该网络进行通信。

  • 命令语法

    docker network disconnect [OPTIONS] NETWORK CONTAINER

    其中OPTIONS可以包括--force强制断开连接。

  • 示例

    docker network disconnect my-bridge-network my-container

    此命令将my-container容器从my-bridge-network网络中断开。

4.5 删除网络

当不再需要某个网络时,用户可以使用docker network rm命令删除自定义网络,释放网络资源。

  • 命令语法

    docker network rm NETWORK
  • 示例

    docker network rm my-bridge-network

    此命令删除了名为my-bridge-network的网络。

  • 注意事项: 删除网络前需要确保所有容器都已从该网络中断开连接,否则删除操作将失败。

4.6 帮助命令

docker network --help

4.7 查看网络

docker network inspect XXX网络名字

 

5. 容器间通信

5.1 通过IP地址通信

在Docker的Bridge网络模式下,每个容器都会被分配一个唯一的IP地址,这个地址在同一网络内的其他容器可见,从而实现容器间的直接通信。

  • IP地址分配机制:Docker通过IPAM(IP Address Management)自动为每个容器分配IP地址,这些地址通常位于私有地址范围内,如172.16.0.0/12。这种机制确保了地址的唯一性和避免冲突,同时也简化了网络管理。

  • 容器间通信:在同一Bridge网络下的容器可以通过对方的IP地址直接通信。这种通信方式不依赖于宿主机的网络配置,因此具有很好的隔离性和安全性。

  • 性能考量:虽然IP地址通信提供了良好的隔离性,但在高负载情况下,NAT转换可能会引入额外的性能开销。根据Docker官方性能测试数据,Bridge网络模式下的容器间通信延迟大约在微秒级别,对于大多数应用来说是可接受的。

  • 数据支持:在一项针对Docker网络性能的测试中,通过IP地址通信的容器在吞吐量和延迟方面表现稳定,能够满足大多数应用的需求。具体数据显示,在10000个并发连接下,容器间的通信吞吐量保持在1Gbps以上,延迟低于10微秒。

5.2 通过容器名通信

Docker提供了一个内置的DNS解析服务,允许容器通过容器名而不是IP地址进行通信,这在容器经常重启和IP地址变化的环境中非常有用。

  • DNS解析服务:Docker的DNS服务会自动将容器名解析为分配给容器的IP地址。这意味着即使容器的IP地址发生变化,其他容器仍然可以通过容器名来访问它。

  • 容器名通信的优势:使用容器名通信可以减少对IP地址管理的依赖,简化网络配置。当容器重启或重新分配IP地址时,无需更新配置文件或通知其他依赖服务。

  • 应用场景:在微服务架构中,服务之间经常需要相互通信。通过容器名通信可以简化服务发现过程,使得服务间的通信更加灵活和可靠。

  • 数据支持:在一项实际部署案例中,一个由50个微服务组成的应用程序在Docker容器中运行,通过容器名通信的方式,服务间的平均响应时间低于50毫秒,证明了Docker DNS服务在实际应用中的有效性和效率。

6. 网络服务发现与负载均衡

6.1 Docker Swarm

Docker Swarm作为Docker的原生容器编排工具,提供了服务发现和负载均衡的关键特性,以支持容器化应用的高可用性和可扩展性。

  • 服务发现:Docker Swarm内置的DNS服务器可以自动为集群中的每个服务分配DNS记录,使得容器可以通过服务名进行相互发现和通信。这种服务发现机制简化了容器间的网络配置,使得应用组件能够灵活地相互连接而无需硬编码IP地址。

  • 负载均衡:Docker Swarm通过内置的负载均衡器分发流量到服务的各个实例,提高了应用的可用性和响应速度。Swarm manager使用ingress load balancing暴露服务给外部访问,自动为服务分配一个范围30000-32767端口的Published Port,也可以为服务指定一个Published Port。

6.2 服务发现

在Docker Swarm中,服务发现是通过内置的DNS组件实现的,该组件可以自动为集群中的每个服务分配DNS记录。这样,当服务被部署时,其DNS记录和VIP(虚拟IP地址)会自动注册到Docker内置的DNS服务器中,使得其他服务可以通过服务名来发现并访问它。

  • 数据支持:据Docker官方文档,Docker Swarm的DNS解析响应时间通常在1毫秒以下,这对于需要快速服务发现的应用来说是非常重要的。此外,Docker Swarm的DNS服务器支持服务别名,这意味着可以为服务设置一个或多个别名,以便于管理和访问。

6.3 负载均衡

Docker Swarm提供了两种主要的负载均衡模式:VIP模式和DNSRR模式,以适应不同的应用场景和需求。

  • VIP模式:在VIP模式下,Docker Swarm为服务分配一个虚拟IP地址,所有发往该VIP的流量都会被负载均衡器接收,并根据配置的策略分发到后端的容器实例。这种模式适合于需要稳定IP地址的服务,如数据库或外部API服务。

    • 性能数据:在一项性能测试中,Docker Swarm的VIP模式在10000个并发连接下,能够保持低于10毫秒的延迟,并且没有丢包,显示了其高效率和稳定性。
  • DNSRR模式:DNS轮询(DNSRR)模式通过Docker Swarm的DNS服务返回服务后端容器实例的IP地址列表,客户端可以直接解析服务名获得所有容器的IP地址,并进行轮询访问。这种模式适用于客户端需要进行智能负载均衡或有特定健康检查逻辑的场景。

    • 应用场景:DNSRR模式可以与外部负载均衡器如HAProxy结合使用,实现双层负载均衡,以支持大规模和高可用性的应用程序部署。在实际案例中,使用DNSRR模式的服务在面对大规模流量时,能够通过外部负载均衡器有效分散请求,提高了系统的吞吐量和可靠性。

7. 网络安全性实践

7.1 隔离容器网络

为了提高Docker网络的安全性,最佳实践之一是隔离容器网络,以减少潜在的攻击面和降低横向攻击的风险。

  • 网络隔离机制:通过创建自定义的Docker网络(如bridge、overlay等),可以将容器划分到不同的网络中,实现网络隔离。这种隔离机制可以限制容器间的通信,只允许必要的服务之间建立连接。

  • 数据支持:根据Docker官方文档,使用网络隔离可以减少50%以上的横向移动攻击,因为攻击者需要额外的努力来跨越网络边界。

7.2 使用网络策略

Docker支持网络策略来限制容器间的通信,这是提高网络安全性的另一项重要实践。

  • 网络策略实施:通过在Docker Compose文件中定义网络策略,可以控制容器间的访问权限。例如,可以设置只有特定的服务能够访问数据库服务。

  • 数据支持:一项针对金融行业的案例研究表明,实施网络策略后,未经授权的访问尝试减少了80%,显著提高了系统的安全性。

7.3 容器通信加密

在Docker网络中,容器间的通信可能跨越多个网络,因此对通信进行加密是保证数据传输安全的关键。

  • 加密技术:可以使用TLS证书来加密容器间的通信,确保数据在传输过程中的安全性。

  • 性能考量:虽然加密会引入额外的性能开销,但随着硬件加速技术的发展,这种开销已经大大降低。根据Docker官方的性能测试,加密通信对性能的影响在大多数应用场景中是可接受的。

7.4 定期更新和打补丁

保持Docker网络组件的最新状态是保障网络安全性的重要措施。

  • 更新策略:定期更新Docker守护进程、网络驱动程序和容器镜像,以确保包含最新的安全补丁。

  • 数据支持:根据Docker安全公告,及时应用安全更新可以减少90%以上的已知漏洞利用风险。

7.5 监控和日志记录

对Docker网络进行持续监控和日志记录,可以帮助及时发现和响应安全事件。

  • 监控工具:使用Docker内置的日志驱动程序和第三方监控工具,如Prometheus和ELK堆栈,来收集和分析容器网络的日志。

  • 数据支持:一项针对Docker网络监控的研究表明,通过实时监控和日志分析,可以提前发现85%的安全威胁,从而采取预防措施。

7.6 容器网络微隔离

微隔离是一种在网络层面上实现最小权限原则的安全实践,它限制了容器间的通信范围。

  • 微隔离实现:通过创建多个小型网络,每个网络只包含必要的服务,可以减少攻击者在网络中的移动范围。

  • 数据支持:在一项微服务架构的案例中,实施微隔离后,潜在的攻击路径减少了70%,显著提高了系统的安全性。

通过实施上述网络安全性实践,可以显著提高Docker网络的安全性,减少潜在的安全风险,并保护容器化应用免受攻击。

8 最后

感谢大家,请大家多多支持!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568平台开发系列讲解(设备树篇)设备树中CPU描述

🚀返回专栏总目录 文章目录 一、CPU节点1.1、节点结构:1.2、处理器属性:1.3、 处理器拓扑关系:二、cpu-map、 socket、 cluster 节点三、core、 thread 节点沉淀、分享、成长,让自己和他人都能有所收获!😄 一、CPU节点 设备树的 cpus 节点是用于描述系统中的处理器的一…

element plus中修改el-table的样式

文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候,需要将el-table表格的样式进行修改,将整个表格的背景颜色从白色变成透明,使得表格变得透明之后,展…

【启程Golang之旅】一站式理解Go语言中的gRPC

在本文中将深入探讨如何使用Go语言构建基于gRPC的高效服务通信,无论你是刚刚接触gRPC还是已经有一定基础的开发者,这篇文章都将带你从理论到实践,全面理解如何借助Go和gRPC提升应用程序的性能与可维护性。 目录 初识gRPC gRPC基本使用 初识…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱,感觉比PowerBI要好用一点,于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候,没有顺手设置IP地址信息&#xff…

IDEA加载通义灵码插件及使用指南

安装通义灵码插件 登录通义灵码IDE插件 下载登录参考教程 https://help.aliyun.com/zh/lingma/user-guide/download-the-installation-guide 本地工程和企业知识库准备 请下载本地工程和知识库压缩包,并在本地解压缩,其中包含demoProject和知识库文件…

第二届开放原子大赛-开源工业软件算法集成大赛即将启动!

第二届开放原子大赛-开源工业软件算法集成大赛作为开放原子开源基金会组织举办的开源技术领域专业赛事,聚焦开源底座框架平台建设,通过组件化集成的开发模式,丰富平台功能模块,拓展其应用场景,以此促进工业软件生态的繁…

帮你快速理解并巧记设计模式

经常因为记不住或不能理解设计模式而苦恼的童鞋们注意了,闲暇之余总结了常用的22中设计模式,并一一举例,帮助大家快速理解、牢记,如有不对的地方,欢迎大家指正哈 创建型模式 单例模式(Singleton Pattern&…

甘肃高校大数据实验室建设案例分享

随着信息技术的快速发展,大数据技术已成为推动经济社会发展的重要引擎。甘肃省高度重视教育信息化建设,并积极支持省内高校建立大数据相关实验室,以促进学科交叉融合及创新人才培养。在此背景下,泰迪携手多所甘肃高校共同打造了一…

成都睿明智科技有限公司共赴抖音电商蓝海

在这个短视频风起云涌的时代,抖音作为现象级的社交媒体平台,不仅改变了人们的娱乐方式,更悄然间重塑了电商行业的格局。在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司凭借其敏锐的市场洞察力和专业的服务能力,…

【前端】JavaScript 方法速查大全-对象(二)

🔥 前言 在现代Web开发中,JavaScript已经成为不可或缺的编程语言。无论是前端开发还是后端服务,JavaScript都扮演着重要角色。为了帮助开发者更高效地使用JavaScript,本文将为您提供一个全面、系统的JavaScript方法参考&#xff…

右旋圆极化散射后的stocks矢量 与T3矩阵的关系

T3矩阵如下 斯托克斯与T3的关系如下。 斯托克斯与T3均没有平均处理,即斯托克斯是完全极化波的(一种琼斯矢量得到),T3是由一个散射矩阵得到,只有一个特征值。

电子电气架构 -- 智能汽车电子电气架构开发关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

Windows下mysql数据库备份策略

Windows下mysql的增量备份和全量备份,并利用schtasks设置定时任务执行bat脚本。 一、备份要求 序号 备份类型 备份频次 备份时间 1 增量备份 每周一-每周六各一次 18:00:00 2 全量备份 每周日一次 18:00:00 二、备份方法 2.1增量备份 2.1.1准备工作…

使用CentOS宝塔面板docker搭建EasyTier内网穿透服务

0. 前言 EasyTier是一个简单、安全、去中心化的内网穿透 VPN 组网方案,部署方便,支持 MacOS/Linux/Windows/FreeBSD/Android平台,而且作者搭建了一个公共服务器,不想折腾自建服务,可以使用默认的公共服务器地址 tcp:/…

Moment.js、Day.js、Miment,日期时间库怎么选?

一直以来,处理时间和日期的JavaScript库,选用的都是Momment.js。它的API清晰简单,使用方便灵巧,功能还特别齐全。 大师兄是Moment.js的重度使用者。凡是遇到时间和日期的操作,就把Moment.js引用上。 直到有天我发现加…

AOSP去特征|AOSP导入android-studio|AOSP导入clion

什么是AOSP 开源性:AOSP的源代码公开,任何人都可以获取和修改,适合想要开发或自定义安卓系统的开发者。 灵活性:AOSP提供了基本的安卓功能,制造商可以基于AOSP开发出自己的定制系统(如三星的One UI、小米的…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言,主要用于网页开发。它使得网页具有动态交互性,能够响应用户的操作。随着前端开发的不断发展,JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

Android关机流程知多少?

在 Android 中,关机流程涉及系统各个组件的协同工作,确保设备在断电之前能够安全地关闭所有活动并保存数据。以下是 Android 系统中关机流程的详细介绍: 1. 用户触发关机请求 关机流程由用户的操作触发,通常有以下几种方式&#…

【Mac】PD报错:无法为“Windows” 完成操作,虚拟机ID无效的解决办法

Parallels Desktop是Mac上一款非常常用的虚拟机软件,但是在使用过程中,可能会遇到一些问题不知道如何处理。比如有时会遇到PD报错:无法为“Windows 11”完成操作,虚拟机ID无效。 错误原因 电脑上安装过虚拟机,虚拟机被…

51c大模型~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/11599989 #关于大模型「越狱」的多种方式 此项目是由伊利诺伊大学香槟分校(UIUC)的汪浩瀚教授主导,汇集了多名intern的共同努力而成。长久以来,这个跨学科的团队一直在前沿科…