目录

  1. 前言
  2. 为什么要使用多进程?
  3. 为什么需要“跨进程通讯”?
  4. 跨进程通讯的方式有哪些?
  5. 使用AIDL实现一个多进程消息推送
  6. 实现思路
  7. 例子具体实现
  8. 知其然,知其所以然。
  9. 跨进程的回调接口
  10. DeathRecipient
  11. 权限验证
  12. 根据不同进程,做不同的初始化工作
  13. 总结
  14. 结语

为什么要使用多进程

  • 对于进程的概念,来到这里的都是编程修仙之人,就不再啰嗦了,相信大家倒着、跳着、躺着、各种姿势都能背出来。
  • 相信很多同学在实际开发中,基本都不会去给app划分进程,而且,在Android中使用多进程,还可能需要编写额外的进程通讯代码,还可能带来额外的Bug,这无疑加大了开发的工作量,在很多创业公司中工期也不允许,这导致了整个app都在一个进程中。

整个app都在一个进程有什么弊端?

  • 在Android中,虚拟机分配给各个进程的运行内存是有限制值的(这个值可以是32M,48M,64M等,根据机型而定),试想一下,如果在app中,增加了一个很常用的图片选择模块用于上传图片或者头像,加载大量Bitmap会使app的内存占用迅速增加,如果你还把查看过的图片缓存在了内存中,那么OOM的风险将会大大增加,如果此时还需要使用WebView加载一波网页,我就问你怕不怕!

微信,微博等主流app是如何解决这些问题的?

  • 微信移动开发团队在 《Android内存优化杂谈》 一文中就说到:“对于webview,图库等,由于存在内存系统泄露或者占用内存过多的问题,我们可以采用单独的进程。微信当前也会把它们放在单独的tools进程中”。

下面我们使用adb查看一下微信和微博的进程信息(Android 5.0以下版本可直接在“设置 -> 应用程序”相关条目中查看):

进入adb shell后,使用 “ps | grep 条目名称” 可以过滤出想要查看的进程。

  • 可以看到,微信的确有一个tools进程,而新浪微博也有image相关的进程,而且它们当中还有好些其它的进程,比如微信的push进程,微博的remote进程等,这里可以看出,他们不单单只是把上述的WebView、图库等放到单独的进程,还有推送服务等也是运行在独立的进程中的。

  • 一个消息推送服务,为了保证稳定性,可能需要和UI进程分离,分离后即使UI进程退出、Crash或者出现内存消耗过高等情况,仍不影响消息推送服务。

可见,合理使用多进程不仅仅是有多大好处的问题,我个人认为而且是很有必要的。

所以说,我们最好还是根据自身情况,考虑一下是否需要拆分进程。这也是本文的初衷:给大家提供一个多进程的参考思路,在遇到上述问题和场景的时候,可以考虑用多进程的方法来解决问题,又或者,在面试的时候,跟面试官聊到这方面的知识时候也不至于尴尬。

为什么需要“跨进程通讯”

  • Android的进程与进程之间通讯,有些不需要我们额外编写通讯代码,例如:把选择图片模块放到独立的进程,我们仍可以使用startActivityForResult方法,将选中的图片放到Bundle中,使用Intent传递即可。(看到这里,你还不打算把你项目的图片选择弄到独立进程么?)

  • 但是对于把“消息推送Service”放到独立的进程,这个业务就稍微复杂点了,这个时候可能会发生Activity跟Service传递对象,调用Service方法等一系列复杂操作。

  • 由于各个进程运行在相对独立的内存空间,所以它们是不能直接通讯的,因为程序里的变量、对象等初始化后都是具有内存地址的,举个简单的例子,读取一个变量的值,本质是找到变量的内存地址,取出存放的值。

  • 不同的进程,运行在相互独立的内存(其实就可以理解为两个不同的应用程序),显然不能直接得知对方变量、对象的内存地址,这样的话也自然不能访问对方的变量,对象等。此时两个进程进行交互,就需要使用跨进程通讯的方式去实现。简单说,跨进程通讯就是一种让进程与进程之间可以进行交互的技术。

跨进程的通讯方式有哪些

  1. 四大组件间传递Bundle;
  2. 使用文件共享方式,多进程读写一个相同的文件,获取文件内容进行交互;
  3. 使用Messenger,一种轻量级的跨进程通讯方案,底层使用AIDL实现(实现比较简单,博主开始本文前也想了一下是否要说一下这个东西,最后还是觉得没有这个必要,Google一下就能解决的问题,就不啰嗦了);
  4. 使用AIDL(Android Interface Definition Language),Android接口定义语言,用于定义跨进程通讯的接口;
  5. 使用ContentProvider,常用于多进程共享数据,比如系统的相册,音乐等,我们也可以通过ContentProvider访问到;
  6. 使用Socket传输数据。
  • 接下来本文将重点介绍使用AIDL进行多进程通讯,因为AIDL是Android提供给我们的标准跨进程通讯API,非常灵活且强大(貌似面试也经常会问到,但是真正用到的也不多…)。上面所说的Messenger也是使用AIDL实现的一种跨进程方式,Messenger顾名思义,就像是一种串行的消息机制,它是一种轻量级的IPC方案,可以在不同进程中传递Message对象,我们在Message中放入需要传递的数据即可轻松实现进程间通讯。
  • 但是当我们需要调用服务端方法,或者存在并发请求,那么Messenger就不合适了。而四大组件传递Bundle,这个就不需要解释了,把需要传递的数据,用Intent封装起来传递即可,其它方式不在本文的讨论范围。

下面开始对AIDL的讲解,各位道友准备好渡劫了吗?

使用AIDL使用一个跨进程消息推送

像图片选择这样的多进程需求,可能并不需要我们额外编写进程通讯的代码,使用四大组件传输Bundle就行了,但是像推送服务这种需求,进程与进程之间需要高度的交互,此时就绕不过进程通讯这一步了。下面我们就用即时聊天软件为例,手动去实现一个多进程的推送例子,具体需求如下:

  1. UI和消息推送的Service分两个进程;
  2. UI进程用于展示具体的消息数据,把用户发送的消息,传递到消息Service,然后发送到远程服务器;
  3. Service负责收发消息,并和远程服务器保持长连接,UI进程可通过Service发送消息到远程服务器,Service收到远程服务器消息通知UI进程;
  4. 即使UI进程退出了,Service仍需要保持运行,收取服务器消息。

实现思路

先来整理一下实现思路:

  1. 创建UI进程(下文统称为客户端);
  2. 创建消息Service(下文统称为服务端);
  3. 把服务端配置到独立的进程(AndroidManifest.xml中指定process标签);
  4. 客户端和服务端进行绑定(bindService);
  5. 让客户端和服务端具备交互的能力。(AIDL使用);

例子具体实现

为了阅读方便,下文中代码将省略非重点部分,可以把本文完整代码Clone到本地再看文章:

github.com/V1sk/AIDL

Step0. AIDL调用流程概览

开始之前,我们先来概括一下使用AIDL进行多进程调用的整个流程:

  1. 客户端使用bindService方法绑定服务端;
  2. 服务端在onBind方法返回Binder对象;
  3. 客户端拿到服务端返回的Binder对象进行跨进程方法调用;

整个AIDL调用过程概括起来就以上3个步骤,下文中我们使用上面描述的例子,来逐步分解这些步骤,并讲述其中的细节。

Step1.客户端使用bindService方法绑定服务端

1.1 创建客户端和服务端,把服务端配置到另外的进程

  1. 创建客户端 -> MainActivity;
  2. 创建服务端 -> MessageService;
  3. 把服务端配置到另外的进程 -> android:process=”:remote”

上面描述的客户端、服务端、以及把服务端配置到另外进程,体现在AndroidManifest.xml中,如下所示:

开启多进程的方法很简单,只需要给四大组件指定android:process标签。

1.2 绑定MessageService到MainActivity

创建MessageService:

此时的MessageService就是刚创建的模样,onBind中返回了null,下一步中我们将返回一个可操作的对象给客户端。

客户端MainActivity调用bindService方法绑定MessageService

这一步其实是属于Service组件相关的知识,在这里就比较简单地说一下,启动服务可以通过以下两种方式:

  1. 使用bindService方法 -> bindService(Intent service, ServiceConnection conn, int flags);
  2. 使用startService方法 -> startService(Intent service);

bindService & startService区别:使用bindService方式,多个Client可以同时bind一个Service,但是当所有Client unbind后,Service会退出,通常情况下,如果希望和Service交互,一般使用bindService方法,使用onServiceConnected中的IBinder对象可以和Service进行交互,不需要和Service交互的情况下,使用startService方法即可。

正如上面所说,我们是要和Service交互的,所以我们需要使用bindService方法,但是我们希望unbind后Service仍保持运行,这样的情况下,可以同时调用bindService和startService(比如像本例子中的消息服务,退出UI进程,Service仍需要接收到消息),代码如下:

Stpe2.服务端在onBind方法返回Binder对象

2.1 首先,什么是Binder?

要说Binder,首先要说一下IBinder这个接口,IBinder是远程对象的基础接口,轻量级的远程过程调用机制的核心部分,该接口描述了与远程对象交互的抽象协议,而Binder实现了IBinder接口,简单说,Binder就是Android SDK中内置的一个多进程通讯实现类,在使用的时候,我们不用也不要去实现IBinder,而是继承Binder这个类即可实现多进程通讯。

2.2 其次,这个需要在onBind方法返回的Binder对象从何而来?

在这里就要引出本文中的主题了——AIDL多进程中使用的Binder对象,一般通过我们定义好的 .adil 接口文件自动生成,当然你可以走野路子,直接手动编写这个跨进程通讯所需的Binder类,其本质无非就是一个继承了Binder的类,鉴于野路子走起来麻烦,而且都是重复步骤的工作,Google提供了 AIDL 接口来帮我们自动生成Binder这条正路,下文中我们围绕 AIDL 这条正路继续展开讨论(可不能把人给带偏了是吧)

[图片上传中…(image-63404a-1591606905444-27)]

2.3 定义AIDL接口

很明显,接下来我们需要搞一波上面说的Binder,让客户端可以调用到服务端的方法,而这个Binder又是通过AIDL接口自动生成,那我们就先从AIDL搞起,搞之前先看看注意事项,以免出事故:

AIDL支持的数据类型:

  • Java 编程语言中的所有基本数据类型(如 int、long、char、boolean 等等)
  • String和CharSequence
  • Parcelable:实现了Parcelable接口的对象
  • List:其中的元素需要被AIDL支持,另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口
  • Map:其中的元素需要被AIDL支持,包括 key 和 value,另一端实际接收的具体类始终是 HashMap,但生成的方法使用的是 Map 接口

其他注意事项:

  • 在AIDL中传递的对象,必须实现Parcelable序列化接口;
  • 在AIDL中传递的对象,需要在类文件相同路径下,创建同名、但是后缀为.aidl的文件,并在文件中使用parcelable关键字声明这个类;
  • 跟普通接口的区别:只能声明方法,不能声明变量;
  • 所有非基础数据类型参数都需要标出数据走向的方向标记。可以是 in、out 或 inout,基础数据类型默认只能是 in,不能是其他方向。

下面继续我们的例子,开始对AIDL的讲解~

2.4 创建一个AIDL接口,接口中提供发送消息的方法(Android Studio创建AIDL:项目右键 -> New -> AIDL -> AIDL File),代码如下:

一个比较尴尬的事情,看了很多文章,从来没有一篇能说清楚in、out、inout这三个参数方向的意义,后来在stackoverflow上找到能理解答案(stackoverflow.com/questions/4…我翻译一下大概意思:

  • 被“in”标记的参数,就是接收实际数据的参数,这个跟我们普通参数传递一样的含义。在AIDL中,“out” 指定了一个仅用于输出的参数,换而言之,这个参数不关心调用方传递了什么数据过来,但是这个参数的值可以在方法被调用后填充(无论调用方传递了什么值过来,在方法执行的时候,这个参数的初始值总是空的),这就是“out”的含义,仅用于输出。
  • 而“inout”显然就是“in”和“out”的合体了,输入和输出的参数。区分“in”、“out”有什么用?这是非常重要的,因为每个参数的内容必须编组(序列化,传输,接收和反序列化)。in/out标签允许Binder跳过编组步骤以获得更好的性能。

上述的MessageModel为消息的实体类,该类在AIDL中传递,实现了Parcelable序列化接口,代码如下:

手动实现Parcelable接口比较麻烦,安利一款AS自动生成插件android-parcelable-intellij-plugin创建完MessageModel这个实体类,别忘了还有一件事要做:”在AIDL中传递的对象,需要在类文件相同路径下,创建同名、但是后缀为.aidl的文件,并在文件中使用parcelable关键字声明这个类“。代码如下:

对于没有接触过aidl的同学,光说就能让人懵逼,来看看此时的项目结构压压惊:

我们刚刚新增的3个文件:

  • MessageSender.aidl -> 定义了发送消息的方法,会自动生成名为MessageSender.Stub的Binder类,在服务端实现,返回给客户端调用
  • MessageModel.java -> 消息实体类,由客户端传递到服务端,实现了Parcelable序列化
  • MessageModel.aidl -> 声明了MessageModel可在AIDL中传递,放在跟MessageModel.java相同的包路径下

OK,相信此时懵逼已解除~

2.5 在服务端创建MessageSender.aidl这个AIDL接口自动生成的Binder对象,并返回给客户端调用,服务端MessageService代码如下:

[图片上传中…(image-692e97-1591606905443-21)]

MessageSender.Stub是Android Studio根据我们MessageSender.aidl文件自动生成的Binder对象(至于是怎样生成的,下文会有答案),我们需要把这个Binder对象返回给客户端。

2.6 客户端拿到Binder对象后调用远程方法

调用步骤如下:

  1. 在客户端的onServiceConnected方法中,拿到服务端返回的Binder对象;
  2. 使用MessageSender.Stub.asInterface方法,取得MessageSender.aidl对应的操作接口;
  3. 取得MessageSender对象后,像普通接口一样调用方法即可。

此时客户端代码如下:

在客户端中我们调用了MessageSender的sendMessage方法,向服务端发送了一条消息,并把生成的MessageModel对象作为参数传递到了服务端,最终服务端打印的结果如下:

这里有两点要说:

  1. 服务端已经接收到客户端发送过来的消息,并正确打印;
  2. 服务端和客户端区分两个进程,PID不一样,进程名也不一样;

到这里,我们已经完成了最基本的使用AIDL进行跨进程方法调用,也是Step.0的整个细化过程,可以再回顾一下Step.0,既然已经学会使用了,接下来…全剧终。。。

如果写到这里全剧终,那跟咸鱼有什么区别…

知其然,知其所以然

我们通过上述的调用流程,看看从客户端到服务端,都经历了些什么事,看看Binder的上层是如何工作的,至于Binder的底层,这是一个非常复杂的话题,本文不深究。(如果看到这里你又想问什么是Binder的话,请手动倒带往上看…)

我们先来回顾一下从客户端发起的调用流程:

  1. MessageSender messageSender = MessageSender.Stub.asInterface(service);
  2. messageSender.sendMessage(messageModel);

抛开其它无关代码,客户端调跨进程方法就这两个步骤,而这两个步骤都封装在 MessageSender.aidl 最终生成的 MessageSender.java 源码(具体路径为:build目录下某个子目录,自己找,不爽你来打我啊 )

请看下方代码和注释,前方高能预警…

只看代码的话,可能会有点懵逼,相信结合代码再看下方的流程图会更好理解:

从客户端的sendMessage开始,整个AIDL的调用过程如上图所示,asInterface方法,将会判断onBind方法返回的Binder是否存处于同一进程,在同一进程中,则进行常规的方法调用,若处于不同进程,整个数据传递的过程则需要通过Binder底层去进行编组(序列化,传输,接收和反序列化),得到最终的数据后再进行常规的方法调用。

敲黑板:对象跨进程传输的本质就是 序列化,传输,接收和反序列化 这样一个过程,这也是为什么跨进程传输的对象必须实现Parcelable接口

跨进程的回调接口

在上面我们已经实现了从客户端发送消息到跨进程服务端的功能,接下来我们还需要将服务端接收到的远程服务器消息,传递到客户端。有同学估计会说:“这不就是一个回调接口的事情嘛”,设置回调接口思路是对的,但是在这里使用的回调接口有点不一样,在AIDL中传递的接口,不能是普通的接口,只能是AIDL接口,所以我们需要新建一个AIDL接口传到服务端,作为回调接口。

新建消息收取的AIDL接口MessageReceiver.aidl:

接下来我们把回调接口注册到服务端去,修改我们的MessageSender.aidl:

以上就是我们最终修改好的aidl接口,接下来我们需要做出对应的变更:

  1. 在服务端中增加MessageSender的注册和反注册接口的方法;
  2. 在客户端中实现MessageReceiver接口,并通过MessageSender注册到服务端。

客户端变更,修改MainActivity:

客户端主要有3个变更:

  1. 增加了messageReceiver对象,用于监听服务端的消息通知;
  2. onServiceConnected方法中,把messageReceiver注册到Service中去;
  3. onDestroy时候解除messageReceiver的注册。

下面对服务端MessageServie进行变更:

服务端主要变更:

  1. MessageSender.Stub实现了注册和反注册回调接口的方法;
  2. 增加了RemoteCallbackList来管理AIDL远程接口;
  3. FakeTCPTask模拟了长连接通知客户端有新消息到达。(这里的长连接可以是XMPP,Mina,Mars,Netty等,这里弄个假的意思意思,有时间的话咱开个帖子聊聊XMPP)
  • 这里还有一个需要讲一下的,就是RemoteCallbackList,为什么要用RemoteCallbackList,普通ArrayList不行吗?当然不行,不然干嘛又整一个RemoteCallbackList ,registerReceiveListener 和 unregisterReceiveListener在客户端传输过来的对象,经过Binder处理,在服务端接收到的时候其实是一个新的对象,这样导致在 unregisterReceiveListener 的时候,普通的ArrayList是无法找到在 registerReceiveListener 时候添加到List的那个对象的,但是它们底层使用的Binder对象是同一个,RemoteCallbackList利用这个特性做到了可以找到同一个对象,这样我们就可以顺利反注册客户端传递过来的接口对象了。

  • RemoteCallbackList在客户端进程终止后,它能自动移除客户端所注册的listener,它内部还实现了线程同步,所以我们在注册和反注册都不需要考虑线程同步,的确是个666的类。(至于使用ArrayList的幺蛾子现象,大家可以自己试试,篇幅问题,这里就不演示了)

到此,服务端通知客户端相关的代码也写完了,运行结果无非就是正确打印就不贴图了,可以自己Run一下,打印的时候注意去选择不同的进程,不然瞪坏屏幕也没有日志。

DeathRecipient

你以为这样就完了?too young too simple…

不知道你有没有感觉到,两个进程交互总是觉得缺乏那么一点安全感…比如说服务端进程Crash了,而客户端进程想要调用服务端方法,这样就调用不到了。此时我们可以给Binder设置一个DeathRecipient对象,当Binder意外挂了的时候,我们可以在DeathRecipient接口的回调方法中收到通知,并作出相应的操作,比如重连服务等等。

DeathRecipient的使用如下:

  1. 声明DeathRecipient对象,实现其binderDied方法,当binder死亡时,会回调binderDied方法;
  2. 给Binder对象设置DeathRecipient对象。

在客户端MainActivity声明DeathRecipient:

Binder中两个重要方法:

  1. linkToDeath -> 设置死亡代理 DeathRecipient 对象;
  2. unlinkToDeath -> Binder死亡的情况下,解除该代理。

此外,Binder中的isBinderAlive也可以判断Binder是否死亡

权限验证

就算是公交车,上车也得嘀卡对不,如果希望我们的服务进程不想像公交车一样谁想上就上,那么我们可以加入权限验证。

介绍两种常用验证方法:

  1. 在服务端的onBind中校验自定义permission,如果通过了我们的校验,正常返回Binder对象,校验不通过返回null,返回null的情况下客户端无法绑定到我们的服务;
  2. 在服务端的onTransact方法校验客户端包名,不通过校验直接return false,校验通过执行正常的流程。

自定义permission,在Androidmanifest.xml中增加自定义的权限:

服务端检查权限的方法:

根据不同进程,做不同的初始化工作

相信前一两年很多朋友还在使用Android-Universal-Image-Loader来加载图片,它是需要在Application类进行初始化的。打个比如,我们用它来加载图片,而且还有一个图片选择进程,那么我们希望分配更多的缓存给图片选择进程,又或者是一些其他的初始化工作,不需要在图片选择进程初始化怎么办?

这里提供一个简单粗暴的方法,博主也是这么干的…直接拿到进程名判断,作出相应操作即可:

每个进程创建,都会调用Application的onCreate方法,这是一个需要注意的地方,我们也可以根据当前进程的pid,拿到当前进程的名字去做判断,然后做一些我们需要的逻辑,我们这个例子,拿到的两个进程名分别是:

  1. **客户端进程:**com.example.aidl
  2. 服务端进程:com.example.aidl:remote

总结

  1. 多进程app可以在系统中申请多份内存,但应合理使用,建议把一些高消耗但不常用的模块放到独立的进程,不使用的进程可及时手动关闭;
  2. 实现多进程的方式有多种:四大组件传递Bundle、Messenger、AIDL等,选择适合自己的使用场景;
  3. Android中实现多进程通讯,建议使用系统提供的Binder类,该类已经实现了多进程通讯而不需要我们做底层工作;
  4. 多进程应用,Application将会被创建多次;

结语

这篇文章断断续续写了很久,而且我相信真正使用起来的同学可能不多,选择这样一个话题我是吃力不讨好… 但是我还是希望可以在这里提供一个完整的解决方案给大家。简单的多进程使用,而且效果显著的,比如把图片选择和WebView配置到独立的进程,这个我希望可以大家行动起来。这篇文章的知识点非常多,理解起来可能不是太容易,如果有兴趣,我建议你手动去写一下,然后不理解的地方,打断点看看是什么样的运行步骤。

对于面试的同学,如果在面试过程中说到多进程,跟面试官聊得开,估计也是能加点分的,或者在实际工作中,一些使用多进程可以更好地解决问题的地方,你可以在会议中拍桌猛起,跟主管说:“我有一个大胆的想法…”,这样装逼也不错(当然,被炒了的话就不关我的事了…)

文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞转发关注哦。文章会持续更新的。绝对干货!!!


Android高级教程+BAT面试题集+学习心得;https://shimo.im/docs/Gg6hJ3tGhqkYghqP

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

相关文章

  1. 全国计算机信息高新技术和全国计算机等级考试区别

    全国计算机信息高新技术和全国计算机等级考试都是对计算机使用等级的评测考试zhi,但是在发证和考试内容方dao面有所区别,它们的区别为:1、全国高新技术办公操作员,通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力;而全国计算机等级考试是用于考查应…...

    2024/4/27 22:48:08
  2. 太详细了!终于有人把Netty原理架构讲解清楚了

    本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。JDK 原生 NIO 程序的问题…...

    2024/4/24 12:07:04
  3. Iview,table,Select表格动态新增,选择框远程搜索,输入内容后才调用接口

    1.应用场景:在一个表单中,放了一个动态新增的表格,即一个表单对应多条表格中的数据。这个表格是动态新增的,用户可以新增多条。表格的其中的一个内容是下拉选择框,选项也是动态的,来自其他的表单保存后产生的内容,需要调用查询接口,返回数据当做选项。原先我是在用户登…...

    2024/4/27 23:39:47
  4. 项目初期如何确定美术规范

    1)项目初期如何确定美术规范 2)Addressable Assets遇上Post Processing的问题 3)VideoPlayer使用Addressable加载异常 4)UGUI Image如何设置颜色更为高效 5)PBR材质在Editor和手机中表现的效果不一致这是第206篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发…...

    2024/4/24 12:07:02
  5. 注释注释注释

    @Override public int save(Connection conn, Book book) throws SQLException { // TODO Auto-generated method stub String sql = “INSERT INTO b_book(bookName,author,sex,price,bookTypeId,bookDesc) VALUES(?,?,?,?,?,?)”; PreparedStatement ps = conn.prepare…...

    2024/4/24 12:07:04
  6. 代码中超魔性图片注释

    代码中超魔性图片注释马儿_(\_/) ,((((^`\(((( (6 \ ,((((( , \,,,_ ,((((( /"._ ,`,((((\\ ,... ,(((( / `-.-))) ; `""""(((( ( ((( / ((( \)) | |(( | .…...

    2024/4/24 12:06:56
  7. (阿里offer)春招知识点总结1:java基础+集合+并发+jvm+ssm

    写在前面:大量总结不是系统的总结,而是作者本人根据自己情况总结的,许多我很清楚的地方就不在提及,大量源码也均未提及,尤其是框架的总结提及很浅。仅作为自己短期技术栈的一个总结,只作为参考,不是一定正确的理论知识点。 文章目录java基础面向对象及三大特性多态的实现…...

    2024/4/25 22:40:32
  8. B1035 插入与归并思路(代码+详解)

    题目思路: 乙级的题目不会直接考数据结构,对于几种排序算法也不会直接让你求。 本题考的插入和归并排序,其实不用完全掌握并写出代码也能做(能掌握当然好了)。只要理解了插入排序和归并排序的思路即可。 不行,还是得会,不然求不了归并的下一轮。 插入排序:将数组的第一…...

    2024/4/24 12:06:55
  9. 计算机网络复习

    标准化工作标准的分类:法定标准:权威机构指定的整数的、合法的标准 OSI事实标准:某些公司的产品在竞争中占据了主流,时间长了 ,这些产品中的协议和技术就成了标准 TCP/IPRFC(Request For Comments):因特网标准的形式RFC要上升为因特网正式标准的四个阶段:因特网草案:这…...

    2024/4/24 12:06:53
  10. 使用navicat给mysql数据库导入sql文件

    1.选中连接,右键新建数据库 2.填写数据库名cms,其它都可以不填,点击确定 3. 双击打开数据库,右键选择运行sql文件4.选择桌面的sql文件并点击开始 5.执行成功,点击关闭 6.右键刷新数据库的表,或者直接按键盘F5刷新7.表格出现,导入成功...

    2024/4/24 12:06:55
  11. for语句新特性

    文章目录1 范围for语句 1 范围for语句 范围for语句用于遍历一个序列,直接看如下代码:int v[]{ 1, 2, 3, 4, 5, 6, 7 };for (auto val : v) // 数组v中的每个元素会被一次拷贝到变量val中{cout << val << " : " << &val << endl;}cout…...

    2024/4/27 16:07:51
  12. leetcode(1431) 拥有最多糖果的孩子

    方法一: 利用max_element()函数: class Solution { public:vector<bool> kidsWithCandies(vector<int>& candies, int extraCandies) {int l=candies.size();vector<bool> ans(l,true);int max_ele=*max_element(candies.begin(), candies.end());for(…...

    2024/4/15 4:45:09
  13. 解决银河麒麟kylin.desktop-generic编译生成的程序执行报错“权限不够”

    问题复现编写一个简单的a.c程序#include <stdio.h>void main(){printf("zzz\n"); }编译该程序,生成a.out可执行程序greatwall@greatwall-KVM-Virtual-Machine:~/cproj$ gcc a.c greatwall@greatwall-KVM-Virtual-Machine:~/cproj$ ll 总用量 24 drwxrwxr-x …...

    2024/4/18 19:07:32
  14. 为什么线程协作的 wait() 方法需要写在循环里,你有想过吗?

    问:为什么是 while 而不是 if ?大多数人都知道常见的使用 synchronized 代码:那么问题是为啥这里是 while 而不是 if 呢?这个问题我最开始也想了很久,按理来说已经在 synchronized 块里面了嘛,就不需要了。这个也是我前面一直是这么认为的,直到最近看了一个 Stackoverfl…...

    2024/4/15 4:45:07
  15. Vue—使用的注意项

    Vue—使用的注意项 1、vue文件一般放在html标签之后,因为vue实例需要绑定在html标签上,所以需要先加载html元素 2 传递参数时,第二个参数要与前面的逗号有一个空格 window.localStorage.setItem(STORAGE_KEY, JSON.stringify(items))3、Vue的生命周期:beforeCreate(创建前…...

    2024/4/15 4:45:06
  16. 在vs2015下配置和使用 cppunit v1.21.1

    原文地址https://www.cnblogs.com/wstong/p/12924295.html目录第一步第二步第三步编译生成lib库使用calculator类测试代码部分第一步下载源代码 http://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/cppunit-1.12.1.tar.gz/download第二步解压下载的文件,并进入到s…...

    2024/4/27 21:18:27
  17. 解决MATLAB遇到内部问题,需要关闭

    运行matlab程序时,提示“MATLAB遇到内部问题,需要关闭”,查看错误详情为:Disabled - No sandbox or build area path解决办法:更新显卡驱动 步骤如下: 1、下载安装"驱动人生”,官网:https://www.160.com 2、运行“驱动人生”,选择“驱动管理”,进行扫描。 3、扫面…...

    2024/4/15 4:45:04
  18. vue动态双向绑定数据原理

    //检测对象的变化。var input = document.getElementById(input);var view = document.getElementById(view);var data = {valueObj :{value:zwq}}//当输入框数据发生改变时,数据跟着改变input.oninput = function(){data.valueObj.value = this.value;}// 更新视图function u…...

    2024/4/27 1:42:36
  19. ADB获取手机基础数据信息

    在之前的文章https://blog.csdn.net/u013379032/article/details/106568983 上简单地对PerfDog的使用方式进行了介绍,该工具对应用并没有多大的要求,因此估摸着大多数的应用都是通过ADB指令集进行获取的。整合了一下相关的经验。首先,对于通过ADB连接到电脑上的设备,我们可…...

    2024/4/18 22:53:44
  20. 动态数组-----循环队列的实现

    队列优化ArrayLoopQueue类 package shixianClass;import shujujiegou_interface.Queue;import java.util.Arrays; import java.util.Iterator;public class ArrayLoopQueue<E> implements Queue<E> {//存储元素的容器private E[] data;//队首指针frontprivate int …...

    2024/4/24 12:06:57

最新文章

  1. SpringBoot引入Layui样式总是出现404

    一般出现Layui样式文件如css&#xff0c;js404的错误 解决方案 &#xff08;1&#xff09;首先将其中的静态资源下载resources/static中 &#xff08;2&#xff09;在启动类中重写方法 package com.gq.booksystem;import org.mybatis.spring.annotation.MapperScan; import …...

    2024/4/28 1:44:21
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. java的gradle,maven工程中使用selenium

    一、下载selenium库 &#xff08;1&#xff09;gradle工程 工程中会有一个build.gradle.kts的文件&#xff0c;这个文件可以定制 Gradle 的行为 在文件中添加下面代码&#xff0c;然后sync // implementation ("org.seleniumhq.selenium:selenium-java:4.19.1") …...

    2024/4/24 9:20:47
  4. Android Framework学习笔记(2)----系统启动

    Android系统的启动流程 启动过程中&#xff0c;用户可控部分是framework的init流程。init是系统中的第一个进程&#xff0c;其它进程都是它的子进程。 启动逻辑源码参照&#xff1a;system/core/init/main.cpp 关键调用顺序&#xff1a;main->FirstStageMain->SetupSel…...

    2024/4/26 21:26:41
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

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

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

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

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

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

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

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

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

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

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,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
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  44. 如何在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