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

Docker中的网络

文章目录

  • 网络
    • 网桥(bridge)
    • 创建网桥接口
    • host
    • none
    • container
    • overlay
    • overlay底层原理

在这里插入图片描述

网络

在这里插入图片描述

网桥(bridge)

在Docker中,网桥(Bridge)是一种网络驱动,用于实现Docker容器之间和容器与宿主机之间的通信。Docker中的网桥工作原理可以简要概括如下:

  1. Docker0网桥

    • 当Docker引擎启动时,会自动创建一个名为docker0的虚拟网络接口,它是默认的Docker网桥。这个网桥的主要作用是连接所有Docker容器和宿主机的网络。
  2. 容器连接到网桥

    • 当用户启动一个新的Docker容器时,Docker会在docker0网桥上创建一个新的虚拟网络接口,并将容器连接到该网桥。每个容器都可以通过docker0网桥和其他容器以及宿主机进行通信。
  3. 容器之间的通信

    • 当多个容器连接到同一个docker0网桥时,它们可以直接相互通信。Docker通过使用Linux内核的veth设备对来自不同容器的数据流进行转发。这些数据流会通过docker0网桥进行桥接,从而实现容器之间的直接通信。
  4. 容器与宿主机的通信

    • 连接到docker0网桥的容器也可以与宿主机进行通信。Docker会在宿主机上创建一对虚拟网络接口:veth设备和veth-peer设备。这对虚拟网络接口的一个端口连接到docker0网桥,另一个端口连接到容器。这样,容器和宿主机可以通过这对虚拟网络接口进行通信。
  5. 端口映射

    • 为了使外部网络能够访问容器中运行的服务,Docker支持端口映射。通过端口映射,可以将容器内的服务端口映射到宿主机的端口上。这样,外部网络就可以通过宿主机的IP地址和映射的端口来访问容器中的服务。

总结来说,Docker中的网桥工作原理是通过创建虚拟网络接口并连接到docker0网桥来实现容器之间和容器与宿主机之间的通信。容器通过网桥实现相互通信,并通过端口映射使外部网络能够访问容器中的服务。这种网络配置使得Docker容器能够在同一个宿主机上创建独立的网络环境,并实现容器之间的隔离和互联。

宿主机的ip

[root@docker ~]# ip add
...
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:f3:a5:85:03 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:f3ff:fea5:8503/64 scope link valid_lft forever preferred_lft forever
29: veth774987e@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 16:84:ce:26:90:d0 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet6 fe80::1484:ceff:fe26:90d0/64 scope link valid_lft forever preferred_lft forever
31: veth94d7539@if30: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default link/ether 76:d6:a8:62:a7:32 brd ff:ff:ff:ff:ff:ff link-netnsid 1inet6 fe80::74d6:a8ff:fe62:a732/64 scope link valid_lft forever preferred_lft forever

容器ip

[root@docker ~]# docker exec box1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
28: eth0@if29: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ffinet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever
[root@docker ~]# docker exec box2 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
30: eth0@if31: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ffinet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever

查看bridge的信息

[root@docker ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.0242f3a58503	no		veth774987eveth94d7539
docker network inspect bridge

在这里插入图片描述

创建网桥接口

创建网桥

docker network create -d bride ydh

查看信息

[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
555b043af3ec   bridge    bridge    local
ebf78f0dd27f   host      host      local
3b7c9e498144   none      null      local
baa150161000   ydh       bridge    local

在宿主机上查看

8: br-baa150161000: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:b0:17:de:a1 brd ff:ff:ff:ff:ff:ffinet 172.18.0.1/16 brd 172.18.255.255 scope global br-baa150161000valid_lft forever preferred_lft forever

查看详细信息

[root@localhost ~]# docker network inspect ydh
[{"Name": "ydh","Id": "baa15016100019f40011d2602d18a19a4fae7fedf73e0dbb32c5ffec229db0a2","Created": "2023-07-25T19:44:06.91098922+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]

创建运行容器指定网桥

[root@localhost ~]# docker run -d --name ynginx -p 8808:80 --network ydh nginx:latest 
2d605d921cac009de338dd45df255dfc0e9552aa264c8bfecd583dd78b723132

host

在Docker中,Host网络模式是一种网络配置选项,它允许Docker容器与宿主机共享同一个网络栈,即它们使用宿主机的网络命名空间和IP地址。这意味着容器与宿主机之间没有网络隔离,它们可以直接使用宿主机的网络接口进行通信,无需进行NAT(Network Address Translation)。

以下是Host网络模式的详细介绍:

  1. 网络共享: 在Host网络模式下,Docker容器和宿主机共享同一个网络栈,它们使用相同的网络接口和IP地址。这使得容器可以直接访问宿主机的网络接口,并且无需进行网络地址转换(NAT)或端口映射。

  2. IP地址和端口: 由于容器与宿主机共享网络栈,所以它们使用宿主机的IP地址和端口。在Host网络模式下,容器无需绑定或映射端口,因为它们直接使用宿主机的端口。

  3. 网络隔离: Host网络模式下的容器与宿主机之间没有网络隔离。这意味着容器可以访问宿主机上的所有网络服务,并且宿主机上的其他网络资源也可以直接访问容器。

  4. 性能: Host网络模式可以提高容器的网络性能,因为容器直接使用宿主机的网络接口,无需经过额外的网络地址转换。

  5. 适用场景: Host网络模式适用于一些特定的应用场景,例如:

    • 当容器需要与宿主机上的其他服务进行高性能的网络通信时。
    • 当容器需要绑定宿主机的特定网络接口,例如某个物理网卡。
    • 当容器需要访问宿主机上的网络服务,而不需要进行端口映射。
  6. 注意事项: 使用Host网络模式会导致容器与宿主机之间没有网络隔离,这可能会增加安全风险。容器与宿主机共享网络栈,所以容器的网络配置会影响到宿主机的网络配置,需要注意避免网络冲突和端口占用问题。

在这里插入图片描述

使用Host网络模式时,您需要明确了解容器与宿主机共享网络栈的特点,以及可能带来的安全风险和性能影响。Host网络模式适用于特定的使用场景,例如高性能网络通信或特定网络绑定需求。对于一般应用,通常建议使用桥接网络模式,以保持容器之间的网络隔离。

none

在Docker中,"none"网络模式是一种特殊的网络模式,容器在该模式下没有网络连接。这意味着容器内的进程无法与外部网络或其他容器通信。在"none"网络模式中,Docker容器不分配任何网络接口,也没有默认的网络配置。以下是"none"网络模式的详细介绍:

1. 没有网络接口: 在"none"网络模式下,Docker容器不会分配任何网络接口,这意味着容器内部没有网络可用。因此,容器内的进程无法访问外部网络,也无法通过网络与其他容器进行通信。

2. 与宿主机隔离: 在"none"网络模式下,容器与宿主机之间是隔离的,容器内的进程无法直接访问宿主机的网络接口和资源。这种隔离保护了宿主机的网络安全,确保容器内部的进程不能直接访问宿主机上的网络和服务。

3. 适用场景: "none"网络模式适用于一些特殊场景,例如在安全敏感的环境中运行容器时,您可能希望容器完全隔离网络,从而防止容器内的应用程序与外部网络进行通信。

4. 容器内部通信: 在"none"网络模式下,容器内部的进程仍然可以通过进程间通信(IPC)机制与其他容器或宿主机进行通信。IPC机制允许容器内的进程使用管道、共享内存等方式进行通信,而无需经过网络。

5. 自定义网络配置: 虽然容器在"none"网络模式下没有网络连接,但是您仍然可以手动配置容器内部的网络,例如通过添加虚拟网络接口或设置本地环回地址。这种情况下,您需要手动设置容器的网络配置,容器才能在"none"网络模式下进行一些局域网的通信。

总结来说,"none"网络模式在Docker中用于将容器完全隔离网络,容器内的进程无法与外部网络通信。这种模式适用于一些特殊场景,例如在需要完全隔离网络的安全环境下运行容器。然而,要注意在"none"网络模式下,容器内的进程之间仍然可以通过IPC机制进行通信,因此局域网内的一些进程间通信仍然是可行的。

container

在Docker中,网络容器(Network Container)是一种特殊的容器,它专门用于管理和提供网络功能,而不运行应用程序。网络容器不是运行应用程序的容器,而是通过Docker的网络驱动程序创建的专门用于网络隔离和连接的容器。以下是网络容器的详细介绍:

1. 网络功能提供: 网络容器的主要目的是提供网络功能,例如实现网络隔离、网络连接、路由和防火墙等。它们可以用于创建自定义网络环境,或者实现特定网络配置,以满足复杂的网络需求。

2. 不运行应用程序: 不同于普通的应用程序容器,网络容器不运行任何应用程序。它们的唯一任务是处理网络功能,并为其他应用程序容器提供网络连接。

3. 容器之间通信: 网络容器可以与其他应用程序容器或其他网络容器进行通信。它们可以在不同的网络环境中运行,提供不同的网络服务,但能够通过Docker的网络功能实现彼此之间的通信。

4. 自定义网络环境: 通过使用网络容器,您可以创建自定义的网络环境,实现更高级的网络配置。例如,您可以创建一个网络容器来实现虚拟私有网络(VPN)功能,将不同的应用程序容器连接到该VPN网络中,从而实现安全的网络通信。

5. 网络隔离: 网络容器通过Docker网络功能提供了网络隔离。这意味着网络容器与其他容器和宿主机之间具有独立的网络命名空间,它们之间的网络不会相互干扰。

6. 网络驱动程序: 网络容器使用Docker的网络驱动程序来实现网络功能。这些网络驱动程序可以是桥接网络、覆盖网络、Macvlan网络等,通过选择不同的网络驱动程序,您可以实现不同的网络配置。

7. 轻量级: 网络容器通常是轻量级的,因为它们不需要运行应用程序,只需专注于网络功能。这使得它们更高效,不会占用过多的系统资源。
在这里插入图片描述

总体来说,网络容器是一种专门用于管理和提供网络功能的容器。它们不运行应用程序,而是专注于网络隔离、连接和配置。通过使用网络容器,您可以实现复杂的网络环境和定制化的网络配置,从而满足不同的网络需求。

overlay

Docker中的Overlay网络是一种用于跨多个Docker主机创建共享虚拟网络的网络驱动程序。它是Docker Swarm集群的核心组件之一,允许容器在不同的主机上透明地通信,实现容器之间的透明网络连接。以下是Overlay网络的详细信息:

1. 跨主机通信: Overlay网络允许在Docker Swarm集群中的多个主机上创建一个共享的虚拟网络。这使得在不同主机上运行的容器可以直接通信,而无需进行额外的配置。

2. 网络隔离: 每个Overlay网络都有独立的命名空间,使得不同的Overlay网络之间具有网络隔离。这意味着在不同的Overlay网络中的容器无法直接通信,除非通过相应的网络配置。

3. 路由和覆盖: Overlay网络使用覆盖(Overlay)技术,通过在底层网络之上构建虚拟网络,实现容器之间的透明通信。每个容器都被分配一个虚拟IP地址,它们之间的通信通过Overlay网络驱动程序进行路由。

4. 透明性: 对于应用程序容器而言,Overlay网络是透明的,它们感知不到跨主机的网络连接。容器可以使用标准的网络配置(IP地址、端口等),就像在单个主机上运行一样。

5. 网络驱动程序: Overlay网络是Docker的一种网络驱动程序。要启用Overlay网络,您需要在Docker Swarm模式下创建一个Overlay网络,然后将需要在Overlay网络中通信的服务或容器加入到该网络中。

6. 安全性: Overlay网络使用加密和安全机制来保护跨主机的通信,确保数据在传输过程中是安全的。这为容器之间的安全通信提供了保障。

7. 负载均衡: Overlay网络集成了内置的负载均衡机制,可以自动在多个容器之间分配请求,实现负载均衡,提高应用程序的可用性和性能。

8. 多主机部署: Overlay网络特别适用于在多个Docker主机上部署应用程序。通过将容器分布在不同的主机上,Overlay网络可以实现高可用性和横向扩展。

总结来说,Overlay网络是一种在Docker Swarm集群中创建共享虚拟网络的网络驱动程序。它允许在不同主机上的容器透明地通信,实现容器之间的透明网络连接。通过Overlay网络,您可以在多主机环境中构建高可用性、横向扩展的应用程序。

overlay底层原理

Docker中的Overlay网络是一种非常强大的网络驱动程序,它允许在多个Docker主机上创建一个共享的虚拟网络。通过Overlay网络,您可以在不同的主机上运行容器,并使这些容器能够直接通信,而无需进行端口映射。下面是Overlay网络的底层原理的详细信息:

  1. VXLAN技术: Overlay网络的底层原理使用了VXLAN(Virtual Extensible LAN)技术。VXLAN是一种网络虚拟化技术,它通过在现有网络上创建逻辑隧道,将数据包封装在UDP数据包中,从而在不同网络之间传输数据。

  2. 虚拟网络隧道: 在Overlay网络中,每个Docker主机上的容器都属于一个虚拟网络,这些虚拟网络之间通过虚拟网络隧道进行通信。每个虚拟网络都有一个唯一的VXLAN网络标识(VNI,VXLAN Network Identifier),用于在底层区分不同的虚拟网络。

  3. VXLAN头: 在Overlay网络中,VXLAN头是在传输数据包时添加到原始数据包之前的一部分。VXLAN头包含了虚拟网络标识(VNI),用于识别数据包所属的虚拟网络。这样,当数据包在Overlay网络中传输时,Docker主机可以根据VNI将数据包正确地路由到目标虚拟网络。

  4. 网络广播: 在Overlay网络中,Docker主机使用广播机制来发现其他主机上的容器和虚拟网络。当新的容器加入或离开虚拟网络时,主机之间会进行广播通信,以更新虚拟网络中的拓扑结构。

  5. 数据包转发: 在Overlay网络中,Docker主机会根据VXLAN头中的VNI信息,将数据包转发到相应的虚拟网络。这样,即使容器位于不同的Docker主机上,它们也可以直接通信,就像它们在同一主机上一样。

  6. 控制平面和数据平面: Overlay网络通常由控制平面和数据平面组成。控制平面用于管理虚拟网络的拓扑结构和路由信息,而数据平面负责实际的数据包转发和通信。

在这里插入图片描述

总结来说,Overlay网络通过VXLAN技术创建虚拟网络隧道,使得分布在不同Docker主机上的容器能够直接通信。VXLAN头中的VNI标识用于将数据包正确路由到目标虚拟网络。Overlay网络的底层原理允许容器在不同主机之间建立透明的网络连接,从而实现高效的分布式应用部署。

相关文章:

Docker中的网络

文章目录 网络网桥&#xff08;bridge&#xff09;创建网桥接口hostnonecontaineroverlayoverlay底层原理 网络 网桥&#xff08;bridge&#xff09; 在Docker中&#xff0c;网桥&#xff08;Bridge&#xff09;是一种网络驱动&#xff0c;用于实现Docker容器之间和容器与宿主…...

SRS开源代码框架,协程库state-threads的使用

本章内容解读SRS开源代码框架&#xff0c;无二次开发&#xff0c;以学习交流为目的。 SRS是国人开发的流媒体服务器&#xff0c;C语言开发&#xff0c;本章使用版本&#xff1a;https://github.com/ossrs/srs/tree/5.0release。 目录 SRS协程库ST的使用源码ST协程库测试SrsAut…...

【QT 网络云盘客户端】——登录界面功能的实现

目录 1.注册账号 2.服务器ip地址和端口号设置 3. 登录功能 4.读取配置文件 5.显示主界面 1.注册账号 1.点击注册页面&#xff0c;将数据 输入 到 用户名&#xff0c;昵称&#xff0c;密码&#xff0c;确认密码&#xff0c;手机&#xff0c;邮箱 的输入框中&#xff0c; 点…...

【复盘与分享】第十一届泰迪杯B题:产品订单的数据分析与需求预测

文章目录 题目第一问第二问2.1 数据预处理2.2 数据集分析2.2.1 训练集2.2.2 预测集 2.3 特征工程2.4 模型建立2.4.1 模型框架和评价指标2.4.2 模型建立2.4.3 误差分析和特征筛选2.4.4 新品模型 2.5 模型融合2.6 预测方法2.7 总结 结尾 距离比赛结束已经过去两个多月了。 整个过…...

X - Transformer

回顾 Transformer 的发展 Transformer 最初是作为机器翻译的序列到序列模型提出的&#xff0c;而后来的研究表明&#xff0c;基于 Transformer 的预训练模型&#xff08;PTM&#xff09; 在各项任务中都有最优的表现。因此&#xff0c;Transformer 已成为 NLP 领域的首选架构&…...

ubuntu下畅玩Seer(via wine)

第一步&#xff1a;安装wine 部分exe文件的运行需要32位的指令集架构&#xff0c;需要向Ubuntu系统中添加一个新的架构&#xff08;i386&#xff09;&#xff0c;以支持32位的软件包。因为在64位的Ubuntu系统中&#xff0c;默认情况下只能安装和运行64位的软件。 通过添加i386…...

第五章:Spring下

第五章&#xff1a;Spring下 5.1&#xff1a;AOP 场景模拟 创建一个新的模块&#xff0c;spring_proxy_10&#xff0c;并引入下面的jar包。 <packaging>jar</packaging><dependencies><dependency><groupId>junit</groupId><artifactI…...

在CSDN学Golang云原生(Kubernetes基础)

一&#xff0c;k8s集群安装和升级 安装 Golang K8s 集群可以参照以下步骤&#xff1a; 准备环境&#xff1a;需要一组 Linux 服务器&#xff0c;并在每台服务器上安装 Docker 和 Kubernetes 工具。初始化集群&#xff1a;使用 kubeadm 工具初始化一个 Kubernetes 集群。例如&…...

给APK签名—两种方式(flutter android 安装包)

前提&#xff1a;给未签名的apk签名&#xff0c;可以先检查下apk有没有签名 通过命令行查看&#xff1a;打开终端或命令行界面&#xff0c;导入包含APK文件的目录&#xff0c;并执行以下命令&#xff1a; keytool -printcert -jarfile your_app.apk 将 your_app.apk替换为要检查…...

观察者模式、中介者模式和发布订阅模式

观察者模式 定义 观察者模式定义了对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到通知&#xff0c;并自动更新 观察者模式属于行为型模式&#xff0c;行为型模式关注的是对象之间的通讯&#xff0c;观察者模式…...

PHP-Mysql图书管理系统--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页phpStudy 设置导数据库后台的管理界面数据库表结构项目目录如图&#xff1a;代码部分&#xff1a;主页的head 配套资源作业&#xff1a; 本系列校训 用免费公开视频&am…...

网络传输层协议:UDP和TCP

背景知识 再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序&#xff1b; 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过 netstat -…...

ElementUI Select选择器如何根据value值显示对应的label

修改前效果如图所示&#xff0c;数据值状态应显示为可用&#xff0c;但实际上仅显示了状态码1&#xff0c;并没有显示其对应的状态信息。在排查了数据类型对应关系问题后&#xff0c;并没有产生实质性影响&#xff0c;只好对代码进行了如下修改。 修改前代码&#xff1a; <…...

Kotlin 内联函数语法之let、apply、also、run、with的用法与详解

一、介绍 kotlin的语法千奇百怪&#xff0c;今天我们将介绍项目中频率使用比较高的几个内联函数。 二、什么叫内联函数&#xff1f; 内联函数 的语义很简单&#xff1a;把函数体复制粘贴到函数调用处 。使用起来也毫无困难&#xff0c;用 inline关键字修饰函数即可。 语法&a…...

Swift 中如何判断是push 过来的页面 还是present过来的 页面

在 Swift 中&#xff0c;可以通过检查当前视图控制器的 presentingViewController 属性来判断是通过 push 过来的页面还是 present 过来的页面。 下面是一个示例代码&#xff0c;展示如何判断是通过 push 还是 present 过来的页面&#xff1a; if let presentingViewControll…...

基于K8s环境·使用ArgoCD部署Jenkins和静态Agent节点

今天是「DevOps云学堂」与你共同进步的第 47天 第⑦期DevOps实战训练营 7月15日已开营 实践环境升级基于K8s和ArgoCD 本文节选自第⑦期DevOps训练营 &#xff0c; 对于训练营的同学实践此文档依赖于基础环境配置文档&#xff0c; 运行K8s集群并配置NFS存储。实际上只要有个K8s集…...

874. 模拟行走机器人

874. 模拟行走机器人 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands &#xff1a; -2 &#xff1a;向左转 90 度-1 &#xff1a;向右转 90 度1 < x < 9 &#xff1a;…...

【Linux】- RPM 与 YUM

RPM 与 YUM 1.1 rpm 包的管理1.2 rpm 包的简单查询指令1.3 rpm 包的其它查询指令&#xff1a;1.4 卸载 rpm 包&#xff1a;2.1 安装 rpm 包3.1 yum3.2 yum 的基本指令3.3 安装指定的 yum 包3.4 yum 应用实例&#xff1a; 1.1 rpm 包的管理 介绍 rpm 用于互联网下载包的打包及安…...

Visual Studio 2015编译器 自动生成 XXX_EXPORTS宏

XXX_EXPORTS宏 XXX_EXPORTS宏是由Visual Studio 2015编译器自动生成的。这个宏用于标识当前项目是一个导出符号的动态链接库&#xff08;DLL&#xff09;项目。在使用Visual Studio 2015创建Win32项目时&#xff0c;编译器会自动添加这个宏到项目的预定义宏中。 这个宏的作用…...

HTML5的应用现状与发展前景

HTML5&#xff0c;作为Web技术的核心&#xff0c;已经深深地改变了我们看待和使用Web的方式。它不仅提供了数不尽的新特性和功能&#xff0c;还使得Web设计和开发更加互动、更加直观。这篇文章将探讨HTML5的当前应用现状&#xff0c;以及它的未来发展前景。 HTML5的应用现状 H…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...