突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))
1 网络层概述
TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。
一、主要功能
网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后,传输层将其封装成数据包(通常称为段),并传递给网络层。网络层根据数据包中的目的地址信息,确定数据包应该通过哪些路由器或交换机进行转发,最终到达目标主机。
为了实现这一功能,网络层使用了 IP(Internet Protocol,互联网协议)作为其核心协议。IP 协议定义了在网络中如何寻址、传递和分配数据包。每个数据包都包含源 IP 地址和目的 IP 地址,这样网络层就可以根据这些地址信息来确定数据包的传输路径。
二、其他协议
除了 IP 协议外,网络层还包含了一些其他的协议,以支持更复杂的网络功能和错误处理。例如,ICMP(Internet Control Message Protocol,互联网控制消息协议)用于在网络中传递错误消息。当数据包在网络中传输时,如果遇到问题(如无法到达目的地址或数据包过期),ICMP协议会生成相应的错误消息并返回给源主机,以便源主机能够采取相应的处理措施。
三、路由选择
网络层还负责路由选择,即根据网络拓扑结构、链路状态、路由算法等信息,选择最佳的数据包传输路径。这通常涉及到动态路由协议(如 OSPF、BGP 等)和静态路由配置。动态路由协议允许路由器之间交换路由信息,并根据网络变化自动调整路由表;而静态路由则需要管理员手动配置路由条目。
四、安全性与可靠性
网络层还涉及一些安全性和可靠性的考虑。例如,IPsec(IP 安全性)协议提供了对网络层数据包的加密和认证功能,以确保数据在传输过程中的机密性和完整性。此外,网络层还通过一些机制(如分片与重组、流量控制等)来确保数据包的可靠传输。
2 网络层与 OSI 七层模型中网络层的比较
TCP/IP 四层模型与 OSI 七层模型都是用于描述计算机网络通信的架构模型,但它们之间存在一些显著的差异。特别是在网络层这一部分,两种模型虽然有着相似的功能和作用,但在具体的实现和应用上却有所不同。以下是对 TCP/IP 四层模型中网络层与 OSI 七层模型中网络层的详细比较:
一、定义与功能
TCP/IP 四层模型中的网络层主要负责处理数据包(在 TCP/IP 中通常称为数据报)的路由和转发,确保数据能够从源主机准确地传输到目标主机。它使用 IP 协议作为核心,处理机器之间跨多个网络的路由,并管理网络名称和地址。
OSI 七层模型中的网络层则位于数据链路层和应用层之间,它同样负责数据的路由和转发,但更注重于为数据提供可靠的传输路径。OSI 网络层关注于将数据从源端经过若干个中间节点传送到目的端,并为此提供最基本的端到端的数据传送服务。
二、协议与组件
TCP/IP 网络层的主要协议包括 IP 协议、ICMP 协议、ARP 协议等。这些协议共同协作,实现数据包的封装、寻址、路由选择和转发等功能。
OSI 网络层则包含更多的协议和组件,如 X.25 协议、综合业务数据网(ISDN)、异步传输模式(ATM)等。这些协议和组件提供了更丰富的网络服务和功能,以满足不同应用场景的需求。
三、关注点与优化
TCP/IP 网络层更注重于实际应用的效率和性能。它采用了一系列优化措施,如分片与重组、流量控制等,以确保数据能够高效、可靠地传输。此外,TCP/IP 网络层还关注于安全性,通过 IPsec 等协议提供对网络层数据包的加密和认证功能。
OSI 网络层则更关注于网络的标准化和通用性。它定义了一系列通用的网络服务和接口,以便不同的网络设备和应用可以无缝地连接和通信。OSI 网络层还关注于网络的扩展性和灵活性,以适应不断变化的网络环境。
四、实际应用与影响
TCP/IP 模型由于其简洁性和实用性,在实际应用中得到了广泛的采用。互联网以及大多数现代计算机网络都是基于 TCP/IP 协议栈构建的。TCP/IP 网络层的优秀设计使得这些网络能够高效地处理大量数据传输任务。
OSI 模型虽然提供了对网络通信的详尽描述和标准化,但在实际应用中并没有得到广泛采用。这主要是因为 OSI 模型过于复杂和庞大,难以在实际网络环境中实现。然而,OSI 模型对于网络研究和教学仍然具有重要意义,它提供了一种理解和分析网络通信的有效框架。
3 网络层基础
3.1 IP 地址
一、IP地址
IP地址,即互联网协议地址,是分配给连接到互联网的设备的一个数字标签。它用于在网络层中标识和定位设备,确保数据包能够准确地送达目标设备。每个IP地址都是唯一的,由网络部分和主机部分组成。
IP地址可以分为四个类别:A 类、B 类、C 类和 D 类。每个类别的IP地址范围、网络部分和主机部分的位数都有所不同。例如,A 类地址的网络部分占用前 8 位,主机部分占用后 24 位;而C类地址的网络部分占用前 24 位,主机部分占用后 8 位。这种分类方式有助于根据网络规模选择合适的 IP 地址类别。
A类 IP 地址:
- A 类 IP 地址由 1 字节的网络地址和 3 字节的主机地址组成。网络地址的最高位必须是“0”。
- 地址范围从 1.0.0.0 到 126.0.0.0。
- A 类地址通常用于大型网络,每个网络可以容纳超过 1 亿个主机。
B 类 IP 地址:
- B 类 IP 地址由 2 字节的网络地址和 2 字节的主机地址组成,网络地址的最高位必须是“10”。
- 地址范围从 128.0.0.0 到 191.255.255.255。
- B 类地址适用于中等规模的网络。
C 类 IP 地址:
- C 类 IP 地址由 3 字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。
- 范围从 192.0.0.0 到 223.255.255.255。
- C 类地址通常用于小型网络,每个网络能容纳 254 个主机。
D 类 IP 地址:
- D 类地址不用于标识具体的网络设备,而是用于多播(Multicast)地址,即一个数据包可以发送给多个目标设备。
- D 类 IP 地址的第一个字节以“1110”开始,地址范围从 224.0.0.0 到 239.255.255.255。
3.2 子网划分
在网络层中,子网划分是一个核心概念,它用于将一个大的网络分割成若干个子网络,以提高IP地址的利用率和网络的灵活性。
(1)子网划分的基本原理
子网划分的基本思想是通过改变 IP 地址的默认子网掩码,来重新定义网络地址和主机地址的边界。默认情况下,IP 地址根据类别(A 类、B 类、C 类)来划分网络部分和主机部分。但子网划分允许我们根据实际需求,自定义这些边界,从而更精细地控制网络地址的分配。
子网掩码是实现子网划分的关键。它是一个 32 位的二进制数,与 IP 地址一起使用,来确定哪些位是网络地址,哪些位是主机地址。例如,对于一个C类地址(如 192.168.1.0),默认的子网掩码是 255.255.255.0。通过改变这个子网掩码,我们可以将网络划分为更小的子网。
(2)子网划分的步骤
- 确定原始网络和子网掩码:首先,需要知道原始的IP地址范围和子网掩码。
- 计算可用主机数:根据原始子网掩码,计算每个子网中可用的主机数。
- 确定新的子网掩码:根据所需的子网数量和每个子网中的主机数,确定新的子网掩码。
- 划分子网:使用新的子网掩码,将原始网络划分为多个子网。
- 分配IP地址:为每个子网分配IP地址范围,并确保它们不会重叠。
(3)示例
假设我们有一个 C 类网络地址 192.168.1.0,默认的子网掩码是 255.255.255.0。现在,我们希望将这个网络划分为 4 个子网,每个子网中至少有 10 台主机。
-
计算可用主机数:原始的子网掩码 255.255.255.0 意味着前 24 位是网络地址,后 8 位是主机地址。因此,每个子网最多可以有 2^8-2=254 台主机(减去网络地址和广播地址)。
-
确定新的子网掩码:由于我们需要 4 个子网,我们需要至少 2 位来表示这些子网。这意味着我们需要从主机地址中借用 2 位作为网络地址。因此,新的子网掩码将是 255.255.255.192(即 11111111.11111111.11111111.11000000)。
-
划分子网:使用新的子网掩码,我们可以将网络划分为以下4个子网:
192.168.1.0/26(网络地址:192.168.1.0,主机范围:192.168.1.1-192.168.1.62)
192.168.1.64/26(网络地址:192.168.1.64,主机范围:192.168.1.65-192.168.1.126)
192.168.1.128/26(网络地址:192.168.1.128,主机范围:192.168.1.129-192.168.1.190)
192.168.1.192/26(网络地址:192.168.1.192,主机范围:192.168.1.193-192.168.1.254)
- 分配IP地址:现在,每个子网都有足够的IP地址供至少10台主机使用。你可以根据需要为每个子网分配IP地址。
3.3 CIDR
CIDR(Classless Inter-Domain Routing,无类域间路由选择)是 TCP/IP 四层模型中网络层的一种 IP 地址分配和路由选择技术。这种技术相较于传统的IP地址分类方式,提供了更加灵活和高效的 IP 地址管理方案。
CIDR 的核心思想在于打破了基于类别的 IP 地址分配限制,引入了可变长度子网掩码(VLSM)的概念。通过 CIDR,管理员可以根据实际需求,灵活地调整网络前缀的长度,从而实现对 IP 地址空间的更高效利用。
在CIDR 中,IP 地址被划分为网络前缀和主机标识符两部分。网络前缀用于标识网络地址,而主机标识符则用于标识网络内的具体主机。这种划分方式使得 IP 地址的分配更加灵活,能够适应不同规模的网络需求。
CIDR 使用一个斜线后跟一个数字来表示前缀长度,例如 192.168.0.0/16。在这个例子中,“/16”表示前 16 位是网络部分,剩下的位则是主机部分。这种表示法使得我们可以快速判断一个 IP 地址属于哪个网络。
CIDR 的引入带来了诸多好处。首先,它提高了 IPv4 地址空间的分配效率,减少了 IP 地址的浪费。其次,CIDR 使得路由表更加简洁,提高了路由选择的效率。此外,CIDR 还有助于简化网络管理,降低网络维护成本。
在实际应用中,CIDR 使得网络管理员能够更加精确地控制IP地址的分配和使用。例如,在划分子网时,管理员可以根据子网内主机的数量,灵活地调整网络前缀的长度,从而确保每个子网都能得到足够的IP地址资源。
3.3 VLSM
VLSM(Variable Length Subnet Mask,可变长子网掩码)是网络层的一个关键概念,它允许网络管理员根据实际需求定制子网的大小,从而实现更灵活和高效的IP地址管理。
(1)VLSM 的基本原理
在传统的 IP 地址分配中,子网掩码是固定的,因此每个子网的大小也是固定的。这可能导致某些子网中 IP 地址的浪费,而另一些子网则可能面临 IP 地址不足的问题。VLSM 通过引入可变长的子网掩码,打破了这种限制,使得每个子网可以有不同的大小。
VLSM 的核心思想是从主机位中借用几位作为网络位,从而扩展网络部分的位数。通过调整子网掩码的长度,可以精确地控制每个子网的大小和范围。
(2)VLSM 的应用
VLSM 主要应用于大型网络环境中,特别是在需要精细控制 IP 地址分配和路由选择的情况下。它可以帮助网络管理员更有效地利用IP地址空间,减少地址浪费,并简化网络管理。
(3)示例
假设我们有一个 C 类网络地址 192.168.1.0,默认的子网掩码是 255.255.255.0。现在,我们希望将这个网络划分为两个大小不同的子网。
- 确定原始网络和子网掩码:
原始网络地址:192.168.1.0
原始子网掩码:255.255.255.0
- 计算可用主机数:
在默认子网掩码下,每个子网可以有 254 个可用主机地址(减去网络地址和广播地址)。
- 确定新的子网掩码:
我们希望将网络划分为两个子网,一个大子网和一个小子网。假设大子网需要 200 个主机地址,小子网需要 50 个主机地址。
对于大子网,我们需要一个能够容纳 200 个主机的子网掩码。由于 2^8 = 256,我们可以使用/24(即 255.255.255.0)作为子网掩码,这将提供足够的地址空间。
对于小子网,我们需要一个能够容纳 50 个主机的子网掩码。由于 2^7 = 128,我们可以使用/27(即 255.255.255.224)作为子网掩码。
- 划分子网:
使用/24作为大子网的子网掩码,保持原始网络地址 192.168.1.0 不变。
对于小子网,我们需要从原始网络中借用几位作为网络位。从主机位中借用 3 位(因为 2^3 = 8,足够区分两个子网),得到新的子网地址 192.168.1.32(二进制表示为 11000000.10101000.00000001.00100000)。小子网的子网掩码为 255.255.255.224。
- 分配IP地址:
大子网的IP地址范围为 192.168.1.1 至 192.168.1.254(除去网络地址和广播地址)。
小子网的IP地址范围为 192.168.1.33 至 192.168.1.62(同样除去网络地址和广播地址)。
通过这个示例,我们可以看到 VLSM 如何允许我们根据实际需求创建不同大小的子网,从而更有效地利用 IP 地址空间。这种灵活性使得 VLSM 成为大型和复杂网络环境中不可或缺的工具。
3.4 超网
超网(Supernetting)是一种 IP 地址分配技术,主要用于简化路由表,提高网络的可扩展性和灵活性。超网通过聚合多个连续的子网,形成一个更大的、逻辑上统一的网络,从而减少了路由表中的条目数量,降低了路由器的处理负担。
(1)超网的基本原理
在传统的 CIDR(无类别域间路由)技术中,IP 地址被划分为网络前缀和主机标识符两部分。通过改变网络前缀的长度,CIDR 可以灵活地划分不同大小的子网。然而,随着网络规模的扩大和子网数量的增加,路由表的复杂性也会不断上升,给网络管理带来挑战。
超网技术就是在 CIDR 的基础上进一步发展的。它通过将多个连续的 CIDR 块聚合成一个更大的网络,简化了路由表的结构。具体来说,超网技术允许我们定义一个比单个子网更长的网络前缀,从而将多个子网合并成一个超网。这样做的好处是减少了路由表中需要维护的子网数量,降低了网络管理的复杂性。
(2)超网的实现方式
实现超网的关键在于确定一个合适的网络前缀长度,以便将多个连续的 CIDR 块合并成一个超网。这通常需要根据网络的实际情况和需求进行权衡和选择。一旦确定了网络前缀长度,就可以将多个 CIDR 块聚合到一个超网中,并在路由表中用一条记录来表示这个超网。
(3)示例
假设我们有以下四个连续的CIDR块:
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24
这四个 CIDR 块都是/24 的,意味着它们各自有 256 个 IP 地址(其中 2 个用于网络地址和广播地址,剩下 254 个可用于主机)。如果我们想将这四个 CIDR 块合并成一个超网,可以选择一个更长的网络前缀。在这个例子中,我们可以选择/22 作为超网的网络前缀。
上面/22 的前缀意味着前 22 位是网络地址,后 10 位是主机地址。这样,我们就可以将上述四个 CIDR 块合并成一个 192.168.0.0/22 的超网。这个超网包含了从 192.168.0.0 到 192.168.3.255 的所有 IP 地址。
在路由表中,我们只需要一条记录来表示这个超网,而不是四条记录来分别表示四个 CIDR 块。这大大简化了路由表的结构,提高了路由器的处理效率。
(4)超网的优势
超网技术的优势主要体现在以下几个方面:
- 简化路由表:通过聚合多个子网成一个超网,减少了路由表中的条目数量,使得路由表更加简洁。
- 提高路由效率:减少了路由器的处理负担,提高了数据包转发的速度和准确性。
- 增强网络可扩展性:随着网络的扩展,可以通过调整超网的网络前缀长度来适应不同的需求,保持网络的灵活性和可扩展性。
3.5 私有 IP 地址
私有 IP 地址主要用于在本地局域网中标识设备,确保它们可以相互通信。与公有 IP 地址(即互联网上全局可达的IP地址)不同,私有IP地址不会在互联网上路由,因此它们只能在特定范围内使用。
私有 IP 地址范围由 IANA(Internet Assigned Numbers Authority)保留,主要包括以下三个范围:
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
这些地址范围被专门用于私有网络,如家庭网络、办公室局域网、数据中心等场景。在这些场景中,私有 IP 地址可以确保局域网内的设备之间可以通信,而不会与其他网络的设备发生冲突。
在选择私有 IP 地址时,企业需要注意以下几点:
- 避免与常见的网络设备或应用程序自动分配的 IP 地址范围重叠,如 192.168.0.0 和 192.168.1.0 段,以减少 IP 地址冲突或其他故障的可能性。
- 可以采用 C 类地址的子网掩码,并根据需要采用变长子网掩码,以获取更多的 IP 网段,并使每个子网中所容纳的计算机数量更为适宜。
通过合理使用私有 IP 地址,网络管理员可以更加灵活和高效地管理本地局域网内的设备,确保它们之间的通信顺畅,同时避免与互联网上的其他设备发生冲突。
3.6 NAT
NAT(Network Address Translator,网络地址转换)用于在私有网络和公共网络之间转换地址。NAT 允许一个私有网络(如一个家庭或企业的内部网络)中的设备使用私有 IP 地址,并通过一个公共 IP 地址与外部网络(如互联网)进行通信。
NAT 的主要功能包括地址转换和端口转换。
- 地址转换:当私有网络中的设备要访问外部网络时,NAT 设备(如路由器或防火墙)会为该设备分配一个临时的公共 IP 地址。这通常是通过修改设备发送的数据包中的源 IP 地址来实现的,将私有 IP 地址替换为公共 IP 地址。这样,外部网络就可以通过这个公共 IP 地址与私有网络中的设备进行通信。
- 端口转换:NAT 还负责处理端口转换。当外部网络响应私有网络中的设备时,NAT 设备会将响应数据中的目标公共 IP 地址和端口号转换回原始的私有 IP 地址和端口号。这样,私有网络中的设备就能正确地接收到外部网络的响应。
NAT 的使用有几个主要优点:
- 节省公共 IP 地址:由于多个私有设备可以共享一个公共 IP 地址,NAT 有助于节省公共IP地址资源。
- 提高安全性:通过隐藏私有网络的内部结构和设备,NAT 提供了一定程度的安全保护,使得外部网络难以直接访问私有网络中的设备。
- 简化网络管理:NAT 可以简化网络地址配置和管理任务,特别是在大型网络中。
然而,NAT也有一些潜在的缺点,如可能增加网络延迟、在某些情况下可能导致通信问题(如某些基于端到端连接的应用可能无法正常工作),以及可能增加网络日志和追踪的难度。
相关文章:
突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))
1 网络层概述 TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。 一、主要功能 网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后&#x…...

Java | Leetcode Java题解之第9题回文数
题目: 题解: class Solution {public boolean isPalindrome(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文࿰…...

极简云验证 download.php 文件读取漏洞复现
0x01 产品简介 极简云验证是一款开源的网络验证系统,支持多应用卡密生成:卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等;支持多应用多用户管理:应用备注 应用版…...

红黑树路径长度分析:证明与实现
红黑树路径长度分析:证明与实现 一、红黑树的基本性质二、证明:最长路径至多是最短路径的2倍2.1 证明思路2.2 证明过程 三、伪代码实现四、 C语言代码实现5、 结论 红黑树作为一种高效的自平衡二叉搜索树,在计算机科学领域中被广泛应用于各种…...
esp32 gpio初识(一)
目录 功能介绍 实操 功能介绍 引脚又叫管脚,英文叫 Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。 在我们的 ESP32 开发板上, 我们可以把这些称为引脚, 这些引脚其实是从 ESP32 芯片内部引出来的, 我们…...
python 自制黄金矿工游戏(设计思路+源码)
1.视频效果演示 python自制黄金矿工,细节拉满沉浸式体验,看了你也会 2.开发准备的工具 python3.8, pygame库(python3.5以上的版本应该都可以) 图片处理工具,美图秀秀 截图工具,电脑自带的 自动抠图网页:https://ko…...

Splunk Attack Range:一款针对Splunk安全的模拟测试环境创建工具
关于Splunk Attack Range Splunk Attack Range是一款针对Splunk安全的模拟测试环境创建工具,该工具完全开源,目前由Splunk威胁研究团队负责维护。 该工具能够帮助广大研究人员构建模拟攻击测试所用的本地或云端环境,并将数据转发至Splunk实例…...

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 本例程运行环境为CentOS7&…...
opencv-python库 cv2边界填充resize图片
文章目录 边界填充改变图片大小 边界填充 在OpenCV中,边界填充(Border Padding)是指在图像周围添加额外的像素,以扩展图像的尺寸或满足某些算法(如卷积)的要求。OpenCV提供了cv2.copyMakeBorder()函数来进…...

Java代码基础算法练习-负数个数统计-2024.04.04
任务描述: 从键盘输入任意10个整型数(数值范围-100000~100000),统计其中的负数个数 任务要求: 代码示例: package April_2024;import java.util.Scanner;// 从键盘输入任意10个整型数(数值范围…...
【算法刷题day17】Leetcode:110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
110.平衡二叉树 文档链接:[代码随想录] 题目链接::110.平衡二叉树 题目: 给定一个二叉树,判断它是否是 平衡二叉树 注意: 判断两棵子树高度差是否大于1 class Solution { public:int result;bool isBalanced(TreeNode…...

C++ | Leetcode C++题解之第10题正则表达式匹配
题目: 题解: class Solution { public:bool isMatch(string s, string p) {int m s.size();int n p.size();auto matches [&](int i, int j) {if (i 0) {return false;}if (p[j - 1] .) {return true;}return s[i - 1] p[j - 1];};vector<…...
职场迷航?MBTI测试为你指明方向,找到最匹配的职业!
MBTI简介 MBTI的全名是Myers-Briggs Type Indicator。它是一种迫选型、自我报告式的性格评估工具,用以衡量和描述人们在获取信息、作出决策、对待生活等方面的心理活动规律和性格类型。 类型指标 美国的凯恩琳布里格斯和她的女儿伊莎贝尔布里格斯迈尔斯研制了迈尔…...

hive 慢sql 查询
hive 慢sql 查询 查找 hive 执行日志存储路径(一般是 hive-audit.log ) 比如:/var/log/Bigdata/audit/hive/hiveserver/hive-audit.log 解析日志 获取 执行时间 执行 OperationId 执行人 UserNameroot 执行sql 数据分隔符为 \001 并写入 hiv…...

Vue - 2( 10000 字 Vue 入门级教程)
一:Vue 1.1 绑定样式 1.1.1 绑定 class 样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>......</style><script type"text/javascript" src&…...

Cisco交换机安全配置
Cisco交换机安全配置 前提 我们以下命令一般都要先进入Config模式 S1> enable S1# conf t S1(config)#端口安全保护 禁用未使用的端口 以关闭fa0/1到fa0/24的端口为例 S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击 防止CAM…...

LLM大模型可视化-以nano-gpt为例
内容整理自:LLM 可视化 --- LLM Visualization (bbycroft.net)https://bbycroft.net/llm Introduction 介绍 Welcome to the walkthrough of the GPT large language model! Here well explore the model nano-gpt, with a mere 85,000 parameters. 欢迎来到 GPT 大…...
【layui-table】转静态表格时固定表格列处理行高和单元格颜色
处理思路:覆盖layui部分表格样式 行高处理:获取当前行数据单元格的最高高度,将当前行所有数据单元格高度设置为该最高高度 单元格颜色处理:将原生表格转换为layui表格后,因为原生表格的表格结构和生成的layui表格结构…...

如何同时安全高效管理多个谷歌账号?
您的业务活动需要多个 Gmail 帐户吗?出海畅游,Gmail账号是少不了的工具之一,可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台,可以说是海外网络的“万能锁”。但是大家都知道,以上这些平台注册多账号如果产生关…...

使用docker-tc对host容器进行限流
docker-tc是一个github开源项目,项目地址是https://github.com/lukaszlach/docker-tc。 运行docker-tc docker run -d \ --name docker-tc \ --network host \ --cap-add NET_ADMIN \ --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...