【射频IC学习笔记】4 D类功率放大器PA电路设计/loadpull仿真/输出功率及效率PAE计算

一、功率放大器设计指标及电路结构

1. 设计指标

  • 功率放大器的指标要求如下图所示
  • 采用D类的开关类型功率放大器,理论上开关类型的PA能够做到100%的效率,但实际上会有一些偏差。
  • 像D类功放并不适合高功率射频信号的输出,因为其在射频功率上面的寄生电容在D类功放上没办法吸收进他的匹配网络中去。由于寄生电容的影响,其匹配和效率会有很大程度的降低。但在本项目中由于输出功率相对来说并不算高,那么可以采用这一类型的功放作为设计的结构。
    在这里插入图片描述

2. 核心电路结构

  • D类功率放大器的结构如下图所示
  • 采用推挽的开关输出,类似反相器。

LC串联谐振网络

  • 负载是串联谐振(C0和L0)的网络,其谐振频率点就是工作的频率点(2.4GHz),在开关充放电的过冲中,将方波信号产生的电流信号进行滤波,只保留基频的电流分量,然后再负载电路上产生电压,其工作频率也是2.4GHz。

谐振电感电容取值标准

  • 如果L0电感越大,则对应的电容C0就越小,整个谐振网络的品质因数Q值越大,其选频特性也会越好。
  • 但是电感L0的选值也不能是无限大的,因为其是有自谐振频率的,电感越大其自谐振频率就会越低。因此要求自谐振要远远大于工作频率,其电感值才是准确的。如果工作频率超过了自谐振频率,那么电感就会呈现电容特性。
  • 还有就是工作的频率带宽,要求是800MHz,因此工作放大器的工作范围也要覆盖着800MHz的频率范围。如果串联谐振的品质因数太高,则其工作频率范围可能会非常窄。通常来说工作在2-3GHz的频率范围的电感值在10nH以内。

其他结构

  • 然后再直接连接到输出的负载阻抗RL上面。
  • 这里画出来的只有PA的最后一级电路,前面还需要有一部分的驱动电路。
  • 驱动电路的作用是把小功率的输入信号进行驱动级的放大,出来的信号摆幅要足够大,能够驱动最后一级的开关管的开启和关闭,最好是能够实现电源到地的满摆幅的信号,这样晶体管就能够工作在理想的状态下。
  • 因为前一级锁相环的vco出来以后频率信号进行二分频以后,他输出的信号幅度大概只有四五百毫伏的峰峰值,需要进一步的方法才能更好的驱动开关晶体管的工作。
    在这里插入图片描述

输出功率决定因素

  1. 负载阻抗大小RL,要求尽可能的小,才能够输出较大的功率。
  2. 开关晶体管M1和M2的尺寸,由于其并不是理想的开关,在导通的时候存在一定的阻抗,会使最终输出的信号功率下降。

二、PA电路搭建

1. 电路结构

  • 打开原理图
    在这里插入图片描述
  • 电路包括了四级的放大,前面三级都是驱动级的放大,到第三级其电压能够达到电源到地的满摆幅方波信号,用来控制最终输出级的晶体管开启和关闭。
    在这里插入图片描述
  • 首先输入信号进来需要进行隔直电容
  • 由于输入信号是2.4GHz,所以隔直电容容值较小,为1.5pF
    在这里插入图片描述
    在这里插入图片描述
  • 第一级放大,增加了输出到输入的隔离电阻,是为了给反相器的栅极输入端提供偏置电压,使其工作在正确的直流工作点上。如果没有偏置电阻,那么晶体管栅极是出于悬空状态,工作点是不确定的。
  • 选取的阻值也较大,是为了防止输入输出之间造成的短路,隔离输入输出之间的信号,提供稳定工作点。
    在这里插入图片描述
    在这里插入图片描述
  • 第二级和第一级的结构是一样的
    在这里插入图片描述
  • 而第三级是没有增加隔离电阻的,是因为第三级的输入端电压可以由第二级输出电压提供
  • 那么到第三级的输出,就可以实现零到VDD的满摆幅方波信号了
    在这里插入图片描述
  • 最后一级的输入采用隔直电容,采用自偏置反相器的推挽放大输出。其电路结构跟第一级结构是一样的,唯一区别就是晶体管的尺寸有区别。
    在这里插入图片描述

2. 晶体管尺寸选型

  • 正常情况下,对于逐级放大的结构,后一级的晶体管尺寸要比前一级晶体管尺寸大一倍。二倍放大的驱动关系。

  • 需要根据仿真来看第三级输出信号的摆幅能不能够实现满摆幅的信号,在此基础上尽量减小晶体管的尺寸,然后来降低功耗。晶体管尺寸减小,其寄生电容和静态工作电流也会减小,这样在动态工作时对寄生电容的充放电产生的能量消耗或功耗就会比较低。

  • 在第一级中的PMOS晶体管
    在这里插入图片描述

  • 在第一级的NMOS晶体管

  • 可以发现N管比P管尺寸小了一半,是因为它们的载流子的迁移率不一样,导致PMOS的跨导和导通阻抗都会比NMOS会更大一些。如果要实现相同的gm值,流过相同电流的时候,pmos晶体管尺寸通常要比nmos尺寸大两到三倍,一般是按照两倍的设计。
    在这里插入图片描述

  • 为了得到更低的功率消耗,在第二级的晶体管采用和第一级晶体管相同的尺寸大小。

  • 第三级沟道宽度相较与前一级增加了一倍

  • 第三级PMOS
    在这里插入图片描述

  • 第三级NMOS
    在这里插入图片描述

  • 而最后一级的晶体管尺寸和整个电路的输出功率有一定的关系。晶体管尺寸越大,输出的功率也会越大,导通阻抗也会越小,流过的电流也会越大。

  • 输出级PMOS
    在这里插入图片描述

  • 输出级NMOS
    在这里插入图片描述

  • 如果输出功率非常大的话,那么输出级的晶体管尺寸也要非常大,而且前面驱动级的晶体管尺寸也要跟着变大,才能去驱动最后一级的晶体管栅极。因为尺寸变大之后,输入端的栅极寄生电容会变得非常大,那么如果要在射频频率上去驱动较大的电容,前级的晶体管尺寸也要非常大,才能更好驱动开关晶体管。但同时也会造成功耗的急剧上升。

  • 然后生成symbol
    在这里插入图片描述
    在这里插入图片描述

三、仿真

1.直流仿真

  • 打开仿真原理图
    在这里插入图片描述

  • testbench如下
    在这里插入图片描述

  • 输出加了portadapter是做loadpull的扫描分析用的
    在这里插入图片描述

  • 设置的初始参数如下
    在这里插入图片描述

  • 把直流电流和电压都显示出来

  • 总的电流是在3.4mA左右
    在这里插入图片描述

  • 反相器的输入端为593mV,接近电源电压的一半。晶体管都工作在饱和放大区
    在这里插入图片描述

  • 第三级由于晶体管尺寸放大了一倍,所以其电流也跟着放大了一倍
    在这里插入图片描述

在这里插入图片描述

2.loadpull仿真

  • PA的输入端不需要接输入匹配,通常是接芯片其他的电路(vco),其输出信号进行二分频以后的频率信号,因此不太需要去考虑曲康匹配的问题,跟LNA和mixer级联一样,只要电压传递关系满足,能够正常工作即可。
  • 对于PA,最关心的是输出端的阻抗匹配问题。
  • 在cadence的loadpull整体来说没有ADS仿真器强大,因为cadence只是在特定输入功率下面,不同负载阻抗所能够或得最大的输出功率,且其获得的最佳负载阻抗值也会不一样。
  • 在cadence首先要固定输入功率,然后再来优化出最大的输出功率,反复去迭代。通过增加输入级的功率,然后使其能够达到接近1dB压缩点的位置。
    • 或者直接输入1dB压缩点的功率值,然后再重新来通过负载牵引的仿真,得到最大的输出功率值。然后去仿真输入的1dB压缩点,如果有很大的变化的话,还需要去重新仿真修改输入功率,让其等于1dB压缩点。通过反复的迭代,就可以找到比较合适匹配网络和阻抗值
  • 这其中有需要折中考虑的是,输出阻抗匹配S22和输出功率
    在这里插入图片描述
  • 首先输入功率设置为-9dBm
  • 这里可以做一个推算,前面的触发分频器的输出信号幅度能够达到400-500mV的峰峰值,计算对应的功率值是多少
  • 这里进行简单的计算。由于输出信号峰峰值为400mV,则其幅度值为0.2v,根据计算功率的公式,0.2^2取平方,然后取有效值,再除以2,再除以输出阻抗值50欧,可以得到对应的有效功率值是0.0004w。这里要先转化为mw,再去取对数10lg(10000.0004)=-3.9794dBm。
  • 但是由于这里的输入是不匹配的,所以输入信号的幅度会比刚才计算的更大一些。
  • 这里可以通过瞬态仿真来查看输入功率设置为多少是比较合适的
    在这里插入图片描述
  • 看看在输入功率为-9dBm时对应的信号幅度为400mV
  • 能够看到输出信号的幅度大概在450mV左右,跟设定的预定值是差不多的。
    在这里插入图片描述
  • 在输出端接了小的电感来模拟封装时候的引线电感
  • 因为PA的输出端口要封装到封装管的引脚上的
  • 在负载牵引的时候,隔直电容要设置的足够大,才不会对负载牵引造成影响
    在这里插入图片描述
  • 这里设置2nH和100m欧的寄生阻抗和寄生电感值。
    在这里插入图片描述
  • 隔直电容设置为10pF
    在这里插入图片描述
  • 最重要的是portadapter端口适配器
  • loadpull是通过portadapter不断改变端口的阻抗值,然后计算在不同输入阻抗值下所获得的最大功率,最后把相等功率的阻抗值连接在一起形成闭合的曲线,也就是等功率圆。
  • 最大的输出功率要求的负载阻抗就是最佳端口阻抗
    在这里插入图片描述
  • 负载牵引的频率值就是工作频率2.4GHz
  • 由于这是一个圆坐标系,是由相位theta和幅度mag来设置圆坐标系上的点。
    在这里插入图片描述
  • 负载牵引采用pss扫描的方式
  • 扫描变量是theta相位
    在这里插入图片描述
    在这里插入图片描述
  • 还需要进行相位和幅度的扫描,因为pss里面只能添加一个扫描变量,在参数扫描里面进行
    在这里插入图片描述
  • 然后开始参数扫描
    在这里插入图片描述
  • 然后选择输出波形,画出功率圆power contours
    在这里插入图片描述
  • 然后点portadapter的输入端口
    在这里插入图片描述
  • 然后就会输出等功率的增益圆
    在这里插入图片描述
  • 由于这里波形输出形式不太好看
  • 所以这里我们换一个波形输出形式,换成AWD形式
    在这里插入图片描述
    在这里插入图片描述
  • 然后再重新画
  • 在波形输出器上,close contours为闭合的曲线,由于前面输出的波形有横过来的线,这里可以点击取消
    在这里插入图片描述
  • 每个圆的功率值都是一样的,越往外走的圆功率值越小
    在这里插入图片描述
  • 最大的输出功率点在这里,有一个叉,这里对应的负载端口阻抗值为931m-831mj,但是这是一个归一化后的阻抗,实际的阻抗还要乘以50欧姆。
    在这里插入图片描述

3.阻抗变换

  • 在找到这个最佳负载阻抗之后,要把负载端口50欧阻抗,通过阻抗变化网络,变化到这个最佳阻抗上面,就能得到最大的输出功率了。就需要s参数和史密斯圆图来查看了。
  • 这里可以通过调用两个端口来进行阻抗变换。
  • port3是负载端口的50欧,
  • 输入是port2,中间要增加阻抗匹配网络,使得从portadapter(即port2)看进来的阻抗值为最佳的负载阻抗
  • 由于在进行s参数仿真的时候,是共轭匹配的,如果需要完全匹配到smith原图的中心点,这两个阻抗的实部是相等的,虚部互为相反数。
  • 那么port2设置的阻抗值就要设置为最佳负载阻抗的共轭值,
    在这里插入图片描述
  • port2 参数设置如下,为最优阻抗值的共轭值
    在这里插入图片描述
  • 然后仿真sp参数
    在这里插入图片描述
  • 查看输出匹配S22
    在这里插入图片描述
  • 可以看到现在S22是在共轭点阻抗上面
  • 因为共轭匹配是正反逆变换的,我们只需要把port2的阻抗匹配到50欧姆
  • 现在其阻抗实部是非常接近中心1这个点的,非常接近等阻抗圆这个曲线。
  • 这里先需要并联一个电容,让其往等阻抗圆1上移动。
    在这里插入图片描述
  • 并联一个小的电容
    在这里插入图片描述
  • 这里可以将其容值设置为1个变量
    在这里插入图片描述
  • 然后进行s参数的扫描
    在这里插入图片描述
  • 仿真完画出S22曲线
    在这里插入图片描述
  • 可以看到电容大概在75fF,就可以变换到等阻抗圆上了。
    在这里插入图片描述
  • 将并联的电容设置为75
    在这里插入图片描述
  • 这里还需要串联一个电容,让其旋转到smith圆图的中心点上,
    在这里插入图片描述
  • 同样采用扫描的方式来确定其容值
    在这里插入图片描述
  • 大概容值在1.65pF
    在这里插入图片描述
    在这里插入图片描述
  • 这时候再进行s参数的频率扫描
  • 先看S11和S22,都在中心点附近,这时候可以认为实现了比较好的共轭匹配了
    在这里插入图片描述
  • 因此这个匹配电路的参数值就是需要的匹配电路
    在这里插入图片描述
  • 把匹配电路替换portadapter
  • 由于后面有隔直电容了,所以把前面的电容给去掉
    在这里插入图片描述
  • 现在我们得到的输出功率是4dB
  • 这里我们查看整个电路的s参数仿真是否达到要求
  • 由于功率放大器并不关心噪声系数的问题,
    在这里插入图片描述
  • 输入匹配S11目前是比较差的,因为没有做输入匹配电路设计
  • 来看S22,阻抗特性也不算太好,阻抗达到100欧左右,那么如果要减小阻抗值,可以适当的增加输出级的晶体管的尺寸,使其跨导能够变得更大,寄生阻抗能够更小一些。这样匹配特性可能会更好一些
    在这里插入图片描述
  • 然后来查看S22的db值
    在这里插入图片描述
  • 可以看到输出匹配大概只有-8db左右,相对较差一些。
    在这里插入图片描述

4.线性度仿真(1dB压缩点)

  • 但是由于我们现在是固定输入功率大小的情况下进行仿真的,我们还需要了解整个电路的1dB压缩点
  • 这时候我们就可以运行pss的功率扫描来寻找输入输出的1dB压缩点了
  • 来运行pss参数的扫描,扫描的参数改为输入功率值prf
    在这里插入图片描述
  • 仿真1dB压缩点
    在这里插入图片描述
  • 点击输出的port
    在这里插入图片描述
  • 输出的1dB压缩点是在1dBm左右
  • 而我们之前看的4dBm压缩点已经是增益压缩的输出功率了,具有很强的非线性了。
  • 再往后就是饱和的输出功率了。
  • 仿真的输出功率值跟之前loadpull得到的结果一样,说明阻抗匹配网络是正确的设计结果。
    在这里插入图片描述
  • 但其实对于功率放大器来说,并不关心线性度的问题,而是关心输出功率的问题。因为PA是工作在一个强非线性下的,会带来不同的谐波以及交调失真。

5.大信号匹配特性误差分析(pss+psp)

  • 现在还需要进行大信号状态下匹配特性误差分析。

  • 其实s参数分析是线性的分析方法,并不会有失真的情况引入进来。是在工作点上的线性化分析方法

  • 而功率放大器或者mixer在大信号工作状态下,其输出的阻抗会有很大的变化。这时候我们就要分析工作在大的驱动信号下输出阻抗的匹配情况了。

  • 这种分析方法就需要用到pss+psp的仿真方法了

  • 首先我们需要建立大输入信号驱动下的周期稳态仿真(pss),去建立稳态大信号线性化稳态响应结果,然后再通过psp小信号,叠加上小信号来进行线性化的s参数仿真。这个时候得到的输出阻抗匹配,才是整个电路在实际应用工作下最真实的打信号阻抗匹配的情况。

  • 先运行pss仿真,不需要进行扫描分析
    在这里插入图片描述

  • 然后还需要进行psp仿真

  • Harm为0表示基频分量
    在这里插入图片描述

  • 查看输出匹配
    在这里插入图片描述

  • 可以看到s22(绿色)曲线是跟s参数是不一样的
    在这里插入图片描述

  • 把s参数的s22(紫色)也画出来

  • 可以看到小信号的s22阻抗值会高一些,大信号稳定状态下的仿真结果阻抗值会小一些。

  • 但实际上psp仿真结果是更能反映功放在实际工作下的输出阻抗
    在这里插入图片描述

  • 我们再来查看psp的db数

  • s22基本上是-16dB左右,其匹配状况是比较好的,

  • 由于功放的输出线性度不太高,输出的1dB压缩点只有1dBm。如果输入信号比较大,它的饱和输出功率就能够达到4dBm的输出。同样也还是可以使用的,就是利用它的饱和输出
    在这里插入图片描述

四、输出功率及效率计算

  • 打开PA的testbench
    在这里插入图片描述
  • 前面的电路跟做loadpull的电路结构完全一样的。

在这里插入图片描述

1.串联谐振网络设计

  • 匹配网络中第一个电感是引线电感,为2nH
  • 在外部还放置了2nH的匹配电感,这样串联谐振的总电感就是4nH。
    在这里插入图片描述
    在这里插入图片描述
  • 这里需要设计串联谐振网络的谐振频率。
  • 我们可以通过下面的公式来计算对应的串联电容是多少,大概在1.1pF左右
  • 这样就完成了串联协助的输出匹配网络了
    在这里插入图片描述
  • 由于晶体管输出的是方波的信号,经过串联谐振网络以后有了一定程度的滤波,但滤波特性并不算太好,后面为了更好的输出滤波特性,在输出端再并联一个谐振的网络,其参数值跟前面串联谐振网络的参数值是一样的。在这里插入图片描述
  • 打开仿真器。首先对小信号的s参数进行仿真
    在这里插入图片描述
  • 查看s22参数值
  • 可以看到在2G-3GHz,其s22阻抗值偏大
    在这里插入图片描述
  • 再来查看s22的db数
  • 可以看到s22在工作频率范围内在-9dB左右,匹配状态不是太好。
    在这里插入图片描述
  • 然后再来查看大信号的匹配特性(pss+psp)
    在这里插入图片描述
    在这里插入图片描述
  • 然后输出psp的s22波形
  • 其往圆图的中心靠近了很多
    在这里插入图片描述
  • s22的db数在-16dB左右,这时候的匹配状态较好
    在这里插入图片描述
  • 通常认为大信号psp仿真结果更能够体现真是的匹配状态。

2. 输出功率(pss的1dB压缩点)

  • 运行pss仿真,取消psp仿真
    在这里插入图片描述
  • 仿真输出的1dB压缩点
    在这里插入图片描述
  • 然后点击输出端口
  • 可以看到输出的1dB压缩点在-1dBm左右
  • 饱和输出功率是在3.8dBm左右
  • 可以发现这个匹配电路下雨前面的线性输出匹配的输出功率差别不大,也是在4dBm左右。
    在这里插入图片描述

3.瞬态仿真

  • 打开tran仿真
    在这里插入图片描述
  • 首先看输入的波形,是400mV的峰峰值输入信号
    在这里插入图片描述
  • 看第一级的输出波形
    在这里插入图片描述
  • 有较严重的失真,在往方波的输出状态转变。类似方波形式
    在这里插入图片描述
  • 第二级的驱动放大,是更加接近方波的形式了
    在这里插入图片描述
  • 第三级信号摆幅也变得非常大,更加接近方波了。

在这里插入图片描述

  • 查看PA的输出端,可以看到输出波形是失真非常严重的,因为其工作在开关的工作状态,波形是变化非常大的。是从0v到电源电压1.2v的信号,但是由于外围匹配电路的影响,它的方波并不是绝对的方波波形。
    在这里插入图片描述
  • 然后查看testbench最终输出的波形,是接近于正弦信号,把高次的谐波都滤除了,但是是有一定的变形的。
    在这里插入图片描述

4. 功率叠加效率计算PAE

  • 首先进行瞬态仿真
    在这里插入图片描述
  • 查看电源的电流
    在这里插入图片描述
  • 可以看到电源的电流是波动的值,随信号的变化
    在这里插入图片描述
  • 现在要了解其有效值,因此需对其求平均
  • 这时候就需要用到计算器calculator
    在这里插入图片描述
  • 打开后选择it电流
    在这里插入图片描述
  • 然后选择电源端口
    在这里插入图片描述
  • 在窗口就会显示出电流的表达式子
  • 然后选择平均,绘制波形
    在这里插入图片描述
  • 平均的电流是在4.8mA左右
  • 打开calculator,然后选中电源端口
    在这里插入图片描述
    在这里插入图片描述
  • 先截取有效稳定工作的一段电流
    在这里插入图片描述
    在这里插入图片描述
  • 然后选择average平均并绘制波形
    在这里插入图片描述
    在这里插入图片描述
  • 就能绘制出输出的电流波形,为-4.811mA
    在这里插入图片描述
  • 这里可以计算总的输出功率
  • 电源电压是1.2v,电流是-4.811mA
    在这里插入图片描述
    在这里插入图片描述
  • 总的直流功率是5.77mw
    在这里插入图片描述
  • 输出功率可以通过dft进行计算
  • 打开calculator,选择vt
    在这里插入图片描述
  • 选择输出端口
    在这里插入图片描述
  • 然后再进行dft的
    在这里插入图片描述
    在这里插入图片描述
  • 加入db20
    在这里插入图片描述
  • 绘制出波形
    在这里插入图片描述
  • 通过波形可以发现,由于其非线性非常严重,它是工作在开关类状态的,谐波失真非常高。所有的高次谐波分量是非常多的,因此我们是需要进行谐波抑制的滤波
    在这里插入图片描述
  • 输出功率在50欧负载上面,就是基波分量的功率值再加10dB,即-6.18dBm+10dBm=3.8dBm

在这里插入图片描述

  • 这里还需要去得到输入的功率大小
  • 但实际上输入端的阻抗值是非常高的,
    在这里插入图片描述
  • 采用同样的方法,可得基波功率分量为-13dBm,对应的输入功率为-3.2dBm
    在这里插入图片描述
  • 然后来计算最终的功率值
  • 首先输出的3.8dBm要转成mw,要先3.8/10,再取10的对数,可得输出功率为2.4mw左右
    在这里插入图片描述
  • 再来计算输入端的对应的功率值为0.48mw

在这里插入图片描述

  • 然后我们计算功率叠加效率为输出功率—输入功率/总直流功率
  • (2.4-0.48)/5.77=0.333
  • 但实际上的输入功率是比这个大的,因为输入的阻抗值较大,不是在50欧下计算得到的
    在这里插入图片描述
  • 这里可以查看对应的输入阻抗值
  • 仿真s参数,查看zp的z11参数的实部和虚部,输入的实部大概是在1k,虚部在-1.6k,是远远大于50欧的
    在这里插入图片描述
  • 所以这里可以完全只计算输出功率,输入功率是可以忽略的,即直接将输出功率除以总直流功率得到功率叠加效率
  • 可得效率在40%,已经算是比较高的,因为其是工作在开关的状态
    在这里插入图片描述
  • 如果工作在

四、可靠性设计

1. 高低温仿真

2.工艺偏差corner仿真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二叉排序树的基本算法。 相关知识 为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下: (1)由…

Unity UGUI图片循环列表插件

效果展示: 下载链接:https://gf.bilibili.com/item/detail/1111843026 概述: LoopListView2 是一个与 UGUI ScrollRect 相同的游戏对象的组件。它可以帮助 UGUI ScrollRect 以高效率和节省内存的方式支持任意数量的项目。 对于具有10,000个…

5G学习笔记之SNPN系列之ID和广播消息

目录 1. 概述 2. SNPN ID 3. SNPN广播消息 1. 概述 SNPN:Stand-alone Non-Public Network,独立的非公共网络,由NPN独立运营,不依赖与PLMN网络。 SNPN不支持的5GS特性: 与EPS交互 emergency services when the UE acce…

(后序遍历 简单)leetcode 101翻转二叉树

将根结点的左右结点看作 两个树的根结点,后序遍历(从叶子结点从下往上遍历) 两个树边遍历边比较。 左节点就左右根的后序遍历 右根结点就右左根的后序遍历来写 后序遍历(从叶子结点从下往上遍历) /*** Definition …

通过ajax的jsonp方式实现跨域访问,并处理响应

一、场景描述 现有一个项目A,需要请求项目B的某个接口,并根据B接口响应结果A处理后续逻辑。 二、具体实现 1、前端 前端项目A发送请求,这里通过jsonp的方式实现跨域访问。 $.ajax({ url:http://10.10.2.256:8280/ssoCheck, //请求的u…

Goby AI 2.0 自动化编写 EXP | Mitel MiCollab 企业协作平台 npm-pwg 任意文件读取漏洞(CVE-2024-41713)

漏洞名称:Mitel MiCollab 企业协作平台 npm-pwg 任意文件读取漏洞(CVE-2024-41713) English Name:Mitel MiCollab /npm-pwg File Read Vulnerability (CVE-2024-41713) CVSS core: 6.8 漏洞描述: Mitel MiCollab 是加拿大 Mitel 公司推出…

现代密码学总结(上篇)

现代密码学总结 (v.1.0.0版本)之后会更新内容 基本说明: ∙ \bullet ∙如果 A A A是随机算法, y ← A ( x ) y\leftarrow A(x) y←A(x)表示输入为 x x x ,通过均匀选择 的随机带运行 A A A,并且将输出赋给 y y y。 ∙ \bullet …

VMware:CentOS 7.* 连不上网络

1、修改网络适配 2、修改网卡配置参数 cd /etc/sysconfig/network-scripts/ vi ifcfg-e33# 修改 ONBOOTyes 3、重启网卡 service network restart 直接虚拟机中【ping 宿主机】,能PING通说明centOS和宿主机网络通了,只要宿主机有网,则 Ce…

Linux —— vim 编辑器

一、什么是vim vim是一个功能强大、高度可定制的文本编辑器。以下是对vim编辑器的具体介绍: 历史背景:vim最初由Bram Moolenaar在1991年开发,作为vi编辑器的增强版,增加了许多新的特性和改进。它继承了vi的基本编辑功能和键盘快捷…

前端(async 和await)

1 async async 将 function 变为成为 async 函数 ●async 内部可以使用 await,也可以不使用,因此执行这个函数时,可以使用 then 和 catch 方法 ●async 函数的返回值是一个 Promise 对象 ●Promise 对象的结果由 async 函数执行的返回值决…

huggingface NLP -Transformers库

1 特点 1.1 易于使用:下载、加载和使用最先进的NLP模型进行推理只需两行代码即可完成。 1.2 灵活:所有型号的核心都是简单的PyTorch nn.Module 或者 TensorFlow tf.kears.Model,可以像它们各自的机器学习(ML)框架中的…

解决 MyBatis 中空字符串与数字比较引发的条件判断错误

问题复现 假设你在 MyBatis 的 XML 配置中使用了如下代码&#xff1a; <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…

项目15:简易扫雷--- 《跟着小王学Python·新手》

项目15&#xff1a;简易扫雷 — 《跟着小王学Python新手》 《跟着小王学Python》 是一套精心设计的Python学习教程&#xff0c;适合各个层次的学习者。本教程从基础语法入手&#xff0c;逐步深入到高级应用&#xff0c;以实例驱动的方式&#xff0c;帮助学习者逐步掌握Python的…

Centos7上Jenkins+Docker+Git+SpringBoot自动化部署

文章目录 1.宿主机安装maven2.安装jenkins3.配置Jenkins4.Jenkins脚本自动安装JDK&#xff08;可选&#xff09; 1.宿主机安装maven wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz mv apache-maven-3.9.9-bin.tar.gz /usr/local…

前端-自定义Ant Design 表格(可编辑表格)

选取的的是&#xff1a;表格 Table - Ant Design 其实ant design本身就有增加和删除单列数据的封装好的表格&#xff0c;但是个人觉得那个功能繁多&#xff0c;自己实现封装也便于之后理解和二次使用。 初步效果&#xff08;舍去切换样式的功能&#xff09;&#xff1a; 突破的…

如何打造个人知识体系?

第一&#xff0c;每个人的基本情况不同。比如我有一个类别跟「设计」相关&#xff0c;这是自己的个人爱好&#xff0c;但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关&#xff0c;因为里面很多表达可以借用到演讲或写作中&#xff0c;这也不适合所有人。 第二&am…

Java版-图论-最短路-Floyd算法

实现描述 网络延迟时间示例 根据上面提示&#xff0c;可以计算出&#xff0c;最大有100个点&#xff0c;最大耗时为100*wi,即最大的耗时为10000&#xff0c;任何耗时计算出来超过这个值可以理解为不可达了&#xff1b;从而得出实现代码里面的&#xff1a; int maxTime 10005…

【EthIf-04】 EthIf_CtrlIdx控制器索引

1 EthernetInterface功能spec 上层的模块访问以太网接口模块「EthernetInterface」&#xff0c;以太网接口模块通过以太网驱动程序层与多个以太网控制器交互的。 1.1 以太网控制器资源的索引 通过以太网接口模块中的以太网控制器资源的索引允许用户轻松访问多个以太网控制器…

IDEA报错:无效的源发行版、无效的目标发行版

1. 无效的源发行版 创建项目的时候&#xff0c;会遇见这个报错&#xff0c;原因就是编译的JDK版本与发布版本不一致。 解决方法&#xff1a; 1.1. 找到问题所在地 英文&#xff1a;File -> Project Structure ->Project Settings 中文&#xff1a;文件->项目结构 …

7_Sass Introspection 函数 --[CSS预处理]

Sass 的 Introspection 函数允许开发者检查和操作样式表的内部结构&#xff0c;包括选择器、属性、值等。这些函数提供了对编译过程中 Sass 文件内容的深入访问能力&#xff0c;使得更复杂的逻辑处理成为可能。以下是一些常用的 Sass Introspection 函数及其用法示例&#xff1…