今年的春节非同寻常,由于新肺炎疫情的蔓延,假期时间比较长,恰好自己也打算利用春节的假期充充电,所以系统的研究和设计了一下帧同步方案,将其作为自己和公司的一个技术储备,本文中如有疏漏和错误,还请各位多多指教。

我一直在脑补这样一种游戏类型,开放世界+位面战斗,这是一种状态同步与帧同步结合的游戏玩法,既不失去在大世界中与玩家交互的乐趣,又可以在战斗时达到极致的爽快感,只要没有进入战斗,那么一直是状态同步的,所有的技能在状态同步下只支持空放,这时的技能只是一个展示炫耀的作用,所有的开放世界玩法都是在状态同步下进行的,那么打怪和PVP则需要原地进入一个位面,在位面中使用帧同步技术来处理战斗,理论上是可以让战斗效果达到主机游戏的水平的,当然这种类型的游戏就失去了野外抢怪、偷袭玩家的乐趣,但是换来的是极致的战斗体验,个人认为舍弃这些也值得。

国内的大厂都很喜欢做MMORPG和ARPG,也深耕于此,但是直至目前为止,战斗系统都做的比较简单,而且在表现上都是取巧的设计,国内的ARPG的A,不是Action而是Animation,甚至很多游戏都还是站桩式的战斗系统,打击感完全依靠夸张的动画或者特效来模拟,之所以没法做成真正的动作游戏是因为大都在采用状态同步,战斗的判定和AI也都是由服务器来驱动,前后端的同一帧状态不对等,无法保证每一个客户端的每一帧都得到相同的运算结果,所以在设计一些实时性高的技能玩法时捉襟见肘,例如:投技、实时QTE、锁镜头慢放、空中连击、打怪的复杂表现等等,虽然我们使用状态同步也实现了这些玩法,但在这中间做了很多的让步和取巧处理,对于战斗策划的限制还是比较多的。目前市面上的大部分RPG、ARPG都是使用的状态同步,网上的资料也比较多,所以本篇文章就不详细介绍状态同步了。而帧同步的理论基础就是保证每个客户端的帧步调一致(Lockstep),每个客户端表现的无论是玩家还是NPC都是一致的,所以在理论上,帧同步网游的战斗效果可以做到跟单机游戏一样的表现。

我们从最核心的同步部分开始,帧同步,顾名思义就是每个人的每一帧都是同步的、一致的,流程如图1:

图1

忽略图中的播放帧和逻辑帧,后面的内容会对其进行描述。图例中有2个玩家,这2个玩家与服务器的开始时间和帧率都是相等的,理想情况下是不存在谁快谁慢,客户端每一帧都会将玩家的操作指令上报给服务端,服务端收集齐了所有玩家在这一帧的指令或者服务端的时间已经到达了该帧的时间点,服务端统一将此帧产生的指令广播给客户端,客户端收到后,再按照服务端广播的指令进行相应帧的表现处理,然后步进逻辑帧,所有的游戏逻辑计算都放在了客户端,服务端只负责转发每一帧的消息。上图中的逻辑帧、缓冲帧、播放帧会在后面有所说明,在此只需要清楚,逻辑帧所包含的指令是经过确认的真实指令。

电影院播放的电影胶片是按照每秒24张图片进行的刷新,也就是每秒24帧,每帧的时间是41ms,那么游戏只要大于等于24帧,玩家看到的图像就是连贯的,我所做过的手机游戏都是维持在30帧的,所以上图中我默认每帧是33ms。

但是现实总是事与愿违,每个玩家的网络情况是不确定的、终端机的性能是不确定的,我们来看图2这种情况:

图2

上图出现了两个典型的问题:

  1. 第1帧执行之前的操作一切都是正常的,Client1和Client2的用户指令都发给了服务端,服务端也在第1帧执行之前将这一帧的指令返回给了两个客户端,其中Client1正常收到了返回,但是Client2由于网络或者终端卡顿,在第一帧应该执行的时候并没有收到服务端返回的第1帧指令。
  2. 在第1帧和第2帧之间,Client1和Client2都向服务端发送了用户指令,由于网络延迟导致了服务端在执行到第2帧的时候,一直没有收齐所有用户指令,此时服务端认为Client1在这一帧没有任何操作,于是将其余的用户指令下发下去,由于客户端和服务端的帧都是同步的,当Client2收到服务端的第2帧指令时,在自己本地的时间轴上,已经过了第2帧,甚至已经执行到了第3帧。

我将这种问题称作信息不对等状态,一种处理方式是帧锁定,如果有一个人跟大家不同步了,那么大家就陪着一起锁定住,通过一系列的消息恢复措施处理,直到恢复以后才继续进行游戏。另一种处理方式是预测-快照-回滚机制,客户端在本地接收到了用户的操作指令后,无论在这一帧的时间到达时,是否收到了服务端发送的帧指令,客户端都会预测本次的指令是成功的,并将这个指令做出渲染上的处理,而对于其他玩家的操作则不会进行预测,当收到了延迟到来的数据后,如果自己预测的成功,万事大吉,如果自己预测的失败,需要将自己的逻辑回滚到出错的帧,在渲染表现上做一个平滑处理。

帧锁定的原理比较简单,对于不对等的处理比较粗暴,带来的负面影响比较大,一个用户的网络条件不好,其他用户都要受牵连,非常影响用户体验。预测-快照-回滚机制的原理则要相对复杂一些,对于网络条件不好的用户,他只会影响到自己的表现,不会影响到其他玩家,所以基于用户体验优先的原则,项目应该选择预测-快照-回滚机制来作为帧同步的方案,我们在下文简称为PSR(Prediction Snapshoot Roll-Back)。

首先描述一下这三个词的含义

预测:当本地执行到了某一帧,但是没有收到服务器发来的这一帧的真实指令信息,本地客户端认为自己在这一帧的输入是有效的,并执行了这一帧指令所产生的渲染效果,由于指令的执行没有依赖服务端的返回,是一种客户端先行的表现,我们称这种处理叫做预测,除了自己的行为,还会预测其他玩家的移动行为。

快照:保存了最后一次服务端确认的帧和每一个预测帧的数据和状态,在做数据回滚时,基于快照的数据,可以直接将逻辑回滚到指定的帧再继续执行。

回滚:由于存在着预测失败的情况,当失败时需要将自己预测的帧都回滚到最后一次成功的帧。因为保存了之前的快照数据,所以将快照数据覆盖回去即可完成逻辑上的回滚,在渲染表现上再做一些平滑的过度处理即可。如上图中,在第2帧的时候服务端由于网络原因并没有收到Client1的用户指令,服务端认为在第2帧时Client1没有任何操作,而Client1认为自己产生了用户指令,并且预测了该指令的执行逻辑,Client1收到了第2帧的消息后,发现自己的预测是失败的,随即就进行了回滚处理。

有了这三个概念后,还需要对PSR进行逻辑上的串联处理,这里又引入了三个概念,分别是:逻辑帧、缓冲帧、播放帧。

逻辑帧:基于从服务端收到的帧指令执行的帧,所有客户端和服务端的帧同步,指的就是逻辑帧同步,我们将从服务端发送过来的帧统一称为逻辑帧指令。

播放帧:负责渲染表现的帧称之为播放帧,客户端在某一帧产生了一个指令,如果在该执行该帧逻辑的时候,还没收到服务端发来的逻辑帧指令,由于有预测机制的存在,客户端会直接执行此帧所产生的渲染表现,在理想的情况下(图1),播放帧和逻辑帧一直是在同一帧。

缓冲帧:指在播放帧与逻辑帧中间的那些帧,当播放帧播放完毕,还没有收到服务端的逻辑帧指令时,随着时间的推移,进入了下一帧,下一帧会变成播放帧,而当前这个帧由播放帧变成缓冲帧。

逻辑帧存在于服务端和客户端,且两端的帧指令数据要一致,播放帧和缓冲帧只存在于客户端,下面用一个图例来说明他们与PSR的关联:

图3

Client2由于网络条件较好,终端性能优越,所以可以一致跟服务端的逻辑帧保持一致,在第4帧的时候播放帧、缓冲帧、逻辑帧都在同一帧,Client2是最理想的同步状态。

Client1由于网络的原因只收到了第1帧的逻辑帧指令数据,而实际的时间已经走到了第4帧,因为有了自己本地的预测,负责渲染表现的播放帧也在第4帧进行了相应的渲染表现。例如玩家释放了一个技能,那么会在播放帧将这个技能播放出来,但是在逻辑处理上,并不认为玩家使用了技能,如果没有收到逻辑帧指令,那么这个技能是不允许产生任何收益的,这里就提出了一个必要的需求,逻辑和渲染要做解耦处理,逻辑的处理不应该耦合渲染的处理。第1帧逻辑帧,第2、3帧缓冲帧都做了快照,假如Client1在这时刚好收到了服务端发送回来的第2、3、4逻辑帧指令,Client1的缓存帧里保存的指令和服务端发送的逻辑帧指令是一致的,Client1将2、3、4帧都标记为了逻辑帧,并且在逻辑帧的tick中执行了追帧操作,追帧操作是指让本地的逻辑帧追赶上服务端发送来的逻辑帧,由于缓冲帧和播放帧以前先行做出了一些渲染了,直接拉拽或者加速会显得很生硬,渲染表现上需要做平滑处理,追帧也需要有一个阈值,不能在一帧的时间内处理太多的逻辑帧,这样容易造成卡顿。追帧操作在图3中就是指Client1在第4帧的tick处理中快速执行第2、3帧的业务逻辑;如果Client1的缓存帧里保存的指令和服务端发送的逻辑帧指令是不一致的,则需要进行回滚操作。

回滚操作依赖于快照的数据,快照数据的收集将是一个逻辑复杂、消耗内存的操作,首先要做的就是操作与数据的分离解耦,Unity的ECS、UE4的controller机制、面向过程的思想,都可以做到这一点,其他博主有很多这方面的资料,我就不展开介绍了。

通过几个图例和上文的描述,同步的流程处理已经逐渐清晰了,流程图可以简化表示为:

图4

以上是帧同步业务层的同步处理机制和流程,总结一下就是我们使用PSR模式来驱动整个同步,每个客户端都是一个独立的个体,逻辑信任服务端发送回来的帧数据,渲染表现基于本地的播放帧,在有必要的时候做平滑处理。为了支撑同步机制和流程,还需要很多其他层面或者模块的支持,我这里列出了一些:

  • 运行平台无关,无论是在andorid、ios、windows,还是不同硬件平台的机器,同一条指令甚至同一个函数方法都需要得到同样的一个结果,不允许出现由于平台和操作系统导致的结果不一致。
  • 网络的实时性越高越好,TCP由于需要建立连接、超时重传、滑动窗口等一系列通信质量保证机制,所以网络的响应速度并不如UDP。
  • 帧同步的逻辑部分只使用一种语言实现,如果服务端或者客户端是不同语言的,需要帧同步的实现语言具有多语言互通特性,例如:帧同步逻辑部分使用C++,客户端unity,服务端java,由于C#和java都可以调用C++的库,所以这样是可以接受的,当然另外一种情况是客户端使用UE4,服务端使用C++,那么本身大家都是使用的同一种语言,减少了语言互通所带来的各种问题。
  • 服务端和客户端要严格控制或者避免由于GC导致的卡顿,如果gc时间过长,将出现跳帧的情况,若选择使用C++实现帧同步部分的逻辑,则不存在此问题,C#和Java由于语言特性导致都会存在GC的影响。
  • 不依赖引擎提供的object的tick顺序,使用自有的Object体系管理器来管理所有对象的tick,从而保证了每中对象的tick顺序,避免出现顺序不一致导致的运算结果差异。
  • 游戏逻辑和渲染不能耦合在一起处理,需要做逻辑和渲染的分离,因为帧同步如果想表现的好需要做PSR处理,而且还考虑到服务端验证这种不需要渲染的使用场景,所以必须将两者做分离解耦处理。
  • 客户端的玩家操作指令,需要区分同帧互斥和同帧并行,比如普攻和必杀技是不可以同时使用的,所以它们是同帧互斥操作,比如吃药和释放技能,是可以同时使用的,那么就是并行操作。
  • 一帧中,每个玩家的指令执行顺序的不同会导致最终的表现结果不同,我们可以将一帧中再细分N个时间点,比如33ms内再分3个时间点,这样将每11ms作为一个输入顺序的判断,逻辑帧根据每个人的释放时间点,先做一个排序,如果仍然出现在同一个时间段出手的情况,就可以随机一个人先出手。
  • 因为是帧同步的,所以在游戏世界中的所有逻辑和动画、粒子特效等都应该是基于帧的,比如动画在某一时刻要派发一个开启攻击框的事件,这一时刻就应该用帧而不是时间来表达。
  • 对于断线重连和中途加入的玩家,有两种方法可以处理:
  1. 服务端保存了从开始到当前帧的所有逻辑帧数据,将这些帧数据打包下发给加入的客户端,客户端收到后可以在loading界面执行一遍逻辑帧的逻辑直到当前最新的帧,然后将最后一帧的画面渲染出来,随即开始正常的游戏。
  2. 客户端和服务端一起使用快照处理,服务端也保存了每一帧的快照数据,这样基于第一种方法的处理方式,服务端只需要发送当前帧的快照数据给客户端,客户端按照快照数据进行还原,这个方式看起来要更优秀一些,带来的负面影响是服务端相当于一个没有渲染的客户端,需要实时的计算每一帧的逻辑以便产生快照数据,这造成了一定的CPU消耗。
  • 在开发阶段经常需要在单机模式下运行游戏,单机模式可以无干扰的调试表现相关的逻辑,将网络发送部分取消即可,并且在流程上认为每帧都收到了服务端的逻辑帧指令。
  • 我所画的图中,服务端和客户端都是一起开始的,但实际的情况是服务端会比客户端稍微慢一些的,这种慢是可以容忍的,而且服务端比客户端慢几帧,其实是可以给网络留出更多的容错时间的。

平台无关其实包含了三类问题:浮点数、伪随机、容器遍历一致

众所周知,浮点数在不同的硬件平台会表现出一定的误差,这种误差对于逻辑计算都放在客户端的帧同步来说是不能容忍的,因为只要有一帧没有计算一致,后续帧的差距会越来越大,所以浮点数必须要做到平台无关且计算一致。

有2种方法可以解决这一问题:一是使用double类型,二是使用定点数。

double类型:由于double类型可以表示的范围更大,所以只是降低了出现不一致的概率,并没有从根源上解决浮点问题。

定点数:定点数通俗来讲就是将固定小数点位数的数字使用一个整形的数据来表达,可以用乘法的方式,将浮点数乘以一个10的倍数,也可以用二进制中高位和低位的思想,将高位放置整数部分低位放置小数部分,采用二进制高低位处理的方式在运算时效率更高。

目前我所开发过的游戏都是使用定点数解决这一问题的,我们将浮点型数据乘以1000,用来表示小数点后3位,这个定点数类型也只是用在服务端,因为服务端要处理一些数据表格的数据计算,如果使用浮点数会有概率造成计算的数值结果不是策划所期望的,二是用来描述客户端的坐标信息,由于之前做的都是状态同步,技能的判定、AI的计算都是在服务端处理的,客户端只负责播放动画和特效以及少量的逻辑,所以不需要严格的浮点一致。

客户端的很多模块都用到了浮点数,比如:transform、数学库、物理库、地图数据、导航、碰撞检测、业务逻辑等等,这些模块有的是引擎底层做的实现,有些是用户的gameplay做的实现,所以需要将每个模块的浮点数都替换成统一的定点数,这个工程量虽然很大,但是必须要这么做。

游戏逻辑中经常使用随机数,我们要保证每个客户端在每一个逻辑计算出来的随机数都是一致的,那么就需要我们使用伪随机,开局时,服务端发送给所有客户端一个种子,每个客户端使用这个种子初始化随机数类,这样在做每一次随机时就可以实现大家都是一致的,伪随机的实现有很多,随便使用一个即可。

由于一些非线性存储的数据结构在遍历时,无法保证顺序,例如有的逻辑是必须保证按照添加的顺序来遍历的,但是这个数据结构还必须使用map,那么这种遍历顺序不一致就是不被允许的,所以在处理上需要重写迭代器方法或者自己重新实现一套可以保证顺序的数据结构,这类数据结构主要包括:map、hashtable等。


网游与单机最根本的区别就是网游的很多表现都依赖于服务端的返回结果,即使是很简单的服务端逻辑,网络消息的一来一回也需要一定的时间,如果客户端保持33ms的帧率刷新画面,那么理论上在33ms内必须完成这一帧的所有操作,网络消耗在这个过程中占用的时间越少越好,目前大部分游戏都是使用TCP来实现的网络层逻辑,TCP是一个面向连接的协议,需要双端都建立连接、保持连接、保证通信质量,它很安全而且能保证消息可达以及顺序,但缺点是网络速率低,TCP为了保持连接和保证通信质量,设计了很多复杂的机制,比如:建立连接的三次握手、数据确认、超时重传、拥塞控制、慢启动,这些机制使TCP的传输效率远低于UDP,而UDP则是一个无连接的协议,它没有TCP那么多影响网速的机制,但是不保证通信质量,需要应用层自己来处理消息顺序、丢包问题,所以只要我们处理好了消息顺序和丢包的问题,UDP对网络速率的提升还是非常明显的。

若想在UDP基础保证消息顺序和处理丢包情况有两种思路:可靠UDP和冗余UDP。

可靠UDP顾名思义就是将TCP中的数据确认和超时重传机制简化,目前以后几个开源实现,比较热门的是KCP、UDT,两个项目的介绍里都把原理说的很清楚了,感兴趣的可以去github上搜索相关开源实现。

冗余UDP则比较简洁,每个数据都会发送多份,用概率优势来保证通信质量,同时每个数据包都有数据编号,需要增加一个数据确认机制,这个机制放在客户端或者服务端均可,如果放在服务端,则还需要每个客户端收到了数据以后给服务端一个确认信息,服务端再把消息从发送缓冲中移除,如果放在客户端,客户端应该有一个数据接收的等待超时,超时后像服务端发送消息,由于帧同步的机制是每一帧服务端都会发送指令给客户端,所以是比较方便做等待超时的,因为客户端知道自己一定要收到服务端的帧消息。

可靠UDP虽然已有实现,但是毕竟还是有机制上带来的消耗,并不能完全的展现UDP的速率优势,基于我们所追求的实时性最强,还有现在的网络状况已经较前些年有了质的飞跃,不会出现大量丢包的情况,所以我选择使用更加简洁的冗余UDP方案。

使用UDP需要注意的一点是包的大小不能超过MTU,因为一旦超出了MTU那么在IP层会对包进行拆包重组,一旦发生了重组现象,一个数据包变成了多个数据包,这将增加在传输过程中丢包的概率,并且给应用层组装带来了额外的复杂度。

应用层心跳逻辑跟TCP一致,不需要额外处理,游戏的网络层和应用逻辑层也一样要做分层的处理,网络层对于上层来说是透明的,应用逻辑层只有接消息和发消息接口,并不需要关心冗余处理、收包确认等等网络方面的逻辑。状态同步中应用层的网络处理可以按照每个人来进行tick,然后再处理每个人的N个网络包,但是在帧同步中消息的处理要将消息按照对应帧,分帧进行tick,在这一点上双端需要保持一致,否则将导致由于tick消息顺序导致的不一致。

 


作为一名前C++程序员在使用了Java和C#后会有一种如释重负的感觉,自己不用管理指针和内存了,该死的段错误也不会再出现了,可以把更多的精力放在业务的设计开发上了,但是任何事情都是具有两面性的,GC的停顿(Stop The World)问题是无法忽略的,而且GC的时间是没法把控的,虽然现在Java除了G1,可以自己设定一个期待的时间,但还是会经常出现超时的情况,而且设置的太小反而会造成频繁的Mixed GC,那么在帧同步中由于对于每一帧的执行时间是有严格要求的,一旦出现了跳帧现象,将对玩家的体验非常不友好,所以这时候我又考虑回头使用C++来实现帧同步的逻辑,由于是自己管理内存,完全可以用空间换时间的方式来避免GC,并且Java和C#都可以直接调用C++编译好的库。

在玩家进入了位面或者战斗场景,无论服务端还是客户端,逻辑就交给C++的库里面进行处理了,在战斗结束后再将数据传回给Java或者C#,如果一些逻辑是需要热更的,可以将热更逻辑用lua来编写,对于防作弊而言,服务端需要绝对的权威,我们可以把C++的逻辑跑在一个第三方进程来进行延迟验证,或者在帧同步的线程中做实时验证。


状态同步中,大部分的逻辑都是服务端来驱动的,客户端只负责播放相应的表现即可,它在防作弊方面有机制上的优势,而帧同步的逻辑都是放在客户端的,客户端的进程是运行在玩家的终端上,破解的难度相对服务器要低很多,难免的会出现外挂,帧同步游戏的外挂类型主要是全图挂、修改运行内存、拦截修改网络消息以达到欺骗的作用,我们的应对方法也比较多:

  1. 对应用进行加固增加反编译难度。
  2. 对于一些核心的数据(对象的位置、自己的属性等等)做数据加密和混淆处理。
  3. 使用C++将帧同步的战斗部分封装到库中,而对于模拟客户端消息的,服务端按照指令执行战斗逻辑,做一部分数据验证和关键节点的验证,数据包括血量、伤害、位置、速度、掉落等,节点包括:死亡、副本结束等,客户端上传每个角色的关键数据hash值,服务端比对hash值,如果出现了不一致,遵循少数服从多数的原则进行投票,处理hash值不一致的玩家,对于验证的时效性,服务端可以即时验证或者交给其他应用做延迟验证。
  4. 网络消息加密,将每一条消息或者隔条消息使用加密算法进行加密,增加破解网络消息的难度,但是只要客户的代码被反编译了,那么通过加密的方式也没有太大的用处,最重要的还是要做好服务端对关键数据的正确性验证。

网游的客户端就是一个命令模式来驱动的表现逻辑,我们把每一帧的命令和开局时所有对象的属性信息保存到日志里,终端想要在线或者离线观战时,只需要按照命令执行逻辑即可,无需额外的开发工作。这对游戏开发有诸多好处,我们可以利用日志回放来查找同步的bug、策划可以通过玩家的日志回放来分析版本的战斗数值和技能设计是否有问题、怪物的AI也可以通过观看日志回放来进行优化、服务端也可以通过日志来进行战斗结果的正确验证。

日志的格式越简单越好,占用的空间越小越好,所以需要遵循能用整形的绝不用字符串,能用英文简写代替的绝不用完整单词,然后再做一次压缩处理即可。在保存时由于要进行IO操作,如果我们在每一帧都去写,IO会占用帧的逻辑执行时间,这很不划算,所以我们要在这一局结束后、错误发生时或缓存填满时再写入文件。

日志分为服务端和客户端,服务端的日志可以保存到本地或者直接通过网络推送到Hadoop集群,再由后端的分布式服务做统一的处理,而客户端的日志必须先保存到本地,如果本局内自己没有出现同步的异常,则可以删除本局的记录,如果有异常,则保存到本地,待用户没有战斗时再进行上传到Hadoop集群保存。


这次对帧同步做了一个总体的分析和设计,有的设计并没有细化到具体的实现细节。路要一步一个脚印走,接下来会花时间按照本文的设计实现一个小游戏来验证这一套设计,实现过程中如有方案的变化也会随时更新到文章中。

 

转自:https://zhuanlan.zhihu.com/p/105390563?utm_source=wechat_session

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

相关文章

  1. shopify技术支持 技术顾问

    因为公司的项目接触了shopify的开发,很多做shopify独立站的运营和老板们找到我。 今年在工作之余: 有偿的优化了很多网站,又给我的买房基金添砖加瓦了。 也跟其他的开发人员聊了很多关于shopify开发遇到的问题,增加了很多解决问…...

    2024/4/27 18:58:15
  2. Separation Studio for Mac颜色分离工具

    Separation Studio for Mac颜色分离工具分享给大家!Separation Studio Mac版是一款功能强大的Mac颜色分离工具,使用简单,只需使用Separation Studio Mac破解版打开你的图像文件,就能自动将颜色分离! Separation Studio…...

    2024/4/25 3:07:39
  3. 恋爱哪有学习香:JVM组成+内存管理+垃圾回收+调优与性能优化大礼包来了

    1991年4月,由James Gosling主导的团队创造了Oak语言,java的前身,1995年5月23号,Oak语言更名Java,并且提出那句注明的:”write Once,Run Anywhere”的口号.1996年1月23日,JDK1.0发布. 当时正好赶上浏览器快速崛起,发展的浪潮,大家发现java一处编译到处使用的特性和浏览器很契合…...

    2024/4/25 3:07:38
  4. 恭喜山东东营企业荣获企业信用评价AAA认证证书!

    恭喜山东东营企业荣获企业信用评价AAA认证证书! 企业招投标加分必备资质,全国多省信用协会备案、权威网站公示:中国商务诚信公共服务平台 、中国招投标网 、天眼查数据同步公示! 企业信用3A认证包含:企业信用等级证书、…...

    2024/5/2 21:58:49
  5. HTML各个注解说明

    ...

    2024/4/25 2:34:24
  6. 二维数组:M个同学N门课成绩处理,字符数组存放姓名(c++)

    二维数组&#xff1a;M个同学N门课成绩处理&#xff0c;字符数组存放姓名 #include<iostream> #include<iomanip> using namespace std; const char M3; const int N4; int main(){char name[M][20]{0};double score[M][N]{0};for(char i0;i<M;i){cout<<…...

    2024/4/25 2:34:23
  7. Java单例,一篇就够了

    本文从几种代码实现以及探究为啥写的方式叙述。话不多少&#xff0c;开始~单例实现思路&#xff1a; 1.私有化构造方法 2.创建对象 3.提供获取对象的方法 第一种&#xff1a;饿汉式 1.1 常见的写法一 /*** 恶汉式*/ public class Hangury {private Hangury(){}private stat…...

    2024/4/25 2:34:22
  8. 二分查找(递归和非递归)python实现

    定义&#xff1a; 二分查找也称折半查找&#xff08;Binary Search&#xff09;&#xff0c;它是一种效率较高的查找方法。但是&#xff0c;折半查找要求线性表必须采用顺序存储结构&#xff0c;而且表中元素按关键字有序排列。 思路&#xff1a; 比如说有一个列表L&#xff0…...

    2024/4/25 2:34:28
  9. 【yarn】job日志查看

    yarn-site.xml添加属性 <property><name>yarn.log-aggregation-enable</name><value>true</value> </property> <!-- resourceManager 保存最大的任务完成个数 --> <property><name>yarn.resourcemanager.max-complet…...

    2024/4/25 2:34:20
  10. aardio 加载音频文件(达到驱动喇叭,提醒目的)

    我的项目目的是通过爬虫监听网页上的字符串变化&#xff0c;最后通过加载音频提醒我们&#xff0c;并作出反应&#xff01; 虽然是很简短的一个功能&#xff0c;但有关于aardio的资料很少&#xff0c;实现起来也不是那么地顺利。 //第一步&#xff0c;先加载此类 import fsys.…...

    2024/4/25 2:34:19
  11. 根号分治详解

    我们先来看几道例题。 Task A Description 给定一个序列aaa&#xff0c;你需要维护下面两种操作&#xff1a; ①单点修改&#xff1b; ②求出所有下标模ppp等于ttt的数之和。 n,q≤105n, q≤10^5n,q≤105 Solution 看完这题&#xff0c;毫无思路。线段树、平衡树、分块、…...

    2024/4/25 2:34:17
  12. 内网环境离线安装docker

    docker下载地址&#xff1a; https://download.docker.com/linux/static/stable/x86_64/ 下载docker-19.03.5.tgz安装包 解压安装包 tar -xvf docker-19.03.5.tgz将解压出来的docker文件内容移动到 /usr/bin/ 目录下 cp docker/* /usr/bin/将docker注册为service vim /et…...

    2024/4/25 2:34:22
  13. leetcode算法刷题记录之移除元素

    题目描述&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考…...

    2024/4/25 3:07:37
  14. python3报错 Error in sitecustomize; set PYTHONVERBOSE for traceback: NameError: name ‘reload‘ is not .

    命令行运行python3&#xff0c;报错&#xff1a; Error in sitecustomize; set PYTHONVERBOSE for traceback:NameError: name reload is not defined windows下解决方案&#xff1a;将路径D:\python3\Lib\site-packages下文件sitecustomize.py改成sitecustomize_back.py即可…...

    2024/4/25 3:07:37
  15. el-upload中on-change在上传多个文件多次调用解决方法

    最近在做项目的过程中&#xff0c;有一个场景需要使用el-upload在用户选择完图片之后立即执行上传操作。这个上传用的是本地的方法不是用el的自动上传 监听用户选择文件的事件只有一个on-change&#xff0c;具体见文档说明&#xff1a; 由于开启了文件可多选multiple&#xff…...

    2024/4/25 3:07:34
  16. pytorch embedding的使用方法

    https://yifdu.github.io/2018/12/05/Embedding%E5%B1%82/ pytorch 中embedding词向量的使用 https://blog.csdn.net/david0611/article/details/81090371 import torch from torch import nn from torch.autograd import Variable 随机初始化的过程 # 定义词嵌入 embeds nn…...

    2024/4/25 3:07:34
  17. nohup命令使用与执行python程序不启用缓冲

    nohup执行一条命令&#xff0c;使得终端退出后&#xff0c;进程不退出 # nohup执行命令commond并将日志输出重定向到file nohup commond > file # >>为采用追加写的方式 nohup commond >> file实时追踪日志到屏幕上 # 实时追踪日志到屏幕 tail -f file如果执行…...

    2024/4/25 3:07:33
  18. mysql技术内幕学习(一)

    Master Thread 工作方式 master thread主要在四个循环中工作&#xff1a; 第一个是主循环loop&#xff1a; loop: for(int i 0 ;i<10;i) { //每秒钟发生的 睡眠一秒 将日志缓存刷新到磁盘里&#xff0c;和事务完成情况无关&#xff0c;这个操作会必做&#xff08;必做…...

    2024/4/30 6:17:52
  19. Linux tput命令

    tput命令&#xff0c;将通过terminfo数据库对对终端会话进行初始化和操作。 通过使用tput&#xff0c;可以更改几项终端功能&#xff0c;如移动或更改光标、更改文本属性&#xff0c;以及清除终端屏幕的特定区域。 文本属性 更改文本的显示方式可以让用户注意到菜单中的一组…...

    2024/4/25 3:07:31
  20. set identity_insert on 不起作用

    将mysql的数据表导入到sqlserver表中&#xff0c;主键值插入显示报错&#xff1a;IDENTITY_INSERT 为 ON 时&#xff0c;才能为表 ‘表名’ 中的标识列指定显式值。设置set identity_insert on还是报错不能插入显示值&#xff0c;解决方法&#xff0c;插入数据时将列名带上就不…...

    2024/4/25 3:07:30

最新文章

  1. ## CSDN创作活动:缓解工作压力:程序员的健康之道

    缓解工作压力&#xff1a;程序员的健康之道 在当今快节奏的社会中&#xff0c;程序员作为一个高度专业化和技术密集的群体&#xff0c;往往需要面对持续的工作压力和创新挑战。在如此高强度的工作环境下&#xff0c;如何有效缓解工作压力&#xff0c;保持工作效率和个人健康成…...

    2024/5/3 3:23:41
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. VScode代码查找、替换

    VScode代码查找、替换 快捷方法按CtrlF &#xff08;Mac为CommandF&#xff09; 右上角出现的框就是查找框&#xff0c;可以输入想找的内容 点击左边的小尖儿&#xff0c;输入替换的内容后 按回车是替换一个&#xff0c;按Ctrl回车&#xff08;Command回车&#xff09;是全替换…...

    2024/4/30 6:17:01
  4. 【python】Flask Web框架

    文章目录 WSGI(Web服务器网关接口)示例Web应用程序Web框架Flask框架创建项目安装Flask创建一个基本的 Flask 应用程序调试模式路由添加变量构造URLHTTP方法静态文件模板—— Jinja2模板文件(Template File)<...

    2024/5/2 2:33:45
  5. Claude-3全解析:图片问答,专业写作能力显著领先GPT-4

    人工智能技术的飞速发展正在深刻改变着我们的工作和生活方式。作为一名资深的技术爱好者&#xff0c;我最近有幸体验了备受瞩目的AI助手Claude-3。这款由Anthropic公司推出的新一代智能工具展现出了非凡的实力&#xff0c;尤其在图像识别和专业写作领域的表现更是让人眼前一亮&…...

    2024/5/1 10:16:01
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/2 11:19:01
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/2 9:47:31
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/2 9:47:31
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/2 6:03:07
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/2 9:47:30
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/2 5:31:39
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/2 9:47:28
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/2 9:47:27
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/2 9:47:26
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/2 23:47:16
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/2 18:46:52
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/2 7:30:11
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  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