OC底层探索(二十四)内存管理 -- 引用计数底层分析
OC底层文章汇总
在OC底层探索(十八)内存五大区中了解了栈区、堆区、全局区、常量区和代码区五大区的分布,那么今天来分析一下内存管理的引用计数。
taggedpointer小对象类型
在iOS中NSNumber、NSString都是有小对象组成的对象,存放在栈区
,并且占用空间非常的小
。
在分析ISA、cache、read_image和sendMessage时都提及到了小对象类型。
分析
- 在
_read_images
中可以看到initializeTaggedPointerObfuscator
方法,当时并没有分析,这是一步是进行初始化小对象类型。
-
查看
initializeTaggedPointerObfuscator
- 在iOS14时,发现苹果将小对象类型的指针地址进行了混淆。
static void
initializeTaggedPointerObfuscator(void)
{if (sdkIsOlderThan(10_14, 12_0, 12_0, 5_0, 3_0) ||// Set the obfuscator to zero for apps linked against older SDKs,// in case they're relying on the tagged pointer representation.DisableTaggedPointerObfuscation) {objc_debug_taggedpointer_obfuscator = 0;} else {// Pull random data into the variable, then shift away all non-payload bits.arc4random_buf(&objc_debug_taggedpointer_obfuscator,sizeof(objc_debug_taggedpointer_obfuscator));objc_debug_taggedpointer_obfuscator &= ~_OBJC_TAG_MASK;}
}
- 在源码中发现了
_objc_decodeTaggedPointer
和_objc_taggedPointersEnabled
,分别是对小对象类型进行加密
与解密
,即执行异或操作
。
static inline uintptr_t
_objc_decodeTaggedPointer(const void * _Nullable ptr)
{return (uintptr_t)ptr ^ objc_debug_taggedpointer_obfuscator;
}static inline bool
_objc_taggedPointersEnabled(void)
{extern uintptr_t objc_debug_taggedpointer_mask;return (objc_debug_taggedpointer_mask != 0);
}
- 分别写NSString和NSNumber变量,并进行解密查看其地址。
NSNumber *number1 = @1;
NSString *str2 = [NSString stringWithFormat:@"b"];NSLog(@"%@-%p-%@",object_getClass(number1),number1,number1);
NSLog(@"%@-%p-%@ - 0x%lx",object_getClass(number1),number1,number1,_objc_decodeTaggedPointer_(number1));
NSLog(@"%p-%@",str2,str2);NSLog(@"0x%lx",_objc_decodeTaggedPointer_(str2));
打印结果为:
_objc_isTaggedPointer
中是进行判断是否为小对象类型,地址直接是对_OBJC_TAG_MASK
进行与运算
进行判断,其中_OBJC_TAG_MASK
是1
左移
63
位,就是判断最高位
是否为1
,如果是1
那么就是小对象
类型。
static inline bool
_objc_isTaggedPointer(const void * _Nullable ptr)
{return ((uintptr_t)ptr & _OBJC_TAG_MASK) == _OBJC_TAG_MASK;
}
define _OBJC_TAG_MASK (1UL<<63)
- 其中小对象的类型是由地址的高2~4位决定的,其中
010
=>2
代表的是NSString
,011
=>3
代表的是NSNumber
.
-
分析
0xb000000000000012
、0xa000000000000621
- 0xa =>
1011
最高位1
代表的是小对象
类型,011
代表的是NSNumber
类型 - 0xb =>
1010
最高位1
代表的是小对象
类型,010
代表的是NSString
类型
- 0xa =>
小结:
-
Tagged Pointer
专⻔用来存储小
的对象,例如NSNumber和NSDate -
Tagged Pointer
指针
的值
不再是地址
了,而是真正的值
。所以,实际上它不再 是一个对象了,它只是一个披着对象皮的普通变量而已。所以,它的内存并不存储 在堆中,所以retain
和release
没有
对小对象类型进行内存管理
,即可以自主回收
-
在
内存
读取上有着3
倍的效率,创建时
比以前快106
倍。
SiddeTables散列表
在NONPOINTER_ISA
中引用计数是存储在extra_rc
中,但是如果当这里面存满了,那么就向SiddeTables
中存储.
- 应用中存在多张散列表
- 每张散列表中都存放着
自旋锁
、引用计数
和弱引用表
.
源码分析
- SideTable是存在到SideTablesMap (
hash
表)中
static StripedMap<SideTable>& SideTables() {return SideTablesMap.get();
}
-
在
StripedMap
中我们发现SideTable
会有多张,真机
最多有8
张散列表模拟器
最多有64
张散列表
class StripedMap {
#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR//真机、非模拟器enum { StripeCount = 8 };
#elseenum { StripeCount = 64 };
#endifstruct PaddedT {T value alignas(CacheLineSize);};PaddedT array[StripeCount];static unsigned int indexForPointer(const void *p) {uintptr_t addr = reinterpret_cast<uintptr_t>(p);return ((addr >> 4) ^ (addr >> 9)) % StripeCount;}public:T& operator[] (const void *p) { return array[indexForPointer(p)].value; }const T& operator[] (const void *p) const { return const_cast<StripedMap<T>>(this)[p]; }......
};
SideTable
是一个结构体
,分别存放着spinlock_t
、RefcountMap
和`weak_table_t类型的属性。
struct SideTable {spinlock_t slock;//自旋锁RefcountMap refcnts;//引用计数weak_table_t weak_table;//弱引用表SideTable() {memset(&weak_table, 0, sizeof(weak_table));}~SideTable() {_objc_fatal("Do not delete SideTable.");}void lock() { slock.lock(); }void unlock() { slock.unlock(); }void forceReset() { slock.forceReset(); }// Address-ordered lock discipline for a pair of side tables.template<HaveOld, HaveNew>static void lockTwo(SideTable *lock1, SideTable *lock2);template<HaveOld, HaveNew>static void unlockTwo(SideTable *lock1, SideTable *lock2);
};
retain 引用计数加一
- 搜索
objc_retain
,发现在源码中,对小对象
类型进行了判断
,如果是小对象
类型就直接返回该对象
,没有
进行引用计数加一
。
__attribute__((aligned(16), flatten, noinline))
id
objc_retain(id obj)
{if (!obj) return obj;if (obj->isTaggedPointer()) return obj;return obj->retain();
}
- 进入
retain
,查看rootRetain
inline id
objc_object::retain()
{ASSERT(!isTaggedPointer());if (fastpath(!ISA()->hasCustomRR())) {return rootRetain();}return ((id(*)(objc_object *, SEL))objc_msgSend)(this, @selector(retain));
}
- 查看
rootRetain
ALWAYS_INLINE id
objc_object::rootRetain(bool tryRetain, bool handleOverflow)
{if (isTaggedPointer()) return (id)this;bool sideTableLocked = false;bool transcribeToSideTable = false;isa_t oldisa;isa_t newisa;do {transcribeToSideTable = false;oldisa = LoadExclusive(&isa.bits);newisa = oldisa;//判断是否为nonpointerISA,if (slowpath(!newisa.nonpointer)) {//不是nonpointerISA直接操作散列表ClearExclusive(&isa.bits);if (rawISA()->isMetaClass()) return (id)this;if (!tryRetain && sideTableLocked) sidetable_unlock();if (tryRetain) return sidetable_tryRetain() ? (id)this : nil;else return sidetable_retain();}// don't check newisa.fast_rr; we already called any RR overrides//判断是否正在析构if (slowpath(tryRetain && newisa.deallocating)) {ClearExclusive(&isa.bits);if (!tryRetain && sideTableLocked) sidetable_unlock();return nil;}uintptr_t carry;//newisa的bits 加一,其中carrynewisa.bits = addc(newisa.bits, RC_ONE, 0, &carry); // extra_rc++//如果isa中引用计数满了就操作散列表,直接将extra_rc的一半存储到散列表中if (slowpath(carry)) {// newisa.extra_rc++ overflowedif (!handleOverflow) {ClearExclusive(&isa.bits);return rootRetain_overflow(tryRetain);}// Leave half of the retain counts inline and // prepare to copy the other half to the side table.if (!tryRetain && !sideTableLocked) sidetable_lock();sideTableLocked = true;transcribeToSideTable = true;newisa.extra_rc = RC_HALF;newisa.has_sidetable_rc = true;}} while (slowpath(!StoreExclusive(&isa.bits, oldisa.bits, newisa.bits)));if (slowpath(transcribeToSideTable)) {// Copy the other half of the retain counts to the side table.sidetable_addExtraRC_nolock(RC_HALF);}if (slowpath(!tryRetain && sideTableLocked)) sidetable_unlock();return (id)this;
}
retain操作流程
-
判断是否为
nonpointerISA
-
是
nonpointerISA
,直接操作散列表
-
不是
nonpointerISA
,在进行判断是否当前对象是否正在释放
-
正在释放
:直接返回,不进行操作
-
没有在释放
,引用计数
加一
,存储到isa
的extra_rc
中,如果extra_rc
满了
,就将其中一半
存储到散列表
中。
-
-
realse 引用计数减一
其实就是retain的反流程,有待完善
retainCount
有待完善
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 打开DOS多种方法
打开DOS多种方法 (1)winR (2)开始->windows系统->命令提示符 (3)在资源管理器地址栏最前面加入cmd空格 回车 (4)搜索cmd...
2024/5/9 2:57:57 - 页面切换到word文档后,鼠标总是转圈怎么办?
1、点击右上角的File 2、点击选项 3、点击加载项,再点击转到 4、去掉不用的加载项名称前面的√,然后点击确定就可以了...
2024/5/8 20:57:42 - C++11 可变参数模板
介绍 一个可变参数模板是一个接受可变数目参数的模板函数或模板类。可变数目的参数成为参数包。存在两种参数包:模板参数包 ,表示零个或多个模板参数;函数参数包,表示零个或多个函数参数。 用一个省略号来指出一个模板参数或函数…...
2024/5/8 13:11:40 - RocketMQ源码解析之broker文件清理
原创不易,转载请注明出处 文章目录1. broker 清理文件介绍1.1 哪些文件需要清理1.2 RocketMQ文件清理的机制2.源码解析2.1 清理commitlog2.2 ConsumeQueue 与indexFile 清理总结1. broker 清理文件介绍 1.1 哪些文件需要清理 首先我们需要介绍下在RocketMQ中哪些文…...
2024/5/8 20:43:41 - pycharm开启debug模式报错汇总
最近在使用pycharm IDE开发odoo的时候,开启debug模式遇到了不少坑,现在汇总记录下,方便大家以后规避 process 5924 is connecting 设置有问题,需要点击setting->python Debugger,该页面有一个pyQt compatiblede 对…...
2024/5/6 10:14:55 - spark RDD textFile算子 分区数量详解
进入textFile原码 发现 分区数量调用 hadoopFile中的TextInputFormat类,传入参数Key为LongWritable即偏移量,value为Text, 由此得知是通过这个类来读取 继续进入TextInputFormat类中 发现有个是否可以切分的判断,可以知道 一些不可拆分的文件由此过滤掉,可以切片拆分的文件继续…...
2024/5/9 2:19:38 - 基于flink的电商用户行为数据分析【2】| 实时热门商品统计
前言 在上一期内容中,菌哥已经为大家介绍了电商用户行为数据分析的主要功能和模块介绍。本期内容,我们需要介绍的是实时热门商品统计模块的功能开发。 首先要实现的是实时热门商品统计,我们将会基于UserBehavior数据集来进行分析。 …...
2024/5/8 20:23:05 - ElasticSearch学习2《es结构、es的restful语法、索引的操作、文档的增删改操作》
上一篇:ElasticSearch学习1《下载elasticsearch、kibana、IK分词器》 目录一、ES结构1、索引index2、类型type3、文档document4、属性field二、操作ES的restful语法1、GET请求:2、POST请求:3、PUT请求:4、DELETE 请求:…...
2024/4/22 14:46:27 - 多元线性回归—C语言
上篇已经介绍过简单线性回归了,这篇介绍第二个算法,多元线性回归,仅介绍两个主要函数:预测函数和训练函数。 算法介绍 模型可以如下表示: yb0b1x1b2x2...y b_0b_1x_1b_2x_2... yb0b1x1b2x2... 随机梯度下…...
2024/4/30 8:38:46 - python程序设计 第一章 第二节
Python程序设计教程 python 概述 python 语言的特点 Python 是目前最流行的语言之一,从云计算、大数据到人工智能,Python 无处不在,Python 人才需求量也在逐年攀升,Python 为何能发展如此的迅猛,究竟有什么特点呢&a…...
2024/5/8 17:15:23 - 第五课 Vue+Django rest framework生鲜商品类别数据和vue展示
第五课 VueDjango rest framework生鲜商品类别数据和vue展示 文章目录第五课 VueDjango rest framework生鲜商品类别数据和vue展示第一节 django view实现商品分类数据1.1 categorys Api接口实现1.2 categorys Api查询需要数据1.3 categorys Api和Vue接口调试第二节 django vie…...
2024/5/8 16:36:54 - Perceptron算法—C语言
本篇介绍第三个算法,感知机算法,同样仅介绍两个主要函数:预测函数和训练函数。 需要说明,本算法仍使用随机梯度下降算法,与上篇多元线性回归有很多相似之处。 算法介绍 激活函数可以如下表示: activationb…...
2024/4/22 14:22:44 - window下tomcat安装
一、下载安装文件 地址:https://tomcat.apache.org/ 选择合适的版本(这里下载免安装版)下载。 将下载的文件解压到指定文件夹,比如:D:\Program Files\apache_tomcat\tomcat_9.0.40 二、配置环境变量 CATALINA_HOME …...
2024/4/22 14:22:42 - 小米4C Android5.1线刷
官方工具: 线刷通用教程: 传送门 下载通用线刷工具:http://bigota.d.miui.com/tools/MiFlash2018-5-28-0.zip (连接来自于上面的传送门) 解锁BL: 官方解锁连接: http://www.miui.com/unlock/index.html 解压解锁工具…...
2024/4/30 2:29:09 - Java多线程实现的几种方式
Java多线程实现的几种方式 1.继承thread类 2.实现Runnable接口 3.通过Callable和FutureTask创建线程 4.使用线程池方式—Callable接口 5.使用线程池方式--Runnable接口 1.继承thread类 继承thread类,重写run()方法,start()启动线程 public class …...
2024/4/25 15:59:24 - linux查看当前系统版本
目录 方法一、lsb_release -a 方法二、cat /etc/issue linux系统有很多方法可以查看系统命令,这里简单介绍几个常用。 方法一、lsb_release -a 查询命令: lsb_release -a 结果展示: 参数分析: Distributor ID: Ubuntu …...
2024/5/7 19:46:20 - VS2019 Qt 怎么添加Qt模块?
项目属性中Qt Project Settings中Qt Modules中添加模块即可 2020.11.24记录...
2024/4/22 14:46:23 - 算法入门之二叉树遍历顺序
二叉树遍历顺序 四种遍历方式 先/前序遍历、中序遍历、后序遍历、层序遍历 测试二叉树创建 function BinaryTree() {this.root null;this.insert function (key) {var node new BinaryNode(key);if (this.root) {this._insertNode(node, this.root);} else {this.root …...
2024/4/22 14:46:22 - JZ32 把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解:拿到该题,…...
2024/4/22 14:46:21 - 逻辑回归—C语言
本篇介绍目前为止的最后一个算法,逻辑回归。后边如果有机会可能会继续更新。 同样使用随机梯度下降法。 算法介绍 模型可以如下表示: yhateb0b1x11eb0b1x1yhat \frac{e^{b0b1x1}}{1e^{b0b1x1}} yhat1eb0b1x1eb0b1x1 可简化为(简单数学计算即可) yha…...
2024/4/22 14:46:20
最新文章
- Elasticsearch的基本使用
Elasticsearch的基本使用 1.基本概念1.1 文档和字段1.2 索引和映射1.3 mysql与elasticsearch对比 2.索引库2.1 es中mapping映射属性2.2.es中索引库的增删改查 3.文档3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.4.1 全量修改3.4.2 增量修改3.5 总结 4.DSL查询语法4.1 D…...
2024/5/9 7:42:39 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 3d representation的一些基本概念
顶点(Vertex):三维空间中的一个点,可以有多个属性,如位置坐标、颜色、纹理坐标和法线向量。它是构建三维几何形状的基本单元。 边(Edge):连接两个顶点形成的直线段,它定…...
2024/5/8 5:12:31 - python爬取B站视频
参考:https://cloud.tencent.com/developer/article/1768680 参考的代码有点问题,请求头需要修改,上代码: import requests import re # 正则表达式 import pprint import json from moviepy.editor import AudioFileClip, Vid…...
2024/5/8 1:08:40 - 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/9 7:40:42 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/9 2:44:26 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/8 20:33:13 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/9 3:15:57 - 【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/9 5:40:03 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/9 7:40:40 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/8 20:58:56 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/9 1:35:21 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/9 4:12:16 - 用欧拉路径判断图同构推出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/9 7:40:35 - 【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/9 7:40:34 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/9 1:42:21 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/9 5:02:59 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/9 4:31:45 - 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/9 6:36:49 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/9 4:33:29 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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