1、整体架构:

         此图是接收端码率控制整体结构图分成3个部分。
        第一部分采集和发送:camera encode通过Pacer并结合fec发送。
        第二部分基于延时的码率计算(卡尔曼模型)。
        第三部分是结合丢包和延时计算出综合码率发送编码器。

       2 发送端基于丢包率的码率控制

       接收端维护两个计数器,每收到一个RTP包都更新:

  1. transmitted,接收到的RTP包的总数;

  2. retransmitted,接收到重传RTP包的数量;

       某时刻收到的有序包的数量Count = transmitted-retransmitte,当前时刻为Count2,上一时刻为Count1;

        接收端以一定的频率发送RTCP包(RR、REMB、NACK等)时,会统计两次发送间隔之间(fraction)的接收包信息。

        接收端发送的RR包中包含两个丢包:

        一个是fraction_lost,是两次统计间隔间的丢包率(以256为基数换算成8bit)。

        一个是cumulative number of packets lost,是总的累积丢包

        丢包的计算方法

        1) 两次发送间隔之间理论上应该收到的包数量=当前收到的最大包序号-上个时刻最大有序包序号。

        2) 两次发送间隔之间实际接收到有序包的数量=当前时刻收到的有序包的数量-上一个时刻收到的有序包的数量  uint32_t rec_since_last = Count2 - Count1。

        3) 丢包数=理论上应收的包数-实际收到的包数。

        4)int32_t missing = exp_since_last - rec_since_last,missing即为两次发送间隔之间的丢包数量,会累加并通过RR包通知发送端。


     

        基于丢包的码率评估

        基于丢包的拥塞控制比较简单,其基本思想是根据丢包的多少来判断网络的拥塞程度.
丢包越多则认为网络越拥塞,那么我们就要降低发送速率来缓解网络拥塞;
如果没有丢包,这说明网络状况很好,这时候就可以提高发送码率,向上探测是否有更多的带宽可用.
实现该算法有两点:一是获得接收端的丢包率,一是确定降低码率和提升码率的阈值。

        发送端收到RTCP RR报文并接收丢包率后,根据公式计算发送端码率:当丢包率大于0.1时,说明网络发生拥塞,此时降低发送端码率,当丢包率小于0.02时,说明网络状况良好,此时增大发送端码率,其他情况下,发送端码率保持不变。

          Gcc算法在发送端基于丢包率控制发送码率,其基本思想是:丢包率反映网络拥塞状况。如果丢包率很小或者为0,说明网络状况良好,在不超过预设最大码率的情况下,可以增大发送码率;反之如果丢包率变大,说明网络状况变差,此时应减少发送端码率,在其他的情况下,发送端码率保持不变。

        Gcc使用的丢包率根据接收端RTP接收统计信息计算得到,通过RTCP RR报文返回给发送端,RTCP RR报文统计接收端RTP接收信息,如Packet Loss,Jitter,DLSR等等。

        最终码率会作用于Encoder,RTP, Pacedsender 模块,用于在编码器内部调整码率和平滑发送码率。

         接收端会通过rtcp rr将丢包率和丢包累计值反馈给发送端,发送端据此更新丢包率和rtt,具体逻辑后面会介绍 。

        3 接收端基于延迟的码率控制

        

        在发送端带宽估计由3个元素结合决定:
        基于丢包率估算的带宽(丢包率通过rtcp rr得到)、接收端的remb反馈的带宽、发送端带宽估,取三者带宽的最小值作为最终带宽估计值。 

         从上图可以看出,estimator基于延迟的拥塞控制是通过trendline滤波再进行过载判断,经过overuse detector,最后根据过载情况进行aimd码率调控评估出一个bwe bitrate码率.

          bwe bitrate码率会合丢包评估出来的码率和remb来决定最后的码率。

        notes:remb bitrate 仅做向下兼容使用。兼容老版本的KalmanFilter算法。

     transport-cc

https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01

        总结来看发送端会在session的层面统一对rtp包进行计算transport-cc sequence num,区别于之前的sequence num,原因是transport-cc目的是计算两点之间的带宽,两点通信可以传输多个视频流。    

        包组延时评估

        包组

        在 WebRTC 中,延迟梯度不是一个个包来计算的,而是通过将包分组。然后计算这些包组之间的延迟,这样做可以减少计算次数,同时减少误差。

        在一个burst_time间隔内的一系列的包构成一个组。建议burst_time为5ms。

        任意到达时间间隔小于 burst_time 并且组间延迟差 d(i)< 0 的组都被考虑做为当前组的一部分。

        比如:下图中有两个包组G1和G2,其中第100号包与103号包的时间差小于5毫秒,那么100 ~ 103被划作一个包组.104与100之间超过5毫秒,那么104就是G2的第一个包,它与105,106,107划作一个包组。 

         延时梯度

         首先我们通过一张图看下时延梯度的计算:

         包组时间差计算-InterArrival,主要包含几个包组时间差计算的概念:

  • 到达时间差:ti−ti−1
  • 发送时间差:Ti−Ti−1
  • 两个包组:i以及i−1,它们的时延梯度:

 

         notes: Trendline 算法计算延时梯度是基于包组的,不是基于包的。而RTT延时计算是基于单个包的.

        Trendline是接收端计算延时,RTT是发起端计算延时,不要混淆。

           Trendline滤波器

        最新版本webrtc将kalman filter改成了trendline filter,总体流程:终端通过服务器发送的transport cc中,获取recv time-->计算包组延时-->trendline filter(线性回归,根据N组xy,计算斜率)-->过载检测器(与阀值比较)-->动态阈值(计算新阀值)-->计算新码率(根据state计算加减码率的量)。

        线性回归 LinearFitSlope     

1 ) 获取接收时间 Transport-cc:

        Send-side码率评估,需要receive side将包的接收时间发给send-side,以便计算包组延时。   

        Receive side 使用RTCP反馈信息transport-cc-feedback,返回接收包的时间。

        该消息负责反馈接收端,收到的所有媒体包的到达时间。

        接收端根据包间的接收延迟和发送间隔可以计算出延迟梯度,从而估计带宽。

  2) 时延梯度趋势计算:i

          获取(arrival_time_ms, smoothed_delay)时间对之后,WebRTC用到了线性回归这个数学方法进行时延梯度趋势预测.通过最小二乘法求得拟合直线斜率,根据斜率判断增长趋势。

        计算过程: 

         (1) 先计算单个包组传输增长的延迟,可以记作:

        

        (2) 做每个包组的叠加延迟,可以记作: 

         

         在通过累积延迟计算一个均衡平滑延迟值,alpha=0.9可以记作:

         

        notes:方法和RTT评估一样,根据上次和这次两次的结果,乘以不同权重得出结果 

        (3) 统一对累计延迟和均衡平滑延迟再求平均,分别记作:

         

        (4) Trendline 计算:

        我们将第i个包组的传输持续时间记作:

         

        趋势斜率分子值为:

         

        趋势斜率分母值为:

         

        最终的趋势值为:

         

        总之:对于一堆样本点(x,y),拟合直线方程y=bx+a的斜率b按如下公式计算:

         

        该函数使用最小二乘法求解线性回归,输入 window_size_ 个样本点(arrival_time_ms, smoothed_delay),输出延迟梯度变化趋势的拟合直线斜率 trendline_slope。

         2.5 过载检测器:Detector函数(overuse,underuse,normal)

        该函数主要根据时延变化增长趋势,计算当前网络状态。

        在Detect函数内部,会根据前面计算得到的斜率得到一个调整后的斜率值:modified_trend

      1    // 乘以包组数量以及阈值增益,因为计算得到的trend常常是一个非常小的值const double 
      2  modified_trend = std::min(num_of_deltas_, kMinNumDeltas) * trend * threshold_gain_;

        通过增益放大trend. 然后与一个动态阈值threshold_做对比,从而得到网络状态 :

  • modified_trend > threshold_,且持续一段时间,同时这段时间内,modified_trend没有变小趋势,认为处于overuse状态(网络发生拥塞)。
  • modified_trend < -threshold_,认为处于underuse状态(当前带宽未充分利用)。
  • -threshold_ <= modified_trend <= threshold_,认为处于normal状态。modified_trend 就是trendline算出斜率trendline。

        注意:延时趋势和延时的区别:trendline计算的斜率不是延时,而是延时趋势。
0<trend<1,时延梯度增加;trend == 0, 时延梯度不变;trend<0 时,延梯度减小。
延时趋势和延时转换计算方法:trendline乘以周期包组个数就是m_i,m_i才是延时。

        2.6 自适应阈值 (动态阀值=门限更新R(t(i))) 

        如下图所示,上下两条红色曲线表示动态阈值,蓝色曲线表示调整后的斜率值,阈值随时间动态变化,调整后的斜率值也动态变化,这样网络状态也动态变化。

        

        2.7 速率控制Amid

        前几节所介绍的内容总结来看:通过延时梯度+trendline滤波器,估算延时梯度斜率值,并与自适应阈值比较得出当前网络状态(underuse、overuse、normal)。

        本节则是以此作为输入事件,再结合当前网络控制状态(decr、incr、hold)+当前码率值,得出估算码率值。callladder:transportcc arrive time===>trendline滤波(延时趋势&延时m(ti))===>网络状态(动态阀值)(通过m(ti)与r(ti)比较===>underuse/overuse/normal->kd/ku 阀值)===>amid网络控制状态(加or乘(decr,incr,hold)当前码率)=新码率)。

        2.7.1 速率控制状态机 (Amid)(kd/ku 是对阀值增减,amid的阿尔法和兰姆达才是对码率增减)。

        Aimd的全称是Additive Increase Multiplicative Decrease,意思是:和式增加,积式减少

        总体的思想是根据当前接收方的接收码率,结合当前的网络负载情况,进行AIMD码率调整:

  • 在接近收敛前,使用乘性增,接近收敛时使,用加性增。
  • 当网络过载时,使用乘性减。

        notes:GCC的码率控制类似于tcp 网络检查方案。tcp方案是距离临界点远的时候,乘性增加。距离临界点近的时候,加性增加。网络过载则码率评估折半。 

        该模块以过载检测器给出的当前网络状态s(过载检测器:Detector函数)为输入,首先根据图X所示的有限状态机判断当前码率的变化趋势,然后根据图X所示的公式计算目标码率Ar。 

        下面是三个信号和三个状态的关系(难点):

        三个估算的目标码率状态:hold、increase、decrease 。
        三个网络带宽状态:underuse、overuse、normal。

        从按照路由器buffer角度看这3个信号:

        overuse-->buffer再堆积
        underuse-->buffer再减少  (可用带宽估计值 A_hat 低于实际的可用带宽)
        normal--->没有buffer的状态

        最难理解的是网速的underuse状态:

        这种状态发送一个包的时间,接收端收到两个包,带宽处于underuse,通常认为应该增加发送量。实际这个状态是路由器排空过程中(使通路不排队,恢复畅通,恢复期不适合提高码率),发送量应该保持不变即状态保持Hold不变,不增加发送量。
当路由器的buffer排空之后,发送一个包,接收一个包,带宽处于normal。此时状态变成Increase,增加发送量,测试最大码率。

        notes:发送一个包,接收一个包的意思是:比如:上一个包接收时间是5ms,这个包也是5ms.
发送一个包,接收两个包的意思是:比如:上一个包接收时间是10ms,这个包接收的时间是5ms。
说明路由器queue在变小,排空queue中。好比:上一个包时路由器queue新包之前有100个包排队,这次新包之前有50个包排队。
这种调整是非常正确的,不排空会出现,变成路由buffer全部满,造成瞬间断网。而且会一会一断.
排空不会出现断网,会在某个区间动态变化,比如:好的时候增加到100M,差的时候退回到50M,不会出现断网,用户看视频等也不耽误,只是标清和高清变化。

        先通过延时趋势trendline即协议b与门限比较,获得当前网络状态overuse,underuse, or normal.然后结合当前码率状态,根据上面的流程图,获取新的码率状态并计算新的码率(不变,加,乘,减)。

        根据不同网络带宽状态,目标码率状态转化 :

 

        目标码率Ar变化趋势有限状态机(流程图) :

        流程图说明:

        目标码率处于Decrease状态,当前网络过载时,目标码率将继续处于Decrease状态;(目标码 率将继续减小,发送量将继续减少。
        目标码率处于Decrease状态,当前网络低载或者正常时,目标码率从Decrease状态变成Hold状态;(目标码率将保存不变,发送量不变)。
        目标码率处于Hold状态,当前网络低载,目标码率将继续处于Hold状态(目标码率不变,发送量不变,为了排空路由buffer)。
        目标码率处于Hold状态,当前网络normal时,目标码率将变成Increase状态(目标码率将增加,发送量增加)。
        目标码率处于Increase状态,当前网络normal时,目标码率将继续处于Increase状态(目标码率将增加,发送量增大)。
        目标码率处于Increase状态,当前网络underuse时,目标码率将变成Hold状态.(目标码率将停止增长,发送量保存不变,有underuse说明,发的少收的多,正在排空路由器。如果路由buffer没有包,则不可能进入underuse,只能是hold)。
        目标码率处于Increase状态,当前网络overuse时,目标码率将变成Decrease状态.(目标码率将减少,发送量减少)。

        状态机的二维表如下

             计算目标码率

         当判断出码率变化趋势后,根据图所示公式进行计算目标码率。

        

         目标码率Ar计算公式:

        当码率变化趋势为Increase时,当前码率为上次码率乘上系数1.08;
        当码率变化趋势为Decrease,当前码率为过去500ms内的最大接收码率乘上系数0.85。
        当码率变化趋势为Hold时,当前码率保持不变        

基于丢包的带宽估计

丢包率计算方法

        基于延时梯度的带宽估计

        基于延时的带宽估计可以在网络链路发生丢包以前就监测到网络拥塞,它可以通过侦测数据包接收的时延来预测未来可能的拥塞。它是基于链路上的路由器都有一定的缓存,在数据包开始被丢弃之前,先发生数据在缓存里堆积的事件,所以时延相比于丢包,对拥塞的反应更加灵敏。

        notes:基于丢包判断网上,已经产生了丢包的后果。基于延时判断,则是发现路由器已经缓存,说明网速在下降,减少发送量,这样不会丢包。

        基于延时梯度的带宽估计是WebRTC GCC最为核心的拥塞控制算法,此算法在最新版的WebRTC有两种实现方式,一种是在接收端、另一种在发送端。

        Send-side BWE.         Rtp 扩展 transport sequence number

        Receive-side BWE.     Rtp 扩展 abs-send-time函数        

        两者唯一区别是到达时间滤波器不同,接收端是卡尔曼滤波器,发送端是trendline滤波器,其他完全相同。

        这个算法有4个模块组成:

        

        每个模块的作用:

Trendline

计算延时斜率. 斜率*包组数就是延时

Dectector

与动态阀值比较. overuse,underuse,normal

DelayBaseRate

基于接收端网络延迟,估算出的码率

AMID rate

加法或者乘法调整码率

         这个算法一个难点:

        三个码率状态和网络带宽状态 decrease,hold,Increase;normal,underuse,overuse关系
一个注意的地方:判断状态的时候跟动态门限比较,更新状态之后,门限也要更新(门限不是固定的)。

        代码实现

        基于延时评估有五个关键技术:包组延迟评估,滤波器趋势判断,过载检测,动态更新门限阀值和码率调节。

       1) DelayBasedBwe::IncomingPacketFeedbackVector

 

        2)elayBasedBwe::IncomingPacketFeedback 

 

 

        3)DelayBasedBwe::Result DelayBasedBwe::MaybeUpdateEstimate 

 

        4)DelayBasedBwe::UpdateEstimate 

 

         5) AimdRateControl::Update

         6)AimdRateControl::ChangeBitrate

 

                 1)TrendlineEstimator::Update(包组评估延时和滤波趋势判断

         

         2)TrendlineEstimator::Update(包组评估延时和滤波趋势判断

 

        参数说明:recv_delta_ms:包组接收时间差;send_delta_ms:包组发送时间差;send_time_ms:当前处理的RTP的包发送时间;arrival_time_ms:当前处理的RTP的包到达时间;packet_size:当前处理的RTP包的大小。

        此函数重点关注下面三件事:
        计算当前的延迟梯度累计值,如代码里的accumulated_delay_。
        计算延迟梯度累计值的一次指数平滑值,如代码里的smoothed_delay_,同时也是最小二乘法的y。

        LinearFitSlope:滤波器趋势判断。

        最小二乘法线性回归求延迟梯度趋势斜率a,如代码里的trendline_。
        预测的斜率值 trendline_可以表征网络的拥塞程度(网络缓冲区,即路由器数据包排队的消涨情况)。
        trendline_过大,表征d(i)>0网络拥塞。
        trendline_适中,表征d(i)=0网络正常。
        trendline_过小,表征d(i)<0网络空闲

        3) TrendlineEstimator::Detect函数(过载检测)

        通过计算得到的时延变化趋势拟合直线斜率,发送时间差,到达时间判断网络状态:

        (三个网络状态,三个码率变化状态关系)                  3 UpdateThreshold函数(更新动态阀值计算公式)

         阈值threshold_动态调整为了改变算法对时延梯度的敏感度。根据[1]主要有以下两方面原因:
        1)时延梯度是变化的,有时很大,有时很小,如果阈值是固定的,对于时延梯度来说可能太大或者太小,这样就会出现检测不够敏感,无法检测到网络拥塞,或者过于敏感,导致一直检测为网络拥塞;
        2)固定的阈值会导致与TCP(采用基于丢包的拥塞控制)的竞争中被饿死。
        这个阈值根据如下公式计算:

        每处理一个新包组信息,就会更新一次阈值,其中ΔT表示距离上次阈值更新经历的时间,m(ti)是前面说到的调整后的斜率值modified_trend

         

         kd与ku分别决定阈值增加以及减小的速度。
        detalT是包组到达的时间差.
        当m(ti)在阈值范围内时(-r~r),减小阈值,反之则增大阈值,kr决定了阈值增大和减小的速度,【Gcc-analysis】建议kd=0.00018,ku=0.01,【Gcc-analysis】有详细的推导过程。阈值上涨速度要大于阈值下降速度,保证和TCP竞争的公平性。

         

         AimdRateControl::ChangeBitrate(码率调节) 

        (1)增加

1)加性增加

         

2)乘性增加

 2) 降低

        AimdRateControl::UpdateMaxBitRateEstimate

 小结:1 通过延时梯度+trendline滤波器,估算延时梯度斜率值。
2 与自适应阈值比较得出当前网络状态(underuse、overuse、normal)。
3 以2的结果作为输入事件,再结合当前网络控制状态(decr,incr,hold)+当前码率值,得出估算码率

        4 综合码率 

 

        webrtc 发送端码率控制: 

 

 总结

        WebRTC的带宽估计会参考3个因素,丢包率、接收端带宽估计、发送端带宽估计,然后取三者最小值作为最终的估计码率。WebRTC的带宽估计是整个QoS优化的非常重要的一个环节,在弱网优化场景,会根据带宽估计作为输入,执行大小流、SVC、带宽分配、优先级等弱网降级策略。

 其他:
        早期的 KalmanFilter 算法是在接收端根据网络延时,计算出合适的带宽,通过 REMB RTCP 报文反馈给发送端,让发送端按照该码率发送视频数据。
        在此种实现中,为了准确计算延迟梯度,WebRTC添加了一种RTP扩展头部abs-send-time, 用来表示每个RTP包的精确发送时间,从而避免发送端延迟给网络传播延迟的估计带来误差.
kalman filter 参见:

WebRTC视频接收缓冲区基于KalmanFilter的延迟模型 - 简书

可能是讲解最清楚的Kalman filter - 知乎

其他优秀参考文献

        WebRTC基于TransportCC和Trendline Filter的发送端码率估计(Sendside-BWE) - 简书

WebRTC基于GCC的拥塞控制(上) - 算法分析 - 简书

webrtc视频接收端带宽预测(二)---卡尔曼滤波 - 简书 

                

              

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 动词时态总结

    动词时态 时与态关系非常紧密&#xff0c;这里把它们分开仅作教学用途&#xff0c;实际使用中应看做一个概念。 docs1(百科定义) docs2(视频讲解) 以下每种类型各四种&#xff0c;排列组合就是十六种。 动词时间 过去现在将来过去将来(较少i见&#xff0c;一般出现在从(试…...

    2024/5/4 4:28:33
  2. 集装箱泵的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

    本文研究全球与中国市场集装箱泵的发展现状及未来发展趋势&#xff0c;分别从生产和消费的角度分析集装箱泵的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的…...

    2024/4/13 14:17:07
  3. SpringBoot 配置拦截器 HandlerInterceptor接口

    在实际开发中我们需要实现一些类似于登录拦截的功能&#xff0c;防止用户未经登录直接访问我们的网站。 首先我们创建一个拦截器类LoginInterceptor&#xff0c;并实现HandlerInterceptor接口 /*** Author Kk* Date 2022/2/6 14:00* Description 配置拦截器实现登录拦截* 1.配…...

    2024/5/4 1:09:11
  4. BMS-基于BQ76PL536单片机的电源管理系统电路设计

    BMS-基于BQ76PL536单片机的电源管理系统电路设计。AltiumDesigner文件&#xff0c;非实物。 编号:6710645953153139优峰...

    2024/4/20 2:57:08
  5. 基于PLC的物料自动称量控制系统称重配料物料混合程序组态设计

    基于PLC的物料自动称量控制系统称重配料物料混合程序组态设计 编号:61300645921104775有冲劲的白鸽...

    2024/4/13 14:17:07
  6. Zookeeper访问控制笔记

    工作中用到关于访问控制的知识&#xff0c;在此记录一下&#xff0c;以备后续翻阅。 简单介绍 传统的文件系统中&#xff0c;ACL(Access Control)分为两个维度&#xff0c;一个是属组&#xff0c;一个是权限&#xff0c;子目录/文件默认继承父目录的ACL。而在Zookeeper中&…...

    2024/4/13 14:16:52
  7. js中变量到底存哪儿

    摘要: ①. 问题②. js中全局变量到底存哪儿③. 都是因为祖师爷偷懒④. let声明的全局变量存哪儿⑤. var声明的变量和用window.a添加的变量差别⑥. 相关高频笔试题/知识点总结 问题: 书上和网上都说js中的变量是保存在栈内存里的&#xff0c;而对象&#xff0c;其实是保存在堆…...

    2024/4/7 21:21:09
  8. Machine Learning note—briefing

    Basic Machine Learning Problems ● Supervised Learning: You have labelled data for computer to learn from ○ Regression ○ Classification ● Unsupervised Learning: You don’t have labelled data, but you want to find patterns in the data ○ Clustering / Di…...

    2024/5/4 3:25:23
  9. Revit2020中的Dynamo无法显示三维视图

    Dynamo无法显示三维视图 解决办法 升级一下Dynamo的版本就可以解决问题&#xff0c;测试升级到Dynamo2.12.0 可以正常使用。 版本下载地址 https://dynamobuilds.com/...

    2024/4/13 14:16:57
  10. 微信小程序之电子商场的设计以及实现

    随着移动互联网迅速发展,手机上安装的移动应用越来越多,导致长尾现象严重,浪费了大量的资源。近年来,各大应用提供商相继提出各自的轻型应用解决方案,但都没有成功,微信小程序的出现给业界带来了新的震动。文章对什么是小程序进行了说明,分析了它和以往轻型应用方案的不同,介绍…...

    2024/5/3 23:40:51
  11. C++利用多策略类实现多态

    多策略类在此 拥有多策略类后,不必使用继承的虚函数机制.来实现多态.代码如下: #include "多策略.cpp" 构 B{空 f(){打印("啊");} }; 构 C{空 f(){打印("哦");} }; 构 D{空 f(){打印("D");} }; 元<类 T>概念 有啊要求(T*t){t-&…...

    2024/5/4 3:26:48
  12. python基础学习Day2:轻松掌握各种运算符和变量、input()输入输出、映射函数map()结合input()和split()函数实现多值输入

    一、python运算符 1.1 算数运算符 注意&#xff01;&#xff01;&#xff01;算数运算符的优先级 1.2 赋值运算符 简单的运算符的运用“”&#xff1a; 1.执行顺序&#xff1a;从右往左 2.支持链式赋值&#xff08;例&#xff1a;abc20&#xff09; 3.支持参数赋值&#xff1a…...

    2024/5/1 20:58:36
  13. Django静态文件

    静态文件&#xff1a;图片&#xff0c;css&#xff0c; 1.配置静态文件的访问路径 settings.py中配置【默认存在】 STATIC_URL ‘/static/’ 2.配置存储路径STATICFILES_DIRS 保存的是静态文件在服务端的存储位置 STATICFILES_DIRS(os.path.join(BASE_DIR,“static”),) …...

    2024/5/1 5:34:42
  14. c语言进阶-第5节-动态内存管理

    1. 为什么存在动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点&#xff1a; 1. 空间开辟大小是固定的。 2. 数组在申明的时候&#xf…...

    2024/5/1 19:05:29
  15. C语言写小游戏——扫雷

    game.h #include <stdio.h> #include <stdlib.h> #include <time.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#define EASY_COUNT 10//初始化 void init_board(char arr[ROWS][COLS], int rows, int cols, char set);//打印 void sh…...

    2024/5/1 8:38:58
  16. 机器学习车牌识别模拟车库计时收费系统 算法用的opencv的svm支持向量积

    机器学习车牌识别模拟车库计时收费系统 算法用的opencv的svm支持向量积&#xff0c;界面用tkinter&#xff0c;数据库用python的的sqlite3轻量级数据库 编号:6775645849438676爪哇的咖啡有点苦...

    2024/5/1 14:50:42
  17. 【Kubernetes】<云原生>Kubernetes概述

    目录 一、应用部署方式演变&#xff1a; 二、 Kubernetes简介&#xff1a; 三、Kubernetes组件&#xff1a; 四、Kubernetes概念&#xff1a; 一、应用部署方式演变&#xff1a; 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互…...

    2024/5/1 18:26:59
  18. 博客管理系统新闻管理系统java项目jsp web项目ssm框架开发

    博客管理系统新闻管理系统java项目jsp web项目ssm框架开发 用户可以实现注册以及登录&#xff0c;进行新闻博客文章浏览&#xff0c;个人信息管理&#xff0c;系统设置&#xff0c;用户信息管理&#xff0c;分类管理&#xff0c;新闻管理&#xff0c;评论管理等功能。 源码数…...

    2024/5/1 14:27:09
  19. C++的多策略类

    元<类...T>类 多策略{//不用有基类.元<类 T>空 加一(){T b;压(们,b);}元<元<类>类 G,整...I>空 动作(序列<I...>){(G<T>::动作(取<I>(们[I])),...);}// 公:向量<M>们;多策略(){(加一<T>(),...);}元<元<类>类 G…...

    2024/5/1 21:00:10
  20. 高精度1602电压电流表电路图,PCB和源程序

    高精度1602电压电流表电路图&#xff0c;PCB和源程序。 编号:6618645732480507智诚微控...

    2024/5/1 5:38:52

最新文章

  1. 匹配网络(Matching Networks)和原型网络(Prototypical Networks):区别详解

    匹配网络&#xff08;Matching Networks&#xff09;和原型网络&#xff08;Prototypical Networks&#xff09; 匹配网络与原型网络&#xff1a;区别详解匹配网络&#xff08;Matching Networks&#xff09;核心特点&#xff1a;应用场景&#xff1a; 原型网络&#xff08;Pro…...

    2024/5/4 13:32:57
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【Kaggle比赛】DFL 德甲足球事件检测大赛(CV·目标检测-视频分类)

    赛题解析 比赛目标 进球了!在这场比赛中,你会发现足球(足球)传球ーー包括掷界外球和传中球ーー以及德甲比赛中的挑战。您将开发一个计算机视觉模型,可以在长视频记录中自动分类这些事件。 您的工作将有助于规模的数据收集过程。自动事件注释可以使事件数据从目前未探索的…...

    2024/5/2 19:53:45
  4. STM32-GPIO

    &#x1f913;&#x1f913;&#x1f913; 122.1 2.22.3 344.14.24.34.44.54.64.74.8 56788.18.299.19.2 STM32 第一个外设 1 对我们来说 和IO口没区别 ST公司非叫GPIO 2 2.1 第二个是超频了 F1 72M 这翻转就36 2.2 有cmos 和ttl两种数据手册里给出整个芯片最低电流为150ma 单…...

    2024/5/1 13:09:46
  5. 微信小程序的页面交互2

    一、自定义属性 &#xff08;1&#xff09;定义&#xff1a; 微信小程序中的自定义属性实际上是由data-前缀加上一个自定义属性名组成。 &#xff08;2&#xff09;如何获取自定义属性的值&#xff1f; 用到target或currentTarget对象的dataset属性可以获取数据 &#xff…...

    2024/5/1 13:38:59
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57