消息发送流程

在这里插入图片描述

DefaultMQProducer-发送入口

消息发送的入口在DefaultMQProducer类中的send方法。这个方法有很多重载方法,对应的方法参数也各不一样。

SendResult send(Message msg);
SendResult send(Message msg,long timeout);
SendResult send(Message msg,SendCallback sendCallback,long timeout);
SendResult send(Message msg, MessageQueue mq, SendCallback sendCallback, long timeout);
SendResult send(Message msg,MessageQueueSelector selector, Object arg,SendCallback sendCallback,long timeout);......省略更多

重点参数说明一下:

参数类型说明
msgMessage消息对象
mqMessageQueue目标消息队列,通过它获得要传递消息到指定的消息队列
sendCallbackSendCallback异步模式在发送完成(成功或不成功)时的回调
selectorMessageQueueSelector消息队列选择器
argObject该参数与消息队列选择器配合使用
timeoutlong发送超时时间

DefaultMQProduceImpl-消息发送实现类

send 方法对应的实现直接委托给DefaultMQProduceImpl来实现具体细节。具体有两种默认的发送消息的实现,一个是同步发送,一个是异步发送。两者区别很简单,异步相对于同步方法来说多了一个自定义回调SendCallback实现。看一下两者的对比如下:

    /*** DEFAULT SYNC*/public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException, InterruptedException {return send(msg, this.defaultMQProducer.getSendMsgTimeout());}/*** DEFAULT ASYNC*/public void send(Message msg,SendCallback sendCallback) throws MQClientException, RemotingException, InterruptedException {send(msg, sendCallback, this.defaultMQProducer.getSendMsgTimeout());}

上面两个方法调用的底层都是一个,即sendDefaultImpl。重点参数说明一下。

参数类型说明
msgMessage消息对象
communicationModemqCommunicationMode通信方式,同步或者异步
sendCallbackSendCallback异步模式在发送完成(成功或不成功)时的回调
timeoutlong发送超时时间

sendDefaultImpl-发送消息底层方法

private SendResult sendDefaultImpl(Message msg,final CommunicationMode communicationMode,final SendCallback sendCallback,final long timeout) {//确认Producer客户端状态是否ok-(ServieceState.RUNNING)this.makeSureStateOK();/*** 消息校验,包含消息的topic校验和消息体的校验。*  topic校验包含以下几点,topic的名字,长度以及是否为不准用的topic(SCHEDULE_TOPIC_XXXX)*  消息体校验 消息体是不是空和消息体的长度*/ Validators.checkMessage(msg, this.defaultMQProducer);//本次调用的idfinal long invokeID = random.nextLong();//本地调用开始时间long beginTimestampFirst = System.currentTimeMillis();long beginTimestampPrev = beginTimestampFirst;long endTimestamp = beginTimestampFirst;/*** 尝试去查找Topic的订阅信息* 1.从topicPublishInfoTable缓存中查找* 2.如果缓存为空,则从nameserver拉取配置*/TopicPublishInfo topicPublishInfo = this.tryToFindTopicPublishInfo(msg.getTopic());if (topicPublishInfo != null && topicPublishInfo.ok()) {boolean callTimeout = false;MessageQueue mq = null;Exception exception = null;SendResult sendResult = null;//若通信模式为同步模式,则失败重试次数=3次(默认2次+1)。若为异步模式则为1次int timesTotal = communicationMode == CommunicationMode.SYNC? 1 + this.defaultMQProducer.getRetryTimesWhenSendFailed() : 1;int times = 0;//记录每一次重试时候发送消息目标Broker名字的数组String[] brokersSent = new String[timesTotal];//进行重试次数循环发送消息逻辑for (; times < timesTotal; times++) {//获取broker名字,第一次为null,第二次为上次选择的broker名字String lastBrokerName = null == mq ? null : mq.getBrokerName();//根据Topic订阅信息+上一次broker名字选择一个消息队列// 有失败重试策略,默认使用 RoundRobin 算法,可以通过 DefaultMQProducer#setSendLatencyFaultEnable 设置启用 LatencyFault 策略MessageQueue mqSelected = this.selectOneMessageQueue(topicPublishInfo, lastBrokerName);//如果队列不为空if (mqSelected != null) {mq = mqSelected;//将本次选中的消息队列的broker名字添加到数组中brokersSent[times] = mq.getBrokerName();//重新赋值调用开始时间beginTimestampPrev = System.currentTimeMillis();if (times > 0) {//Reset topic with namespace during resend.msg.setTopic(this.defaultMQProducer.withNamespace(msg.getTopic()));}//发送消息的花费时间long costTime = beginTimestampPrev - beginTimestampFirst;//如果设置的超时时间小于花费时间,则进行超时标记,并break中断,超时时间默认是3000毫秒if (timeout < costTime) {callTimeout = true;break;}//发送消息到选中的队列中sendResult = this.sendKernelImpl(msg, mq, communicationMode, sendCallback, topicPublishInfo,timeout - costTime);endTimestamp = System.currentTimeMillis();// 当设置启用 LatencyFault 策略时,更新 FaultItem//根据发送所耗费的时间决定是不是要将该broker加入到故障列表中  this.updateFaultItem(mq.getBrokerName(), endTimestamp - beginTimestampPrev, false);//如果是SYNC同步模式下发送失败可进行重试,ASYNC/ONEWAY模式下直接返回nullswitch (communicationMode) {case ASYNC:return null;case ONEWAY:return null;case SYNC:if (sendResult.getSendStatus() != SendStatus.SEND_OK) {if (this.defaultMQProducer.isRetryAnotherBrokerWhenNotStoreOK()) {continue;}}return sendResult;default:break;}} else {break;}}if (sendResult != null) {return sendResult;}String info = String.format("Send [%d] times, still failed, cost [%d]ms, Topic: %s, BrokersSent: %s",times,System.currentTimeMillis() - beginTimestampFirst,msg.getTopic(),Arrays.toString(brokersSent));info += FAQUrl.suggestTodo(FAQUrl.SEND_MSG_FAILED);MQClientException mqClientException = new MQClientException(info, exception);if (callTimeout) {throw new RemotingTooMuchRequestException("sendDefaultImpl call timeout");}}validateNameServerSetting();}

这里对整个方法的逻辑步骤进行一个梳理:

  1. 检查Producer客户端状态是否是运行状态,校验消息的合法性,生成全局调用id(用于打日志)和相关的时间戳。
  2. 根据消息的Topic获取对应的消息订阅信息,获取逻辑在tryToFindTopicPublishInfo,这里会从缓存map里获取,如果没有则回去namerServer拉取相应的订阅信息。稍后也会对该方法进行分析。
  3. 根据不同的消息发送模式,计算消息失败重试的次数(同步模式是2+1,异步模式是1次,客户端默认为retryTimesWhenSendFailed=2
  4. 根据选择的brokerName,选择一个消息队列MessageQueue。这里选择队列的方法是selectOneMessageQueue,稍后进行分析。
  5. 选择好队列之后,记录对应的brokerName,对重试次数范围内以及发送超时时间之内进行进行消息发送,发送的逻辑在sendKernelImpl
  6. 发送之后进行容错策略的更新,更新逻辑在updateFaultItem,之后进行分析。
  7. 根据不同的消息通信模式进行处理,只有同步模式有处理逻辑,在同步逻辑发送失败的时候如果开启了retryAnotherBrokerWhenNotStoreOK(失败重试发送到另外的broker),则进行重试。这里的重试还是跟上面的重试有区别的,这里是调用内部发送实现并且有返回SendResult的情况,但是发送结果不是成功。

下面针对上述重要步骤的重要逻辑分别进行分析

1.尝试去查找Topic订阅信息tryToFindTopicPublishInfo

	//Topic订阅信息缓存Mapprivate final ConcurrentMap<String/* topic */, TopicPublishInfo> topicPublishInfoTable =new ConcurrentHashMap<String, TopicPublishInfo>();private TopicPublishInfo tryToFindTopicPublishInfo(final String topic) {//从Topic缓存Map中根据topic获取相应的订阅信息TopicPublishInfo topicPublishInfo = this.topicPublishInfoTable.get(topic);//如果缓存为空或者订阅信息messageQueueList为空if (null == topicPublishInfo || !topicPublishInfo.ok()) {//创建一个TopicPublishInfo放入缓存中this.topicPublishInfoTable.putIfAbsent(topic, new TopicPublishInfo());//根据topic从nameServer拉取最新的topic路由信息,并更新缓存this.mQClientFactory.updateTopicRouteInfoFromNameServer(topic);//从缓存中获取订阅信息topicPublishInfo = this.topicPublishInfoTable.get(topic);}//如果topic订阅信息包含路由信息并且messageQueueList不为空,则直接返回if (topicPublishInfo.isHaveTopicRouterInfo() || topicPublishInfo.ok()) {return topicPublishInfo;} else {//重新从nameServer拉取最新的topic路由信息,并直接返回this.mQClientFactory.updateTopicRouteInfoFromNameServer(topic, true, this.defaultMQProducer);topicPublishInfo = this.topicPublishInfoTable.get(topic);return topicPublishInfo;}}

方法中关于updateTopicRouteInfoFromNameServer方法解析可以参考我上一篇的文章()。

2.选择消息队列selectOneMessageQueue

该方法设计延迟故障的逻辑,下一篇进行详细分析,逻辑简单过一下。

    public MessageQueue selectOneMessageQueue(final TopicPublishInfo tpInfo, final String lastBrokerName) {//调用mq故障策略的selectOneMessageQueuereturn this.mqFaultStrategy.selectOneMessageQueue(tpInfo, lastBrokerName);}public MessageQueue selectOneMessageQueue(final TopicPublishInfo tpInfo, final String lastBrokerName) {//省略延迟故障的逻辑return tpInfo.selectOneMessageQueue(lastBrokerName);}public MessageQueue selectOneMessageQueue(final String lastBrokerName) {//如果lastBrokerName为空,说明第一次正常发送if (lastBrokerName == null) {return selectOneMessageQueue();} else {//如果lastBrokerName不为空,说明进行了重试for (int i = 0; i < this.messageQueueList.size(); i++) {//获取一个队列(brokerName!=lastBrokerName)的消息队列int index = this.sendWhichQueue.incrementAndGet();int pos = Math.abs(index) % this.messageQueueList.size();if (pos < 0)pos = 0;MessageQueue mq = this.messageQueueList.get(pos);if (!mq.getBrokerName().equals(lastBrokerName)) {return mq;}}//如果还没有获取到消息对接,则再进行一次选择return selectOneMessageQueue();}}public MessageQueue selectOneMessageQueue() {//获取一个随机数,并进行取模int index = this.sendWhichQueue.incrementAndGet();int pos = Math.abs(index) % this.messageQueueList.size();if (pos < 0)pos = 0;//获取MessageQueuereturn this.messageQueueList.get(pos);}

3.发送消息准备工作sendKernelImpl

sendKernelImpl方法内主要是构建发送网络请求的请求头和一些钩子方法。

    private SendResult sendKernelImpl(final Message msg,final MessageQueue mq,final CommunicationMode communicationMode,final SendCallback sendCallback,final TopicPublishInfo topicPublishInfo,final long timeout)  {long beginStartTime = System.currentTimeMillis();//根据brokerName从broker集群信息brokerAddrTable缓存中获取brokerId=0的地址String brokerAddr = this.mQClientFactory.findBrokerAddressInPublish(mq.getBrokerName());//如果缓存不存在if (null == brokerAddr) {//尝试去从nameServer拉取配置,更新brokerAddrTable缓存Map,并返回地址tryToFindTopicPublishInfo(mq.getTopic());brokerAddr = this.mQClientFactory.findBrokerAddressInPublish(mq.getBrokerName());}SendMessageContext context = null;if (brokerAddr != null) {//是否使用vip端口brokerAddr = MixAll.brokerVIPChannel(this.defaultMQProducer.isSendMessageWithVIPChannel(), brokerAddr);//消息内容byte[] prevBody = msg.getBody();try {//for MessageBatch,ID has been set in the generating process//MessageBatch批量消息生成时已经设置uniqId,如果是单个消息,则再生成一次if (!(msg instanceof MessageBatch)) {MessageClientIDSetter.setUniqID(msg);}boolean topicWithNamespace = false;//获取clientConfig的nameSpace信息if (null != this.mQClientFactory.getClientConfig().getNamespace()) {msg.setInstanceId(this.mQClientFactory.getClientConfig().getNamespace());topicWithNamespace = true;}//消息标识int sysFlag = 0;boolean msgBodyCompressed = false;//尝试对消息进行压缩,批量消息不支持压缩if (this.tryToCompressMessage(msg)) {sysFlag |= MessageSysFlag.COMPRESSED_FLAG;msgBodyCompressed = true;}//获取消息的失误属性final String tranMsg = msg.getProperty(MessageConst.PROPERTY_TRANSACTION_PREPARED);//如果是事务消息,则添加标记if (tranMsg != null && Boolean.parseBoolean(tranMsg)) {sysFlag |= MessageSysFlag.TRANSACTION_PREPARED_TYPE;}//钩子方法调用if (hasCheckForbiddenHook()) {//......省略准备逻辑this.executeCheckForbiddenHook(checkForbiddenContext);}if (this.hasSendMessageHook()) {//......省略准备逻辑this.executeSendMessageHookBefore(context);}//构建发送消息请求投SendMessageRequestHeader requestHeader = new SendMessageRequestHeader();requestHeader.setProducerGroup(this.defaultMQProducer.getProducerGroup());requestHeader.setTopic(msg.getTopic());requestHeader.setDefaultTopic(this.defaultMQProducer.getCreateTopicKey());requestHeader.setDefaultTopicQueueNums(this.defaultMQProducer.getDefaultTopicQueueNums());requestHeader.setQueueId(mq.getQueueId());requestHeader.setSysFlag(sysFlag);requestHeader.setBornTimestamp(System.currentTimeMillis());requestHeader.setFlag(msg.getFlag());requestHeader.setProperties(MessageDecoder.messageProperties2String(msg.getProperties()));requestHeader.setReconsumeTimes(0);requestHeader.setUnitMode(this.isUnitMode());requestHeader.setBatch(msg instanceof MessageBatch);//如果消息是重试消息if (requestHeader.getTopic().startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX)) {//获取消息重新消费次数String reconsumeTimes = MessageAccessor.getReconsumeTime(msg);if (reconsumeTimes != null) {//将重新消费次数set到请求头中requestHeader.setReconsumeTimes(Integer.valueOf(reconsumeTimes));MessageAccessor.clearProperty(msg, MessageConst.PROPERTY_RECONSUME_TIME);}//获取消息的最大重试次数String maxReconsumeTimes = MessageAccessor.getMaxReconsumeTimes(msg);if (maxReconsumeTimes != null) {// 将重试次数set到请求头中,并清空属性requestHeader.setMaxReconsumeTimes(Integer.valueOf(maxReconsumeTimes));MessageAccessor.clearProperty(msg, MessageConst.PROPERTY_MAX_RECONSUME_TIMES);}}SendResult sendResult = null;//消息通信模式,同步模式/异步模式/onewayswitch (communicationMode) {//异步模式case ASYNC:Message tmpMessage = msg;boolean messageCloned = false;if (msgBodyCompressed) {tmpMessage = MessageAccessor.cloneMessage(msg);messageCloned = true;msg.setBody(prevBody);}if (topicWithNamespace) {if (!messageCloned) {tmpMessage = MessageAccessor.cloneMessage(msg);messageCloned = true;}msg.setTopic(NamespaceUtil.withoutNamespace(msg.getTopic(), this.defaultMQProducer.getNamespace()));}long costTimeAsync = System.currentTimeMillis() - beginStartTime;if (timeout < costTimeAsync) {throw new RemotingTooMuchRequestException("sendKernelImpl call timeout");}//异步的方式发送消息sendResult = this.mQClientFactory.getMQClientAPIImpl().sendMessage(brokerAddr,mq.getBrokerName(),tmpMessage,requestHeader,timeout - costTimeAsync,communicationMode,sendCallback,topicPublishInfo,this.mQClientFactory,this.defaultMQProducer.getRetryTimesWhenSendAsyncFailed(),context,this);break;case ONEWAY:case SYNC:long costTimeSync = System.currentTimeMillis() - beginStartTime;if (timeout < costTimeSync) {throw new RemotingTooMuchRequestException("sendKernelImpl call timeout");}//同步的方式发送消息sendResult = this.mQClientFactory.getMQClientAPIImpl().sendMessage(brokerAddr,mq.getBrokerName(),msg,requestHeader,timeout - costTimeSync,communicationMode,context,this);break;default:assert false;break;}//如果有发送消息的钩子,则进行调用if (this.hasSendMessageHook()) {context.setSendResult(sendResult);this.executeSendMessageHookAfter(context);}return sendResult;} finally {msg.setBody(prevBody);msg.setTopic(NamespaceUtil.withoutNamespace(msg.getTopic(), this.defaultMQProducer.getNamespace()));}}throw new MQClientException("The broker[" + mq.getBrokerName() + "] not exist", null);}

4.发送消息MQClientAPIImpl#sendMessage

发送消息的逻辑最后是通过MQClientAPIImpl来实现的,这个类之前在将MQClientInstance启动时创建。这个类是MQ内部一些操作的api的实现,包括发送,消费消息和admin控制台的一些操作指令的实现,以及一些网络请求的处理。直接看最终实现逻辑。

    public SendResult sendMessage(final String addr,final String brokerName,final Message msg,final SendMessageRequestHeader requestHeader,final long timeoutMillis,final CommunicationMode communicationMode,final SendCallback sendCallback,final TopicPublishInfo topicPublishInfo,final MQClientInstance instance,final int retryTimesWhenSendFailed,final SendMessageContext context,final DefaultMQProducerImpl producer) throws RemotingException, MQBrokerException, InterruptedException {long beginStartTime = System.currentTimeMillis();//根据消息的类型和模式选择不同的请求code,然后封装到RemotingCommandRemotingCommand request = null;//获取消息的类型String msgType = msg.getProperty(MessageConst.PROPERTY_MESSAGE_TYPE);//是否为reply消息boolean isReply = msgType != null && msgType.equals(MixAll.REPLY_MESSAGE_FLAG);if (isReply) {if (sendSmartMsg) { SendMessageRequestHeaderV2 requestHeaderV2 = SendMessageRequestHeaderV2.createSendMessageRequestHeaderV2(requestHeader);request = RemotingCommand.createRequestCommand(RequestCode.SEND_REPLY_MESSAGE_V2, requestHeaderV2);} else {request = RemotingCommand.createRequestCommand(RequestCode.SEND_REPLY_MESSAGE, requestHeader);}} else {if (sendSmartMsg || msg instanceof MessageBatch) {// 该类的 field 全为 a,b,c,d 等,可以加速 FastJson 反序列化SendMessageRequestHeaderV2 requestHeaderV2 = SendMessageRequestHeaderV2.createSendMessageRequestHeaderV2(requestHeader);// 根据 request code 创建 RPC 请求对象// 该设计是通过类型码的形式,来标识不同类型的请求request = RemotingCommand.createRequestCommand(msg instanceof MessageBatch ? RequestCode.SEND_BATCH_MESSAGE : RequestCode.SEND_MESSAGE_V2, requestHeaderV2);} else {request = RemotingCommand.createRequestCommand(RequestCode.SEND_MESSAGE, requestHeader);}}//设置消息体request.setBody(msg.getBody());//消息通信模式,同步模式/异步模式/onewayswitch (communicationMode) {//单向,没有返回case ONEWAY:this.remotingClient.invokeOneway(addr, request, timeoutMillis);return null;//异步case ASYNC:final AtomicInteger times = new AtomicInteger();//消息准备时间long costTimeAsync = System.currentTimeMillis() - beginStartTime;//如果超时了,就报错if (timeoutMillis < costTimeAsync) {throw new RemotingTooMuchRequestException("sendMessage call timeout");}this.sendMessageAsync(addr, brokerName, msg, timeoutMillis - costTimeAsync, request, sendCallback, topicPublishInfo, instance,retryTimesWhenSendFailed, times, context, producer);return null;//同步case SYNC://消息准备时间long costTimeSync = System.currentTimeMillis() - beginStartTime;//如果超时了,就报错if (timeoutMillis < costTimeSync) {throw new RemotingTooMuchRequestException("sendMessage call timeout");}return this.sendMessageSync(addr, brokerName, msg, timeoutMillis - costTimeSync, request);default:assert false;break;}return null;}

这里只对同步方法的逻辑进行简单的分析:

    private SendResult sendMessageSync(final String addr,final String brokerName,final Message msg,final long timeoutMillis,final RemotingCommand request) throws RemotingException, MQBrokerException, InterruptedException {//同步发送的逻辑,这里就是通过对Netty客户端的调用来发送消息RemotingCommand response = this.remotingClient.invokeSync(addr, request, timeoutMillis);assert response != null;//返回信息的处理,包含事务消息相关事务id,消息的偏移量等的解析return this.processSendResponse(brokerName, msg, response,addr);}

invokeSync的逻辑是在NettyRemotingClient类中进行实现和扩展的,该类主要是对Netty的一些扩展实现和内部逻辑封装,作用是对网络请求的一些操作。

    @Overridepublic RemotingCommand invokeSync(String addr, final RemotingCommand request, long timeoutMillis)throws InterruptedException, RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException {//消息发送时间戳long beginStartTime = System.currentTimeMillis();//根据broker的地址获取Netty的channel对象final Channel channel = this.getAndCreateChannel(addr);//如果channel不为空并且活跃的if (channel != null && channel.isActive()) {try {//事前钩子方法调用doBeforeRpcHooks(addr, request);//花费时间long costTime = System.currentTimeMillis() - beginStartTime;//如果超时了,则报错if (timeoutMillis < costTime) {throw new RemotingTimeoutException("invokeSync call timeout");}//调用Netty进行消息发送RemotingCommand response = this.invokeSyncImpl(channel, request, timeoutMillis - costTime);//事后钩子方法调用doAfterRpcHooks(RemotingHelper.parseChannelRemoteAddr(channel), request, response);return response;} catch (RemotingSendRequestException e) {log.warn("invokeSync: send request exception, so close the channel[{}]", addr);this.closeChannel(addr, channel);throw e;} catch (RemotingTimeoutException e) {if (nettyClientConfig.isClientCloseSocketIfTimeout()) {this.closeChannel(addr, channel);log.warn("invokeSync: close socket because of timeout, {}ms, {}", timeoutMillis, addr);}log.warn("invokeSync: wait response timeout exception, the channel[{}]", addr);throw e;}} else {this.closeChannel(addr, channel);throw new RemotingConnectException(addr);}}

整个消息发送逻辑已经大概的讲完,因细节比较多,可自行查看对应源码。

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

相关文章

  1. 手机的无线充电有什么实际意义呢?把数据线插在无线充电底座上,然后把手机放上去?

    手机的无线充电挺方便的 我的手机和iPad都换过充电线&#xff0c;有线的容易坏。最近才买了一个无线的&#xff0c;感觉非常方便&#xff0c;尤其是出去外面办事&#xff0c;只用把无线充电器贴着手机就可以充了&#xff0c;也不用带充电线了&#xff0c;省空间。 不过贴着手…...

    2024/4/15 4:38:01
  2. 四.滑动窗口

    3. 无重复字符的最长子串 class Solution:def lengthOfLongestSubstring(self, s: str) -> int:res 0visited list()for i in range(len(s)):# 左移窗口while s[i] in visited: visited.pop(0)# 右移窗口visited.append(s[i])res max(res, len(visited))return res...

    2024/4/17 21:24:36
  3. 焊盘基础知识

    转载自互联网 一个物理焊盘包含三个Pad&#xff1a; 1. RegularPad&#xff1a;正规焊盘&#xff0c;在正片中看到的焊盘&#xff0c;也是通孔焊盘的基本焊盘。主要是与top layer&#xff0c;bottom layer&#xff0c;internallayer 等所有的正片进行连接&#xff08;包括布线…...

    2024/4/28 4:55:10
  4. 周口的历史

    ...

    2024/4/28 1:17:55
  5. 王爽汇编语言第三版实验11:编写子程序

    将包含任意字符&#xff0c;以0结尾的字符串中的小写字母转化为大写字母。 代码如下&#xff1a; ;将以0结尾的字符串中的小写字母转化为大写字母 assume cs:codesg,ds:datasg datasg segmentdb "Beijinners All-purpose Symobolic Instruction Code.",0 datasg en…...

    2024/4/20 9:58:52
  6. Win10的睡眠按钮为何消失?

    常规解决方法&#xff1a; 1.按下“win R”快捷键打开运行窗口&#xff0c;输入“cmd”并点击确定打开命令提示符&#xff1b; 2.进入命令提示符窗口后&#xff0c;输入“powercfg /a”&#xff0c;按下回车键执行&#xff0c;查看电脑上的睡眠状态&#xff1b; 3.会出现如下…...

    2024/4/18 9:10:52
  7. 事件监听器

    beanFactoryPostProcess目录概 述小结参考资料和推荐阅读LD is tigger forever&#xff0c;CG are not brothers forever&#xff0c; throw the pot and shine forever. Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, an…...

    2024/4/28 7:26:07
  8. 一个普通大三学生的年终总结

    Wassup guys&#xff0c;我是Edison。 当你看到这篇文章的时候&#xff0c;我已经离职了。 2021对于我来说&#xff0c;是特别的一年&#xff0c;也是收获最多的一年&#xff0c;所以我选择以这种方式记录下来&#xff0c;总结过去&#xff0c;展望未来&#xff01; 初入职场…...

    2024/4/28 12:17:53
  9. RocketMQ消息保障

    1. 生产端保障 生产端保障需要从以下几个方面来保障 使用可靠的消息发送方式注意生产端重试生产禁止自动创建topic 1.1 ⚠消息发送保障 1.1.1同步发送 发送者向MQ执行发送消息API时&#xff0c;同步等待&#xff0c;直到消息服务器返回发送结果&#xff0c;会在收到接收方…...

    2024/4/13 19:26:59
  10. QT学习日记3——信号和槽点击按钮关闭窗口

    目录 一、信号和槽点击按钮关闭窗口 1.1 原理图 1.2 文档中寻找信号量 1.3 文档中寻找槽函数 1.4 实现“点击按钮 关闭窗口”的代码 一、信号和槽点击按钮关闭窗口 1.1 原理图 1.2 文档中寻找信号量 QPushButton按钮没有自己的信号量&#xff0c;信号量是通过继承获得的。…...

    2024/4/20 9:26:40
  11. Android组件化设计4 --- 路由参数传递

    ARouter除了路由寻址跳转之外&#xff0c;还可以通过注解的方式传递参数&#xff0c;类似于Intent的作用 路由参数传递1 Paramter注解1.1 TypeElement 和 Element1.2 Element常用的API2 APT生成参数接收代码This is last chapter code,please find this in last chapter2.1 Typ…...

    2024/4/13 19:26:49
  12. YGG SEA 新增投资四款游戏

    YGG SEA 投资了四款优质游戏&#xff0c;并购买了游戏内的 NFT。 作为东南亚最大的游戏公会之一&#xff0c;YGG SEA 很高兴地宣布其最近与 Crypto Unicorns、MonkeyBall、StarSharks 和 Dracoo Master 达成合作&#xff0c;这四款游戏为 P2E 游戏的未来铺平了道路。这些新游戏…...

    2024/4/13 19:26:54
  13. Python入门——从零基础开始——print

    上期&#xff1a;Python入门——从零基础开始——Python安装 更新中……...

    2024/4/20 13:46:33
  14. 用户输入运算数和四则运算符,输出计算结果

    #include<stdio.h> void main() {float a, b;char c;printf("请输入a(-*/)b\n");scanf("%f%c%f",&a,&c,&b);switch (c){case : printf("ab%f", a b); break;case -: printf("a-b%f", a-b); break;case *: printf(…...

    2024/4/13 19:27:20
  15. Vue2.x常用指令

    v-model 多用于表单元素实现双向数据绑定 v-for 格式&#xff1a; v-for"&#xff08;item,index) in/of 数组json" 循环数组或json v-show 显示内容 ,通过displayblock/none来控制元素隐藏出现 v-hide 隐藏内容 同上 v-if 显示与隐藏 &#xff08;dom元素的删除添加…...

    2024/4/13 19:26:54
  16. VTK:等高线用法实战

    VTK:等高线用法实战 程序输出程序完整源代码程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkCamera.h> #...

    2024/4/13 19:26:59
  17. 笔记本电脑如何解决关闭盖子后, toDesk 远程桌面失效 ?

    背景 最近春节放假, 需要使用 ToDesk 连接到公司的笔记本电脑远程桌面, 可是自测时遇到把笔记本盖子关闭后, 远程桌面不生效的问题. 分析 网上搜索方案说购买 HDMI 显卡欺骗器. 还有一种方式是修改 ACPI 盖子驱动 解决 经过尝试, 可以通过修改 ACPI 盖子驱动解决 步骤 右…...

    2024/4/5 3:19:36
  18. (POJ - 1177)Picture(扫描线+离散化)

    题目链接&#xff1a;Picture - POJ 1177 - Virtual Judge​​​​​​ 题意&#xff1a;墙上贴着许多形状相同的海报、照片。它们的边都是水平和垂直的。每个矩形图片可能部分或全部的覆盖了其他图片。所有矩形合并后的边长称为周长。编写一个程序计算周长 分析&#xff1a;…...

    2024/4/19 8:26:53
  19. 排序(严蔚敏版)

    快排 class Solution { public:vector<int> sortArray(vector<int>& nums) {quick_sort(nums, 0, nums.size() - 1);return nums;}void quick_sort(vector<int>& nums, int l, int r) {if (l > r) return;int left l, right r;swap(nums[l], n…...

    2024/4/20 1:02:16
  20. MySQL-事务详解

    事务 事务是由一系列对数据的访问与更新操作组成的程序执行逻辑单元&#xff0c;以便服务器保证数据完整性 事务是数据库系统区别于其他一切文件系统的重要特性之一 事务是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个…...

    2024/4/18 6:11:01

最新文章

  1. PriorityQueue—优先级队列FollowUp

    FollowUp大纲&#xff1a; 思维导图&#xff1a; FollowUp PriorityQueue: Q1&#xff1a;但不知道是大根堆化石小根堆 A&#xff1a;Q1 只需要放进去几个元素peek&#xff08;&#xff09;出元素是大的还是小的 下面如果是5就是小根堆10就是大根堆 A&#xff1a;默认是小根…...

    2024/4/28 15:03:10
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 【讲解下Docker in Docker的原理与实践】

    &#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…...

    2024/4/26 14:50:15
  4. 数据库mysql--------------脚本增量备份

    目录 一、数据库上云迁移的方案&#xff1f; 1.1 方案一&#xff1a;使用脱机冷备份 1.2 方案二&#xff1a; 二、脚本增量备份 三、总结 一、数据库上云迁移的方案&#xff1f; 1.1 方案一&#xff1a;使用脱机冷备份 冷迁移----物理冷备 首先需要关闭数据库服务&#xff…...

    2024/4/27 7:51:34
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/28 3:28:32
  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/28 13:51:37
  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/28 5:48:52
  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