《网络协议》01. 基本概念
title: 《网络协议》01. 基本概念
date: 2022-08-30 09:50:52
updated: 2023-11-05 15:28:52
categories: 学习记录:网络协议
excerpt: 互联网、网络互连模型(OSI,TCP/IP)、计算机通信基础、MAC 地址、ARP & ICMP、IP & 子网掩码、CIDR 表示方法、子网、超网、路由、网络 & 互联网 & 因特网、ISP、网络分类、上网方式、公网 & 私网(NAT,端口映射)。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png
网络协议
- 1:互联网 & 协议
- 1.1:跨平台原理
- 1.2:客户端与服务器
- 2:网络互连模型
- 3:计算机通信基础
- 3.1:网线直连
- 3.2:同轴电缆
- 3.3:集线器
- 3.4:网桥
- 3.5:交换机
- 3.6:路由器
- 4:MAC 地址
- 4.1:MAC 地址格式
- 4.2:MAC 地址操作
- 5:ARP & ICMP
- 6:IP 地址
- 6.1:IP & 子网掩码
- 6.2:IP 地址分类
- 6.2.1:A 类地址
- 6.2.2:B 类地址
- 6.2.3:C 类地址
- 6.2.4:D 类地址
- 6.2.5:E 类地址
- 6.3:CIDR 表示方法
- 7:子网
- 7.1:等长子网划分
- 7.1.1:C 类子网划分
- 7.1.1.1:等分成 2 个子网
- 7.1.1.2:等分成 4 个子网
- 7.1.1.3:等分成 8 个子网
- 7.1.2:B 类子网划分
- 7.1.3:A 类子网划分
- 7.2:变长子网划分
- 8:超网
- 8.1:合并 4 个网段
- 8.2:合并网段的规律
- 8.3:判断一个网段是子网还是超网
- 9:路由
- 9.1:路由表示例一
- 9.2:路由表示例二
- 10:数据包的传输过程
- 10.1:第一个包的丢失
- 11:网络 & 互联网 & 因特网
- 12:ISP
- 13:网络分类
- 13.1:局域网
- 13.2:城域网
- 13.3:广域网
- 14:上网方式
- 14.1:电话线入户
- 14.2:光纤入户
- 14.3:网线入户
- 14.4:家用无线路由器的逻辑结构
- 14.5:常见接口
- 15:公网 & 私网
- 15.1:公网 IP
- 15.2:私网 IP
- 15.3:NAT
- 15.4:端口映射
网络协议从入门到底层原理。
1:互联网 & 协议
互联网(internet)的出现,彻底改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等。

数据是如何从一个设备传递到另一个设备的?
- 这一切都是由网络协议来规定的。
- 没有网络协议,就没有今天的互联网。
什么是协议?
- 协议就是通用的标准。
- 如果没有一个国际通用的标准,那么相互之间的交互就会很麻烦。
1.1:跨平台原理
C/C++ 跨平台原理:
使用平台相关的编译器生成对应平台的可执行文件。

Java 跨平台的原理:

C/C++ 编译之后可直接生成平台对应的可执行文件。
Java编译之后生成字节码文件。对于操作系统来说,不是可执行文件。
1.2:客户端与服务器

其中,后端使用 Java 的一种结构如下:

客户端向服务器请求:
http://IP地址:端口号/项目
例:
http://10.10.125.41:8080/qq/login/...
2:网络互连模型
- 国际标准:OSI 参考模型(7层)
- 实际应用:TCP/IP 协议(4层)
- 学习研究:(5层)
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model)。

网络请求过程:不管什么协议,都是经过下列的 包装 + 解包 过程。

3:计算机通信基础
先不考虑无线连接的问题。
- 需要得知对方的 IP 地址。
- 最终是根据 MAC 地址(网卡地址),输送数据到网卡,被网卡接收。
- 如果网卡发现数据的目标 MAC 地址是自己,就会将数据传递给上一层进行处理。
- 如果网卡发现数据的目标 MAC 地址不是自己,就会将数据丢弃,不会传递给上一层进行处理。

3.1:网线直连
- 需要用交叉线(不是直通线)
- 同一网段

- ping 走的是 ICMP 协议。
- ARP 协议:已知 IP 地址,不知道 MAC 地址时,通过广播获取 MAC 地址。
右边出现的 3 个 ARP 包,实际上是一次完整的发送请求、接收响应的过程。
ICMP 包同理。
3.2:同轴电缆
同轴电缆(Coaxial),连接同一网段。

3.3:集线器
集线器(Hub),连接同一网段。

集线器相比同轴电缆唯一的优点:连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备的通信。
3.4:网桥
网桥(Bridge)。还是连接同一网段。

能够通过自学习得知每个接口那侧的 MAC 地址,从而起到隔绝冲突域的作用。
3.5:交换机
交换机(Switch)。依旧是连接同一网段。

若全球所有设备都用交换机连接:
- 他们必然处于同一网段,因此 IP 地址可能会不够用。
- 第一次发送数据包仍然需要 ARP 广播,耗费大量时间。
- 形成广播风暴,只要有一个设备发送 ARP 广播,全球设备都能收到。
3.6:路由器
路由器(Router)。路由器含有网关(Gateway),网关也有 IP 和 MAC 地址。

主机在发数据之前,首先会判断目标主机的 IP 地址跟它是否在同一个网段:
- 在同一个网段:ARP广播、通过交换机 / 集线器传递数据
- 不在同一个网段:通过路由器转发数据

4:MAC 地址
每个网卡都有一个 6 字节(48 bit)的 MAC 地址(Media Access Control Address)。

MAC 地址全球唯一,固化在网卡的 ROM 中,由 IEEE802 标准规定。
- 前 3 字节:OUI(Organizationally Unique Identifier),组织唯一标识符。
由 IEEE 的注册管理机构分配给厂商 - 后 3 字节:网络接口标识符。
由厂商自行分配
OUI 查询:可以根据 OUI 查询出对应的厂商。
- http://standards-oui.ieee.org/oui.txt
- https://mac.bmcx.com/
4.1:MAC 地址格式
- Windows
40-55-82-0A-8C-6D - Linux、Unix、Android、Mac、iOS
40:55:82:0A:8C:6D - Packet Tracer
4055.820A.8C6D
当 48 位全为 1 时(
FF-FF-FF-FF-FF-FF),代表广播地址。
4.2:MAC 地址操作
查看 MAC 地址(Windows):
ipconfig /all
修改 MAC 地址:
更改适配器选项 -> 属性 -> 配置 -> 高级 -> 网络地址

这里修改 MAC 地址只是以这个值作为 MAC 地址上网,网卡的 MAC 地址无法修改。
有时可通过修改 MAC 地址蹭网。
- 当不知道对方主机的 MAC 地址时,可以通过发送 ARP 广播获取对方的 MAC 地址。
- 获取成功后,会缓存 IP 地址、MAC 地址的映射信息,俗称:ARP 缓存
通过 ARP 广播获取的 MAC 地址,属于动态(dynamic)缓存。
存储时间比较短(默认是 2 分钟),过期就自动删除。
查看ARP缓存:
arp -a [<IP>]
删除ARP缓存:
arp -d [<IP>]
增加一条缓存信息(静态缓存):
arp -s <IP> <MAC 地址>
5:ARP & ICMP
ARP(Address Resolution Protocol,地址解析协议)
- 通过 IP 地址获取 MAC 地址
RARP(Reverse Address Resolution Protocol,逆地址解析协议)
- 使用与 ARP 相同的报头结构
- 作用与 ARP 相反,通过 MAC 地址获取 IP 地址
- 后来被 BOOTP、DHCP 所取代
ICMP(Internet Control Message Protocol,互联网控制消息协议)
- IPv4 中的 ICMP 被称作 ICMPv4,IPv6 中的 ICMP 则被称作 ICMPv6
- 通常用于返回错误信息。比如 TTL 值过期、目的不可达
- ICMP 的错误消息总是包括了源数据并返回给发送者
6:IP 地址
IP 地址(Internet Protocol Address):互联网上的每一个主机都有 IP 地址。
- 最初是 IPv4 版本,32 bit(4字节),2019 年 11 月 25 日,全球的 IP 地址已经用完
- 后面推出了 IPv6 版本,128 bit(16字节)
这里先讨论 IPv4。
IP 按字节分为 4 部分:

6.1:IP & 子网掩码
IP 地址由两部分组成:
- 网络标识(网络 ID)
- 主机标识(主机 ID)
网络 id 相同的主机处在同一网段。
通过子网掩码(subnet mask)可以计算出网络 ID
- 网络 ID = 子网掩码 & IP
主机所在的网段 = 子网掩码 & IP地址

IP 地址:192.168.1.10
子网掩码:255.255.255.01100 0000 . 1010 1000 . 0000 0001 . 0000 1010
& 1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
----------------------------------------------------1100 0000 . 1010 1000 . 0000 0001 . 0000 0000网段:192.168.1.0
例:
IP 地址: 130.168.1.10
子网掩码: 255.255.0.0
网段: 130.168.0.0该网段最多有 256*256-2 个 IP 地址
130.168.0.0 代表网段
130.168.255.255 代表广播
网段和广播无法分配 IP 地址
- 主机 ID 全为 0,表示主机所在的网段。
- 主机 ID 全为 1,表示主机所在网段的全部主机(广播)。
可以尝试用广播 ping 某个网段的全部主机。
6.2:IP 地址分类
IP 地址分为 5 类。
- A 类地址:默认子网掩码是
255.0.0.0,网络 ID 以0开头。 - B 类地址:默认子网掩码是
255.255.0.0,网络 ID 以10开头。 - C 类地址:默认子网掩码是
255.255.255.0,网络 ID 以110开头。 - D 类地址:没有子网掩码,网络 ID 以
1110开头。 - E 类地址:保留为今后使用,以
1111开头。
只有 A/B/C 类地址用来分配给主机。
6.2.1:A 类地址
默认子网掩码是 255.0.0.0,网络 ID 以 0 开头。

- 网络 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。
6.2.2:B 类地址
默认子网掩码是 255.255.0.0,网络 ID 以 10 开头。

- 网络 ID:
- 第 1 部分的取值范围是:128 ~ 191
- 第 2 部分的取值范围是:0 ~ 255
- 主机 ID:
- 第 3、4 部分的取值范围是:0 ~ 255
- 每个 B 类网络能容纳的最大主机数是:
256 * 256 - 2 = 2^16 - 2 = 65534
6.2.3:C 类地址
默认子网掩码是 255.255.255.0,网络 ID 以 110 开头。

- 网络 ID:
- 第 1 部分的取值范围是:192 ~ 223
- 第 2、3 部分的取值范围是:0 ~ 255
- 主机 ID:
- 第 4 部分的取值范围是:0 ~ 255
- 每个 C 类网络能容纳的最大主机数是:
256 - 2 = 254
6.2.4:D 类地址
没有子网掩码,网络 ID 以 1110 开头。

- 用于多播(组播)地址。
- 第一部分取值范围:224 ~ 239。
6.2.5:E 类地址
保留为今后使用,以 1111 开头。

- 保留为今后使用。
- 第一部分取值是:240 ~ 255。
6.3:CIDR 表示方法
CIDR(Classless Inter-Domain Routing),无类别域间路由
子网掩码的 CIDR 表示方法:
192.168.1.100/24,代表子网掩码有 24 个 1,也就是 255.255.255.0123.210.100.200/16,代表子网掩码有 16 个 1,也就是 255.255.0.0
计算工具:https://www.sojson.com/convert/subnetmask.html
7:子网
子网划分:借用主机位作子网位,划分出多个子网。
子网划分可以分为:
- 等长子网划分:将一个网段等分成多个子网,每个子网的可用 IP 地址数量一样。
- 变长子网划分:每个子网的可用 IP 地址数量可以是不一样的。
子网划分的步骤:
- 确定子网的子网掩码长度
- 确定子网中第 1 个、最后 1 个主机可用的 IP 地址
为什么要进行子网划分?
- 如果需要让 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 地址资源:合理进行子网划分。
7.1:等长子网划分
7.1.1:C 类子网划分
7.1.1.1:等分成 2 个子网

7.1.1.2:等分成 4 个子网

等分成 4 个子网的广播地址:

7.1.1.3:等分成 8 个子网

7.1.2:B 类子网划分

7.1.3:A 类子网划分

7.2:变长子网划分
如果一个子网地址块的长度是原网段的 (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
8:超网
超网:跟子网反过来,它是将多个连续的网段合并成一个更大的网段。
示例:
- 原本有 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 地址,可以分配给计算机使用吗?
由下图知,主机位不全为 0 或 1,所以可以。

192.168.0.255/24 与 192.168.1.255/23 则不能分配给计算机。
8.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 网段。
思考:192.168.1.0/24、192.168.2.0/24 两个网段,能通过子网掩码向左移动 1 位进行合并吗?

答:不能。
8.2:合并网段的规律
- 假设 n 是 2 的 k 次幂( k >= 1),子网掩码左移 k 位能够合并 n 个网段

- 假设 n 是 2 的 k 次幂(k >= 1),如果第一个网段的网络号能被 n 整除,那么由它开始连续的 n 个网段,能通过左移 k 位子网掩码进行合并。
例如:
- 第一个网段的网络号以二进制 0 结尾,那么由它开始连续的 2 个网段,能通过左移 1 位子网掩码进行合并
- 第一个网段的网络号以二进制 00 结尾,那么由它开始连续的 4 个网段,能通过左移 2 位子网掩码进行合并
- 第一个网段的网络号以二进制 000 结尾,那么由它开始连续的 8 个网段,能通过左移 3 位子网掩码进行合并

8.3:判断一个网段是子网还是超网
- 首先看该网段的类型,是 A 类网络、B 类网络、C 类网络?
- 默认情况下
- A 类子网掩码的位数是 8(255.0.0.0)
- B 类子网掩码的位数是 16(255.255.0.0)
- C 类子网掩码的位数是 24(255.255.255.0)
- 如果该网段的子网掩码位数比默认子网掩码多,就是子网。
- 如果该网段的子网掩码位数比默认子网掩码少,就是超网。
例:
25.100.0.0/16 是 A 类子网:
根据 25 判断出这是个 A 类网络,默认子网掩码 8 位。
由于该网段子网掩码 16 位,比默认多,所以是子网。
200.100.0.0/16 是 C 类超网:
根据 200 判断出这是个 C 类网络,默认子网掩码 24 位。
由于该网段子网掩码 16 位,比默认少,所以是超网。
9:路由
在不同网段之间转发数据,需要有路由器的支持。
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由和动态路由告诉它。
- 静态路由
- 管理员手动添加路由信息
- 适用于小规模网络
- 动态路由
- 路由器通过路由选择协议(比如 RIP、OSPF)自动获取路由信息
- 适用于大规模网络
9.1:路由表示例一
让 4 台主机之间可以互相通信:

路由器 0 的路由表:

路由器 1 的路由表:

9.2:路由表示例二
让 4 台主机之间可以互相通信:

路由表:

10:数据包的传输过程
这里仅仅是简述一下数据包的传输过程,之后介绍网络分层时,会再次详细讲解数据包的传输过程。

源 IP、目标 IP 没有变;源 MAC、目标 MAC 一直在变。
10.1:第一个包的丢失
如图,从 192.168.1.10/24 往 192.168.2.10/24 虽然可以 ping 通,但是丢失了第一个数据包。

原因:计算机0 往路由器发送了 ARP 包,路由器收到后回复了 ARP 包,从而计算机0 就开始发送 ICMP 包,路由器0 收到 ICMP 包后准备发往计算机1,但是路由器还不知道计算机1 的 MAC 地址,所以要往计算机1 发送 ARP 包,因此就把 ICMP 包给丢了,所以第一次 ping 会超时。
11:网络 & 互联网 & 因特网
- 网络(
Network) - 互联网(
internet) - 因特网(
Internet)

全世界最大的互联网:因特网(Internet),将全世界所有的计算机都连接在一起。
- 一般使用大写
I开头的 Internet 特指因特网。 - 日常生活中说的:你的电脑上不了网。其实就是指:你的电脑没有连接到因特网。
12:ISP
ISP(Internet Service Provider),Internet 服务提供商,比如移动、电信、网通、铁通等。
我们平时拉的宽带都是通过 ISP 连接到 Internet 的。

平时见到左边的下载列表,其实是给使用不同 ISP 的用户对应的选择。

13:网络分类
按照不同的分类方式,可以将网络分为以下几类:
- 局域网(LAN)
- 城域网(MAN)
- 广域网(WAN)
- 个人区域网(PAN)
- 无线局域网(WLAN)
- 全球局域网(GAN)
- 虚拟局域网(VLAN)
按照网络的范围进行分类,可以分为:局域网、城域网、广域网等
13.1:局域网
局域网(Local Area Network,LAN)
- 一般是范围在几百米到十几公里内的计算机所构成的计算机网络
- 常用于公司、家庭、学校、医院、机关、一幢大楼等
- 局域网中使用最广泛的网络技术叫:以太网(Ethernet)
- 在电脑、手机上经常见到的一个英文 WLAN(Wireless LAN),意思是无线局域网。
13.2:城域网
城域网(Metropolitan Area Network,MAN)
- 一般范围是数十公里到数百公里,可以覆盖一个城市
13.3:广域网
广域网(Wide Area Network,WAN)
- 一般范围是几百公里到几千公里,可以覆盖一个国家。通常都需要租用 ISP 的线路。
14:上网方式
14.1:电话线入户

ADSL(Asymmetric Digital Subscriber Line),电话拨号上网。
- 非对称数字用户线路,提供上、下行不对称的传输带宽
- 猫(Modem),调制解调器,进行数字信号和模拟信号的转换
14.2:光纤入户

光猫(Optical Modem),光调制解调器,进行数字信号和光信号的转换。
14.3:网线入户

14.4:家用无线路由器的逻辑结构

14.5:常见接口
- FastEthernet:快速以太网接口(100M)
- GigabitEthernet:千兆以太网接口(1000M)
- Serial:串行接口
15:公网 & 私网
IP 地址也分为:公网 IP、私网 IP(内网)。
为什么要分公网、私网?
IP 地址不够用。
便于管理。
15.1:公网 IP
公网 IP(Public)。
- Internet 上的路由器中只有到达公网的路由表,没有到达私网的路由表
- 公网 IP 由因特网信息中心(Internet Network Information Cetner,Inter NIC)统一分配管理
- ISP 需要向 Inter NIC 申请公网 IP
15.2:私网 IP
私网 IP(Private),主要用于局域网。
下面是保留的私网网段:
- A 类:10.0.0.0/8,1 个 A 类网络
- B 类:172.16.0.0/16 ~ 172.31.0.0/16,16 个 B 类网络
- C 类:192.168.0.0/24 ~ 192.168.255.0/24,256 个 C 类网络
15.3:NAT
NAT(Network Address Translation)。
私网 IP 想访问 Internet 需要进行 NAT 转换,借助公网 IP 上网。这一步可以由路由器完成。
特点:
- 节约公网 IP 资源
- 隐藏内部真实 IP
分类:
- 静态转换
手动配置 NAT 映射表
一对一转换 - 动态转换
定义外部地址池,动态随机转换
一对一转换 - PAT(Port Address Translation),目前应用最广泛的 NAT 实现方式
多对一转换,最大程度节约公网 IP 资源
采用端口多路复用方式,通过端口号标识不同的数据流
15.4:端口映射
端口(0 ~ 65535)是每个软件的一个通讯进出口。
类似于 NAT。
端口映射,就是将内网主机的一个端口映射到外网主机的一个端口。当用户访问外网 IP 的这个端口时,外网主机自动将请求映射到内网对应的机器上。
无奈夜长人不寐,数声和月到帘栊。
——《捣练子令 · 深院静》(五代)李煜
相关文章:
《网络协议》01. 基本概念
title: 《网络协议》01. 基本概念 date: 2022-08-30 09:50:52 updated: 2023-11-05 15:28:52 categories: 学习记录:网络协议 excerpt: 互联网、网络互连模型(OSI,TCP/IP)、计算机通信基础、MAC 地址、ARP & ICMP、IP & 子…...
设置Ubuntu网络代理
设置Ubuntu网络代理 1 编写set_proxy.sh 在/home/xxx新建文件set_proxy.sh,添加如下代码: #!/bin/sh hostip$(cat /etc/resolv.conf | grep nameserver | awk { print $2 }) wslip$(hostname -I | awk {print $1}) port10809PROXY_HTTP"http://$…...
LeetCode----23. 合并 K 个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 将它们合并到…...
[极客大挑战 2019]LoveSQL 1
题目环境:判断注入类型是否为数字型注入 admin 1 回显结果 否 是否为字符型注入 admin 1 回显结果 是 判断注入手法类型 使用堆叠注入 采用密码参数进行注入 爆数据库1; show database();#回显结果 这里猜测注入语句某字段被过滤,或者是’;被过滤导致不能…...
dji mini4pro 图片拷贝到电脑速度
环境 win电脑 amd3600 m.2固态硬盘 dp快充数据线 直接主机使用dp线连接无人机 9成是raw格式图片 一小部分是视频和全景图 TF卡信息: 闪迪 128GB 129元 闪迪 128GB TF(MicroSD) 存储卡U3 C10 V30 A2 4K 至尊超极速移动版 "TF卡至尊超极速" 理论读取200MB/s …...
基于深度学习的目标检测算法 计算机竞赛
文章目录 1 简介2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 1 简介 ǵ…...
前端面试题之CSS篇
1、css选择器及其优先级 标签选择器: 1类选择器、属性选择器、伪类选择器:10id选择器:100内联选择器(style“”):1000!important:10000 2、display的属性值及其作用 属性值作用none元素不显示,…...
【SQL相关实操记录】
一. 两张表的联合查询 task表中含 id(任务的序列号), action(任务内容), owner(任务分配的对象), target_date(目标完成日期), status(任务的完成状态),mmid(对应meeting的序列号--表示在该meeting中所对应布置的任务). meeting表中含id(meeting的序列号), status(meeting记…...
Python爬虫实战-批量爬取下载网易云音乐
大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战https://blog.csdn.net/caoli201314/article/details/1328828131小时掌握Python操作Mysql数据库之pymysql模块技术https://blog.csdn.net/caoli201314/article/details/133199207一天掌握p…...
LeetCode 面试题 16.14. 最佳直线
文章目录 一、题目二、C# 题解 一、题目 给定一个二维平面及平面上的 N 个点列表 Points,其中第 i 个点的坐标为 Points[i][Xi,Yi]。请找出一条直线,其通过的点的数目最多。 设穿过最多点的直线所穿过的全部点编号从小到大排序的列表为 S,你仅…...
Spring Boot创建多模块项目
创建一个普通的Spring Boot项目, 然后只留下 pom.xml 剩下的都删掉 删除多余标签 标识当前为父模块 创建子模块 删除子模块中多余标签 声明父模块 在父模块中声明子模块...
Node.js、Chrome V8 引擎、非阻塞式I/O介绍
目录 Node.js介绍Chrome V8 引擎介绍非阻塞式I/O介绍 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! Node.js介绍 Node.js 是一个…...
企业服务总线ESB有什么作用?和微服务有什么区别?会如何发展?
企业服务总线ESB是什么 下面这张图,稍微了解些IT集成的朋友应该不陌生。 随着信息化发展不断深入,企业在不同的阶段引入了不同的应用、系统和软件。这些原始的应用系统互不连通,如同一根根独立的烟囱。 但是企业业务是流程化的,…...
NLP之LSTM原理剖析
文章目录 背景simpleRNN的局限性 LSTM手写一下sigmoid例子支持长记忆的神经网络解读3重门 背景 SimpleRNN有一定局限性, 图片上的文字内容: 图片标题提到“SimpleRNN是一种基础模型。它用于解决序列型问题,其中的每一步的输出会影响到下一步的结果。图…...
ESP32网络开发实例-Web方式配置WiFi连接
Web方式配置WiFi连接 文章目录 Web方式配置WiFi连接1、ESP Wi-Fi 管理器介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将介绍如何实现在Web页面中配置ESP32的WiFi连接。 1、ESP Wi-Fi 管理器介绍 ESP32 将在启动时设置为热点模式 连接到充当 AP 的 ESP32 开发板。 在连…...
ElasticSearch 批量插入漏数据
项目场景: 项目中需要把Mysql数据同步到ElasticSearch中 问题描述 数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据,本地测试也无法复现,后台程序也没有报错,一到正式环境就有问题,很崩溃 这里是批量操…...
C++——类和对象之运算符重载
运算符重载 本章思维导图: 注:本章思维导图对应的xmind文件和.png文件都已同步导入至”资源“ 文章目录 运算符重载[toc] 1. 运算符重载的意义2. 函数的声明2.1 声明运算符重载的注意事项 3. 函数的调用4. const成员函数4.1 const成员函数的声明4.2 注意…...
第二阶段第一章——面向对象
前言 学习了这么久Python(呃其实也没多久差不多两周),可能有小伙伴说我废了,两周才学这么点,咋说呢,我曾经也是急于求成,做任何事情都是急于求成,比如我喜欢一个人我就想马上跟她在…...
Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…...
解决Visual Studio 2010 运行时屏幕一闪而过,无结果显示的问题
安装配置:Visual Studio 2010 软件安装教程(附下载链接)——计算机二级专用编程软件https://blog.csdn.net/W_Fe5/article/details/134218817?spm1001.2014.3001.5502 1、 我们在运行时会出现窗口一闪而过,这时候我们右键Test_1…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
