当前位置: 首页 > news >正文

华为HCIE课堂笔记第十六章 Qos基本原理

第十六章  Qos基本原理

16.1 Qos背景

Qos:在带宽有限的情况下,为不同的业务需求,提供不同的网络的服务质量。

影响Qos的不同的因素:

  1. 带宽,链路在单位时间可以传输数据的bit数量,单位bps
    1. 一般上传下载速度为带宽/8,即100M带宽显示速度理论值12.5MB/s
  2. 延迟:报文从一端发出,从另一端接受到经过的时间
    1. 处理时间:设备对报文查表等处理的时间
    2. 队列时延:报文在出口队列中等待发送的时间
    3. 串行化时延:报文形成bit流,从接口发出时,第一个bit到最后bit发完总共需要的时间。
    4. 传输时延:报文在介质上传输的时间。
  3. 丢包率:数据包转发过程中出现丢弃的概率
  4. 抖动:网络传输数据包,接收端接收报文存在顺序不一致的情况,变化较大,则认为抖动比较明显。
  5. 可用性:网络是否可用。

16.2 Qos技术

16.2.1 服务模型

  1. 尽力而为模型:数据转发过程中没有服务质量相关的部署,所有的报文按照先后顺序进行转发,不提供质量保障。
  2. 综合服务模型:
    1. 应用转发数据包的之前需要申请带宽预留,申请的带宽预留除自己可用,其他应用不能使用
    2. 部署非常复杂
  3. 区分服务模型:Qos,通过对报文进行分类,对每一类的报文进行标记,根据标记实现对不同类的报文提供不同的服务质量,时延,丢包率,优先转发。
    1. DS边缘节点:区分服务域边缘节点,区分服务域有一系列Qos设备组成
    2. 实现方式:
      1. DS边缘设备的入接口进行流量分类,给不同类的流量打上不同的标记。
      2. DS节点的入接口信任该标记类型,后续DS域中按照该标记为流量提供服务质量。

16.2.2 Qos的常用技术

  1. 限速技术
  2. 拥塞管理技术
  3. 拥塞避免技术

16.3 流量分类

16.3.1 简单流分类

  1. 概念:

外部优先级:指报文携带的优先级值

内部优先级:报文在设备内的服务等级

  1. 两个优先级,可以通过修改映射表进行调整,不同的外部优先级报文,可以指定进入设备后的内部优先级
  2. 接口队列:传统Qos接口存在8个队列,内部优先级与队列编号一一映射,内部优先级7的报文对应队列7号,不可以修改改映射关系。
  1. 外部优先级:报文中携带的标记
    1. VLAN 字段中的PRI:取值范围是0-7,名字802.1p
    2. MPLS 头部中的EXP:取值范围是0-7
    3. IP头部中的Tos字段(8bit):两种不互斥的
      1. 标记方式1:IP-P,占用3bit,表示范围0-7,高3bit位
      2. 标记方式2:DSCP值,占用6bit,表示范围0-63,高6bit位
  1. DSCP值标记:数字和名字表示方式
    1. 定义了4个PHB(每一跳动作):CS(类选择器),EF(快速转发),AF(确保转发),BE(尽力而为)
    2. AF11、AF12、AF13、AF21到AF43,AF对应的DSCP值的映射关系是AFXY值=DSCP值8x+2y
    3. CSx值=DSCP值(8x)
  2. 总结:简单流分类是按照报文已有的标记对报文进行Qos处理

16.3.2 复杂流分类

在DS边缘设备的入方向上,通过数据报文的五元组,采用MQC模块配置,实现对报文的重标记,或者其他的Qos处理。后续DS域中的节点可以根据重标记后的报文标记值进行简单流分类。

为什么没有EXP-DSCP

16.4 拥塞管理

拥塞管理:网络发生拥塞的时候,对流进行管理和控制,采用队列技术。

16.4.1 队列技术

  1. 队列技术:通过一定的调度算法,从队列中提取数据报文给出接口进行转发
    1. Qos Q-profile 传统的Qos工具,对应的下行出口存在8个队列(0-7号队列)
    2. CBQ队列,华为设备支持的自行开发的队列,4个队列(AF、EF/LLQ、BE)
  2. 队列调度算法:
    1. FIFO:先进先出算法,在队列内,收到的报文,按照谁先到,谁先出的原则,发送
    2. SP:严格优先级算法,在队列间进行报文调度的时候,按照队列的优先级严格调度。如:7,6,5三个队列采用SP算法,则优先调度优先级最高的7号队列,7号队列发送完毕在调度6队列,6号发送完毕调度5号队列,如果5号队列正在调度,7号队列有报文进入,则重新调度7号队列。时时刻刻调度最高优先级的队列。
      1. 缺点:低优先级队列可能出现“饿死”现象,不能得到及时调度。
    3. WFQ:加权公平队列,在队列间的报文调度的时候,按照队列配置的加权值,进行报文调度,权值越大,队列调度的机会越大(占用的带宽就越大)。
      1. 缺点:低延时的报文不能保证低延迟(绝对优先级的报文得立即调度)
    4. 调度算法组合:SP+WFQ,6,7号队列是SP算法,0-5号是WFQ算法
      1. 此时6,7号队列拥有绝对优先级的调度机会,6,7号队列中不存在报文的时候,才会按照WFQ算法调度剩余的0-5号队列。
        1. SP算法的队列中经常给到占用带宽不大(绝对优先级,会抢占其他队列带宽),要求延时小(立即调度,减少时延)的业务使用。
        2. WFQ算法的队列用途:保证业务带宽,给到业务带宽比较大的业务使用。
  3. 调度方式:传统Qos接口的软件队列0-8队列,可以加入到以下三种队列(组)中,进行Qos的报文调度。
    1. PQ队列(组),采用的SP调度算法,PQ队列中可以存在多个软件队列,按照严格优先级进行调度。
    2. WFQ队列(组),采用WRR、WDRR、WFQ算法(都是存在加权值,按照加权值分配带宽),WFQ队列中可以存在多个软件队列,多个软件对垒按照WFQ算法进行调度。
    3. LPQ队列(组),采用SP调度算法,LPQ队列也可以存在多个软件队列,按照SP算法,调度组内不同队列中的报文。
    4. PQ和LPQ都是采用SP算法,不同点是LPQ拥塞时不能抢占带宽。
    5. PQ、WFQ、LPQ队列(组)之间的调度算法采用SP算法:先调度PQ队列,再调度WFQ队列、最后调度LPQ
      1. PQ多用于将语音等低延迟,低带宽的流量加入到该队列(组)中
      2. WFQ多使用与需要带宽保障,确保转发的的业务报文加入到该队列(组)中
      3. LPQ队列用于BE的流量加入,当PQ和WFQ带宽分配存在空闲带宽,则交给LPQ调度BE的流量。

16.4.2 拥塞管理配置

  1. 基于队列技术的拥塞管理(传统的Qos)
    1. DS边缘设备配置复杂流分类对流量进行分类并重标记
    2. DS设备根据DSCP进行Qos部署(简单流分类)
      1. 入接口需要配置信任DSCP值,对应的DSCP值的报文才会进入到对应LP的队列中。
      2. 如果需要调整报文进入到对应的队列,则需要调整DSCP值与本地优先级的映射关系。
    3. DS设备上配置Qos-Queue-profile工具,将对应的队列加入到PQ、WFQ、LPQ中,WFQ队列需要配置权重值分摊带宽,在出接口上调用该工具。实现报文的差分服务
  2. 基于MQC的拥塞管理
    1. 队列:
      1. EF/LLQ队列:适用于语音等低延迟低带宽要求的流分类。LLQ比EF具有跟小的带宽,当链路拥塞的时候,EF可以抢占空闲带宽。该队列优先级最高,需要配置最大的指定带宽。类似传统Qos 的PQ队列
      2. AF队列:适用于大带宽保证转发的业务。AF队列中可以包含多个类,每个类中可以配置指定的最小带宽,保证业务转发的带宽。
      3. BE队列:不满足所有其他的分类的流量归于该默认类,可以将默认类设置为AF队列,也可以将默认的BE队列。BE队列采用WFQ调度算法。
    2. 配置:
      1. 流分类对报文进行分类,流行为指定分类后的报文的队列,流策略绑定流分类和流行为
      2. 参考命令:带宽设置有两种,绝对值和空闲带宽百分比

traffic behavior OA

 queue llq bandwidth 30         //在流行为视图下,配置与该行为绑定的流量分类加入到LLQ队列(EF),设置最大带宽30kbit/s

traffic behavior FTP

 queue af bandwidth pct 10       //在流行为视图下,配置与该行为绑定的流量分类加入到AF队列中,设置最小带宽保障业务带宽需求。

traffic policy Qos

classifier default-class behavior def    //在流策略的视图下,设置默认的分类(系统原有匹配所有缺省类)与行为绑定(类名字def是用户自定义,且设置队列为WFQ(BE队列))

16.5 拥塞避免

16.5.1 拥塞产生的原因:

  1. 带宽不匹配,发送报文方的带宽,链路的带宽减小,导致出接口无法及时发送高速接受到的报文。
  2. 接口带宽已知,但是流量都汇聚到一个接口发出(内网出口),收到的报文的数量所需带宽要大于出接口的带宽,

16.5.2 拥塞产生后的影响

  1. 丢弃策略:
    1. 尾丢弃:如果没有配置早期随机检测,则当网络出现拥塞,队列缓存已满,则接收的报文将在进入队列前全部丢弃。
      1. TCP全局同步:当拥塞发生,TCP所有的连接,将同时降低滑动窗口字段的值,控制TCP的传输速度,网络不在拥塞,TCP连接进入慢启动过程,逐步提高TCP连接的报文传输速度,循环往复。该过程中,会造成TCP的所有连接传输报文的速度同步升高,同步降低,造成链路资源浪费。
      2. TCP连接“饿死”现象:拥塞发生TCP降低连接的速度,此时UDP报文没有传输速度控制机制,UDP则利用TCP让出来带宽,再次造成网络拥塞,TCP会再一次降低连接速度,UDP再次占用,循环往复,造成TCP连接“饿死”现象。
      3. 无差别丢弃:超出队列缓存的报文进行无差别丢弃,不区分报文的优先级。
    2. RED:当网络趋向于拥塞的时候,可以使用RED(早期随机检测)提前丢弃报文,延缓网络出现拥塞
      1. 队列长度到达低门限的时候,开始随机丢弃报文,到达高门限,则执行尾丢弃,从而延缓了TCP的全局同步(随机丢弃的报文中,属于不同的TCP连接,TCP连接的速度不会同时到达最大)
    3. WRED:根据报文的优先级,在拥塞发生之前,提前对报文进行有差别的丢弃。
      1. 按照报文优先级或者队列优先级,分别设置低门限,高门限,某队列长度到达低门限,则开始丢弃。高优先级报文(队列)低门限设置的更高,使得高优先级报文晚于低优先级报文丢弃的时间。避免TCP同步
  2. 拥塞避免配置方式:两种
    1. 基于Qos丢弃模版配置
      1. 参考命令见PPT
    2. 基于MQC配置
      1. 参考命令见PPT

16.6 限速

16.6.1 令牌桶技术

  1. 单桶单速双色标记法:C桶(单桶)
    1. 概念:
      1. CIR:承诺信息速率,向令牌桶中按照该速率放置令牌,单位Kbps
      2. CBS:报文的突发尺寸,允许报文的转发时的突发长度尺寸,表示令牌桶的尺寸,令牌桶中初始的令牌数量为该CBS值,即桶的容量
    2. 工作机制:
      1. Tc值:表示令牌桶中现有的令牌数量,初始情况(没有发送报文之前)Tc值=CBS(桶内令牌是满的)
      2. B值:代表要转发的报文的长度尺寸
      3. 工作机制:
        1. 按照CIR匀速的速度持续向令牌桶中放置令牌,桶中令牌数量超出CBS,则溢出(Tc值不能大于CBS)。
        2. 要转发报文之前查看报文的长度B,判断B是否小于Tc值
          1. 如果B<Tc值,则将报文标记为绿色转发,且Tc值(桶内剩余的令牌数)减少B
          2. 如果B>Tc值,则报文标记为红色,丢弃,不转发。桶内的令牌不减少。
  2. 双桶单速三色标记法:
    1. 两个桶:C桶、E桶
    2. 三种颜色标记报文:绿黄红
    3. 概念:CBS和EBS关注的时数据流的大小
      1. CBS:与单桶单速相同,C桶的容量(令牌最大数量)承诺突发尺寸。单位Byte
      2. EBS:E桶的容量(令牌最大数量),峰值突发尺寸,单位Byte
      3. CIR:承诺信息速率,关注的流量发送的承诺速率。单位Kbps
    4. 工作机制
      1. Tc=C桶中现有的令牌数量,初始情况,Tc=CBS
      2. Te=E桶中的现有令牌数量,初始情况,Te=EBS
      3. 工作机制:
        1. 以CIR的速率持续向C桶中投放令牌,当C桶的令牌数量达到CBS,溢出,溢出令牌放入到E桶中,当E桶的令牌数量溢出,则丢弃。
        2. 收到报文,查看报文的大小,值为B:比较B与桶内令牌数量:
          1. 如果B<Tc,则将报文标记为绿色,并发送,C桶剩余容量Tc减少B
          2. 如果B>Tc,(C桶中剩余令牌不够),此时比较B与Te大小(查看E桶中是否有足够令牌):
            1. 如果B<Te,则报文标记为黄色,默认发送,并将E桶中令牌数Te减少B
            2. 如果B>Te,则报文标记为红色,丢弃报文,E桶中令牌数量Te不减少。
  3. 双桶双速三色标记法
    1. 双桶:P桶、C桶
    2. 双速:PIR、CIR
    3. 颜色:绿黄红
    4. 概念:
      1. PBS:峰值突发尺寸,P桶的容量   单位Byte
      2. CBS:承诺突发尺寸,C桶的容量
      3. PIR:峰值突发速率    单位Kbps
      4. CIR:承诺信息速率   CIR<PIR
    5. 工作机制
      1. Tp=P桶中的剩余的令牌数量,初始Tp=PBS
      2. Tc=C同种剩余的令牌数量,初始Tc=CBS,CBS<PBS
      3. 工作机制:
        1. 放置令牌:以PIR的速率向P桶中持续放置令牌,超出PBS令牌会溢出;以CIR的速率向C桶中持续放置令牌,超出CBS令牌会溢出。
        2. 收到报文后,检查流量报文的大小,值为B,首先比较B与P桶的剩余令牌数Tp
          1. 如果B>Tp,报文标记为红色,Tp值不减少
          2. 如果B<Tp,继续比较B与Tc的值大小:
            1. B>Tc,则报文被标记为黄色,Tp减少B
            2. B<Tc,则报文标记为绿色,Tp和Tc都减少B
  4. 三种方式的区别
    1. 单桶单速双色标记法:不关注突发速率,仅关注突发流量尺寸    C桶
    2. 双桶单速三色标记法:关注峰值突发尺寸,不关注突发速率   C桶 E桶
    3. 双桶双色三色标记法:即关注报文的突发峰值尺寸,也关注突发的峰值速率。   P桶  C桶

16.6.2 流量监管

使用令牌桶技术实现,在设备的入口和出口方向实现限速,超出速率部分的报文直接丢弃。削峰不填谷

两种实现方式:

  1. 基于接口进行限速
    1. 参考命令:Qos car cir xxx  //可以使用所有的令牌桶技术
  2. 基于MQC对流分类进行限速
    1. 参考命令:
      1. Traffic behavior A
      2. Car cir  xxxx            //流行为视图下设置对绑定流分类中的数据流进行限速,可以使用所有令牌桶技术

16.6.3 流量整形

使用令牌桶技术和缓存技术,在设备的出方向实现限速,超出速率部分的报文先缓存,等待流量下降后从缓存中提取并转发。削峰填谷。

三种实现方式:只能使用单桶单速技术。

  1. 基于接口配置:对接口内出方向上所有通过的流量生效,不区分优先级
  2. 基于队列配置:对单个队列中的流量生效,区分优先级的。

基于MQC配置方式:正对流量的流分类生效,在流行为中配置。

相关文章:

华为HCIE课堂笔记第十六章 Qos基本原理

第十六章 Qos基本原理 16.1 Qos背景 Qos&#xff1a;在带宽有限的情况下&#xff0c;为不同的业务需求&#xff0c;提供不同的网络的服务质量。 影响Qos的不同的因素&#xff1a; 带宽&#xff0c;链路在单位时间可以传输数据的bit数量&#xff0c;单位bps 一般上传下载速…...

79、avx2 向量指令集优化卷积运算

上一节 介绍了 avx2 向量指令集中的 load/store 操作,本节介绍如何使用 avx2 的向量指令集来实现乘累加运算。 因为我们实战中用到的 resnet50 神经网络中,卷积运算在整个模型中的比例占据是相当高,而卷积运算的核心计算就是乘累加计算。因此,只要将最核心的乘累加计算效率…...

【AI】人工智能和图像编码(2)

传统图像编解码与智能图像编解码&#xff0c;都是要编码和解码&#xff0c;但还是有一些区别的。 相关相同点和要点描述如下&#xff1a; 一、区别 1.1 技术原理 传统图像编解码&#xff1a;主要依赖于固定的算法和标准&#xff0c;如JPEG、MPEG等&#xff0c;进行图像的压…...

2023 巅峰之作 | AIGC、AGI、GhatGPT、人工智能大语言模型的崛起与挑战

文章目录 01 《ChatGPT 驱动软件开发》内容简介 02 《ChatGPT原理与实战》内容简介 03 《神经网络与深度学习》04 《AIGC重塑教育》内容简介 05 《通用人工智能》目  录 2023年是人工智能大语言模型大爆发的一年&#xff0c;一些概念和英文缩写也在这一年里集中出现&#xff…...

com域名注册腾讯云价格

腾讯云com域名首年价格&#xff0c;企业新用户注册com域名首年1元&#xff0c;个人新用户注册com域名33元首年&#xff0c;非新用户注册com域名首年元85元一年&#xff0c;优惠价75元一年&#xff0c;com域名续费85元一年。腾讯云百科txybk.com分享腾讯云com域名注册优惠价格&a…...

mysql从库重新搭建的流程

背景 生产环境上的主从集群&#xff0c;因为一些异常原因&#xff0c;导致主从同步失败。现记录下通过重做mysql从库的方式来解决&#xff0c;重做过程不影响主库。 步骤 1、在主库上的操作步骤 备份主库所有数据&#xff0c;并将dump.sql文件拷贝到从库/tmp目录 mysqldump …...

用户ssh正确密码登陆树莓派镜像均报错Permission denied, please try again.处理方法

一个树莓派镜像&#xff0c;启动后发现没有 sshd 功能&#xff0c;于是 启用 openssh&#xff0c;重新启动&#xff0c;又发现树莓派拒绝 ssh 连接请求。 我的一台树莓派IP是&#xff1a;192.168.59.133任何服务器使用任何用户ssh均报错&#xff0c;甚至连自己都不能ssh自己。 …...

SpringBoot 统计API接口用时该使用过滤器还是拦截器?

统计请求的处理时间&#xff08;用时&#xff09;既可以使用 Servlet 过滤器&#xff08;Filter&#xff09;&#xff0c;也可以使用 Spring 拦截器&#xff08;Interceptor&#xff09;。两者都可以在请求处理前后插入自定义逻辑&#xff0c;从而实现对请求响应时间的统计。 …...

Python sleep函数用法:线程睡眠

如果需要让当前正在执行的线程暂停一段时间&#xff0c;并进入阻塞状态&#xff0c;则可以通过调用 time 模块的 sleep(secs) 函数来实现。该函数可指定一个 secs 参数&#xff0c;用于指定线程阻塞多少秒。 当前线程调用 sleep() 函数进入阻塞状态后&#xff0c;在其睡眠时间…...

50-Js控制元素显示隐藏

1.使用style样式,两个按钮:显示按钮,隐藏按钮 <style>div{width: 300px;height: 300px;background-color: red;transition: .4s;}</style></head><body><button>显示</button><button>隐藏</button><div></div>…...

LC213. 打家劫舍 II

代码随想录 class Solution {public int rob(int[] nums) {if(nums null || nums.length 0){return 0;}int len nums.length;if(len 1){return nums[0];}return Math.max(robAction(nums,0,len-1),robAction(nums,1,len));}public int robAction(int [] nums, int start, …...

Django REST Framework入门之序列化器

文章目录 一、概述二、安装三、序列化与反序列化介绍四、之前常用三种序列化方式jsonDjango内置Serializers模块Django内置JsonResponse模块 五、DRF序列化器序列化器工作流程序列化&#xff08;读数据&#xff09;反序列化&#xff08;写数据&#xff09; 序列化器常用方法与属…...

AI对比:ChatGPT与文心一言的异同与未来

文章目录 &#x1f4d1;前言一、ChatGPT和文心一言概述1.1 ChatGPT1.2 文心一言 二、ChatGPT和文心一言比较2.1 训练数据与知识储备2.2 语义理解与生成能力2.2 应用场景与商业化探索 三、未来展望3.1 模型规模与参数数量不断增加3.2 多模态交互成为主流3.3 知识图谱与大模型的结…...

elasticsearch备份恢复,elasticdump使用

准备环境 1. 将node-v10.23.1-linux-x64.tar.xz上传到服务器/usr/local目录下 2. tar xf node-v10.23.1-linux-x64.tar.xz 3. 将node_modules.tar.gz上传到服务器/usr/local目录 4. tar -zxvf node_modules.tar.gz 5. 设置NODE环境 5.1 vim /etc/profile export NODEJS_…...

【C++干货铺】C++11新特性——右值引用、移动构造、完美转发

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 左值与左值引用 右值与右值引用 左值引用和右值引用的比较 左值引用总结&#xff1a; 右值引用总结&#xff1a; 左值引用的作用和意义 右值引用的使用场景和…...

5G_射频测试_基础概念(二)

定义了测试参考点&#xff0c;不同的RRU类型 C类型传统RRU Conducted and radiated requirement reference points 4.3.1 BS type 1-C&#xff08;传统RRU一般测试点就是连接天线的射频接头&#xff09; 4.3.2 BS type 1-H&#xff08;宏站MassiveMIMO 矩阵天线&#xff…...

【笔记】Helm-3 主题-10 Kubernetes分发指南

Kubernetes分发指南 Helm应该适用于任何 符合标准的Kubernetes版本 &#xff08;无论是否经过 认证 &#xff09;。 https://github.com/cncf/k8s-conformance Certified Kubernetes Software Conformance | CNCF 该文档捕获在特定Kubernetes环境中使用Helm的有关信息。如果…...

ROS第 13 课 TF 坐标系广播与监听的编程 实现

文章目录 第 13 课 TF 坐标系广播与监听的编程 实现1.机器人的坐标变换2.创建功能包3.编程方法3.1 编写广播和监听程序3.2 运行程序 第 13 课 TF 坐标系广播与监听的编程 实现 1.机器人的坐标变换 在进行编程前&#xff0c;先需要了解机器人的坐标变换。这里以运行海龟案例来…...

flask 与小程序 菜品详情和分享功能

mina/pages/food/info.wxml <import src"../../wxParse/wxParse.wxml" /> <view class"container"> <!--商品轮播图--> <view class"swiper-container"><swiper class"swiper_box" autoplay"{{autop…...

C语言通过MSXML6.0读写XML文件(同时支持char[]和wchar_t[]字符数组)

开发环境&#xff1a;Visual Studio 2010 运行环境&#xff1a;Windows XP SP3 第一节 读取XML文件&#xff08;使用wchar_t[]字符数组&#xff09; 读取XML文件可使用IXMLDOMDocument_load函数。 /* 这个程序只能在C编译器下编译成功, 请确保源文件的扩展名为c */ #define …...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...