vlan和vlanif
文章目录
- 1、为什么会有vlan的存在
- 2、vlan(虚拟局域网)
- 1、vlan原理
- 1. 为什么这样划分了
- 2、如何实现不同交换机相同的vlan实现互访呢
- 3、最优化的解决方法,vlan不同交换机
- 4、vlan标签和vlan数据帧
- 5、vlan实现
- 2、基于vlan的划分方式
- 1、基于接口的vlan划分方式
- 2、基于mac地址划分
- 3、以太网二层接口类型
- 1、Access接口
- 2、trunk接口
- 3、Access和trunk接口
- 4、hybrid接口
- 4、vlan基础配置命令
- 1、创建vlan
- 1、Access接口配置
- 2、Trunk接口配置
- 3、hybrid接口配置
- 4、总结vlan端口
- 5、实验
- 1、access和trunk接口
- 2、对上面的实验的补充(不同vlan之间主机的通信)
- 1、路由器物理接口
- 2、路由器上面配置虚拟接口
- 3、交换机实现路由功能(三层交换机这个就是,配置网关)-就解决掉了上面的问题了
- 6、vlanif(虚拟局域网接口)
- 1、vlanif实验和通信流程
- 2、补充
- 7、实验图片
- 8、总结
- 1、关于同网段的通信
- 2、不同网段通信
- 3、vlan
- 4、vlanif
1、为什么会有vlan的存在
-
交换机不能隔离广播域,如果广播域特别大的话,交换机泛洪的,就会传播到整个广播域
-
广播域越大,产生的网络安全问题,垃圾流量问题就越严重
-
因此就会有隔离广播域,路由器可以隔离,但是为了实现广播域的隔离,会增加很多的路由器,因此的话,不方便,就会在交换机上面实现广播域的隔离,不同的广播域在二层设备上面是不同的,这样泛洪的话,就不会泛洪到其他的广播域尚敏,这样的话就减少了广播域的规模
2、vlan(虚拟局域网)
1、vlan原理
- 最常见的划分就是将交换机不同的端口划分到不同的vlan中
1. 为什么这样划分了
# mac地址表中就会记录mac,port,vlan# 不同的vlan的区域的话,在vlan10中发送了一个广播的话,就只会在vlan10中泛洪,不会泛洪到vlan20中,这样的话,在通信的时候,首先发送的是arp请求是一个广播,但是不会泛洪到vlan20中,因此的话在默认的情况下,不同的vlan是无法进行通信的# 交换机就实现了广播域的隔离
2、如何实现不同交换机相同的vlan实现互访呢
# 在vlan10中新添加一个端口也划分在vlan10中,然后另外一个交换机也配置一个端口在vlan10中,连接起来,从而实现了不同交换机中的相同vlan通信了# 但是这个方法非常费端口# 因此就有了下面的解决方法
3、最优化的解决方法,vlan不同交换机

# 就是在这个2个交换机上面打上2个口子,用于连接2个交换机的通信,这个线路vlan10和vlan20都可以在这个线路上面进行传输# 比如A交换机发送一个数据,携带了vlan10这个数据,然后传输到B交换机,根据这个vlan信息的话,传输到vlan10里面去,这样的话,vlan20的标签也可以了# 这样的端口称为trunk# 在数据帧中添加vlan信息,可以跨交换机部署vlan# 在逻辑上不同交换机上面相同的vlan是在连接在一个交换机上面
4、vlan标签和vlan数据帧

-
vlan标签就是能够使交换机分辨不同vlan的报文,需要在报文中添加vlan信息字段
-
vlan数据帧就是在帧上面的源mac地址后面添加vlan信息(802.1Q tag)
-
vlan标签上面详细的介绍
5、vlan实现
-
PC1发送数据,然后交换机打上标签,连接2个交换机的链路要承载多个vlan数据,所以需要基于vlan数据的标记,以便对不同的vlan数据帧进行区分
-
就是在帧头插入802.1Q Tag

2、基于vlan的划分方式
- 交换机打上tag的方法不一样
1、基于接口的vlan划分方式
-
根据交换机的接口来划分vlan
-
每个接口配置不同的pvid(port vlan id ),在接口划入到对应的vlan
-
vlan id 取值 1~4094
-
每个端口默认的情况下是1
-
数据帧会被打上pvid的tag

- 主机移动的话,主机接入的接口就需要重新配置pvid
2、基于mac地址划分

-
mac和vlan id的映射关系
-
主机移动,不需要重新配置vlan了,跟端口没有关系了
3、以太网二层接口类型

-
都可以,图中的接口都可以改的
-
access 接口通常用于连接用户PC,服务器等终端设备接口,access接口连接的往往是收发无标记帧,access接口只能加入一个vlan中,也就是特定的vlan
1、Access接口

-
接收帧
-
当一个没有标签的数据帧进入这个接口,就会被vlan10打上标签
-
如果数据帧的vlan10与接口的vlan10相同的话,直接进行交换机内部,接收该帧
-
如果vlan20的数据帧的话,交换机不会接受这个数据帧,直接进行丢弃
-
-
发送帧
-
帧的vlan id与接口的vlan id相同的话,出交换机的时候,去掉vlan标签,然后从这个接口发送出去
-
帧的vlan id 与 接口的 vlan id不同的话,禁止发送出去
-
2、trunk接口

-
这个是一个干道口
-
vlan 1是默认的存在的
-
trunk这个通道相当于是一个控制规则,允许多个vlan通过
-
发送帧
-
接口接收到了数据,然后打上pvid,如果这pvid 在vlan列表中允许通过的话,就接收,不允许的话,就丢弃
-
相同的vlan10发送的话,vlan id列表允许的这个vlan id的话,就通过,不允许就丢弃
-
-
发送帧
-
当vlan id相同的话,并且在vlan 列表的话,直接去掉vlan 标签,从这个接口发送出去
-
数据帧的vlan id 与 接口的vlan id不同的话,但是在vlan 列表中的话,不去掉vlan 标签
-
不在vlan 列表的话,不允许通过,禁止发送数据
-
3、Access和trunk接口

4、hybrid接口

-
接收帧与trunk接口是一样的,但是了发送帧的话就不一样了,管理员能够决定这个数据帧发送出去的时候是保留这个vlan 信息还是去掉了,这个是由管理员进行决定的
-
如果是untag类型的话,就是数据帧发送出去的时候需要去掉这个标签
-
tag类型的话,数据帧发送出去的时候不需要去掉这个标签

4、vlan基础配置命令
1、创建vlan
vlan 10
# 就直接进入了这个vlan视图了# vlan id 取值范围是1~4094# 创建多个vlan
vlan batch 20 30 40# 批量创建vlan
vlan batch 20 to 30
1、Access接口配置
interface GigabitEthernet0/0/1port link-type access # 设置 access接口类型port default vlan 10 # 设置接口的vlan # 可以通过查看接口的pvid,也就是数据帧发送过来的时候,会被打上这个vlan 10的标签
[j1]display interface g0/0/1
2、Trunk接口配置
interface GigabitEthernet0/0/2port link-type trunk # 设置接口类型port trunk pvid vlan 10 # 设置pvid,也就是将这个接口加入到vlan中port trunk allow-pass vlan 10 20 # 主干通道允许 10 20 vlan 通过
3、hybrid接口配置
interface GigabitEthernet0/0/2port link-type hybrid # 默认就是这样类型的端口port hybrid pvid vlan 20 # 将接口加入到vlan 20中port hybrid untagged vlan 20 30 # 允许 vlan 20 30 通过
# 端口的类型
[j1]display port vlan active
T=TAG U=UNTAG
-------------------------------------------------------------------------------
Port Link Type PVID VLAN List
-------------------------------------------------------------------------------
GE0/0/1 hybrid 10 U: 1 10 30 # 10,30vlan标签,去掉标签,允许10 20 通过
GE0/0/2 hybrid 20 U: 1 20 30
GE0/0/3 hybrid 30 U: 1 10 20T: 30 # 出去的时候不需要去掉标签,允许10 20 30vlan出去# vlan list
u 和 t 就是放行的vlan , u就是发出去去掉这个vlan 标签
4、总结vlan端口

# 总而言之,就是这个三个类型# access接口 只能允许一种vlan通过,比较vid(数据携带的vlan id ) 和 pvid# trunk接口 允许多种vlan通过,如果vid和pvid相同的哈,去掉标签,否则不去掉(vid在vlan 允许的情况下),不在话丢弃# hybrid接口 允许多种vlan通过,可以自己控制是否去掉标签,在untag列表中,去掉标签,在tag列表中,携带标签发送,不在的列表中,丢弃
5、实验
1、access和trunk接口

# 实验目的# 实现相同vlan主机访问# 划分2个vlan# 最上面的2个主机,通过pvid 1 来进行通信,什么都不用配置
-
通信的原理
- 首先ping 1.1.1.3
# 携带的信息为 Dip 1.1.1.3 Sip 1.1.1.1 Dmac ffff Smac 有-
通过s3上面的g2口,打上一个vlan10 的标签,然后通过查询规则,vlan 10 20都允许放行,arp会进行泛洪,但是g3口只允许vlan 20 通过,因此只能走 g1 口 到达下一个交换机 s1 上面
-
然后继续到达s2交换机上面,通过查询vlan规则,走 g2 口到达 目标主机,记录了Dmac地址
-
然后目标主机发送一个arp 应答,里面包含了
DIp 1.1.1.1 Sip 1.1.1.3 Dmc 有 Smac 有-
然后这个交换机就会记录这一来一回的信息,也就是mac地址和port对应关系
-
下一次就直接发送icmp包,进行通信即可
2、对上面的实验的补充(不同vlan之间主机的通信)
1、路由器物理接口

-
实现不同vlan主机互访
-
添加一个路由器,然后配置一个网关,充当一个网关,访问网关就相当于是访问同一个网段即可
-
实现PC1与PC2或者PC4通信即可
-
流程
# 访问不同的网段的时候,先要去寻找网关,arp解析网关mac地址,就有能力将数据送给网关,然后根据路由表寻找通往不同网段的ip地址,这样的话,就能寻找到不同的网段,实现了通信的效果
2、路由器上面配置虚拟接口
-
当然上面的这种做法,容易费接口
-
一个接口上面配置虚拟接口 .10 .20这样的,实现了逻辑口配置,绑定vlan ,只有虚拟接口才能实现vlan 标签,物理接口不能实现vlan 的绑定
-
dot1q ter vid 10,然后配置ip地址
-
子接口不会开启arp服务,所以要开启arp br enable,物理接口默认是开启arp解析的

- 路由器接收后,从对应的接口就发送一个数据帧,带有vlan 标签的
# 路由器r2配置文件
[r2-GigabitEthernet0/0/0.20]display this
[V200R003C00]
#
interface GigabitEthernet0/0/0.20dot1q termination vid 20 # 通过绑定子接口vlan 10,来实现区分ip address 2.2.2.254 255.255.255.0 arp broadcast enable
#
return# s1交换机的配置
[s1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3port link-type trunkport trunk allow-pass vlan 10 20
#
return
-
缺点,这个路由器的线,非常的消耗带宽,性能上面的不足
-
这个路由器上面的g0口的话,也可以作为一个网关,如果发送了一个数据没有携带vlan的话,g0口也可以作为一个网关,如果携带了vlan 1标签的数据的话,需要在g0口上面再来配置一个虚拟接口即可
3、交换机实现路由功能(三层交换机这个就是,配置网关)-就解决掉了上面的问题了
- 具有路由功能就是一个三层交换机

-
在交换机上面配置网关,使用的是vlanif ,抽象的逻辑接口
-
vlanif 后,就相当于路由功能
-
配置一个vlanif 后,然后配置2个不同网段的网关即可
-
这个S1就是一个汇聚层,S3和S2就是一个接入层
[s1]int Vlanif 10
[s1-Vlanif10]disp
[s1-Vlanif10]display this
#
interface Vlanif10ip address 1.1.1.254 255.255.255.0
#
return[s1]int Vlanif 10
[s1-Vlanif20]disp
[s1-Vlanif20]display this
#
interface Vlanif20ip address 2.2.2.254 255.255.255.0
#
return
6、vlanif(虚拟局域网接口)

-
vlanif就相当于是一个路由功能,配置网关即可实现通信了
-
实现了不同vlan之间的通信即可
1、vlanif实验和通信流程

# 首先2个交换机之间配置access接口,vlanif100 实现2个交换机之间的三层通信# 然后ospf的配置,这样的话路由也都配置好了# 通信的流程vlan标签的变化# PC7与PC1之间的通信# 首先PC7发送一个arp到网关解析到了网关mac地址,然后ping 1.1.1.1 经过g1口打上vlan 7的标签,然后S4解析发现不是自己的,发送到路由模块中去寻找,这个时候,发送与vlanif 100相匹配,去掉之前的标签,打上vlan 100标签发送出去,# 到达了S1交换机,然后去掉自己vlan 100标签,匹配到了vlan if 10的路由了,打上vlan 10的标签,然后到了S3交换机上面了,达到出接口G2的时候去掉vlan 10的标签,到达了目标主机PC1# 回包的时候也是这样的流程
2、补充

- 加上了PC9,vlan10
# 这个时候交换机之间就不能使用access接口了,需要配置trunk接口# 2个交换机配置这样的配置
# vlan 10用于二层的通信,100用于三层的通信
[s1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3port link-type trunkport trunk allow-pass vlan 10 100
#
return# S4交换机上面的G3口的配置即可
[s4-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 10
#
return
7、实验图片

# 2个交换机上面配置ospf
# 如果2个交换机ospf中的范围不同的话,可能不会交换LSA信息# 比如一个配置S1 1.1.1.1 0.0.0.0 另外一个配置S2 2.2.2.0 0.0.255# 这样的话就是S1 是/32的,所以就会读取LSA,但是S2是/24,不会进行交换,这个就是范围不同导致的
8、总结
交换机通信原理
就是mac表
广播域等
1、关于同网段的通信
- 发送arp请求解析mac地址后,开始通信
2、不同网段通信
-
1.1.1.1 访问 2.2.2.2,先要去找1.1.1.1的网关做一个arp请求,解析到mac地址,不同网段需要网关,因此需要路由器,但是arp请求是广播域,路由器不接受,因此的话,在路由器上面配置网关,这样的话,就能访问到了网关,查找路由表,这个2个网段在不同的广播域中
-
但是有特殊情况,2个不同的网关在同一个广播域中,这样的话,可以不设置网关,对目标ip发送一个arp请求,实现通信了
3、vlan
-
交换机不能隔离广播域,因此设置vlan
-
就是在接口上面配置vlan id 然后发送的数据经过这个接口就会被打上vlan标签,然后再来考虑放行
-
access接口类型的话,只能允许一个vlan通过,vlan丢弃
-
trunk接口类型的话,允许多个vlan通过,vlan ID 和 pvid一样的话,出去时去掉标签,不一样则不丢弃
-
hybrid接口类型的话,允许多个vlan通过,但是可以自己设置丢弃和不丢弃标签
4、vlanif
-
交换机没有三层的能力,因此设置vlanif
-
实现了路由的功能呢
-
vlan 100 vlanif 100对应的编号相同的
相关文章:
vlan和vlanif
文章目录 1、为什么会有vlan的存在2、vlan(虚拟局域网)1、vlan原理1. 为什么这样划分了2、如何实现不同交换机相同的vlan实现互访呢3、最优化的解决方法,vlan不同交换机4、vlan标签和vlan数据帧 5、vlan实现2、基于vlan的划分方式1、基于接口的vlan划分方式2、基于m…...
Apache Kylin最简单的解析、了解
官网:Overview | Apache Kylin 一、Apache Kylin是什么? 由中国团队研发具有浓厚的中国韵味,使用神兽麒麟(kylin)为名 的一个OLAP多维数据分析引擎:(据官方给出的数据) 亚秒级响应ÿ…...
MySQL——连接
一.引入库 我们已经分享了很多通过命令行方式去操作数据库,那么数据库该怎么通过语言去访问呢? 这里分享怎么通过C/C来连接数据库。 首先需要到MySQL官网,下载专门用于C/C连接数据库的库,但是一般不需要再去官网下载。 因为在…...
前端微服务实战:大型应用的拆分与治理
"这个系统已经无法维护了..."周五的架构评审会上,我盯着屏幕上那张错综复杂的依赖关系图发愁。作为一个运行了三年的企业级中后台系统,代码量已经超过 50 万行,构建时间长达 40 分钟,任何修改都可能引发连锁反应。 更让人头疼的是,随着业务的快速发展,不同业务线之间…...
Linux shell的七大功能 --- history
1.直接输入“history” 这个命令可以显示出曾经使用过的命令(最近时间的500条) history 2.“history”命令也可以搭配其他命令一起使用。 例:history | grep "vim",找出所有包含“vim”的记录; 也可以搭配…...
C++ webrtc开发(非原生开发,linux上使用libdatachannel库)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少,经过我一段时间的探…...
C语言刷题
1. 题目描述 根据给出的三角形3条边a:b.c(a.b,c<100.000),计算三角形的周长和面积。 输入描述: 一行,三角形3条边(能构成三角形),中间用一个空格隔开. 输出描述: 一行,三角形周长和面积保留两位小数,中问用一个空…...
LabVIEW实现RFID通信
目录 1、RFID通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...
Linux 网络流量控制 - 实现概述
摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计,描述了其结构,并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov(kuznet…...
分布式 令牌桶算法 总结
前言 相关系列 《分布式 & 目录》《分布式 & 令牌桶算法 & 总结》《分布式 & 令牌桶算法 & 问题》 参考文献 《【算法】令牌桶算法》 概述 简介 TBA Token Bucket Algorithm 令牌桶算法是一种流行于网络通信领域的流量控制/频率限制算法。令牌…...
FFMPEG视频转图片
用FFMPEG视频转图片,并且for循环 import os import subprocess# 输入文件夹和输出文件夹路径 input_folder r"I:\xxx" output_base_folder r"D:\xxx\YOLO\data\video" output_subfolder_name "20240609"# 创建输出子文件夹 output…...
docker入门实践---虚拟机环境配置
文章目录 1.检查内核版本2.确定centos7可以上网3.关闭防火墙4.关闭防火墙5.更换阿里云6.安装gcc7.设置镜像仓库(阿里云)8更新软件包9.安装docket-ce10.启动docker11.普通用户权限设置 1.检查内核版本 2.确定centos7可以上网 3.关闭防火墙 下面的这个表示…...
java要防止重复序列化的问题JSON.toJSONString转义问题
要防止重复序列化的问题JSON.toJSONString(entity) 20241213 10:29 背景: 我在设计业务实现echart图标渲染,业务接口实时性查询耗时很长,为了提高系统可用性和用户体验,采用中间表的方案——即在中间表中存储大JSON。 但是在自测…...
TS的类型守卫、类型约束实践
类型守卫 // 基础类型判断 const arr [30, 50] console.log(typeof arr) // object const set new Set(arr) console.log(typeof set) // object const map new Map() console.log(typeof map) // objectclass Customer {constructor() {}buy(method:string) {console.log(…...
文件转曲,限制PDF文件编辑的最佳方案!
随着数字化进程的推进,PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用,成为了现代文档交流和存储的重要工具,满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多,常见的比如阅读、编辑、加密、转换、还可用于印刷…...
MySQL系列之数据授权(安全)
导览 前言Q:如何对MySQL数据库进行授权管理一、MySQL的“特权”1. 权限级别2. 权限清单 二、授权操作1. 查看权限2. 分配权限3. 回收权限 结语精彩回放 前言 看过博主上一篇的盆友,可以Get到一个知识点:数据授权(eg:g…...
用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!
用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!(结尾附完整代码) 简介 2048 是一个简单而又令人上瘾的数字拼图游戏。玩家通过滑动方块使相同数字的方块合并,目标是创造出数字 2048!在这篇…...
Vue vs. React:两大前端框架的深度对比与分析(一)
前言 在当今快速发展的前端领域中,Vue和React作为两个备受瞩目的前端框架,已经成为许多开发者的首选。这两个框架凭借其出色的设计和强大的功能,在构建现代化、高效性能的Web应用方面扮演着重要角色。 Vue和React都以其独特的特点吸引了众多开…...
React 进阶深入理解核心概念与高阶实践
在上一节中,我们学习了 React 的基础知识,包括组件、状态管理和基本操作。接下来,我们将进一步探索 React 的高级功能和实战技巧,例如 组件间通信、高阶组件、Context API、React Router 等。这些内容将帮助你构建更复杂、功能更丰…...
Linux shell的七大功能 ---自动补齐、管道机制、别名
1、自动补齐---TAB 输入命令的前几个字符,按下tab键,会自动补齐完整的字符,若有多个命令、文件或目录的前几个字符相同,按下tab将会全部列举出来 2、管道机制---| 例如:ls -- help |more 将有关ls的帮助内容传递给“|…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
