【网络协议】IPv4 地址分配 - 第一部分
文章目录
- 十进制与二进制
- 网络如何被寻址
- 地址类型
- 网络地址
- 广播地址
- 主机地址
- 如何确定网络和主机部分的位数?
- 网络中的主机数量与前缀号的关系
- 计算每个前缀的主机数量公式
- 子网掩码
- 二进制与操作(Binary ANDing)
- 与操作(AND Operation)
- 二进制与操作的结果
- 关于子网划分
- 为什么要进行子网划分
- 总结
十进制与二进制
我们习惯使用十进制。在日常生活中广泛使用的数字系统大多是基于十进制的,其底数为10。
10^0 = 1
10^1 = 10
10^2 = 100
这就是我们在日常活动中使用的数字系统。然而,计算机仅限于使用两个数字:“1”和“0”,它们分别表示“开”和“关”。我们使用的IP地址系统正是基于这个概念的。所有我们使用的IPv4地址,都是计算机所理解的二进制形式的十进制表示。
下表展示了十进制与二进制之间的对应关系。
网络如何被寻址
相信大多数人都见过IP地址。IP地址方案包含两个部分:
- 网络部分 - 位于左侧
- 主机部分 - 位于右侧
在IPv4地址中,高位(从左侧开始的位)代表网络地址,低位(右侧的位)代表主机部分。在IPv4寻址中,高位匹配的主机被认为属于同一网络。
网络部分和主机部分的位数分别决定了网络数量和主机数量。
为了理解网络如何工作,我们需要掌握二进制到十进制以及十进制到二进制的转换。
以IP地址 192.168.1.0 为例,我们需要将其转换为二进制。下图展示了转换过程:
上图是怎么转换的呢?步骤如下:
- 将32位分成4个八位字节(octets)。
- 将每个八位字节转换为十进制。
- 在每个十进制数之间加上“点”(dot)。
现在我们已经学习了这个概念,下表展示了一种可以轻松将每个数字转换为二进制的方法。
例如,如果我们想将255转换为二进制,可以按照以下步骤操作:
- 取255,与128比较,如果大于128,则减去128,结果为127。
- 判断127是否大于64,如果是,则减去64,结果为63。
- 判断63是否大于32,如果是,则减去32,结果为31。
- 判断31是否大于16,如果是,则减去16,结果为15。
- 判断15是否大于8,如果是,则减去8,结果为7。
- 判断7是否大于4,如果是,则减去4,结果为3。
- 判断3是否大于2,如果是,则减去2,结果为1。
- 判断1是否大于或等于1,如果是,则停止。这是最后一步。
这一过程可以用下图中的流程图进行总结说明。
现在,根据上述例子,如果一个数字大于或等于对应的二进制值,则该二进制位为1;如果小于,则该二进制位为0。
因此,255 的二进制转换结果为:11111111
。
这些顺序步骤对于理解如何进行子网划分非常重要。
由于我们的地址表示限制为单个八位字节的十进制值(0到255),因此我们仅探讨将8位二进制数转换为十进制值的过程。
地址类型
在任何IPv4网络地址范围内,我们主要有以下三种类型的地址:
-
网络地址(Network Address):用于命名网络的地址。
-
广播地址(Broadcast Address):一种特殊类型的IPv4地址,用于向特定网络中的所有主机发送数据包。
-
主机地址(Host Addresses):可以分配给网络中的主机或设备的地址,例如PC、笔记本电脑、IP电话等。
网络地址
网络地址是我们为网络命名的地址。例如,一个地址范围内的网络可以命名为“10.0.0.0”网络。此网络中的所有主机都属于“10.0.0.0”网络,其主机的网络部分(network portion)都是相同的。
在网络中,第一个IPv4地址通常是网络地址。
广播地址
在IPv4中,广播地址是一种特殊的地址,用于向网络中的所有主机发送信息。广播地址始终是网络中的最高地址或最后一个地址。
在以下示例中,广播地址是主机部分(host region)全部为1
的地址。
任何网络中的最后一个地址始终是广播地址。
主机地址
正如之前讨论的那样,网络中的主机需要分配一个IPv4地址。可以分配给这些主机的地址是介于网络IP地址和广播IP地址之间的任何IP地址。
注意:网络地址和广播地址不能分配给主机,因为这些地址是保留的。
如何确定网络和主机部分的位数?
为了确定网络部分和主机部分的位数,我们使用前缀长度(prefix length)。
- 通过计算网络部分的位数即可得出前缀长度。
- 在十进制形式表示地址时,我们用斜杠“/”加上高阶位的数量来表示,如下表所示。
例如网络172.16.1.0
有24位高阶位,因此表示为172.16.1.0/24
。
网络中的主机数量与前缀号的关系
网络中的主机数量或网络位的数量决定了前缀号的使用。
当高阶位(网络位)的数量增加时,低阶位(主机位)的数量减少,因此可用的主机地址也会减少。
计算每个前缀的主机数量公式
计算主机数量的公式为:
2^n - 2 = 主机地址数量,其中,n为主机位的数量。
例如,对于192.168.3.0/28
:
- 网络位(高阶位)数量为28。
- IPv4地址总共有32位,因此主机位(低阶位)的数量为:32 - 28 = 4
根据公式计算主机数量:2^4 - 2 = 14
因此,该网络中有14个可用的主机IP地址。
子网掩码
正如我们之前所看到的,IPv4地址被划分为网络部分和主机部分。我们还提到,前缀长度是网络部分或高阶位的位数,它告诉我们网络和主机地址的数量。
网络中的路由器和其他设备也需要知道高阶位和低阶位的数量,因此它们使用子网掩码,子网掩码是前缀长度在十进制中的表示。正如之前提到的,前缀长度是从左侧开始的1的数量,它表示网络部分和主机部分。
为了在网络设备中表示前缀长度,使用一种特殊类型的IPv4地址,称为子网掩码。它由32位组成,就像常规IPv4地址一样。子网掩码通过在网络部分放置1,在主机部分放置0来表示。例如,/24前缀表示的子网掩码是255.255.255.0(11111111.11111111.11111111.00000000)。子网掩码的剩余位(低阶位)为零,表示网络中的主机地址。
当我们在网络设备上配置IP地址时,必须配合使用子网掩码。
二进制与操作(Binary ANDing)
问题是,在做转发决策时,路由器如何知道收到的数据包中的IP地址属于哪个网络?
IPv4主机地址与其子网掩码进行逻辑与(AND)运算,以确定主机所属的网络地址。当对地址和子网掩码进行与操作时,结果是网络地址。
与操作(AND Operation)
与(AND)是逻辑运算,在给定子网掩码和IP地址的情况下,使用与运算来计算网络地址。逻辑与操作的结果如下所示,当在IP地址和子网掩码的位上进行比较时:
- 1 AND 1 = 1
- 1 AND 0 = 0
- 0 AND 1 = 0
- 0 AND 0 = 0
二进制与操作的结果
- 进行与操作后,同一网络中的网络设备可以决定数据包是否属于本地网络,还是应该转发到远程网络。
- 路由器根据二进制与操作的结果做出转发决策。
下表展示了对于网络192.168.2.45/24
的与操作过程。
因此,IP地址192.168.2.45/24
的网络地址将是192.168.2.0
。
关于子网划分
现在我们已经理解了如何将IP地址从十进制转换为二进制,是时候学习子网划分了。
子网划分允许我们从一个IP地址块创建更多的网络。这些网络通过路由器互联,因此每个路由器上的接口必须处于不同的网络中。
注意: 通过子网划分创建的网络将被称为子网。因此,当你看到“子网”而不是“网络”时,千万不要混淆。
子网划分是一个简单的过程,我们从主机部分借用位来创建新的网络。以下面的示例为例,地址192.168.1.0/24
是主网络,如果我们从主机部分借用2个位,那么新的前缀长度将是26。因此,这2个位将分配给网络部分。
当我们借用主机位时,新的二进制地址将保持不变,但是,显示网络部分的子网掩码将会不同,如下所示:
当我们通过借用主机部分的位来扩展子网掩码时,我们实际上是将网络的数量加倍。然而,借用的位越多,每个子网中可用的主机 IP 地址数量就会越少。
计算每次借用主机位时创建的子网数量的公式是:
2^n = 新网络的数量。
要计算每个网络中的主机数量,我们使用公式:
2^n - 2,其中 n = 为主机保留的位数。
以下面的网络 172.16.1.0/24 为例,如果我们想将该网络子网化以创建 2 个子网,我们需要从主机部分借用 1 位并将其添加到网络部分。
在从第四个八位组借用两个主机位之后,新的网络将如下所示。
子网掩码将多出一个 1 位。
因此,在借用 1 个主机位后,我们将创建 2 个新网络,但我们会减少每个子网中的主机数量。
现在,新的子网将如下所示:
172.16.1.0/25
172.16.1.128/25
子网掩码将是 255.255.255.128
注意:每当我们进行子网划分时,最后一个子网将始终与新子网掩码的最后一个八位字节具有相同的位。
以下是示例:
如果我们将 172.16.1.0/24 子网划分为 8 个新网络。
步骤 1:我们需要从主机部分借用多少位?
2^n = 8
2^3 = 8
因此,我们需要借用 3 个主机位。
新的子网掩码 – 255.255.255.224
前两个子网和最后一个子网将是:
172.16.1.0/27
172.16.1.32/27
172.16.1.224
增量数通常是最后借用的主机位。在上述场景中,这是 32。
将 172.16.1.0/24 子网划分为 /27 后的子网为:
为什么要进行子网划分
在我们的网络中,IP 地址的需求可能会有所不同。例如,某些连接(如点对点连接)可能只需要少量的 IP 地址,而某些部门可能有 200 个用户,而另一些部门只有 20 个用户。
子网划分使我们能够将网络划分成多个子网,从而最优地使用 IP 地址。如果我们将 200 个 IP 地址分配给一个只需要 20 个的网络,就会浪费大量地址。
如果用电话服务提供商的类比,未进行子网划分就像是给一个客户分配 100 个电话号码,而他们只需要 1 个。
在进行子网划分时,我们应该仔细考虑扩展计划,因为由于需求,网络可能会增长。
在下面的场景中,我们将根据主机数量进行子网划分。这是理解子网划分的一个关键因素。
场景描述
在以下场景中,我们需要对三个网络地址进行子网划分:
- 192.168.1.0/24 用于 WAN 连接 LINK A 和 LINK B
- 172.16.1.0/24 用于 LAN A
- 172.16.2.0/24 用于 LAN B
- 192.168.2.0/24 用于 LAN C
所以我们将从 WAN 链接开始。
1、WAN 链接
对于这样的链接,我们每个链接只需要 2 个 IP 地址,因此,我们需要确定哪个子网掩码可以仅提供 2 个主机地址。
我们需要计算需要多少个右侧位,然后其余的将分配给网络部分。
2^n = 2 - 2
2^2 = 4
4 - 2 = 2
因此,我们只需要 2 个主机位。剩余的 6 个位将用于网络部分。
在将 6 位添加到网络部分后,新的子网掩码将是:
192.168.1.0/30
因此,增量将是 4。在这种情况下,第一个网络将是 192.168.1.0/30。
第二个网络将是 192.168.1.4/30,如下所示。
这些将为 WAN 链接提供足够的主机 IP 地址。
2、LAN A
对于第二部分,我们需要为 LAN A 提供足够的主机 IP 地址。
LAN A 需要 40 个 IP 地址。
因此,我们需要计算需要多少个主机位来容纳这些 IP 地址。
2^n - 2 = 40
2^5 - 2 = 30,这小于 40,因此不够。
2^6 - 2 = 62。因此,这将足够满足 LAN A 的主机需求。
主机位将是 6,我们将借用 2 个主机位来获得这些新的子网。
在进行子网划分后,172.16.1.0/24 网络的新子网掩码将是:
255.255.255.192
增量数将是 64,因此四个网络将是:
3、LAN B
我们需要 65 个主机 IP 地址,给定网络 172.16.2.0/24。
首先,我们需要确定在主机部分需要多少个主机位。
2^n - 2 = 65
2^6 - 2 = 62,这不足够。
2^7 - 2 = 126,这足够并且可以支持扩展。
因此,主机部分将有 7 个位,网络部分将从第四个八位字节借用 1 个位。
172.16.2.0 网络的新子网掩码将如下所示。
这是 255.255.255.128
因此,增量将是 128。
第一个网络将如下所示:172.16.2.0/25
第二个也是最后一个网络将是 172.16.2.128/25。
4、LAN C
在 LAN C 中,我们需要有能够容纳每个子网 12 个主机的子网,使用网络192.168.2.0/24。
首先,我们确定需要多少个主机 IP 地址位。
2^n - 2 = 12
2^4 - 2 = 14,足够了。
因此,主机部分将有 4 个位,而网络部分将借用 4 个位。
192.168.2.0 网络的新子网掩码将是
子网掩码是:255.255.255.240
该网络的增量将是 16。
第一个和第二个网络将分别是 192.168.2.0/28 和 192.168.2.16/28。
总结
IPv4 地址分配第一部分到此结束。在第二部分,我们将深入探讨子网划分,并且还会探索其他概念,如超网划分。
相关文章:
【网络协议】IPv4 地址分配 - 第一部分
文章目录 十进制与二进制网络如何被寻址地址类型网络地址广播地址主机地址 如何确定网络和主机部分的位数?网络中的主机数量与前缀号的关系计算每个前缀的主机数量公式 子网掩码二进制与操作(Binary ANDing)与操作(AND Operation&…...
掌握 Dockerfile:格式、解析器指令、环境变量替换
Docker 是一个开源平台,旨在自动化应用程序的构建、交付和运行。通过 Dockerfile,您可以定义镜像的构建过程。Dockerfile 是由一系列指令组成的文件,Docker 根据这些指令构建镜像。本文将介绍常用的 Dockerfile 指令、格式、解析器指令以及环…...
AWS Glue基础知识
AWS Glue 是一项完全托管的 ETL(提取、转换、加载)服务,与考试相关,尤其是在数据集成、处理和分析方面。 1.数据集成和 ETL(提取、转换、加载) AWS Glue 主要用于构建 ETL 管道以准备数据以进行分析。作为…...
单片机-LED实验
1、51工程模版 #include "reg52.h" void main(){ while(1){ } } 2、LED灯亮 #include "reg52.h" sbit LED1P2^0; void main(){ while(1){ LED10; } } 3、LED闪烁 #include "reg52.h" sbit LED1P2^0; //P2大…...
使用Python实现健康跟踪应用:打造智能健康管理助手
随着人们对健康的关注日益增强,智能健康管理逐渐成为热门趋势。通过持续跟踪身体状况、饮食、运动和睡眠等方面的数据,我们可以更好地了解自己的健康状态,并采取相应的措施来保持身体健康。Python,作为一种简洁且功能强大的编程语言,非常适合用来开发健康跟踪应用。本文将…...
结构型模式6.享元模式
结构型模式 适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)外观模式(Facade Pattern)享元…...
AWS S3文件存储工具类
pom依赖 <!--aws-s3--> <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.12.95</version></dependency>S3Utils import cn.hutool.core.util.ZipUtil; import com.a…...
MacDriver 项目推荐
MacDriver 项目推荐 macdriver Native Mac APIs for Go. Soon to be renamed DarwinKit! 项目地址: https://gitcode.com/gh_mirrors/ma/macdriver 1. 项目基础介绍和主要编程语言 MacDriver 是一个开源项目,旨在为 Go 语言提供原生的 macOS API 支持。该项…...
笔记:一次mysql主从复制延迟高的处理尝试
背景 mysql 5.7 主从复制 主库进行了一次灌数,导致多个大事务产生,主从延迟下不去,经确认该表最终truncate,并且该表仅有insert和select操作,故对该表的事务进行跳过,直到同步至truncate 跳过事务需谨慎&…...
《Vue3实战教程》40:Vue3安全
如果您有疑问,请观看视频教程《Vue3实战教程》 安全 报告漏洞 当一个漏洞被上报时,它会立刻成为我们最关心的问题,会有全职的贡献者暂时搁置其他所有任务来解决这个问题。如需报告漏洞,请发送电子邮件至 securityvuejs.org。…...
Linux 基础 6.进程
文章目录 6.1 进程和程序1. **程序 (Program)**2. **进程 (Process)**3. **程序与进程的区别**4. **进程的创建与执行**5. **总结** 6.2 进程号和父进程号1. **进程号 (PID)**2. **进程号的分配**3. **父进程号 (PPID)**4. **进程树结构**5. **进程号的限制与调整**6. **总结**…...
LeetCode:700.二叉搜索树中的搜索
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:700.二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你…...
web实操9——session
概念 数据保存在服务器HttpSession对象里。 session也是域对象,有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据: 获取session获取数据: 请求存储: 请求获取: 数据正常打印:…...
有哪几种方法可以使html脱离文档流?
position: absolute:会使元素脱离文档流,并且相对于最近的已定位的祖先元素进行定位。如果没有已定位的祖先元素,则相对于 <html> 元素定位。 元素脱离文档流,不再占据空间。 不会影响后续元素的位置和布局。 可以通过 top、right、…...
戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?
BIOS(基本输入输出系统)是计算机硬件与操作系统之间的桥梁,它负责初始化和测试系统硬件组件,并加载启动操作系统。在某些情况下,如调整启动顺序、更改系统时间或日期、修改硬件配置等,您可能需要进入BIOS进…...
Fast R-CNN模型详解及分析
模型背景 在目标检测领域的发展历程中,R-CNN系列模型标志着一个重要转折点。然而,在Fast R-CNN问世之前,这一领域的研究仍面临一些显著挑战: 计算效率低下 :早期模型如R-CNN和SPPNet虽然在准确性方面取得进展,但在计算效率上仍有待提高。特别是R-CNN需要多次运行CNN并单…...
android studio 写一个小计时器(版本二)
as版本:23.3.1patch2 例程:timer 在前一个版本的基本上改的,增加了继续的功能,实现方法稍微不同。 动画演示: activity_main.xml <?xml version"1.0" encoding"utf-8"?> <androidx…...
STM32完全学习——使用定时器1精确延时
一、定时器的相关配置 首先一定要是递减定时器,递增的不太行,控制的不够准确,其次在大于10微秒的延时是非常准确的,小于的话,就没有那没准,但是凑合能用。误差都在一个微秒以内。使用高级定时器也就是时钟…...
如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程
简介 本教程将向你介绍如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库。 Apache Cassandra 是一个分布式的 NoSQL 数据库,旨在处理跨多个普通服务器的大量数据,并提供高可用性,没有单点故障。Apache Cassandra 是一个高度可扩展的分布…...
【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型(敏感性分析方法)
【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型(敏感性分析方法) 引言 该文章实现了一个可解释的神经网络回归模型,使用BP神经网络(BPNN)来预测特征输出。该模型利用七个变量参数作为输入特征进行训练。为…...
小程序学习06——uniapp组件常规引入和easycom引入语法
目录 一 组件注册 1.1 组件全局注册 1.2 组件全局引入 1.3 组件局部引入 页面引入组件方式 1.3.1 传统vue规范: 1.3.2 通过uni-app的easycom 二 组件的类型 2.1 基础组件列表 一 组件注册 1.1 组件全局注册 (a)新建compoents文件…...
回归预测 | MATLAB实现CNN-BiLSTM-Attention多输入单输出回归预测
回归预测 | MATLAB实现CNN-BiLSTM-Attention多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiLSTM-Attention多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、方法概述 CNN-BiLSTM-Attention多输入单输出回归预测方法旨在通过融合CNN的局…...
直接插入排序、折半插入排序、2路插入排序、希尔排序
本篇是排序专栏博客的第一篇,主要探讨以 “插入” 为核心思想的排序算法该如何实现 文章目录 一、前言二、直接插入排序1. 算法思想与操作分析2. 代码实现version 1version 2 3. 复杂度分析 三、折半插入排序1. 算法思想与操作分析2. 代码实现3. 复杂度分析 四、2路…...
HTML-列表标签
列表是一系列排列好的项目,主要分成两类:有序列表和无序列表。 有序列表是每个列表项前面有编号,呈现出顺序,就像下面这样。 1. 列表项 A 2. 列表项 B 3. 列表项 C无序列表则是列表项前面没有编号,只有一个列表符号&…...
计算机网络原理(一)
嘿! 新年的第一篇博客,大家新年快乐呀!希望大家新的一年要多多进步噢! 1.TCP/IP的四层/五层参考模型有哪些层,各层的特点是?计算机网络分层的好处是? TCP/IP 四层参考模型 应用层:直接为用户…...
扩散模型论文概述(二):Google系列工作【学习笔记】
视频链接:扩散模型论文概述(二):Google系列工作_哔哩哔哩_bilibili 本视频讲的是Google在图像生成的工作。 同样,第一张图片是神作,总结的太好了! 在生成式AI的时代,OpenAI和Google不…...
第四届计算机、人工智能与控制工程
第四届计算机、人工智能与控制工程 The 4th International Conference on Computer, Artificial Intelligence and Control Engineering 重要信息 大会官网:www.ic-caice.net 大会时间:2025年1月10-12日 大会地点:中国合肥 (安徽大学磬苑…...
UE4.27 Android环境下获取手机电量
获取电量方法 使用的方法时FAndroidMisc::GetBatteryLevel(); 出现的问题 但是在电脑上编译时发现,会发现编译无法通过。 因为安卓环境下编译时,包含 #include "Android/AndroidPlatformMisc.h" 头文件是可以正常链接的,但在电…...
【人工智能】基于Python与OpenCV构建简单车道检测算法:自动驾驶技术的入门与实践
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着自动驾驶技术的快速发展,车道检测作为自动驾驶系统中的一个重要组成部分,起着至关重要的作用。本文将介绍如何利用Python与OpenCV库构…...
永磁同步电机控制算法--最大转矩电流比控制(牛顿迭代法)
一、原理介绍 搭建了基于牛顿迭代法的MTPA双闭环矢量控制系统 二、仿真验证 在MATLAB/simulink里面验证所提算法,采用和实验中一致的控制周期1e-4,电机部分计算周期为1e-6。仿真模型如下所示: 对直接公式计算法和牛顿迭代法进行仿真对比验…...
基于51单片机(STC32G12K128)和8X8彩色点阵屏(WS2812B驱动)的小游戏《贪吃蛇》
目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、矩阵按键模块3、8X8彩色点阵屏 四、主函数总结 系列文章目录 前言 《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。 以《贪吃蛇》为载体,熟悉各种屏幕…...
Ceph 手动部署(CentOS9)
#Ceph手动部署、CentOS9、squid版本、数字版本19.2.0 #部署服务:块、对象、文件 一、部署前规划 1、兼容性确认 2、资源规划 节点类型节点名称操作系统CPU/内存硬盘网络组件安装集群节点CephAdm01CentOS94U/8GOS:40G,OSD:2*100GIP1:192.169.0.9(管理&集群),IP2:…...
Reactor测试框架之StepVerifier
Reactor测试框架之StepVerifier 测试步骤1、创建StepVerifier实例2、添加断言3、执行验证 代码实例 在响应式编程中,Reactor框架提供了StepVerifier测试类,用于对响应式序列进行断言和验证。StepVerifier主要用于对Publisher发出的元素序列进行逐步的、精…...
unity 播放 序列帧图片 动画
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、方法一:代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二:直接使用1.Image上添加…...
1-markdown转网页样式页面 --[制作网页模板] 【测试代码下载】
markdown转网页 将Markdown转换为带有样式的网页页面通常涉及以下几个步骤:首先,需要使用Markdown解析器将Markdown文本转换为HTML;其次,应用CSS样式来美化HTML内容。此外,还可以加入JavaScript以增加交互性。下面我将…...
ubuntu 创建服务、查看服务日志
1. 在 /etc/systemd/system/ 下创建文件,名称为 xxx.service [Unit] DescriptionYour Service Description Afternetwork.target[Service] Typesimple ExecStart/path/to/your/service/executable Restarton-failure[Install] WantedBymulti-user.target2. 配置服务…...
[python3]Excel解析库-openpyxl
https://openpyxl.readthedocs.io/en/stable/ openpyxl 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。它允许开发者创建、修改和保存电子表格,而无需依赖 Microsoft Excel 软件本身。openpyxl 支持读取和写入 Excel 的工作簿(Work…...
使用 LlamaIndex 构建智能文档查询系统
使用 LlamaIndex 构建智能文档查询系统 1. 环境准备2. 初始化模型3. 加载文档4. 构建索引和查询引擎5. 生成扩展查询6. 主函数7. 总结 在现代信息检索系统中,如何高效地从大量文档中提取出有用的信息是一个重要的挑战。本文将介绍如何使用 LlamaIndex 构建一个智能文…...
C++——继承
目录 前言 1. 继承的概念和定义 1.1 继承的概念 1.2 继承的定义 1.2.1 定义格式 1.2.2 继承基类成员访问方式的变化 1.3 继承类模板 2. 基类和派生类之间的转换 3. 继承中的作用域 3.1 隐藏规则 3.2 考察继承作用域相关选择题 4. 派生类的默认成员函数 4.1 4个常…...
01:C语言的本质
C语言的本质 1、ARM架构与汇编2、局部变量初始化与空间分配2.1、局部变量的初始化2.1、局部变量数组初始化 3、全局变量/静态变量初始化化与空间分配4、堆空间5、函数 1、ARM架构与汇编 ARM简要架构如下:CPU,ARM(能读能写),Flash(…...
Jmeter进阶篇(32)Jmeter 在 MySQL 数据库压测中的应用
一、引言 在当今数字化时代,数据库性能的优化对于企业的发展至关重要。随着业务量的不断增长,数据库需要承受越来越大的压力。MySQL作为一种广泛使用的开源数据库,其性能和稳定性备受关注。为了确保数据库在高负载情况下能够正常运行,进行压测是必不可少的环节。Jmeter作为…...
TCPDump参数详解及示例
TCPDump参数详解及示例 TCPDump参数详解TCPDump -G的示例TCPDump -i any -s 2048 -G 600 -p udp -Z root -n -X -tt -w %Y_%m%d_%H%M_%S.pcap &的含义TCPDump是一款强大的网络数据包截获分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议…...
Protocol Buffer
1、什么是 Protocol Buffers? Protocol Buffers (protobuf) 是一种序列化结构化数据的方法,由 Google 开发。它们提供了一种与语言无关、与平台无关且可扩展的机制,用于高效序列化结构化数据。 Protocol Buffers 中的…...
高等数学学习笔记 ☞ 连续与间断
1. 连续 1. 点连续定义: 设函数在点的某邻域内有定义,取附近的点,对应的函数值分别和, 令,当时,若,则称函数在点处连续。 记作。 此式为增量形式。 又知,则可改写为:。 …...
【three.js】Shader着色器
原始着色器材质RawShaderMaterial 两种着色器材质的 RawShaderMaterial 和 ShaderMaterial 的区别和用法 区别: ShaderMaterial 会自动将一些初始化着色器的参数添加到代码中(内置 attributes 和 uniforms) RawShaderMaterial 则什么都不会添…...
在 macOS 中,设置自动将文件夹排在最前
文章目录 1、第一步访达设置2、第二步排序方式 需要两步设置 1、第一步访达设置 按名称排序的窗口中 2、第二步排序方式 选择名称...
创建并配置华为云虚拟私有云
目录 私有云 创建虚拟私有云 私有云 私有云是一种云计算模式,它将云服务部署在企业或组织内部的私有基础设施上,仅供该企业或组织内部使用,不对外提供服务.私有云的主要特点包括: 私密性:私有云的资源(如…...
Spark是什么?Flink和Spark区别
Spark是什么?Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架,主要用于大规模数据处理和分析。它支持多种数据处理模式,包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…...
代码随想录 day 25
第七章 回溯算法 part04 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 视频讲解:https://www.bilibili.com/…...
数据仓库中的指标体系模型介绍
数据仓库中的指标体系介绍 文章目录 数据仓库中的指标体系介绍前言什么是指标体系指标体系设计有哪些模型?1. 指标分层模型2. 维度模型3. 指标树模型4. KPI(关键绩效指标)模型5. 主题域模型6.平衡计分卡(BSC)模型7.数据指标框架模…...