网络协议从入门到底层原理学习(二)—— Mac地址/IP地址

news2024/11/25 13:38:33

文章目录

    • 网络协议从入门到底层原理学习(二)—— Mac地址/IP地址
      • 1、MAC地址
      • 2、MAC地址的表示格式
      • 3、MAC地址表
      • 4、MAC地址操作
      • 5、MAC地址的获取
      • 6、ARP
      • 7、ICMP
      • 8、IP地址
      • 9、IP地址的分类和格式
      • 10、不同分类的IP地址的范围
      • 11、特殊 IP 地址
      • 12、子网掩码
      • 13、子网划分
      • 14、超网

网络协议从入门到底层原理学习(二)—— Mac地址/IP地址

1、MAC地址

MAC地址(Media Access Control Address)也称为硬件地址或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

MAC地址由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的。

在这里插入图片描述
组织唯一标识符(OUI)由IEEE(电气和电子工程师协会)分配给厂商,它包含24位。厂商再用剩下的24位(EUI,扩展唯一标识符)为其生产的每个网卡分配一个全球唯一的全局管理地址,一般来说大厂商都会购买多个OUI。

I/G(Individual/Group)位,如果I/G=0,则是某台设备的MAC地址,即单播地址;如果I/G=1,则是多播地址(组播+广播=多播)。

G/L(Global/Local,也称为U/L位,其中U表示Universal)位,如果G/L=0,则是全局管理地址,由IEEE分配;如果G/L=1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。

2、MAC地址的表示格式

  • Windows

    • 40-55-82-0A-8C-6D
  • Linux、Android、Mac、iOS

    • 40:55:82:0A:8C:6D
  • Packet Tracer

    • 4055.820A.8C6D
  • 当48位全为1时,代表广播地址

    • FF-FF-FF-FF-FF-FF

MAC地址可以分为3种类型:

  • 物理MAC地址:这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址;

  • 广播MAC地址:全1的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备;

  • 组播MAC地址:除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。

3、MAC地址表

​ MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系,以及接口所属VLAN等信息。设备在转发报文时,根据报文的目的MAC地址查询MAC地址表,如果MAC地址表中包含与报文目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含报文目的MAC地址对应的表项时,设备将采取广播方式在所属VLAN内除接收接口外的所有接口转发该报文。

MAC地址表的分类

​ MAC地址表中的表项分为:动态表项、静态表项和黑洞表项。另外交换机的MAC地址表中还存在一种业务类型的MAC地址表项,譬如:安全MAC、MUX MAC、Authen MAC、Guest MAC等。该类MAC地址表项是由对应业务维护的,一般是通过动态表项转换来的。
在这里插入图片描述
MAC地址表的组成

​ MAC地址表是以MAC地址和VLAN ID或VSI为索引来唯一标识。当一台目的主机属于多个VLAN或VSI时,在MAC地址表中就会存在相同MAC地址拥有多个不同VLAN ID或VSI的情况。

MAC地址表的作用

​ MAC地址表用于指导报文进行单播转发。如图中,PC1发往PC3的报文,在到达交换机Switch时,根据报文中的目的MAC地址MAC3和VLAN10查询交换机的MAC地址表,获取出接口Port3,然后报文直接从接口Port3转发到PC3,完成数据的转发。

在这里插入图片描述

4、MAC地址操作

  • 查询方法

    在命令提示符下输入命令“ipconfig /all”回车之后就会显示当前计算机的一些网络信息,其中“Physical Address”(物理地址)字样的这一项就是当前计算机中网卡的 MAC地址。

请添加图片描述

  • 修改 MAC 地址

更改适配器选项 —— 属性 —— 配置 —— 高级 —— 网络地址

  • 填写的时候需要把减号(-)去掉

在这里插入图片描述

5、MAC地址的获取

当不知道对方主机的 MAC 地址时,可以通过发送 ARP 广播获取对方的 MAC 地址

  • 获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存

  • 通过ARP广播获取的MAC地址,属于动态(dynamic)缓存

    ✓ 存储时间比较短(默认是2分钟),过期了就自动删除

相关命令

  • arp -a [主机地址]:查询ARP缓存

  • arp -d [主机地址]:删除ARP缓存

  • arp -s 主机地址 MAC地址:增加一条缓存信息(这是静态缓存,存储时间较久,不同系统的存储时间不同)

6、ARP

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

在这里插入图片描述
RARP(Reverse Address Resolution Protocol),译为:逆地址解析协议

  • 使用与ARP相同的报头结构

  • 作用与ARP相反,用于将MAC地址转换为IP地址

  • 后来被BOOTP、DHCP所取代

7、ICMP

ICMP(Internet Control Message Protocol),译为:互联网控制消息协议

  • IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6

  • 通常用于返回错误信息

    • 比如 TTL 值过期、目的不可达
  • ICMP的错误消息总是包括了源数据并返回给发送者

ICMP 报文结构

ICMP 报文一般为 8 个字节,包括类型、代码、校验和扩展内容字段。ICMP 报文基本结构如图所示。
在这里插入图片描述
其中,类型表示 ICMP 的消息类型,代码表示对类型的进一步说明,校验和表示对整个报文的报文信息的校验。

在 ICMP 报文中,如果类型和代码不同,ICMP 数据包报告的消息含义也会不同。常见的类型和代码的 ICMP 含义如表所示。

类型代码含义
00回显应答(ping 应答)
30网络不可达
31主机不可达
32协议不可达
33端口不可达
34需要进行分片,但设置不分片位
35源站选路失败
36目的网络未知
37目的主机未知
39目的网络被强制禁止
310目的主机被强制禁止
311由于服务类型 TOS,网络不可达
312由于服务类型 TOS,主机不可达
313由于过滤,通信被强制禁止
314主机越权
315优先中止失效
40源端被关闭(基本流控制)
50对网络重定向
51对主机重定向
52对服务类型和网络重定向
53对服务类型和主机重定向
80回显请求(ping 请求)
90路由器通告
100路由器请求
110传输期间生存时间为 0
111在数据报组装期间生存时间为 0
120坏的 IP 首部
121缺少必需的选项
130时间戳请求
140时间戳应答
170地址掩码请求
180地址掩码应答

8、IP地址

IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址

  • 最初是IPv4版本,32bit(4字节),2019年11月25日,全球的IP地址已经用完

  • 后面推出了IPv6版本,128bit(16字节)

在这里插入图片描述
IP地址的基本构成

为了便于寻址,了解目标主机的位置,每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上的工作站、服务器和路由器等)有一个主机 ID 与其对应。

网络 ID 和主机 ID 含义如下:

  • 网络 ID:用于识别主机所在的网络,网络 ID 的位数直接决定了可以分配的网络数量。
  • 主机 ID:用于识别该网络中的主机,主机 ID 的位数则决定了网络中最大的主机数量。

通过子网掩码(subnet mask)可以得知网络ID 、主机ID

  • 主机所在的网段 = 子网掩码 & IP地址

计算机和其他计算机通信前,会先判断目标主机和自己是否在同一网段

  • 同一网段:不需要由路由器进行转发

  • 不同网段:交由路由器进行转发

9、IP地址的分类和格式

大型网络包含大量的主机,而小型网络包含少量的主机。根据用户需求不同,一个网络包含的主机数量也会不同。为了满足不同场景的需要,网络必须使用一种方式来判断 IP 地址中哪一部分是网络 ID,哪一部分是主机 ID。

IP 地址为 32 位地址,被分为 4 个 8 位段。为了方便对 IP 地址的管理,将 IP 地址基本分为三大类,每类地址的分类与含义如下:

  • A 类:前 8 位表示网络 ID,后 24 位表示主机 ID;该地址分配给政府机关单位使用。
  • B 类:前 16 位表示网络 ID,后 16 位表示主机 ID;该地址分配给中等规模的企业使用。
  • C 类:前 24 位表示网络 ID,后 8 位表示主机 ID;该地址分配给任何需要的人使用。

除了上述的 A、B、C 三类地址以外,还有两类隐藏地址,即 D 类地址和E类地址:

  • D 类:不分网络 ID 和主机 ID;该地址用于多播。
  • E 类:不分网络 ID 和主机 ID;该地址用于实验。

在这里插入图片描述
从上图中可以看出,每类 IP 地址都是以 32 位的二进制格式显示的,每类地址的区别如下:

  • A类:网络 ID 的第一位以 0 开始的地址。
  • B类:网络 ID 的第一位以 10 开始的地址。
  • C类:网络ID的第一位以 110 开始的地址。
  • D类:地址以 1110 开始的地址。
  • E类:地址以 11110 开始的地址。

10、不同分类的IP地址的范围

由于每类地址的开头是固定的,因此每类地址都有自己的范围:

  • A类:IP 地址范围为 0.0.0.0~127.255.255.255。

在这里插入图片描述

  • 网络ID

    • 0不能用,127作为保留网段。其中127.0.0.1是本地环回地址(Loopback),代表本机地址

    • 可以分配给主机的

      第1部分的取值范围是:1~126

    主机ID

    • 第2、3、4部分的取值范围是:0~255
    • 每个A类网络能容纳的最大主机数是:256 * 256 * 256 – 2 = 2的24次方 – 2 = 16777214
  • B类:IP 地址范围为 128.0.0.0~191.255.255.255。

在这里插入图片描述

  • 网络ID

    • 可以分配给主机的

    • 第1部分的取值范围是:128~191

    • 第2部分的取值范围是:0~255

    主机ID

    • 第3、4部分的取值范围是:0~255

    • 每个B类网络能容纳的最大主机数是:256 * 256 – 2 = 2的16次方 – 2 = 65534

  • C类:IP 地址范围为 192.0.0.0~223.255.255.255。

在这里插入图片描述

  • 网络ID

    • 可以分配给主机的

    • 第1部分的取值范围是:192~223

    • 第2、3部分的取值范围是:0~255

    主机ID

    • 第4部分的取值范围是:0~255

    • 每个C类网络能容纳的最大主机数是:256 – 2 = 254

  • D类:IP 地址范围为 224.0.0.0~239.255.255.255。

在这里插入图片描述

  • 没有子网掩码,用于多播(组播)地址

    第1部分取值范围是:224~239

  • E类:IP 地址范围为 240.0.0.0~255.255.255.254。
    在这里插入图片描述

  • 保留为今后使用

    ​ 第1部分取值范围是:240~255

11、特殊 IP 地址

在进行 IP 地址分配时,有一些 IP 地址具有特殊含义,不会分配给互联网的主机。例如,保留了一些 IP 地址范围,用于私有网络,这些地址被称为私有地址。再如,保留一部分地址用于测试,被称为保留地址。

A 类、B 类、C 类地址的地址范围及含义如下:

  1. A类地址
  • 私有地址范围为 10.0.0.0~10.255.255.255。
  • 保留地址范围为 127.0.0.0~127.255.255.255。
  1. B类地址
  • 私有地址范围为 172.16.0.0~172.31.255.255。
  • 保留地址为 169.254.X.X。
  1. C类地址
  • 私有地址范围为 192.168.0.0~192.168.255.255。

12、子网掩码

CIDR 无类域间路由(Classless Inter-Domain Routing,CIDR)

子网掩码的CIDR表示方法

  • 192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0

  • 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0

计算工具:https://www.sojson.com/convert/subnetmask.htm

为什么要进行子网划分?

如果需要让200台主机在同一个网段内,可以分配一个C类网段,比如192.168.1.0/24

  • 共254个可用IP地址:192.168.1.1~192.168.1.254

  • 多出54个空闲的IP地址,这种情况并不算浪费资源

如果需要让500台主机在同一个网段内,那就分配一个B类网段,比如191.100.0.0/16

  • 共65534个可用IP地址:191.100.0.1~191.100.255.254

  • 多出65034个空闲的IP地址,这种情况属于极大的浪费资源

如何尽量避免浪费IP地址资源?

  • 合理进行子网划分

无类域间路由(Classless Inter-Domain Routing,CIDR)可以将路由集中起来,在路由表中更灵活地定义地址。它不区分 A 类、B 类、C 类地址,而是使用 CIDR 前缀的值指定地址中作为网络 ID 的位数。

这个前缀可以位于地址空间的任何位置,让管理者能够以更灵活的方式定义子网,以简便的形式指定地址中网络 ID 部分和主机 ID 部分。

CIDR 标记使用一个斜线/分隔符,后面跟一个十进制数值表示地址中网络部分所占的位数。例如,205.123.196.183/25 中的 25 表示地址中 25 位用于网络 ID,相应的掩码为 255.255.255.128。

13、子网划分

子网划分:借用主机位作子网位,划分出多个子网

可用分为

  • 等长子网划分:将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的

  • 变长子网划分:每个子网的可用IP地址数量可以是不一样的

子网划分器:http://www.ab126.com/web/3552.html

子网划分的步骤

  • 确定子网的子网掩码长度

  • 确定子网中第1个、最后1个主机可用的IP地址

等长子网划分——等分成2个子网
在这里插入图片描述
A子网

  • 子网掩码:255.255.255.128/25

  • 主机可用IP地址:192.168.0.1~192.168.0.126

B子网

  • 子网掩码:255.255.255.128/25

  • 主机可用IP地址:192.168.0.129~192.168.0.254

等长子网划分——等分成4个子网

在这里插入图片描述
4个子网的子网掩码都是:255.255.255.192/26

A子网的主机可用IP地址

  • 192.168.0.1~192.168.0.62

B子网的主机可用IP地址

  • 192.168.0.65~192.168.0.126

C子网的主机可用IP地址

  • 192.168.0.129~192.168.0.190

D子网的主机可用IP地址

  • 192.168.0.193~192.168.0.254

等长子网划分——等分成4个子网的广播地址

在这里插入图片描述
等长子网划分——等分成8个子网

在这里插入图片描述
8个子网的子网掩码都是:255.255.255.224/27

A子网:192.168.0.1~192.168.0.30

B子网:192.168.0.33~192.168.0.62

C子网:192.168.0.65~192.168.0.94

D子网:192.168.0.97~192.168.0.126

E子网:192.168.0.129~192.168.0.158

F子网:192.168.0.161~192.168.0.190

G子网:192.168.0.193~192.168.0.222

H子网:192.168.0.225~192.168.0.254

等长子网划分——B类子网划分

在这里插入图片描述
等长子网划分——A类子网划分

在这里插入图片描述
变长子网划分

如果一个子网地址块的长度是原网段的(1/2)^n,那么

  • 子网的子网掩码,就是在原网段的子网掩码基础上增加n个1

  • 不等长的子网,它们的子网掩码也不同

在这里插入图片描述
假设上图是对192.168.0.0/24进行变长子网划分

  • C网段:子网掩码是255.255.255.128/25

  • B网段:子网掩码是255.255.255.192/26

  • A网段:子网掩码是255.255.255.224/27

  • D网段:子网掩码是255.255.255.252/30

  • E网段:子网掩码是255.255.255.252/30

思考题

这2台设备能正常通信么?

在这里插入图片描述
答:不可以, 计算机1可以发信息给计算机0, 计算机1不能发信息给计算机0,不算是可以通信

14、超网

超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段

需求:原本有200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一个网段

  • 200台在192.168.0.0/24网段,200台在192.168.1.0/24网段

  • 合并192.168.0.0/24、192.168.1.0/24为一个网段:192.168.0.0/23(子网掩码往左移动1位)

在这里插入图片描述
思考

192.168.0.255/23这个IP地址,可以分配给计算机使用么?

答: 可以。主机位并不是全为1,并不是广播地址,所以可以分配给计算机使用

合并4个网段

子网掩码向左移动2位,可以合并4个网段

在这里插入图片描述
将192.168.0.0/24、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24合并为192.168.0.0/22网段

思考

下面的2个网段,能通过子网掩码向左移动1位进行合并么?

在这里插入图片描述
合并网段的规律

假设n是2的k次幂(k≥1)

子网掩码左移k位能够将能够合并n个网段

在这里插入图片描述
假设n是2的k次幂(k≥1)

  • 如果第一个网段的网络号能被n整除,那么由它开始连续的n个网段,能通过左移k位子网掩码进行合并

比如

  • 第一个网段的网络号以二进制0结尾,那么由它开始连续的2个网段,能通过左移1位子网掩码进行合并

  • 第一个网段的网络号以二进制00结尾,那么由它开始连续的4个网段,能通过左移2位子网掩码进行合并

  • 第一个网段的网络号以二进制000结尾,那么由它开始连续的8个网段,能通过左移3位子网掩码进行合并

判断一个网段是子网还是超网

首先

  • 看看该网段的类型,是A类网络、B类网络、C类网络?

  • 默认情况下,A类子网掩码的位数是8,B类子网掩码的位数是16,C类子网掩码的位数是24

然后

  • 如果该网段的子网掩码位数比默认子网掩码多,就是子网

  • 如果该网段的子网掩码位数比默认子网掩码少,则是超网

比如

  • 25.100.0.0/16是一个A类子网

  • 200.100.0.0/16是一个C类超网

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

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

相关文章

etcd分布式存储

etcd分布式存储 etcd简介etcd下载安装etcd常用命令etcd配置参数etcd集群golang操作etcd

C语言基础知识——枚举

1. 枚举 枚举(Enumeration)是一种用户自定义的数据类型,用于定义一组具有离散值的符号常量。枚举使得代码更加可读和易于理解,提高了代码的可读性和可维护性。 //枚举的语法 enum 枚举名称 {值1,值2,值3,... };1.1 枚举成员的类型…

C++中虚继承时的构造函数

在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。 下面…

react使用hook封装一个search+input+checkbox组件

目录 react使用hook封装一个searchinputcheckbox组件searchPro.jsx使用组件效果 react使用hook封装一个searchinputcheckbox组件 searchPro.jsx import { Checkbox, Input } from "antd"; import React, { useEffect, useState } from "react"; import S…

激活函数总结(二十七):激活函数补充(Multiquadratic、InvMultiquadratic)

激活函数总结(二十七):激活函数补充 1 引言2 激活函数2.1 Multiquadratic激活函数2.2 InvMultiquadratic激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…

kubernetesl yaml deploy rancher server

文章目录 1. 简介2. 预备条件3. 创建存储目录4. 部署 rancher server5. 访问6. 加入集群 1. 简介 Rancher 是一个开源的企业级全栈化容器部署及管理平台。已有超过 1900 万次下载,4000 生产环境的应用。 简单的说,就是一个可以让你通过 web 界面管理 d…

78 # koa 中间件的实现

上上节实现了上下文的,上一节使用了一下中间件,这一节来实现 koa 的中间件这个洋葱模型。 思路: 储存用户所有的 callback将用户传递的 callback 全部组合起来(redux 里的 compose)组合成一个线性结构依次执行&#…

input输出的都是字符串,类似拼接的那种

input输出的都是字符串,类似拼接的那种 input()方法返回的所有的结果都是str字符串类型。

一个简单的文件系统(MinixFS)实现解析

1. Minix文件系统概要 Minix file system 是 Andrew S. Tanenbaum 在 1980 年代发明的文件系统, 并随着 Minix 操作系统一起于 1987 年发布。 Linus 编写 Linux 内核第一个版本的时候, 使用的也是 Minix FS, Linux 至今依然提供了对 Minix FS 的支持。Minix FS 结构简单, 易于…

【MyBatis篇】MyBatis框架基础知识笔记

目录 ORM思想(对象关系映射思想) ORM思想图解 初识MyBatis 什么是MyBatis呢? JDBC弊端 自己总结: chatGPT总结: MyBatis介绍以及本质分析 JDBC编程的劣势,MyBatis提供了以下解决方案,具…

星辰天合 CEO 胥昕受邀参加人民网 2023 “小巨人”发展论坛

为进一步推动专精特新“小巨人”企业高质量发展,近日,由人民网主办,人民网财经研究院、828 企业服务平台共同承办的 2023“小巨人”发展论坛在人民日报社新媒体大厦举行,星辰天合 CEO 胥昕受邀参加。 2023 “小巨人”发展论坛现场…

基于Pytorch构建Faster-RCNN网络进行目标检测的一段插曲-安装GPU环境

因工作原因,原来的台式机工作站发生了变更,除了GPU显卡(NVIDIA GeForce GTX 1660显卡变成了NVIDIA Quadro P2200显卡)以外,其他配置都差不多,从网上查阅NVIDIA Quadro P2200相当于NVIDIA GeForce GTX 1660显…

commet与websocket

commet与websocket Comet 前言 Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流。 实现方式 长轮询 长轮询是在打开一条连接以后保持&…

visual studio 2008 编译项目出现层次不穷问题枚举

文章目录 1、严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1047 对象或库文件“.lib”是使用与其他对象(如“x64\Release\main.obj”)不同的1、错误原因 2、意外的预编译头错误,只需重新运行编译器就可能修复此问题3、 warning LNK4099: 未找到 PDB“vc90.pdb”(使用“..…

【数据结构与算法系列3】有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 …

JavaScript学习笔记01

JavaScript笔记01 什么是 JavaScript JavaScript 是一门世界上最流行的脚本语言,它是一种弱类型的脚本语言,其代码不需要经过编译,而是由浏览器解释运行,用于控制网页的行为。 发展历史 参考:JavaScript的起源故事…

AbstractQueuedSynchronizer--AQS

概述:全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放…

第9篇:ESP32超声波HC-SR04Arduino类库编写

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloworld第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播放音乐《涛声…

从一到无穷大 #13 How does Lindorm TSDB solve the high cardinality problem?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言优势挑战系统架构细节/优化存储引擎索引写入查询 经验Ablation Study总结 引言 …

我的创作纪念日:一个特别的纪念日

一个特别的纪念日 机缘收获日常成就憧憬 💡一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C、Linux、中间件、数据库、云…