消息中间件RabbitMQ(四)——消息收发方式
文章目录
- 1. RabbitMQ 工作原理
- 2. RabbitMQ 七种消息收发方式
- 2.1 代码环境
- 2.2 消息收发
- 2.2.1 Hello World
- 2.2.2 Work queues
- 2.2.3 Publish/Subscribe
- 2.2.3.1 Direct
- 2.2.3.2 Fanout
- 2.2.3.3 Topic
- 2.2.3.4 Header
- 2.2.3.5 小结
- 2.2.4 Routing
- 2.2.5 Topics
- 2.2.6 RPC
- 2.2.7 Publisher Confirms
1. RabbitMQ 工作原理
解释说明:
- 生产者(
Producer
):发布消息到RabbitMQ
中的交换机(Exchange
)上 - 交换机(
Exchange
):和生产者建立连接并接收生产者的消息,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定 - 队列(
Queue
):Exchange
将消息分发到指定的Queue
,Queue
和消费者进行交互。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据 - 路由(
Routes
):交换机转发消息到队列的规则 - 消费者(
Consumer
):监听RabbitMQ
中的Queue
中的消息
注意:生产者,消费者和消息中间件很多时候并不在同一机器上;同一个应用程序既可以是生产者又是可以是消费者。
2. RabbitMQ 七种消息收发方式
RabbitMQ
官网介绍了如下七种消息分发的形式,下面逐一代码实现。代码可在文章最后查看。
2.1 代码环境
SpringBoot : 2.5.7
、RabbitMQ:3.9.13
application.properties
中配置 RabbitMQ
的基本连接信息,如下:
server.port=8888
spring.rabbitmq.host=192.168.3.157
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
spring.rabbitmq.virtual-host=/
在 RabbitMQ
中,所有的消息生产者提交的消息都会交由 Exchange
进行再分配,Exchange
会根据不同的策略将消息分发到不同的 Queue
中。
下面所有的生产者和消费者都在同一个工程中,方便测试
2.2 消息收发
2.2.1 Hello World
消息传播图如下:
这种消息分发采用的是默认的Exchange
,在RabbitMQ
的Web
客户端中,可以看到RabbitMQ
提供的交换机
定义队列:
@Configuration
public class RabbitMQConfig {// 队列的名称public static final String SCORPIOS_QUEUE_NAME = "scorpios_queue_name";/*** 第一个参数是消息队列名字* 第二个参数表示消息是否持久化* 第三个参数表示消息队列是否排他,一般都是设置为 false,即不排他* 第四个参数表示如果该队列没有任何订阅的消费者的话,该队列会被自动删除,一般适用于临时队列* @return*/@BeanQueue queue() {return new Queue(RabbitMQConfig.SCORPIOS_QUEUE_NAME,true,false,false);}}
消费者定义:
@Slf4j
@Component
public class ScorpiosConsumer {@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME)public void consume(String msg) {log.info("消费者收到的消息为:{}",msg);}
}
消息发送:模拟发送请求来向RabbiMQ
发送消息
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息,向RabbitMQ发送消息...");rabbitTemplate.convertAndSend(RabbitMQConfig.SCORPIOS_QUEUE_NAME, "hello scorpios....");log.info("-----------------------------------");return "success";}}
测试结果:浏览器输入:http://localhost:8888/send/message,看控制台日志输入
在上面的代码中,并没有创建Exchange
,而是使用默认的直连交换机(DirectExchange
),DirectExchange 的路由策略是将消息队列绑定到一个 DirectExchange
上,当一条消息到达 DirectExchange
时会被转发到与该条消息 routing key
相同的 Queue
上,例如消息队列名为 scorpios_queue_name
,则 routingkey
为 scorpios_queue_name
”的消息会被该消息队列接收。
正如官网介绍这种方式的一样:The simplest thing that does something
,这种方式最为简单
说明:如果此处的生产者在另外一个工程中,只需要把Controller和RabbitMQConfig复制过去,就可以了。
2.2.2 Work queues
这种方式的主要考虑的是:消息队列的消息如何被消费者消费
一个生产者,一个默认的交换机(DirectExchange
),一个队列,两个消费者,如下图:
一个队列对应了多个消费者,默认情况下,由队列对消息进行平均分配,消息会被分到不同的消费者手中。
消费者也可以配置各自的并发能力,进而提高消息的消费能力,消费者也可以配置手动 ack
,来决定是否要消费某一条消息
先看并发能力的配置,如下:
@Slf4j
@Component
public class ScorpiosConsumer {@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME)public void consumeOne(String msg) {log.info("consumeOne消费者收到的消息为:{}",msg);}// 表示此消费者会创建5个线程来执行@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME,concurrency = "5")public void consumeTwo(String msg) {log.info("consumeTwo消费者收到的消息为:{}",msg);}
}
第二个消费者我配置了 concurrency
为 5,此时,对于第二个消费者,将会同时存在5
个子线程去消费消息
启动项目,在 RabbitMQ
后台也可以看到一共有 6
个消费者。一个连接,具有6
个Channel
此时,如果生产者发送 5
条消息,就会一下都被消费掉
消息发送方式如下:
@Slf4j
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息,向RabbitMQ发送消息...");for (int i = 0; i < 5; i++) {rabbitTemplate.convertAndSend(RabbitMQConfig.SCORPIOS_QUEUE_NAME, "hello scorpios...." + i);}log.info("-----------------------------------");return "success";}
}
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
可以看到,消息都被第二个消费者消费了。但需要注意,多试几次可以看到,消息也有可能被第一个消费者消费
下面来看一下,消费者开启手动 ack
,这样可以自行决定是否消费 RabbitMQ
发来的消息,配置手动 ack
需要在配置文件中添加如下配置:
spring.rabbitmq.listener.simple.acknowledge-mode=manual
消费代码如下:
@Slf4j
@Component
public class ScorpiosConsumer {@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME)public void consumeOne(Message message, Channel channel) throws IOException {log.info("consumeOne消费者收到的消息为:{}",message.getPayload());// 确认消费消息channel.basicAck(((Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG)),true);}@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME,concurrency = "5")public void consumeTwo(Message message, Channel channel) throws IOException {log.info("consumeTwo消费者收到的消息为:{},消费线程为:{}", message.getPayload(), Thread.currentThread().getName());// 拒绝消费消息channel.basicReject(((Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG)), true);}
}
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
此时第二个消费者拒绝了所有消息,第一个消费者消费了所有消息
2.2.3 Publish/Subscribe
这种方式主要考虑的是:消息到达交换机后,如何转到消息队列
一个生产者(Producer
),一个交换机(Exchange
),多个消费者(Consumer
),每一个消费者都有自己的一个队列(Queue
)
生产者没有将消息直接发送到队列,而是发送到了交换机,每个队列绑定交换机,生产者发送的消息经过交换机,到达队列,实现一个消息被多个消费者获取的目的
需要注意的是,如果将消息发送到一个没有队列绑定的 Exchange
上面,那么该消息将会丢失,这是因为在 RabbitMQ
中 Exchange
不具备存储消息的能力,只有队列具备存储消息的能力,如下图:
这里交换机有四种选择,分别是:
Direct
(直接)Fanout
(扇出)Topic
(主题)Header
(标题)
2.2.3.1 Direct
DirectExchange
的路由策略是将消息队列(Queue
)绑定到一个 DirectExchange
上,当一条消息到达 DirectExchange
时会被转发到与该条消息 routing key
相同的 Queue
上。
配置类:
@Configuration
public class RabbitMQConfig {// 交换机的名称public static final String SCORPIOS_EXCHANGE_NAME = "scorpios_exchange_name";// 队列的名称public static final String SCORPIOS_QUEUE_NAME = "scorpios_queue_name";/*** 创建一个DirectExchange交换机* 第一个参数:交换机名字* 第二个参数:重启后是否依然有效* 第三个参数:长期未用时是否删除* @return*/@BeanDirectExchange directExchange(){return new DirectExchange(RabbitMQConfig.SCORPIOS_EXCHANGE_NAME,true,false);}@BeanQueue queue() {return new Queue(RabbitMQConfig.SCORPIOS_QUEUE_NAME,true,false,false);}// 将队列与DirectExchange绑定,要指定routingkey@BeanBinding binding() {return BindingBuilder.bind(queue()).to(directExchange()).with("direct");}}
Binding
其实是Exchange
和Queue
之间的桥梁,它告诉我们Exchange
和哪个Queue
进行了绑定关系
消费者:
@Slf4j
@Component
public class DirectConsumer {@RabbitListener(queues = RabbitMQConfig.SCORPIOS_QUEUE_NAME)public void consume(String msg) {log.info("consume消费者收到的消息为:{}",msg);}
}
发送者:
@Slf4j
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息");// 要添加routingkey参数rabbitTemplate.convertAndSend(RabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"direct","hello scorpios...");return "success";}}
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
在配置类中要把DirectExchange和Queue进行binding,并且要指定routingkey
同时,在发送者的代码中,要指定交换机的名字和routingkey
结合下面这张图再次理解下,交换机的类型为DirectExchange
:
- 只有
routingkey
为orange
时,消息才会转到Q1
队列 routingkey
为black
、green
时,消息才会转到Q2
队列
2.2.3.2 Fanout
FanoutExchange
的数据交换策略是把所有到达 FanoutExchange
的消息转发给所有与它绑定的 Queue
上,在这种策略中,routingkey
将不起任何作用,FanoutExchange
配置方式如下:
@Configuration
public class FanoutRabbitMQConfig {// 交换机的名称public static final String SCORPIOS_EXCHANGE_NAME = "scorpios_exchange_name";// 队列的名称public static final String SCORPIOS_QUEUE_NAME_ONE = "scorpios_queue_name_one";public static final String SCORPIOS_QUEUE_NAME_TWO = "scorpios_queue_name_two";/*** 创建一个FanoutExchange交换机* 第一个参数:交换机名字* 第二个参数:重启后是否依然有效* 第三个参数:长期未用时是否删除* @return*/@BeanFanoutExchange fanoutExchange(){return new FanoutExchange(FanoutRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,true,false);}@BeanQueue queueOne() {return new Queue(FanoutRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE,true,false,false);}@BeanQueue queueTwo() {return new Queue(FanoutRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO,true,false,false);}// 将队列与FanoutExchange绑定@BeanBinding bindingOne() {return BindingBuilder.bind(queueOne()).to(fanoutExchange());}@BeanBinding bindingTwo() {return BindingBuilder.bind(queueTwo()).to(fanoutExchange());}}
上面创建 FanoutExchange
,参数含义与创建 DirectExchange
参数含义一致,然后创建两个 Queue
,再将这两个 Queue
都绑定到 FanoutExchange
上。接下来创建两个消费者,如下:
@Slf4j
@Component
public class FanoutConsumer {@RabbitListener(queues = FanoutRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE)public void consumeOne(String msg) {log.info("consumeOne消费者收到的消息为:{}",msg);}@RabbitListener(queues = FanoutRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO)public void consumeTwo(String msg) {log.info("consumeTwo消费者收到的消息为:{}",msg);}}
发送者:
@Slf4j
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息");// routingkey 参数为nullrabbitTemplate.convertAndSend(FanoutRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,null,"hello scorpios... FanoutExchange");return "success";}}}
注意这里发送消息时不需要 routingkey
,指定 exchange
即可,routingkey
可以直接传一个 null
。
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
FanoutExchange 交换机是将接收到的所有消息广播到它知道的所有队列中
来看下面这张图:
如果Exchange
的绑定类型是Direct
,但是它绑定的多个队列的key
如果都相同,在这种情况下虽然绑定类型是Direct
,但是它表现的就和Fanout
有点类似了,就跟广播差不多,如上图所示。
2.2.3.3 Topic
TopicExchange
是比较复杂但是也比较灵活的一种路由策略,在 TopicExchange
中,Queue
通过 routingkey
绑定到 TopicExchange
上,当消息到达 TopicExchange
后,TopicExchange 根据消息的
routingkey 将消息路由到一个或者多个
Queue `上。
TopicExchange
配置如下:
@Configuration
public class TopicsRabbitMQConfig {// 交换机的名称public static final String SCORPIOS_EXCHANGE_NAME = "scorpios_exchange_name";// 队列的名称public static final String SCORPIOS_QUEUE_NAME_ONE = "scorpios_queue_name_xiaomi";public static final String SCORPIOS_QUEUE_NAME_TWO = "scorpios_queue_name_huawei";public static final String SCORPIOS_QUEUE_NAME_THREE = "scorpios_queue_name_phone";/*** 创建一个TopicExchange交换机* 第一个参数:交换机名字* 第二个参数:重启后是否依然有效* 第三个参数:长期未用时是否删除* @return*/@BeanTopicExchange topicExchange(){return new TopicExchange(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,true,false);}@BeanQueue xiaomi() {return new Queue(TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE,true,false,false);}@BeanQueue huawei() {return new Queue(TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO,true,false,false);}@BeanQueue phone() {return new Queue(TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_THREE,true,false,false);}// 将队列与TopicExchange绑定@BeanBinding bindingXiaomi() {return BindingBuilder.bind(xiaomi()).to(topicExchange()).with("xiaomi.#");}@BeanBinding bindingHuawei() {return BindingBuilder.bind(huawei()).to(topicExchange()).with("huawei.#");}@BeanBinding bindingPhone() {return BindingBuilder.bind(phone()).to(topicExchange()).with("#.phone.#");}}
- 创建 一个
TopicExchange
,三个Queue
,第一个Queue
用来存储和xiaomi
有关的消息,第二个Queue
用来存储和huawei
有关的消息,第三个Queue
用来存储和phone
有关的消息 - 将三个
Queue
分别绑定到TopicExchange
上,- 第一个
Binding
中的xiaomi.#
表示消息的routingkey
凡是以xiaomi
开头的,都将被路由到名称为xiaomi
的Queue
上 - 第二个
Binding
中的huawei.#
表示消息的routingkey
凡是以huawei
开头的,都将被路由到名称为huawei
的Queue
上 - 第三个
Binding
中的#.phone.#
则表示消息的routingkey
中凡是包含phone
的,都将被路由到名称为phone
的Queue
上
- 第一个
接下来针对三个 Queue
创建三个消费者,如下:
@Slf4j
@Component
public class TopicsConsumer {@RabbitListener(queues = TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE)public void consumeXiaomi(String msg) {log.info("consumeXiaomi消费者收到的消息为:{},匹配routingkey:xiaomi.#",msg);}@RabbitListener(queues = TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO)public void consumeHuawei(String msg) {log.info("consumeHuawei消费者收到的消息为:{},匹配routingkey:huawei.#",msg);}@RabbitListener(queues = TopicsRabbitMQConfig.SCORPIOS_QUEUE_NAME_THREE)public void consumePhone(String msg) {log.info("consumePhone消费者收到的消息为:{},匹配routingkey:#.phone.#",msg);}}
发送者:
@Slf4j
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息");rabbitTemplate.convertAndSend(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"xiaomi.news","小米新闻,xiao.news");rabbitTemplate.convertAndSend(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"huawei.news","华为新闻,huawei.news");rabbitTemplate.convertAndSend(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"xiaomi.phone","小米手机,xiaomi.phone");rabbitTemplate.convertAndSend(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"huawei.phone","华为手机,huawei.phone");rabbitTemplate.convertAndSend(TopicsRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,"phone.news","手机新闻,phone.news");return "success";}}
根据 TopicsRabbitMQConfig
中的配置,测试结果应该如下:
- 第一条消息将被路由到名称为
xiaomi
的Queue
上 - 第二条消息将被路由到名为
huawei
的Queue
上 - 第三条消息将被路由到名为
xiaomi
以及名为phone
的Queue
上 - 第四条消息将被路由到名为
huawei
以及名为phone
的Queue
上 - 第五条消息则将被路由到名为
phone
的Queue
上
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
2.2.3.4 Header
HeadersExchange
是一种使用较少的路由策略,HeadersExchange
会根据消息的 Header
将消息路由到不同的 Queue
上,这种策略也和 routingkey
无关,HeadersExchange
配置如下:
@Configuration
public class HeaderRabbitMQConfig {// 交换机的名称public static final String SCORPIOS_EXCHANGE_NAME = "scorpios_exchange_name";// 队列的名称public static final String SCORPIOS_QUEUE_NAME_ONE = "scorpios_queue_name_name";public static final String SCORPIOS_QUEUE_NAME_TWO = "scorpios_queue_name_age";/*** 创建一个HeadersExchange交换机* 第一个参数:交换机名字* 第二个参数:重启后是否依然有效* 第三个参数:长期未用时是否删除* @return*/@BeanHeadersExchange headersExchange(){return new HeadersExchange(HeaderRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,true,false);}@BeanQueue queueName() {return new Queue(HeaderRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE,true,false,false);}@BeanQueue queueAge() {return new Queue(HeaderRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO,true,false,false);}// 将队列与HeadersExchange绑定@BeanBinding bindingName() {Map<String, Object> map = new HashMap<>();map.put("name", "scorpios");return BindingBuilder.bind(queueName()).to(headersExchange()).whereAny(map).match();}@BeanBinding bindingAge() {return BindingBuilder.bind(queueAge()).to(headersExchange()).whereAny("age").exist();}}
这里主要关注下 Binding
的配置上,第一个 bindingName
方法中,whereAny
表示消息的 Header
中只要有一个 Header
匹配上 map
中的 key/value
,就把该消息路由到名为 scorpios_queue_name_name
的 Queue
上,这里也可以使用 whereAll
方法,表示消息的所有 Header
都要匹配。whereAny
和 whereAll
实际上对应了一个名为 x-match
的属性。bindingAge
中的配置则表示只要消息的 Header
中包含 age
,不管 age
的值是多少,都将消息路由到名为 scorpios_queue_name_age
的 Queue
上
消费者:
@Slf4j
@Component
public class HeaderConsumer {@RabbitListener(queues = HeaderRabbitMQConfig.SCORPIOS_QUEUE_NAME_ONE)public void consumeName(String msg) {log.info("consumeName消费者收到的消息为:{}",msg);}@RabbitListener(queues = HeaderRabbitMQConfig.SCORPIOS_QUEUE_NAME_TWO)public void consumeAge(String msg) {log.info("consumeAge消费者收到的消息为:{}",msg);}}
发送者:
@Slf4j
@RestController
public class RabbitMQController {@AutowiredRabbitTemplate rabbitTemplate;@GetMapping("/send/message")public String test(){log.info("接收到客户端消息");Message name = MessageBuilder.withBody("header exchange, scorpios_queue_name_name".getBytes()).setHeader("name", "scorpios").build();Message age = MessageBuilder.withBody("header exchange, scorpios_queue_name_age".getBytes()).setHeader("age", "20").build();rabbitTemplate.convertAndSend(HeaderRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,null,name);rabbitTemplate.convertAndSend(HeaderRabbitMQConfig.SCORPIOS_EXCHANGE_NAME,null,age);return "success";}}
创建并发送两条消息,两条消息具有不同的 header
,不同 header
的消息将被发到不同的 Queue
中去
测试结果:浏览器输入:http://localhost:8889/send/message
,看控制台日志输入
2.2.3.5 小结
DirectExchange
、TopicExchange
都需要用到routingkey
FanoutExchange
、HeadersExchange
不需要routingkey
- DirectExchange类型交换机,如果它绑定的多个队列的
key
如果都相同,虽然绑定类型是Direct
,但是它表现和FanoutExchange
有点类似,和广播差不多
2.2.4 Routing
一个生产者,一个交换机,两个队列,两个消费者,生产者在创建 Exchange
后,根据 RoutingKey
去绑定相应的队列,并且在发送消息时,指定消息的具体 RoutingKey
即可,看下图理解下:
这种方式就是按照 routing key
去路由消息,可以参考上面DirectExchange
、TopicExchange
使用
2.2.5 Topics
一个生产者,一个交换机,两个队列,两个消费者,生产者创建 TopicExchange
并且绑定到队列中,这次绑定可以通过 *
和 #
关键字,对指定 RoutingKey
内容,编写使用通配符,看下图理解下:
这种方式就是按照 routing key
去路由消息,可以参考上面TopicExchange
使用
2.2.6 RPC
RabbitMQ
提供了RPC
功能,原理图如下:
原理解释:
Client
发送一条消息,和普通的消息相比,这条消息多了两个关键内容:一个是correlation_id
,这个表示这条消息的唯一id
,还有一个内容是reply_to
,这个表示消息回复队列的名字Server
从消息发送队列获取消息并处理相应的业务逻辑,处理完成后,将处理结果发送到reply_to
指定的回调队列中Client
从回调队列中读取消息,就可以知道消息的执行结果
具体示例,下一篇实现~
2.2.7 Publisher Confirms
在解决消息可靠性的问题时,有两种方式:事务和消息确认。
对于消息是否被成功消费,可以使用这种方式——消息确认机制。消息确认分为:自动确认和手动确认。
在上面的代码中,大部分都使用了自动确认。除了在介绍Work Queues
方式时,消费者开启了手动 ack
这种方式很重要,后续单独研究吧~~
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 力扣69——X的平方根
题目描述 给定一个非负整数,求它的开方,向下取整。 输入输出样例 输入一个整数,输出一个整数。 Input: 8 Output: 2 8 的开方结果是 2.82842…,向下取整即是 2。 题解 可以把这道题想象成,给定一个非负整数 xÿ…...
2024/4/13 3:49:23 - FFmpeg 之I、B、P帧的基本编码原理,Android开发框架
那什么是高频和低频呢?这里的高频数据是指,图像颜色的变化比较强烈的地方,比如人像画的轮廓与背景的交叉处,在这里的色值变化很快,所以称为高频。相对的低频就是指,颜色变化比较缓和的地方。所以DCT的作用并…...
2024/4/13 15:41:29 - [record] 前端常用工具插件库
【动画】 1、animate.css 官网 npm install animate.cssimport animate.css【mock】 1、nanoid github 一个小巧、安全、URL友好、唯一的 JavaScript 字符串ID生成器。 小巧:130 bytes (已压缩和 gzipped)。 没有依赖。 Size Limit 控制大小。快速:它比…...
2024/4/16 21:40:13 - JAVA课堂随记5面向对象
一、什么是面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么…面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独…...
2024/4/13 15:41:24 - EventBus源码学习,android输入法开发
if (defaultInstance null) { synchronized (EventBus.class) { if (defaultInstance null) { defaultInstance new EventBus(); } } } return defaultInstance; } // 调用带参数的构造方法 public EventBus() { this(DEFAULT_BUILDER); } // EventBus(EventB…...
2024/4/30 16:24:04 - Java——异常
目录异常异常概念异常体系异常分类异常的产生和处理捕获处理异常try…catch获取异常信息finally 代码块异常注意事项多异常处理自定义异常异常 异常概念 异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 注意: 在Java等面…...
2024/4/20 11:47:06 - 【Git操作】
git操作...
2024/4/18 17:15:17 - 四元素(四元数quaternion)的理解
在游戏动画中,四元素因其在计算上的简易特性而被广泛使用,但对于诸多开发者而言,理解并不是那么容易。下面列几个漂亮的链接,作者做的非常好,一目了然。 什么是万向节锁 传统的欧拉坐标中,万向节锁的理解…...
2024/4/30 17:38:10 - java中的static关键字
//从头开始学java ## 第一章static关键字** **static修饰方法,该方法不可以使用this,super等关键字,因为这些关键字实际上指的是具体的对象的内存地址,静态方法可以被类名.方法名调用,静态方法随着类的加载而加载不依附于任何对象. 并且静态方法中也不能调用非静态方法,因为非…...
2024/4/28 22:05:11 - 【YBTOJ】行为方案
思路: 可以推出方程 fi,j∑fi,pfp,jf_{i,j}\sum_{}f_{i,p}f_{p,j}fi,j∑fi,pfp,j 这不是矩乘吗( codecodecode #include<iostream> #include<cstdio>using namespace std;int n, m; int t, a[110][110], ans[110][110];void matrix…...
2024/4/28 17:21:05 - 第二次前端培训作业
4表单 6.1from from标签用于为用户输入创建HTML 表单能包含input元素,比如文本,字段,复选框,单选框,提交按钮等。 表单用于向服务器输入数据,from元素是块级元素&…...
2024/4/28 12:56:53 - 前端第二次培训(HTML表单)
<input>标签: <input type"类型属性" name"名称" ....../> type属性值 描述 text 文字域 password 密码域 file 文件域 checkbox 复选域 radio 单选域 button 按钮 submit 提交按钮 reset 重置按钮 hidden 隐藏域 image 图像域 单…...
2024/4/28 22:12:54 - cookie、sessionStorage,localStorage区别
HTML5 Web 存储(localStorage和sessionStorage) 本文链接:HTML5 Web 存储(localStorage和sessionStorage)_sleepwalker_1992的专栏-CSDN博客 HTML5 Web 存储(webStorage)是本地存储࿰…...
2024/4/28 16:36:28 - Dart开发之——流程控制语句,应届毕业生硬件工程师面试题
当判定值或表达式符合条件时,执行预定的代码和逻辑 常见的条件分支语句有:if/if else/if else if 2.2 示例 main() { var n 100; if (n < 60) { print(“不及格”); } else if (n < 85) { print(“良好”); } else if (n < 100) { …...
2024/4/28 8:18:17 - 吃掉LeetCode之2022/2/5
吃掉LeetCode之2022/2/5 目录吃掉LeetCode之2022/2/5121. 买卖股票的最佳时机代码思路:75. 颜色分类代码思路:64. 最小路径和代码思路:121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票…...
2024/4/28 13:05:21 - Dart VM 的相关简介与运行模式解析,一个Android程序员的腾讯面试心得
一个后台 JIT 编译器线程;GC sweeper 现场;并发 GC marker 线程; VM 在内部使用线程池 (dart::ThreadPool) 来管理 OS 线程,并且代码是围绕 dart::ThreadPool::Task 概念而不是围绕 OS 线程的概念构建的。 例如在 GC VM 中将 da…...
2024/4/28 23:17:33 - 相对路径和绝对路径(简单易懂)
相对路径:从一个目录为起点到另外一个的目录的路径。举例: 比如你的C盘有一个文件夹叫FIle,文件下有两个文件file one 和 file two 表示出file two的方法有两种 第一种(绝对路径表示法):C:\FIle…...
2024/4/28 21:28:25 - 【动手学深度学习】week 11b | 全连接神经网络(FCN)
48 全连接神经网络(FCN) FCN是用深度学习来做语意分割的奠基性工作。用转置卷积层来替换CNN最后的全连接层,从而可以实现对每个像素的预测。 传统的全连接层和全局平均池化层,没法获得空间信息。 转置卷积层会把最后卷积的输出扩…...
2024/4/28 13:36:33 - 【LeetCode】9. 回文数
题目:9. 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如࿰…...
2024/4/28 20:34:29 - 授权规则
...
2024/4/28 18:00:13
最新文章
- 【已解决】如何打开ZIP格式的压缩文件?
压缩文件格式的种类比较多,ZIP是最常见的压缩格式之一。那收到ZIP压缩文件,要如何打开呢?不清楚的小伙伴一起来看看吧! 方法一:使用系统自带的解压缩功能 很多电脑操作系统都内置了解压缩功能,并且支持大…...
2024/4/30 18:22:21 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - K8S容器空间不足问题分析和解决
如上图,今天测试环境的K8S平台出现了一个问题,其中的一个容器报错:Free disk space below threshold. Available: 3223552 bytes (threshold: 10485760B),意思服务器硬盘空间不够了。这个问题怎么产生的,又怎么解决的呢…...
2024/4/30 17:15:32 - Mac brew 安装软件
Mac brew 安装软件 homebrew 速度慢 将brew 切换到国内镜像源 # 速度一般 # 步骤一 cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git# 步骤二 cd "$(brew --repo)/Library/Taps/homebrew/homebr…...
2024/4/30 3:19:50 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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