BBS论坛项目相关-11:Kafka异步消息队列相关

阻塞队列:BlockingQueue

解决线程通信问题
阻塞方法:put,take
生产者消费者模式:即N个线程进行生产,同时N个线程进行消费,两种角色通过内存缓冲区进行通信,
生产者:产生数据的线程
消费者:使用数据的线程
实现类:ArrayBlockingQueue,LinkedBlockingQueue,PriorityBlockingQueue等

生产者生产数据放在阻塞队列中

class Producer implements Runnable {private BlockingQueue<Integer> queue;public Producer(BlockingQueue<Integer> queue) {this.queue = queue;}@Overridepublic void run() {try {for (int i = 0; i < 100; i++) {Thread.sleep(20);queue.put(i);System.out.println(Thread.currentThread().getName() + "生产:" + queue.size());}} catch (Exception e) {e.printStackTrace();}}}

消费者从队列中拿取数据消费

class Consumer implements Runnable {private BlockingQueue<Integer> queue;public Consumer(BlockingQueue<Integer> queue) {this.queue = queue;}@Overridepublic void run() {try {while (true) {Thread.sleep(new Random().nextInt(1000));queue.take();System.out.println(Thread.currentThread().getName() + "消费:" + queue.size());}} catch (Exception e) {e.printStackTrace();}}
}

主线程
生产者和消费者公用一个阻塞队列

public class BlockingQueueTests {public static void main(String[] args) {BlockingQueue queue = new ArrayBlockingQueue(10);new Thread(new Producer(queue)).start();new Thread(new Consumer(queue)).start();new Thread(new Consumer(queue)).start();new Thread(new Consumer(queue)).start();}}

消息队列

使用消息队列的好处:
解耦和扩展性,允许独立的扩展或修改,两边的处理过程,只要确保它们遵守同样的接口约束。消息队列可作为一个接口层,解耦重要的业务流程,只需要遵守约定,针对数据编程即可获取扩展能力。
健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响业务的正常运行
冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用
缓冲,有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
灵活性&峰值处理能力,使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃
异步通信,消息队列提供异步处理机制,允许用户把消息放入队列,并不立即处理它,往队列里放消息,在需要的时候再去处理。
消息队列的两种模式:
1 点对点(一对一,消费者主动拉取数据,消息得到后消息清除)
2 发布/订阅模式(一对多,消费者消费数据之后不会清除消息)【分为两种:消费者主动拉取数据:生产者需要时常询问有没有消息;生产者推动数据队列:由于消费者速度不一致,可能导致资源浪费或消费者崩掉】

Kafka

一个分布式发布-订阅消息系统。分布式,可划分的,冗余备份的持久性的日志服务,主要用于处理流式数据。
应用:消息系统,日志收集,用户行为跟踪,流式处理
特点:高吞吐量,消息持久化,高可靠性,高扩展性
Kafka术语 :Broker、Zookeeper、Topic、partition、Offeset、Leader Replica、Follow Replica

创建主题:kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --totpic test
查看主题:kafka-topics.bat --list --bootstrap-server localhost:9092
生产者发送消息:kafka-console-producer.bat --broker-list localhost:9092 --topic test
消费者命令查看命令:kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

Spring整合Kafka

引入依赖:spring-kafka
配置kafka:配置server,consumer

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=community-consumer-group
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=3000

访问kafka:
生产者:kafkaTemplate.send(topic,content);
消费者:
@KafkaListener(topics={””})
public void handleMassage(ConsumerRecord record){}
生产者发消息是主动发送,消费者接收消息是被动接收2,只要有消息就接收。

public class KafkaTests {@Autowiredprivate KafkaProducer kafkaProducer;@Testpublic void testKafka() {kafkaProducer.sendMessage("test", "你好");kafkaProducer.sendMessage("test", "在吗");try {Thread.sleep(1000 * 10);} catch (InterruptedException e) {e.printStackTrace();}}
}
@Component
class KafkaProducer {@Autowiredprivate KafkaTemplate kafkaTemplate;public void sendMessage(String topic, String content) {kafkaTemplate.send(topic, content);}
}
@Component
class KafkaConsumer {@KafkaListener(topics = {"test"})public void handleMessage(ConsumerRecord record) {System.out.println(record.value());}
}

发送系统通知

对不同事件创建一个主题,系统发布消息后就不用管了,可以处理下一条消息,消费者自己拉取消息。生产者和消费者处理消息时是并发的,可以同时进行。
触发事件:评论后,发布通知;点赞后,发布通知;关注后,发布通知
处理事件:封装事件对象,开发事件的生产者,开发事件的消费者

创建一个事件类
包含topic,userId,entityId,entityType,entityUserId等属性,将整个事件的触发对象userid,发生事件的对象entityId,entityType以及该对象的作者entityUserId全都包含在里面,便于之后通知调用,并用一个map来存放可能出现的额外数据,便于扩展。

public class Event {private String topic;private int userId;private int entityType;private int entityId;private int entityUserId;private Map<String, Object> data = new HashMap<>();public String getTopic() {return topic;}public Event setTopic(String topic) {this.topic = topic;return this;}public int getUserId() {return userId;}public Event setUserId(int userId) {this.userId = userId;return this;}public int getEntityType() {return entityType;}public Event setEntityType(int entityType) {this.entityType = entityType;return this;}public int getEntityId() {return entityId;}public Event setEntityId(int entityId) {this.entityId = entityId;return this;}public int getEntityUserId() {return entityUserId;}public Event setEntityUserId(int entityUserId) {this.entityUserId = entityUserId;return this;}public Map<String, Object> getData() {return data;}public Event setData(String key, Object value) {this.data.put(key, value);return this;}
}

可通过set设置topic和userId等,用一个map<String,Object>类来存放数据,返回this,可实现链式调用。
在处理系统消息时,有了事件类,就可以创建一个事件生产类直接将这个事件类对象用json字符串发送到队列,消费者自行拉取后就能从中获取所需要的数据,并返回给前端对应的消息。无论是评论点赞还是关注等,触发事件发生后只需要将所需要发送的数据用事件类对象封装传入事件生产类的发送事件方法,即可发送对应消息。
Produce

@Component
public class EventProducer {@Autowiredprivate KafkaTemplate kafkaTemplate;// 处理事件public void fireEvent(Event event) {// 将事件发布到指定的主题kafkaTemplate.send(event.getTopic(), JSONObject.toJSONString(event));}
}

Consumer
消费者监听各个主题,对每个主题发过来的消息进行处理。
对主题可以在常量接口中设置常量,方便管理。

public interface CommunityConstant {/*** 激活成功*/int ACTIVATION_SUCCESS = 0;/*** 重复激活*/int ACTIVATION_REPEAT = 1;/*** 激活失败*/int ACTIVATION_FAILURE = 2;/*** 默认状态的登录凭证的超时时间*/int DEFAULT_EXPIRED_SECONDS = 3600 * 12;/*** 记住状态的登录凭证超时时间*/int REMEMBER_EXPIRED_SECONDS = 3600 * 24 * 100;/*** 实体类型: 帖子*/int ENTITY_TYPE_POST = 1;/*** 实体类型: 评论*/int ENTITY_TYPE_COMMENT = 2;/*** 实体类型: 用户*/int ENTITY_TYPE_USER = 3;/*** 主题: 评论*/String TOPIC_COMMENT = "comment";/*** 主题: 点赞*/String TOPIC_LIKE = "like";/*** 主题: 关注*/String TOPIC_FOLLOW = "follow";/*** 主题: 发帖*/String TOPIC_PUBLISH = "publish";/*** 主题: 删帖*/String TOPIC_DELETE = "delete";/*** 主题: 分享*/String TOPIC_SHARE = "share";}

系统通知也属于私信功能,只是from_id为固定1系统id,发送站内消息,由数据库中1系统用户发送,此时conversationId就不需要再拼接from_id和to_id,可以用来存储topic主题字符串,content用于存储需要在前端页面显示的内容的json字符串,传到前端进行拼接。私信功能模块实现

public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;
}

消费者监听所有主题,对ConsumerRecord接收的消息进行处理,发送过来的是一个json字符串,先转换为even事件对象。
构建消息对象,from_id为系统,to_id为发送过来的事件中的entityUserid,conversationId为topic,创建时间为当前时间。需要拼接的是消息内容
消息内容可用一个map来接收用于拼接的数据,用户id,entityType,entityId等。
event中可能会有其他数据,遍历event的map中的数据,存在消息内容的map中。存完后就可以将转为json字符串存入message的content中。
message消息全部内容已填充完毕,调用messageService层添加消息到数据库。

    @KafkaListener(topics = {TOPIC_COMMENT, TOPIC_LIKE, TOPIC_FOLLOW})public void handleCommentMessage(ConsumerRecord record) {if (record == null || record.value() == null) {logger.error("消息的内容为空!");return;}Event event = JSONObject.parseObject(record.value().toString(), Event.class);if (event == null) {logger.error("消息格式错误!");return;}// 发送站内通知Message message = new Message();message.setFromId(SYSTEM_USER_ID);message.setToId(event.getEntityUserId());message.setConversationId(event.getTopic());message.setCreateTime(new Date());Map<String, Object> content = new HashMap<>();content.put("userId", event.getUserId());content.put("entityType", event.getEntityType());content.put("entityId", event.getEntityId());if (!event.getData().isEmpty()) {for (Map.Entry<String, Object> entry : event.getData().entrySet()) {content.put(entry.getKey(), entry.getValue());}}message.setContent(JSONObject.toJSONString(content));messageService.addMessage(message);}

消费者事件不需要我们主动调用,它是被动触发的,我们只需要在触发事件的时候调用生产者方法生产消息,消费者就会发送站内消息。
在评论时触发事件
创建event对象,设置主题comment,设置触发事件的用户,即当前持有用户发出评论,设置评论的entityId和entityType,在系统发送的消息中可以点击查看具体内容,需要链接到该评论的帖子,所以还需要把帖子id传入。
对于entityUserid需要进行判断,因为可能是对帖子评论,也可能是对帖子的评论进行回复,所以需要对评论的entityType进行判断,如果是对帖子评论,则通过帖子表查询帖子的userid,如果是对评论的回复,则通过评论表进行查询评论的userid。
event对象补充完毕之后就将时间发送给kafka消息生产者,消息发送就不用管了,消费者会自动触发。

@RequestMapping(path = "/add/{discussPostId}", method = RequestMethod.POST)public String addComment(@PathVariable("discussPostId") int discussPostId, Comment comment) {comment.setUserId(hostHolder.getUser().getId());comment.setStatus(0);comment.setCreateTime(new Date());commentService.addComment(comment);// 触发评论事件Event event = new Event().setTopic(TOPIC_COMMENT).setUserId(hostHolder.getUser().getId()).setEntityType(comment.getEntityType()).setEntityId(comment.getEntityId()).setData("postId", discussPostId);if (comment.getEntityType() == ENTITY_TYPE_POST) {DiscussPost target = discussPostService.findDiscussPostById(comment.getEntityId());event.setEntityUserId(target.getUserId());} else if (comment.getEntityType() == ENTITY_TYPE_COMMENT) {Comment target = commentService.findCommentById(comment.getEntityId());event.setEntityUserId(target.getUserId());}eventProducer.fireEvent(event);return "redirect:/discuss/detail/" + discussPostId;}

点赞消息系统通知
点赞也是同样的逻辑,在用户点赞后将事件发送给kafka消息生产者。对于点赞的系统消息中查看详情需要到达帖子的详情页面,所以也要将postId传入。

public String like(int entityType, int entityId, int entityUserId, int postId) {User user = hostHolder.getUser();// 点赞likeService.like(user.getId(), entityType, entityId, entityUserId);// 数量long likeCount = likeService.findEntityLikeCount(entityType, entityId);// 状态int likeStatus = likeService.findEntityLikeStatus(user.getId(), entityType, entityId);// 返回的结果Map<String, Object> map = new HashMap<>();map.put("likeCount", likeCount);map.put("likeStatus", likeStatus);// 触发点赞事件if (likeStatus == 1) {Event event = new Event().setTopic(TOPIC_LIKE).setUserId(hostHolder.getUser().getId()).setEntityType(entityType).setEntityId(entityId).setEntityUserId(entityUserId).setData("postId", postId);eventProducer.fireEvent(event);}return CommunityUtil.getJSONString(0, null, map);}

关注事件系统通知
点击详情只需要点进关注者的个人主页,不需要传入帖子id

@RequestMapping(path = "/follow", method = RequestMethod.POST)@ResponseBodypublic String follow(int entityType, int entityId) {User user = hostHolder.getUser();followService.follow(user.getId(), entityType, entityId);// 触发关注事件Event event = new Event().setTopic(TOPIC_FOLLOW).setUserId(hostHolder.getUser().getId()).setEntityType(entityType).setEntityId(entityId).setEntityUserId(entityId);eventProducer.fireEvent(event);return CommunityUtil.getJSONString(0, "已关注!");}

注意
前面对service所有方法用AOP做了一个统一日志记录,里面通过request来获得用户ip,实际上添加了kafka生产者与消费者功能后,消费者也调用了service方法,但此时没有请求,request为null,会空指针异常,所以需要进行判断处理。

@Before("pointcut()")public void before(JoinPoint joinPoint) {// 用户[1.2.3.4],在[xxx],访问了[com.nowcoder.community.service.xxx()].ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (attributes == null) {return;}HttpServletRequest request = attributes.getRequest();String ip = request.getRemoteHost();String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());String target = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName();logger.info(String.format("用户[%s],在[%s],访问了[%s].", ip, now, target));}

显示系统通知

通知存在message中
查询某个主题下的最新通知

<select id="selectLatestNotice" resultType="Message">select <include refid="selectFields"></include>from messagewhere id in (select max(id) from messagewhere status != 2and from_id = 1and to_id = #{userId}and conversation_id = #{topic})</select>

查询某个主题下包含的通知数

 <select id="selectNoticeCount" resultType="int">select count(id) from messagewhere status != 2and from_id = 1and to_id = #{userId}and conversation_id = #{topic}</select>

查询未读通知的数量

<select id="selectNoticeUnreadCount" resultType="int">select count(id) from messagewhere status = 0and from_id = 1and to_id = #{userId}<if test="topic!=null">and conversation_id = #{topic}</if></select>

controller层
获得通知的message后,需要对message进行处理,因为传过来的message的内容是一个json字符串,里面存储的是消息通知内容,如XX给你的帖子XX点赞消息中存储了XX的用户id,被点赞对象的entityType,entityId,以及entityUserid,如果需要跳转到帖子,还会有postId。所以需要将json字符串还原,需要先将字符串中的转义字符进行反转义,然后将字符串还原为对象,消费者对其进行封装时用的是map,所以又将字符串还原为map,然后取出map中的内容补充放入一个新的map中(如根据用户id查询用户,将用户对象放入新map),和message,以及查询的相关消息通知数量,未读消息数量一起返回给页面。

@RequestMapping(path = "/notice/list", method = RequestMethod.GET)public String getNoticeList(Model model) {User user = hostHolder.getUser();// 查询评论类通知Message message = messageService.findLatestNotice(user.getId(), TOPIC_COMMENT);if (message != null) {Map<String, Object> messageVO = new HashMap<>();messageVO.put("message", message);String content = HtmlUtils.htmlUnescape(message.getContent());Map<String, Object> data = JSONObject.parseObject(content, HashMap.class);messageVO.put("user", userService.findUserById((Integer) data.get("userId")));messageVO.put("entityType", data.get("entityType"));messageVO.put("entityId", data.get("entityId"));messageVO.put("postId", data.get("postId"));int count = messageService.findNoticeCount(user.getId(), TOPIC_COMMENT);messageVO.put("count", count);int unread = messageService.findNoticeUnreadCount(user.getId(), TOPIC_COMMENT);messageVO.put("unread", unread);model.addAttribute("commentNotice", messageVO);}// 查询点赞类通知message = messageService.findLatestNotice(user.getId(), TOPIC_LIKE);if (message != null) {Map<String, Object> messageVO = new HashMap<>();messageVO.put("message", message);String content = HtmlUtils.htmlUnescape(message.getContent());Map<String, Object> data = JSONObject.parseObject(content, HashMap.class);messageVO.put("user", userService.findUserById((Integer) data.get("userId")));messageVO.put("entityType", data.get("entityType"));messageVO.put("entityId", data.get("entityId"));messageVO.put("postId", data.get("postId"));int count = messageService.findNoticeCount(user.getId(), TOPIC_LIKE);messageVO.put("count", count);int unread = messageService.findNoticeUnreadCount(user.getId(), TOPIC_LIKE);messageVO.put("unread", unread);model.addAttribute("likeNotice", messageVO);}// 查询关注类通知message = messageService.findLatestNotice(user.getId(), TOPIC_FOLLOW);if (message != null) {Map<String, Object> messageVO = new HashMap<>();messageVO.put("message", message);String content = HtmlUtils.htmlUnescape(message.getContent());Map<String, Object> data = JSONObject.parseObject(content, HashMap.class);messageVO.put("user", userService.findUserById((Integer) data.get("userId")));messageVO.put("entityType", data.get("entityType"));messageVO.put("entityId", data.get("entityId"));int count = messageService.findNoticeCount(user.getId(), TOPIC_FOLLOW);messageVO.put("count", count);int unread = messageService.findNoticeUnreadCount(user.getId(), TOPIC_FOLLOW);messageVO.put("unread", unread);model.addAttribute("followNotice", messageVO);}// 查询未读消息数量int letterUnreadCount = messageService.findLetterUnreadCount(user.getId(), null);model.addAttribute("letterUnreadCount", letterUnreadCount);int noticeUnreadCount = messageService.findNoticeUnreadCount(user.getId(), null);model.addAttribute("noticeUnreadCount", noticeUnreadCount);return "/site/notice";}

前端同样使用遍历map获取。

通知详情页

查看通知详情页时,需要通过url将topic传入,SQL查找关于这个topic的通知消息,按照创建时间倒序排列。

<select id="selectNotices" resultType="Message">select <include refid="selectFields"></include>from messagewhere status != 2and from_id = 1and to_id = #{userId}and conversation_id = #{topic}order by create_time desclimit #{offset}, #{limit}</select>

同样需要先获得当前持有用户,根据用户id为to_id,系统1为from_id,再加上topic为conversationid,查询得到一个List,同样需要用一个List<Map<String, Object>>结构去存储每条消息的具体细节。
遍历list,每次循环创建一个map,将通知对象放入map中,并将通知的内容还原为map对象,取出里面的相关信息,获取用户id(实际上是触发这个事件的用户,即对你点赞评论的用户),entityType,entityId(对方对你进行操作的实体,帖子或评论),postId也一并取出,为null时,说明不需要postid,对前端显示也不影响。
同时当查询通知详情页需要将未读通知全设置为已读。可以直接用私信那块写的已读逻辑,先获得所有未读通知的list,传入list,<foreach>标签设为已读。BBS项目相关-私信模块

@RequestMapping(path = "/notice/detail/{topic}", method = RequestMethod.GET)public String getNoticeDetail(@PathVariable("topic") String topic, Page page, Model model) {User user = hostHolder.getUser();page.setLimit(5);page.setPath("/notice/detail/" + topic);page.setRows(messageService.findNoticeCount(user.getId(), topic));List<Message> noticeList = messageService.findNotices(user.getId(), topic, page.getOffset(), page.getLimit());List<Map<String, Object>> noticeVoList = new ArrayList<>();if (noticeList != null) {for (Message notice : noticeList) {Map<String, Object> map = new HashMap<>();// 通知map.put("notice", notice);// 内容String content = HtmlUtils.htmlUnescape(notice.getContent());Map<String, Object> data = JSONObject.parseObject(content, HashMap.class);map.put("user", userService.findUserById((Integer) data.get("userId")));map.put("entityType", data.get("entityType"));map.put("entityId", data.get("entityId"));map.put("postId", data.get("postId"));// 通知作者map.put("fromUser", userService.findUserById(notice.getFromId()));noticeVoList.add(map);}}model.addAttribute("notices", noticeVoList);// 设置已读List<Integer> ids = getLetterIds(noticeList);if (!ids.isEmpty()) {messageService.readMessage(ids);}return "/site/notice-detail";}

总消息

对于最上方一栏总的未读消息处理,因为需要随时显示,所以用拦截器处理。对每个请求查询未读私信数量和未读通知数量。

@Component
public class MessageInterceptor implements HandlerInterceptor {@Autowiredprivate HostHolder hostHolder;@Autowiredprivate MessageService messageService;@Override//在模板渲染之前public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {User user = hostHolder.getUser();if (user != null && modelAndView != null) {int letterUnreadCount = messageService.findLetterUnreadCount(user.getId(), null);int noticeUnreadCount = messageService.findNoticeUnreadCount(user.getId(), null);modelAndView.addObject("allUnreadCount", letterUnreadCount + noticeUnreadCount);}}
}

同样需要把拦截器加入配置,对所有动态请求拦截

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Autowiredprivate AlphaInterceptor alphaInterceptor;@Autowiredprivate LoginTicketInterceptor loginTicketInterceptor;//    @Autowired
//    private LoginRequiredInterceptor loginRequiredInterceptor;@Autowiredprivate MessageInterceptor messageInterceptor;@Autowiredprivate DataInterceptor dataInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginTicketInterceptor).excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg");registry.addInterceptor(messageInterceptor).excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg");registry.addInterceptor(dataInterceptor).excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg");}}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 大数据技术之Zookeeper

    1.Zookeeper 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeepe…...

    2024/5/9 13:16:42
  2. 拼多多笔试

    拼多多: 1,掷色子走路. 给了离终点的距离. 给了接下来还能走几步和每一步的步数.(比如距离终点3, 下一步走5步, 则是走到终点再倒退2步). 如果中间某一步恰好停在终点. 返回 “paradox”. 否则返回最后距离终点的距离以及折返的次数. 10 4 // 距离终点10, 还能走4步 6 3 3 3 …...

    2024/5/9 10:38:45
  3. 动态规划训练2:详解leetcode221题:最大正方形

    题目描述 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0输出: 4解法一:暴力法 在一个二维矩形中,如果我们要确定一个矩阵,我们只需要知道确定它的左上角和右下角就可以了,而正方形相当…...

    2024/4/30 0:10:42
  4. 特征工程学习笔记

    目录sklearn数据集 简单了解特征工程 特征提取 特征预处理 特征降维 总结1 sklearn数据集 import sklearn from sklearn import datasets sklearn.datasets # 加载获取流行数据集 datasets.load_*() # 获取小规模数据集,数据包含在datasets里 datasets.fetch_*(data_home = No…...

    2024/4/30 0:10:38
  5. python_4:系列化学python之一

    前言: 之前虽然也了解学习了下python,其实也只是毛毛雨都算不上,加上平时工作不用,早就抛到脑后了。这次打算系统学习下来,冰实践的我的个人项目中去,所以,做一个学习记录。长期更新,直到学习完成。学习视频地址: https://www.bilibili.com/video/BV1QE411x76A 600多…...

    2024/4/30 0:10:35
  6. Spring Boot 配置初始化流程

    Spring Boot会按照一定的优先级读取配置文件,优先级见官网,注册到系统环境中的时间是不一样的,也就是说配置生效范围不同,例如在application.yml中设置config是不会生效的:spring:config:location: file:./my-app-config/application.properties也就是说,加载资源逻辑先被…...

    2024/4/30 0:10:30
  7. 微信小程序开发资源汇总

    本文收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。本文不是一遍关于如何学习微信小程序的入门指南,也非参考手册,只是一些资料的整理。 目录官方文档 工具 插件 组件 Demo置顶WePY:组件化的小程序开发框架 💯 WePY 开发资源汇总 💯官方文档小程序设…...

    2024/4/30 0:10:26
  8. Netty(七)源码解析 之 Reactor 模型、Netty的服务端启动源码分析

    Netty 源码解析 1. Reactor 模型 在解析 Netty 源码之前,我们首先要搞清楚 Reactor 模型。因为现在的网络通信框架,大多数都是基于 Reactor 模型进行设计和开发的,Netty 也不例外。 1.1 Reactor 单线程模型Selector.select()方法查询Channel是否就绪,遍历完所有Channel作为…...

    2024/5/5 1:37:35
  9. 程序员必懂Android技巧之Lifecycle源码

    巴西副总统莫朗当地时间3日在一个视频会议上表示,巴西不担心美方的威胁和施压,不会阻止华为参与该国的5G建设竞标,华为公司掌握的技术远超其它竞争对手。 / 前言 / Lifecycle 是 Jetpack 整个家族体系内最为基础的内容之一,正是因为有了 Lifecycle 的存在,使得如今开发…...

    2024/4/30 0:10:19
  10. [Q/Git]解决代理产生的Failed to connect to 127.0.0.1 port XXXX: Connection refused问题

    [Q/Git]解决代理产生的Failed to connect to 127.0.0.1 port XXXX: Connection refused问题 问题解决步骤1.设置了代理 查询了一下没有使用代理 查询是否使用代理:git config --global http.proxy 取消代理:git config --global --unset http.proxy 查看代理依旧存在 $ env|g…...

    2024/4/30 0:10:15
  11. ESP32基础应用(一)

    ESP32基础应用(一)第一部分UART串口LED彩灯LCD显示屏按键中断遇到问题心得感想 第一部分 ps:本部分是参考亿研电子的开发板教程梳理的,主要以原理图的理解并配合案例代码,用以快速理解开发板。相应资料请参考亿研电子官网 UART串口 1、原理图 我们通过原理图可以看到ESP32…...

    2024/4/30 0:10:11
  12. 【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3

    目录前言安装pyttsx3实现TTS接口后言 前言 本次的实现需求有点困难,所以也就记录下来,别到时候都忘了。首先先不说正题,有兴趣的可以看一看: 1、目标是实现一个可以传一个文本就返回一个语音的接口… 2、开始的时候,以为可以直接在java后台直接集成就好了,结果找了半天,…...

    2024/4/30 0:10:06
  13. 数据分析特辑 - 如何找到想要的数据集?

    前言 数据分析最首要的就是数据集了,有挺多文章有对数据集的查找方式都有所讲解,但是个人感觉还是整合比较好的方式会比较方便,所以这篇博客相对于是资源干货吧,后续会不断地更新数据的收集方式以及更新数据集的百度云网盘,供各位有需要分析的朋友们使用~ 公开数据搜集方式…...

    2024/4/30 0:10:02
  14. 浙江大华笔试

    总结: C++的考察特别多,对于C++的空指针和空变量在内存中占用长度的考察有好几道。 图像基础题,有道形态学的题给了两个看起来差别很大的矩阵,要求写出变化公式,我???不会做。形态学膨胀和腐蚀的操作一般来说做完不会差别大到看不出来。图像课老师水平很高,课业成绩也…...

    2024/4/30 0:09:58
  15. 12、进程、线程及中断、core、hyperthread、C++ struct内存布局

    1、进程 一般,CPU在执行指令前,要知道一些信息 包括( 1、开始执行的指令是那个 2、内存布局(因为Virtual memory,需要知道物理disk地址) 3、寄存器状态 ) 这样,就可以map到物理地址,去做实际的事情。 每次运行一个.exe文件,都会开启一个进程,用来告诉CPU 这个程序的…...

    2024/4/30 0:09:54
  16. 简易多线程

    process与pthread 1)两者都可以干多件事 1)process耗费内存大,但干扰小 2)pthread共享内存,所以干扰大 创建线程 pthread_t th;//线程id pthread_create(&th, NULL, myfunc, NULL);//最后NULL为myfunc的传递参数 线程执行函数mgfunc: void* myfunc(void* args) {}线程…...

    2024/4/29 1:13:22
  17. 聊聊Javascript数组 “去重” 的几种实现

    目录简述集合方式去重集合相关方法及属性集合去重代码实现手写函数式去重 简述简述:数组去重,就是消除数组中相同的元素。集合方式去重 介绍这种方式之前先补给一点关于集合的知识吧!集合就是一种数据存储的结构,该结构类不存在重复的元素。在ES6中增加Set类型定义一个集合…...

    2024/4/30 0:09:50
  18. 浅谈Mybatis

    定义 它本是apache的一个开源项目iBatis,它是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,是开发者只需要关注SQL本身,而不需要花费精力去处理;例如注册驱动,创建connection,创建statment,手动设置参数,结果集检索等jdbc繁杂的过程代码,总之,mybatis对j…...

    2024/5/4 9:01:39
  19. Linux-管道和重定向

    Linux-管道和重定向管道和重定向输出重定向1>(>) :调用进程FD将进程正确结果重定向到指定位置(覆盖)1>>(>>) :调用进程FD将进程正确结果重定向到指定位置(追加)2> :调用进程FD将进程错误结果重定向到指定位置(覆盖)2>> :…...

    2024/4/30 0:09:41
  20. LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】

    题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[…...

    2024/4/30 0:09:39

最新文章

  1. 使用Vue连接Mqtt实现主题的订阅及消息发布

    效果如下&#xff1a; 直接贴代码&#xff0c;本地创建一个html文件将以下内容贴入即可 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …...

    2024/5/9 17:14:47
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/7 10:36:02
  3. 如何转行成为产品经理?

    转行NPDP也是很合适的一条发展路径&#xff0c;之后从事新产品开发相关工作~ 一、什么是NPDP&#xff1f; NPDP 是产品经理国际资格认证&#xff0c;美国产品开发与管理协会&#xff08;PDMA&#xff09;发起的&#xff0c;是目前国际公认的唯一的新产品开发专业认证&#xff…...

    2024/5/9 17:09:28
  4. 2024年04月IDE流行度最新排名

    点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2024年04月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…...

    2024/5/9 8:36:44
  5. 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/8 19:32:33
  6. 【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/9 7:40:42
  7. 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/9 2:44:26
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

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

    2024/5/8 20:33:13
  9. VB.net WebBrowser网页元素抓取分析方法

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

    2024/5/9 3:15:57
  10. 【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/9 5:40:03
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

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

    2024/5/9 7:40:40
  12. 【ES6.0】- 扩展运算符(...)

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

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

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

    2024/5/9 1:35:21
  14. Go语言常用命令详解(二)

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

    2024/5/9 4:12:16
  15. 用欧拉路径判断图同构推出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/9 7:40:35
  16. 【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/8 18:06:50
  17. 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/9 7:40:34
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

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

    2024/5/9 1:42:21
  19. --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/9 5:02:59
  20. 基于深度学习的恶意软件检测

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

    2024/5/9 4:31:45
  21. JS原型对象prototype

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

    2024/5/9 16:54:42
  22. C++中只能有一个实例的单例类

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

    2024/5/8 9:51:44
  23. python django 小程序图书借阅源码

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

    2024/5/9 6:36:49
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

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

    2024/5/9 4:33:29
  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