【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
文章目录
- 局域网 LAN
- 广域网 WAN
- 网络中的重要概念
- IP 地址
- 端口号
- 认识协议
- 协议分层
- 是什么
- OSI 七层网络模型
- TCP/IP 五层网络模型(或四层)
- 物理层
- 传输层
- 网络层
- 数据链表层
- 应用层
- 网络设备所在分层
- 封装和分用
- [站在发送方视角](封装)
- [站在接收方视角](分用)
发展过程:
单机 —> 局域网 —> 广域网 —> 移动互联网
局域网 LAN
- 局域⽹,即
Local Area Network
,简称LAN
。 Local
即标识了局域⽹是本地,局部组建的⼀种私有⽹络。- 局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。局域⽹组建⽹络的⽅式有很多种:
-
把几个电脑连接到一起,就构成了局域网
-
但当电脑多了之后,就不方便两两相连,就创造了“路由器”
- 只要电脑都连在同一个路由器上面,就可以构成局域网
[!quote] 调制解调器(猫)
- 不同种类的信号转换
- 这个是宽带普及之前,上网操作是通过“电话线”进行的,猫的作用是将电话线中的模拟新欢转换成网络中的“数字信号”
- “光猫”就是把光信号和电信号之间进行相互转换(一般带有路由功能)
- 因为路由器上面接口有限,当机器多了之后,就插不下了,此时就引入了“交换机”,就解决了上述问题
- 交换机就相当与是对路由器的端口的扩展
- 将计算机都插到交换机上面,然后交换机再连接路由器就行了
- 此时这些电脑就相当于都插到路由器上了,这些电脑就都早一个局域网中了
- 局域网是有路由器负责的,本身与交换器没有关系
广域网 WAN
- ⼴域⽹,即 Wide Area Network,简称 WAN。
- 通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。
- 现在见到的“万维网”就是把全世界的设备都连接在一起的巨大广域网
- “网游”就是电脑连接到了广域网上,可以和全国甚至全世界的玩家一起进行对抗
网络中的重要概念
IP 地址
- IP 地址就是描述了一台主机,在互联网上所处的位置
- IP 地址是使用一个 32 位整数来表示的
- 使用“点分十进制”这样的方式,来表示“IP 地址”
- 将 32 位整数用三个点分成了四份,每份取值范围 0~255(一个字节)
- 使用点分十进制之后,更方便人阅读
端口号
- 用来区分当前主机上的指定的应用程序(进程)
- 一个主机上,使用网络的程序有很多个,可以通过端口号,区分当前主机收到的数据是要交给哪个程序来处理使用
- 端口号同样也是一个整数,是一个两个字节的整数(0~65535)
- 虽然是 0 ~65535 这样的范围,实际上 0~1023 这些端口都是有一些特定含义的
- 咱们自己写代码使用的端口,一般都是用剩下的
[!quote] IP 地址和端口号
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)
认识协议
网络中最核心的概念
- 协议是进行一切通信的基础
- 协议至少得有两个主机,让发送方发送数据,接收方能理解
- 比如,我虽然在重庆上学,但我是湖北人,如果周围有人说重庆话,我有时候就听不到。
- 这就属于无效的通信
- 所以双方需要按照同样的规则来构造/解析数据,否则就是无效的通信
- 协议就是在约束通信双方,交互数据的“规则”,协议确定了,双方就在一个频道上了,才能进行有意义的通信
所以,如何进行网络通信的问题,就转为了如何设计网络通信协议。
网络上传输的数据:光信号(光纤,激光的光)/电信号(网线里的)/电磁波(WiFi、5G…)
- 无论是哪种信号,本质上都是传输 0101 这样的二进制
- 光信号:可以用高低频光代表 0/1
- 电信号:可以用高低频电代表 0/1
- 电磁波:也是光,也可以通过频率进行编码
- 所以在通信时就需要约定好,传输的这一大串 101010 都是啥意思
- 这个就是"网络通信协议“要完成的核心工作
由于网络通信,是一件非常复杂的事情,如果只使用一个协议,去约定所有的网络通信细节,就会导致这个协议非常庞大,非常复杂
为了对抗这种复杂度,我们就进行“拆分”。将一个大的协议,拆分成多个小的协议,让每个小的协议,专注于解决一个/一类问题,再让这些协议相互配合
协议分层
是什么
- 但是,拆分之后,拆出来了很多协议,不方便组织
- 所以,将这些协议分层,把功能类似的协议放到一层,并且约定号,协议之间,不能随意进行交互,只能是相邻的层之间才能进行交互
- 上层协议调用下层协议,下层协议给上层协议提供服务
- 上层协议调用下层协议,下层协议给上层协议提供服务
分层的好处:
- 降低了使用的成本,使用某个协议的时候,不需要关注其他协议的实现细节
- 打电话这个事情,不需要理解电话机的工作原理,只需要会说话即可
- 降低整个体系的耦合性,可以灵活的变更某个协议
- 可以经汉语协议变为英语协议,不妨碍打电话;可以经无线电协议变为电话协议,也不妨碍打电话
当前互联网体系的现状就是“协议分层”的效果
OSI 七层网络模型
这种划分方式,只是存在于教科书里,并没有被真正的采用
TCP/IP 五层网络模型(或四层)
当前世界上最主流的网络协议模型
四层就是不散物理层,物理层和硬件相关,距离程序员非常遥远
物理层
- 物理层:描述的是硬件设备(网线这样的设备)需要满足什么样的条件
- 物理层就相当与是“公路“、”铁路”、“航线”
传输层
- 传输层:主要就是关注网络通信中的“起点和终点”,并不关心通信的中间细节
- 比如,你在网上买了个东西
- 下单的时候,需要填写“收件人信息”
- 卖家给你发快递的时候,也需要填写“发件人信息”
- 最后卖家就把快递给快递小哥,快递小哥最后将快递送到你手上
- 在这个过程中,传输层就只关注发货地和收货地,并不关心快递是如何到你手上的、如何运输的…
网络层
- 网络层:进行网络通信的路径规划和地址管理
- 网络是很负责的结构,从 A 到 B 中间有很多不同的路线,此时网络层协议就要进行“路径规划”,称为“路由选择”
- 网络上的这些设备他们的地址都是什么、怎么去描述、用什么样的一套规则也是网络层安排
- 比如快递小哥揽收你的包裹之后,需要进行包裹运输
- 就要规划选择一条合适的路径将包裹送到你手中
- 合适的选择不是绝对的,可能看路程、可能看速度、可能看成本…
- 使用地图导航,也是类似于网络层“路由选择”的过程
数据链表层
- 数据链路层:针对好上述规划好的路径,进行具体的实施
- 比如,你的包裹要从上海运往西安,选择的路径是:上海 —> 南京 —> 西安
- 上海 —> 南京:走水路,坐船
- 南京 —> 上海:走铁路,火车
- 西安 —> 驿站:走公路,坐卡车
- 驿站 —> 收货地:骑三轮
- 在这每两个地点之间的交通选择,都是数据链路层负责的
- 董事长(传输层) —> 制定一个公司的发展目标(今年营业额要达到 xxx 小目标)
- 高管(网络层) —> 规划一下,如何达到上述目标,明确达到上述目标,分成几个步骤,先做什么再做什么。路径规划/路由选择的过程
- 基层员工(数据链路层) —> 进行具体实施,第一步到第二步,第二步到第三步… 具体咋办
- 办公用到的基础设施(物理层) —> 办公室、工位、电脑、打印机、网络…
这四层都是程序员干预不了的,操作系统/硬件设施已经实现好了的
应用层
- 应用层:程序员可以干预到的,可以决定这个应用是用来干什么
网络设备所在分层
- 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是
TCP/IP
五层模型的下四层; - 对于⼀台路由器,它实现了从⽹络层到物理层,也即是
TCP/IP
五层模型的下三层; - 对于⼀台交换机,它实现了从数据链路层到物理层,也即是
TCP/IP
五层模型的下两层; - 对于集线器,它只实现了物理层;
这都是站在经典的模型上讨论的,笔试中遇到了相关的选择/填空题,可以照着答
真实情况下,交换机也可能是工作在网络层,甚至是传输层/应用层
路由器也可能是工作在数据链路层,也可能是传输层,也可能是应用层
封装和分用
通过 QQ,发送一个 hello
给另一个人
[站在发送方视角](封装)
- 用户输入框中输入“
hello
”字符串,点击“发送”按钮- QQ 这样的程序,就会把
hello
这个内容从输入框读取到,构成一个“应用层数据包” - “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的
- QQ 这样的程序,就会把
[!quote] 序列化/反序列化
- 将结构化数据 —> 二进制字符串:序列化
- 将二进制字符串 —> 结构化数据:反序列化
- 进行网络传输数据,通常就需要把一个“结构化”(C 的结构体/Java 的类,包含很多属性)数据转成一个“字符串”(二进制字符串,不需要非得在码表上可以查到,任何的 01 序列都可以接在一起)
[!quote] 应用层数据包
- 主要是做了一个“序列化”的工作,将传入的信息整合成一个“字符串”
- “应用层数据包”是应用层的协议,描述了这个数据包的构造,此处的应用层协议,往往是开发 QQ 的程序员自行定义的
- 如果是我来开发 QQ,我可能会按照下列的方式定义这个应用层数据包的结构(定义方式有很多种)
- 数据包格式:发送者的 QQ 号;接收者的 QQ 号;发送时间;消息正文\n
- 数据包样例:
123456789;987654321;2024-01-14 23:50:10;hello\n
-
应用层数据包准备就绪后,QQ 这样的应用程序,就会调用操作系统提供的
API
(传输层给应用层提供的 API)- 操作系统就会提供一个类似于“发送数据”这样的
API
,然后应用程序就会把上述组织好的应用层数据包作为参数传进来,于是应用层数据包就到了系统内核里,就进入到传输层的代码部分了 - 此时,传输层这里,就会把上述的应用层数据,再进一步封装(字符串拼接)成一个传输层数据包
- 由于传输层有多种协议(其中最重要的是两个:
TCP
和UDP
),这些协议给应用层提供的API
是不同的,看应用程序种使用哪组API
就使用哪个协议- 假设此处使用
UDP
协议,则会在刚刚整合的“字符串”前面加一个“UDP 报头
”,这串“字符串”叫“UDP 正文
/载荷
(payload
)” UDP报头
中就包含了一些UDP
相关的信息,比如发送者的端口号和接受者的端口号- 拼上的这些信息,都是给后续的转发打下基础的,就类似于“贴标签”
- 网络中,有多层协议,每一层协议都要贴标签,每一层标签的侧重点不同,贴上的标签中的信息也不一样
- 假设此处使用
- 操作系统就会提供一个类似于“发送数据”这样的
-
传输层构造好数据之后,就会继续调用网络层提供给传输层的
API
,把数据进一步交给网络层- 由于传输层和网络层都是系统内核里面实现好的,上述调用的过程,我们无需关心,也感知不到
- 网络层也有多种协议,其中最重要的就是 IPv4 协议(简称为 IP 协议)
- IP 协议就会把上述拿到的传输层数据包构造成网络层数据包
- IP 报头中也会包含很多信息,主要信息为发送方的 IP 地址,接收方的 IP 地址
-
网络层继续调用数据链路层的
API
,把数据交给数据链路层处理- 数据链路层的常见协议是:以太网(平时插网线,进行上网的方式)
- 在 IP 数据包的基础上,进一步进行包装
[!quote] 网络传输数据的基本单位
- 数据包(packet)
- 数据报(Datagram)
- 数据段(segment)
- 数据帧(frame)
这几个术语严格来说是有区别的,但平时日常交流的时候,不会刻意区分
- 上述得到的数据,需要进一步交给物理层(硬件设备)
- 网卡就会针对上述的二进制数据,进行真正的传输操作
- 就需要把上述 0101 这样的序列转为光信号/电信号/电磁波…
[站在接收方视角](分用)
-
接收方物理层收到光电信号,把这样的光电信号还原成 010101 这样的二进制字符串
-
物理层转换回来的数据,交给数据链路层,以太网拿到这个数据包,就会对这个数据包进行解析
- 拿出这里的报头和载荷,根据报头中的信息做一些处理
- 这个数据包是要丢弃、还是转发、还是自己保留,向上进行解析
- 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析
- 所以这个数据包就会从数据链路层交给网络层
- 网络层拿到了上述解析好的数据,网络层的 IP 协议也要对这个数据包进行解析
- 取出 IP报头和载荷
- 根据报头中的信息确认,是丢弃、转发还是保留(给上层协议)
- 由于是站在接收方的视角,所以在这里这个数据包要交给上层协议,再做进一步解析
- 传输层这边,UDP 协议也要针对数据进行解析
- 取出 UDP 报头和载荷
- 此处也需要把载荷里面的内容,进一步交给应用层协议
- 依赖 UDP 报头中的端口号,区分需要交给哪个应用程序(端口号就是用来区分不同进程的)
- 数据就到了 QQ 这样的应用程序这里了
- QQ 就要针对上述的数据进行“反序列化”
- 再针对里面的数据进行进一步的逻辑
- 将收到的消息显示到界面上
- 播放“滴滴滴”这样的声音,提醒收到信息
- 显示弹窗,提示收到信息
- 更新未读消息的列表(红色的圆圈写个数字)
- …
- 此处接收方做的工作就是发送方工作的“逆向工作”
- 发送方的“封装”,认为是“打包快递”
- 接收方的“分用”,认为是“拆快递“
一个电脑,会先连到交换机上,交换机可能连到路由器上,路由器可能又连到另一个交换机上,交换机又连到另一个路由器上… 总之,这中间会连接很多的交换机和路由器,来完成数据转发的过程
中间过程的交换机和路由器,也会涉及到封装和分用(不会像主机这样复杂)
- 交换机封装分用到链路层,就可以决定数据是丢弃还是继续转发了,不再继续分用(经典的教科书上的交换机)
- 路由器,封装分用到网络层,就可以决定数据是丢弃还是继续转发了,也不再继续分用
在传输的过程中,每到一个设备都要进行封装分用,经过层层数据的交换,最终到达终点
封装分用这么麻烦,会不会导致交换机、路由器、主机之间的通信效率很低呢?
- 得看和谁比
- 如果是那网络通信和人的反应时间相比,速度还是很快的
- 如果拿网络通信和读写硬盘相比,通常认为,网络的速度比硬盘的速度更慢
- 更不必说和内存比了
也有特殊情况:
- 如果拿网络中最强的“万兆网卡”和硬盘中最弱的“机械硬盘”相比,网络的速度更快
相关文章:

【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
文章目录 局域网 LAN广域网 WAN网络中的重要概念IP 地址端口号 认识协议协议分层是什么OSI 七层网络模型TCP/IP 五层网络模型(或四层)物理层传输层网络层数据链表层应用层网络设备所在分层 封装和分用[站在发送方视角](封装)[站在…...
我司搜索中台的三次演变
本人从入职就开始负责我司的搜索中台了,总共是经历了三个大版本的迭代。 分别是: 基于阿里云智能开放搜索OpenSearch实现的第一代自研,开源canal(数据同步) 底层阿里云elasticsearch 对索引封装 实现的第二代自研&a…...

html+css+js网页设计 电商模版4个页面
htmlcssjs网页设计 电商模版4个页面 带js 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&…...

区块链技术在Facebook中的潜力:未来趋势与挑战
数据安全的新高度 区块链技术以其去中心化和不可篡改的特性,正在成为提升数据安全和隐私保护的重要工具。Facebook作为全球最大的社交媒体平台之一,正积极探索如何将区块链技术应用于其平台,以增强用户数据的安全性和隐私保护。Facebook在应…...

dockerfile自定义镜像
目录 概念 基于dockerfile创建 dockerfile的命令 构建容器 FROM ENTRYPOINT和CMD RUN COPY和ADD 工作目录和环境变量以及容器卷(挂载卷) EXPOSE 实战 概念 dockerfile就是自定义镜像,通过dockerfile创建的都是镜像,而…...

【工作状态】如何保持专注?
好的睡眠计划主题化 1、保持足够的睡眠,才能头脑清晰和有精力,工作不是纯拼体力,要用脑力的。 2、脑力主要工作放在午餐前,在脑力充足的时候使用脑力,下午五点后可以安排脑力活动较低的工作,比如听课读书。…...

欧科云链研究院对话:风浪越大鱼越贵—链上数据洞悉加密市场规律
作者 Hedy 出品 OKG Research “我们从来就不是理性人。但可以用最简单的工具——链上数据做‘最猛’的分析。” 在经历了超级宏观周之后,金融市场产生了巨大的震荡,加密市场的表现也越来越受到宏观经济因素的影响。欧科云链研究院OKG Research 集结多…...
SQLite库笔记:日期和时间函数
1. 函数概述 SQLite支持7个日期和时间函数,如下: 1 date(time-value, modifier, modifier, ...) 返回YYYY-MM-DD格式的日期 2 time(time-value, modifier, modifier, ...) 返回HH:MM:SS格式的时间 3 datetime(time-value, modifier, modifier, ...…...
Linux开发板运行报错/system/bin/sh: can‘t create /dev/leds: Permission denied
Linux开发板运行报错/system/bin/sh: cant create /dev/leds: Permission denied 1.问题解决 1.问题解决 /system/bin/sh: can’t create /dev/leds: Permission denied 在linux开发板下运行驱动报错没有权限,需要运行 su,同时也会停止打印 在运行: ch…...
月薪5W的项目经理是如何面试的?这份面试攻略请收好!
面试是项目经理求职必须经历的一关,但很多经验不够丰富的项目经理不知道面试会问些什么问题,也不知道要怎么回答,无疑会直接影响面试企业的判断,使项目经理求职受阳.所以,项目经理想要顺利求职,还是有必要掌…...

接口隔离原则
接口隔离原则 接口隔离原则就是客户端不应该依赖它不需要的接口,或者说类间的依赖关系应该建立在最小的接口上。 我们以搜索美女为例,设计了如下的类图: 源代码如下。美女及其实现类: 搜索程序及其子类源代码如下: 最…...
【C++ 面试 - 基础题】每日 3 题(十六)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
端到端测试自动化:使用JavaScript打造可靠的Web应用
端到端测试(End-to-End Testing,简称E2E测试)是软件测试的一种形式,用于验证整个应用从端到端的流程是否按预期工作。在JavaScript生态系统中,E2E测试通常使用专门的框架来模拟用户交互,验证应用的业务逻辑…...
『大模型笔记』基于LLM生成真实世界数据的合成问答数据!
基于LLM生成真实世界数据的合成问答数据! 文章目录 一. 基于LLM生成真实世界数据的合成问答数据!1. 概述(Overview)2. 场景(Scenario)2.1. 概述2.1.1. 第1阶段:构建种子数据集(Stage 1. Constructing a seed dataset)2.1.2. 第2阶段:数据增强(可选)(Data Augmentation…...
一个使用Python和`scikit-learn`库实现KMeans聚类算法的简单示例
一个使用Python和scikit-learn库实现KMeans聚类算法的简单示例。首先,请确保您已经安装了scikit-learn库。如果没有安装,可以通过pip安装它: pip install scikit-learn下面是一个简单的例子,展示如何使用scikit-learn中的KMeans进…...
记录一下vue2和vue3中如何配置keep-alive及写法上的差异
应用场景 跳转下一个页面后,返回当前页面,或者在多个页面之间切换,保留页面中的所有状态,常见的就是填写到一半的表单。h5的tabbar页面缓存,避免重复加载数据。 主要实现思路 这个东西很常见,动态路由一…...

面试题:Rabbitmq怎么保证消息的可靠性?
1.消费端消息可靠性保证: 消息确认(Acknowledgements):(自动(默认),手动) 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAcktrue)。为保证消息可靠性,可以设置auto…...

性能测试工具之JMeter
JMeter Apache JMeter应用程序是开源软件,是一个100%纯Java应用程序,旨在负载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。 JMeter是一个免费、开源、跨平台的性能测试工具,于20世纪90年代后期面世。这是一个成熟、健全且具有…...

SQL Zoo 9-.Window functions
以下数据均来自SQL Zoo 1.Show the lastName, party and votes for the constituency S14000024 in 2017.(显示2017年选区“S14000024”的姓氏、政党和选票) SELECT lastName, party, votesFROM geWHERE constituency S14000024 AND yr 2017 ORDER BY…...

智能化清理C盘的方法 小白也可以轻松清理C盘了 不再担心误删文件
智能化清理C盘的方法 小白用户也可以轻松清理C盘了 不再担心误删文件。对于电脑小白来说,C盘清理是一个大大的问题,因为大家都不知道C盘里有哪些文件可以删除,哪些不能删除,所以就直接的导致大家不可能去清理c盘垃圾。 就算是C盘…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...