《网络协议》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…...

C++(20):为[[nodiscard]]提供提示信息
C17中引入了[[nodiscard]]以对一些被忽略的函数返回值进行警告。 C(17):[[nodiscard]]编译属性_[[nodiscard]] c-CSDN博客 C20可以为[[nodiscard]]提供一个可选的提示信息 [[nodiscard("cant ignore")]] int fi() {return 1; }int main() {fi();return 0…...

hi3518ev200 从sd卡启动rootfs
板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs…...

[BUUCTF NewStar 2023] week5 Crypto/pwn
最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…...

使用seldom编写http接口用例
在编写接口用例的过程中,针对一个接口,往往只是参数不同,那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活,这里仅介绍file_data() 的N种玩法。 二维列表 当参数比较简单时可以试试下面的方式。 参数化数据 {"…...

Redis中Hash类型的命令
目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…...

Java 函数式编程
1.Lambda 1.1 格式 JDK 从 1.8 版本开始支持 Lambda 表达式,通过 Lambda 表达式我们可以将一个函数作为参数传入方法中。在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码&…...

类的成员函数总结
前言: 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成的…...

java高级之单元测试、反射
1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法,执行在所有方法之后 3.被Before标记的方法,执行在每一个Test方法之前 4.被After标记的方法,执行在每一个Test方法之后 public …...

MSQL系列(十三) Mysql实战-left/right/inner join 使用详解及索引优化
Mysql实战-left/right/inner join 使用详解及索引优化 前面我们讲解了BTree的索引结构,也详细讲解下Join的底层驱动表 选择原理,今天我们来了解一下为什么会出现内连接外连接,两种连接方式,另外实战一下内连接和几种最常用的join…...

前端面试题之HTML篇
1、src 和 href 的区别 具有src的标签有:script、img、iframe 具有href的标签有:link、a 区别 src 是source的缩写。表示源的意思,指向资源的地址并下载应用到文档中。会阻塞文档的渲染,也就是为什么js脚本放在底部而不是头部的…...