Handler中loop方法为什么不会导致线程卡死
前言
最近闲的时间比较多,浏览一些公众号和一些IT网站,突然看到一个问题:
Handler中loop方法为什么不会导致线程卡死?
我先浏览了一下源码,以下为截取部分片段:
/**Looper*/
public static void loop() {...for (;;) {Message msg = queue.next(); // might blockif (msg == null) {// No message indicates that the message queue is quitting.return;}...msg.recycleUnchecked();}}/**MessageQuene*/
Message next() {...int pendingIdleHandlerCount = -1; // -1 only during first iterationint nextPollTimeoutMillis = 0;for (;;) {if (nextPollTimeoutMillis != 0) {Binder.flushPendingCommands();}nativePollOnce(ptr, nextPollTimeoutMillis);synchronized (this) {...}// Reset the idle handler count to 0 so we do not run them again.pendingIdleHandlerCount = 0;// While calling an idle handler, a new message could have been delivered// so go back and look again for a pending message without waiting.nextPollTimeoutMillis = 0;}}
仔细一看,这确实是两个死循环,难道死循环不会阻塞了吗,科技都这么进步了吗?,果断尝试:
/**Activity*/
runOnUiThread {while (true) {Log.d("lzp", "while")}
}
还是卡死了,页面一篇惨白,那为啥Handler中的loop不会卡死线程?
正文
为了解决这个问题,我开始在网上搜索相关的资料,但是都不能完全解决我的疑问,果然解决问题还得靠自己。
创建一台模拟器,选定Android系统版本,打上断点,问题就明朗了。
小建议:如果想要看源码,建议使用模拟器,这样断点能对得上源码,国产真机不推荐,具体原因大家都懂。
问题一:Handler中的loop真的是死循环吗?
了解过源码的朋友都知道,Handler与Looper、Messagequene的关系,这里就简要说一下:
Handler:消息处理器;
Looper:消息管理器;
MessageQuene:消息队列;
我们要理解的是Looper中的looper方法,仔细分析looper源码,其实它只完成几步工作:
public static void loop() {// 从队列去除消息final MessageQueue queue = me.mQueue;// for死循环for (;;) {Message msg = queue.next(); // might blockif (msg == null) {// No message indicates that the message queue is quitting.return;}// 消息分发 msg.target.dispatchMessage(msg); // 消息回收msg.recycleUnchecked();}
}
很尴尬,从上面的代码,我们得出的结论只有loop方法确实是个死循环。但是我们也找到了非常有价值的线索:
// 请注意注释:可能会锁住
Message msg = queue.next(); // might block
赶紧去看一眼MessageQuene.next方法:
Message next() {int pendingIdleHandlerCount = -1; // -1 only during first iteration// 下一次循环的时间int nextPollTimeoutMillis = 0;for (;;) {if (nextPollTimeoutMillis != 0) {Binder.flushPendingCommands();}// 此native方法很可疑nativePollOnce(ptr, nextPollTimeoutMillis);// 同步锁synchronized (this) {// Try to retrieve the next message. Return if found.final long now = SystemClock.uptimeMillis();Message prevMsg = null;Message msg = mMessages;// 找到要取出的消息if (msg != null && msg.target == null) {do {prevMsg = msg;msg = msg.next;} while (msg != null && !msg.isAsynchronous());}// 消息不为空,直接返回msgif (msg != null) {if (now < msg.when) {// Next message is not ready. Set a timeout to wake up when it is ready.nextPollTimeoutMillis = (int) Math.min(msg.when - now, Integer.MAX_VALUE);} else {// Got a message.// 不要锁住mBlocked = false;if (prevMsg != null) {prevMsg.next = msg.next;} else {mMessages = msg.next;}msg.next = null;if (DEBUG) Log.v(TAG, "Returning message: " + msg);msg.markInUse();return msg;}} else {// No more messages. 消息为空nextPollTimeoutMillis = -1;}// 判断是否有空闲时执行的任务if (pendingIdleHandlerCount < 0&& (mMessages == null || now < mMessages.when)) {pendingIdleHandlerCount = mIdleHandlers.size();}// 如果没有,直接锁住if (pendingIdleHandlerCount <= 0) {// No idle handlers to run. Loop and wait some more.// 记录是否要锁住mBlocked = true;continue;}if (mPendingIdleHandlers == null) {mPendingIdleHandlers = new IdleHandler[Math.max(pendingIdleHandlerCount, 4)];}mPendingIdleHandlers = mIdleHandlers.toArray(mPendingIdleHandlers);}// 开始执行Hanlder空闲时的任务for (int i = 0; i < pendingIdleHandlerCount; i++) {final IdleHandler idler = mPendingIdleHandlers[i];mPendingIdleHandlers[i] = null; // release the reference to the handler// 如果这个任务不需要维持下去,会删除这个任务boolean keep = false;try {keep = idler.queueIdle();} catch (Throwable t) {Log.wtf(TAG, "IdleHandler threw exception", t);}if (!keep) {synchronized (this) {mIdleHandlers.remove(idler);}}}// Reset the idle handler count to 0 so we do not run them again.pendingIdleHandlerCount = 0;// While calling an idle handler, a new message could have been delivered// so go back and look again for a pending message without waiting.nextPollTimeoutMillis = 0;}}
上面的代码有点长,但是每一句都有很重要的意义,这里直接总结一下我的发现:
- 每次遍历Msg,都会计算下一次的遍历时间,而这个时间作为参数传给了nativePollOnce;
- nativePollOnce会计算下一次的唤醒时间,如果是-1,表示锁住,等待唤醒;
- IdleHandler,表示空闲时执行的任务,即需要锁住线程的时候;
我还从没使用过IdleHandler,所以就尝试了一下:
// 版本判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {handler.looper.queue.addIdleHandler {Log.d("lzp", "Handler in Idle")// 返回true,表示该任务每次空闲时都会执行// 返回false,表示该任务只会执行一次true}
}
经过测试,IdleHandler并不可靠,下面举例:
创建线程,每50毫秒向Handler插入一条Msg,10秒后结束,我希望IdleHandler执行;
很遗憾,上面的需求并不会得到满足,因为程序的执行是非常快的,我们刚处理完第一条Msg,第二条还没有进来,这个时候就已经进入到空闲状态,同理接下来每一条Msg都有可能执行IdleHandler。
问题二:MessageQuene的同步锁何时唤醒
我们已经了解了Handler的轮询处理虽然的确是死循环,但是内部有同步锁的机制,所以并不会锁死线程,但是MessageQuene的同步锁又是什么时候被唤醒的呢?
仔细思考,我们可以猜测:应该是在新消息插入的时候,唤醒了同步锁。我们跟踪一下Handler.post:
// 最后会跟踪到MessageQuene.enqueueMessageboolean enqueueMessage(Message msg, long when) {...synchronized (this) {...msg.markInUse();msg.when = when;Message p = mMessages;// 是否需要唤醒同步锁boolean needWake;if (p == null || when == 0 || when < p.when) {// New head, wake up the event queue if blocked.msg.next = p;mMessages = msg;// 立刻唤醒同步锁needWake = mBlocked;} else {// Inserted within the middle of the queue. Usually we don't have to wake// up the event queue unless there is a barrier at the head of the queue// and the message is the earliest asynchronous message in the queue.needWake = mBlocked && p.target == null && msg.isAsynchronous();Message prev;for (;;) {prev = p;p = p.next;if (p == null || when < p.when) {break;}// 异步消息不做处理if (needWake && p.isAsynchronous()) {needWake = false;}}msg.next = p; // invariant: p == prev.nextprev.next = msg;}// 唤醒同步锁if (needWake) {nativeWake(mPtr);}}return true;}
Handler.postXXX方法最终都会执行到MessageQuene.enqueueMessage。
总结
最后做一个总结:
- Handler中的Looper和MessageQuene虽然是双死循环,但是MessageQuene中的死循环中使用了同步锁机制,避免资源的占用,所以并不会锁住线程;
- 当有新消息进入队列时,会唤醒同步锁;
以上内容仅供学习参考,如有错误欢迎指正。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- const成员变量和成员函数
const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表。 初始化 const 成员变量 构造函数初始化列表还有一个很重要的作用,那就是初始化 const 成员变量。初始…...
2024/4/25 20:46:40 - dubbo面试题
dubbo是什么dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含:集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模…...
2024/4/17 20:57:08 - 公司有负面新闻应该如何删除?
负面信息对企业的影响是很大的。比如求职者应聘,一般都会先通过网络了解下企业。然而如果不巧搜到了负面信息,那么无形之中就流失了很多人才。 招聘求职尚且如此,更不要说是产品或者服务的潜在客户了。舆论和媒体的影响,在现在的信息社会之中,是企业必须合理应对的。出现了…...
2024/4/24 18:05:01 - 关于UGUI点击穿透场景的问题
之前项目使用NGUI开发,在UGUI里面,可以使用UICamera提供的检测方法来检测是否点击到了NGUI的元素。现在我们使用UGUI开发,而且使用了两种点击输入(inputmouse和射线检测)。针对这种情况,使用unity EventSystem来进行检测UGUI的点击,然后在我们的场景点击输入端进行检测即…...
2024/5/8 19:04:14 - uni-app设置全局属性globalStyle
uni-app修炼之路(五) 参考官方文档:https://uniapp.dcloud.io/collocation/pages 应用的状态栏、导航条、标题、窗口背景色等这些公共的样式一般情况下都会写在globalStyle里面。这样页面就无需进行单独的配置了。属性 类型 默认值 描述 平台差异说明navigationBarBackgroun…...
2024/5/2 0:05:37 - java 调用科大讯飞语音听写和语音合成jdk
首先需要去科大讯飞开放云平台注册账号,添加一个应用,并领取免费的语音听写和语音合成的免费使用权限,拿到appId(用于后续使用)然后下载语音听写对应的开发demo包(语音听写和语音合成用的jar包一样的,只要下载一份即可),如下图:解压后把2个jar包和对应的库文件(window…...
2024/4/15 14:51:18 - 2020电工(初级)复审模拟考试及电工(初级)模拟考试系统
题库来源:安全生产模拟考试一点通公众号小程序2020电工(初级)复审模拟考试及电工(初级)模拟考试系统,包含电工(初级)复审模拟考试答案解析及电工(初级)模拟考试系统练习。由安全生产模拟考试一点通公众号结合国家电工(初级)考试最新大纲及电工(初级)考试真题出具…...
2024/4/25 0:48:24 - 2020起重机司机(限桥式起重机)证考试及起重机司机(限桥式起重机)作业考试题库
题库来源:安全生产模拟考试一点通公众号小程序2020起重机司机(限桥式起重机)证考试及起重机司机(限桥式起重机)作业考试题库,包含起重机司机(限桥式起重机)证考试答案解析及起重机司机(限桥式起重机)作业考试题库练习。由安全生产模拟考试一点通公众号结合国家起重机司机(限桥…...
2024/5/8 15:35:15 - 2020G1工业锅炉司炉考试题及G1工业锅炉司炉模拟考试软件
题库来源:安全生产模拟考试一点通公众号小程序2020G1工业锅炉司炉考试题及G1工业锅炉司炉模拟考试软件,包含G1工业锅炉司炉考试题答案解析及G1工业锅炉司炉模拟考试软件练习。由安全生产模拟考试一点通公众号结合国家G1工业锅炉司炉考试最新大纲及G1工业锅炉司炉考试真题出具…...
2024/4/24 23:49:23 - HelloWorld暑期学习之决策树
HelloWorld暑期学习之决策树——第四章前言一、线性模型二、决策树三、划分选择1. 信息增益2. 增益率3. 基尼指数四、剪枝处理1.预剪枝2.后剪枝五、连续与缺失值1.连续值2.缺失值六、总结 前言 HUAHUA暑假自学西瓜书顺手写的学习笔记,偏向入门科普型QAQ,建议配合西瓜书观看。…...
2024/4/25 11:49:51 - vue实现点击后动态添加class及删除同级class vue单击呈现不同样式 vue点击选中不同样式
vue实现点击后动态添加class及删除同级class代码丑丑的写法,但是一看就能理解上面的意思参考链接代码 html <template lang="html"><div><div@click="changeIndex(index)"v-for="(item,index) in arr":class="{on:currentI…...
2024/4/25 16:25:13 - sed使用变量进行匹配替换的问题
环境:MacOS X 10.8.2 在MacOS下使用sed进行字符串替换,并保存到原文件中: sed -i s/源字符/目标字符/g 文件其中 -i 后面的单引号是设置备份文件。设置为空表示不需要备份。在MacOS 10.8.2环境中,必须设置这个参数,否则不会保存到原文件中。其它版本和系统我没有环境测试…...
2024/4/25 9:10:27 - 如何在SQL Server中查询大于特定日期的所有日期?
本文翻译自:How do I query for all dates greater than a certain date in SQL Server? Im trying: 我尝试着: SELECT * FROM dbo.March2010 A WHERE A.Date >= 2010-04-01;A.Date looks like: 2010-03-04 00:00:00.000 A.Date看起来像: 2010-03-04 00:00:00.000 How…...
2024/5/8 20:12:54 - 在Visual Studio上运行JM8.6
该博客用VS 2019跑JM8.6代码,本人刚刚接触这放方面知识,菜鸟一枚,博客中有不足的地方希望大家原谅并指出。 参考博客:点击这里1、用VS打开JM下的tml.sln文件我用VS2019打开后,会出现如下的提示,点击确认,然后把rtpdump文件删掉(不知道为什么要删掉)。Iencod代表编码,Id…...
2024/4/22 5:21:45 - vmware Centos6.5 忘记密码
编写目的 今天打开vmware虚拟机,启动Centos 6.5 然后,忘记了密码,找了找解决办法,然后整理了一下。方便日后查询。 解决步骤重启Centos 6.5 启动虚拟机,出现下面的倒计时界面时,按键盘上的e键. (说明:要确保光标此时已经在虚拟机内了,要不然,按了e键,也是在windows内…...
2024/4/22 13:44:57 - 【Linux】CentOS8 初体验
一、部署CentOS8虚拟机1.下载Centos8镜像下载地址:https://www.centos.org/download/可以选择国内的下载源,比较快,这里推荐清华的和阿里的2.下载完成后,部署虚拟机相关内存必须要2G以上,官方建议是4G。硬盘要达到40G以上cd/dvd 要指定到你的ios镜像网络适配器按照自己需求…...
2024/4/15 18:29:50 - 菜鸟先飞之spark安装配置
接受了诸多软件的的毒打,想必spark算是简单的配置了,话不多说,让我们随便戳戳!一、安装准备1、首先检查是否安装了 jdk, 和版本是否符合要求。2、准备 spark-2.2.0-bin-hadoop2.7.tgz 安装文件3、将文件拖入专门安装软件的soft文件夹(这个可以随意)4、解压文件:tar -zxf …...
2024/4/23 11:40:01 - 在Linux上学习跳舞(更新ing)
1.httpd Httpd(即HTTP Daemon,超文本传输协议守护程序的简称)是一款运行于网页服务器后台,等待传入服务器请求的软件。HTTP守护程序能自动回应服务器请求,并使用HTTP协议传送超文本及多媒体内容。 2.Daemon 在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiː…...
2024/4/26 0:16:32 - vue实现点击后动态添加class及删除同级class vue单击呈现不同样式
vue实现点击后动态添加class及删除同级class代码丑丑的写法,但是一看就能理解上面的意思参考链接代码 html <template lang="html"><div><div@click="changeIndex(index)"v-for="(item,index) in arr":class="{on:currentI…...
2024/4/15 18:29:47 - 实习记录(一):用ros一个节点封装成类实现topic收发
用ros一个节点封装成类实现topic收发 2020.07.16~2020.07.17 1.任务 已有一个 filename.bag,其中有多个topic信息 点云 - topic名为 xxxx, 要求接收点云,发出点云的size (std_msgs/UInt32) 用一个类实现 2.环境 & 工具 ubuntu16.04 ROS kinetic C++ git 3.准备工作 1)新…...
2024/4/15 18:29:46
最新文章
- 获取hci蓝牙数据包
1. 在android手机上开发者模式中打开hci日志收集 2. 使用蓝牙 3. 使用.\adb.exe pull /data/log/bt/ e:\ 将文件导出 上述路径可以通过.\adb.exe pull /etc/bluetooth/ e:\配置文件进行查询 4. 将到处的log文件直接拖到wireshark中查看分析 上述不需要root,data…...
2024/5/8 22:26:57 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 数据挖掘中的PCA和KMeans:Airbnb房源案例研究
目录 一、PCA简介 二、数据集概览 三、数据预处理步骤 四、PCA申请 五、KMeans 聚类 六、PCA成分分析 七、逆变换 八、质心分析 九、结论 十、深入探究 10.1 第 1 步:确定 PCA 组件的最佳数量 10.2 第 2 步:使用 9 个组件重做 PCA 10.3 解释 PCA 加载和特…...
2024/5/8 8:18:28 - 【ARM 嵌入式 C 文件操作系列 20 -- 文件删除函数 remove 详细介绍】
请阅读【嵌入式开发学习必备专栏 】 文章目录 文件删除函数 remove 文件删除函数 remove 在 C 语言中, 可以使用 remove 函数来删除一个文件,但在删除之前 可能想确认该文件是否存在。 可以使用 stat 函数来检查文件是否存在。 以下是如何实现这个功能…...
2024/5/7 11:18:00 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/8 19:32:33 - 【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/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/8 1:37:40 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/8 20:33:13 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/8 1:37:39 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/8 20:58:56 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/7 21:15:55 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/8 1:37:35 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/7 16:05:05 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/8 18:06:50 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/8 1:37:32 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/7 16:05:05 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/8 1:37:31 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/8 1:37:31 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/8 12:44:41 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/8 9:51:44 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/8 1:37:29 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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