JMM内存模型-同步动作与安全发布
1 JMM内存模型
由于存在编译器优化、Processor流水线优化、缓存优化等,我们编写的代码不一定是实际运行的代码,我们编写的代码顺序不一定是实际执行的顺序,会出现可见性、原子性、有序性问题。所以我们需要学习JMM内存模型来解决上面的问题。
1.1 什么是JMM
内存模型就是多线程下对共享变量的一组读写规则。
- 共享变量值是否在线程间同步
- 代码可能的执行顺序
- 需要关注的操作就有两种 Load、Store
- Load 就是从缓存读取到寄存器中,如果一级缓存中没有,就会层层读取二级、三级缓存,最后才是Memory
- Store 就是从寄存器运算结果写入缓存,不会直接写入 Memory,当 Cache line 将被 eject 时,会
writeback 到 Memory
1.2 JMM规范
1.2.1 规则1 - Race Condition
在多线程下,没有依赖关系的代码,在执行共享变量读写操作(至少有一个线程写)时,并不能保证以编写顺序(Program Order)执行,这称为发生了竞态条件(Race Condition)。
例如:
有共享变量x、y,线程1执行
r.r1 = y;
r.r2 = x;
线程2执行
x = 1;
y = 1;
最终的结果可能是 r1==1 而 r2==0
y = 1;
r.r1 = y;
r.r2 = x;
x = 1;
1.2.2 规则2 - Synchronization Order
若要保证多线程下,每个线程的执行顺序(Synchronization Order)按编写顺序(Program Order)执行,那么必须使用 Synchronization Actions(同步动作) 来保证,这些 SA 有
- lock,unlock - synchronized, ReentrantLock
- volatile 方式读写变量 - 保证可见性,防止重排序
- VarHandle 方式读写变量
例如:
用 volatile 修饰共享变量 y,线程 1 执行
r.r1 = y;
r.r2 = x;
线程 2 执行
x = 1;
y = 1;
最终的结果就不可能是 r1==1 而 r2==0
1.2.3 规则3 - Happens-Before
线程切换时代码的顺序和可见性
若是变量读写时发生线程切换(例如,线程 1 写入 x,切换至线程 2,线程 2 读取 x)在这些边界的处理上如果有action1 先于 action 2 发生,那么代码可以按确定的顺序执行,这称之为 Happens-Before Order 规则。
用公式表达为
含义为:如果 action1 先于 action2 发生,那么 action1 之前的共享变量的修改对于 action2 可见,且代码按顺序执行。
具体规则
其中 代表线程,而 x 未加说明,是普通共享变量,使用 volatile 会单独说明
1)线程的启动和运行边界
2)线程的结束和 join 边界
3)线程的打断和得知打断边界
4)unlock 与 lock 边界
5)volatile write 与 volatile read 边界
6)传递性
1.2.4 规则4 - Causality
Causality 即因果律:代码之间如存在依赖关系,即使没有加 SA 操作,代码的执行顺序也是可以预见的。
1.2.5 规则5 - 安全发布
若要安全构造对象,并将其共享使用,需要用 final 或 volatile 修饰其成员变量,并避免 this 溢出情况。
静态成员变量可以安全地发布。
例如:
class Holder {int x1;volatile int x2;public Holder(int v) {x1 = v;x2 = v;}}
需要将它作为全局使用,两个线程,一个创建,一个使用
Holder f;@Actorpublic void a1() {f = new Holder(1);}@Actorvoid a2(I_Result r) {Holder o = this.f;if (o != null) {r.r1 = o.x2 + o.x1; // 0} else {r.r1 = ‐1; // ‐1}}
可能会看到未构造完整的对象
2 同步动作
2.1 内存屏障
内存屏障是防止指令重排的一种手段,具体实现与 CPU 架构相关。
2.1.1 LoadLoad
2.1.2 LoadStore
2.1.3 StoreStore
2.1.4 StoreLoad
2.1.5 组合情况
LoadStore + StoreStore = Release
LoadLoad + LoadStore = Acquire
2.2 volatile
2.2.1 本质
volatile增加了内存屏障,可以保证:
💎单一变量的赋值原子性
💎控制了可能的执行路径:线程内按屏障有序,线程切换时按 HB 有序
💎可见性:线程切换时若发生了 写 ->读 则变量可见,顺带影响普通变量可见
2.2.2 visibility
即使是多次读取同一变量,所得结果不合理
初始:
异常情况:
使用 volatile 修饰 x 即可,会阻止编译器对代码的优化,加入的 StoreLoad 屏障会保证红色线程的写入,对后续蓝色线程的读取可见。
2.2.3 partial ordering
意外情况:
volatile 修饰 y
volatile 修饰 x - 行不行?
重要结论:
💎 volatile 写要用来收官,volatile 读要用来开篇
2.2.4 total ordering
初始:
意外情况:
volatile 仅修饰 y或仅修饰x - 不符合最后写最先读
都用volatile修饰意味着它们线程内的次序固定
2.2.5 源码体现
凡是需要 cas (Compare and Swap)操作的地方。
代码片段 1 - AtomicInteger
代码片段 2 - AbstractQueuedSynchronizer
代码片段 3 - ConcurrentHashMap
2.3 synchronized
2.3.1 本质
monitorenter 与 monitorexit 工作原理
相关内存屏障:
2.3.2 Atomicity
2.3.3 优化
- 重量级
当有竞争时,仍会向系统申请 Monitor 互斥锁。 - 轻量级锁
如果线程加锁、解锁时间上刚好是错开的,这时候就可以使用轻量级锁,只是使用 cas(Compare and Swap) 尝试将对象头替换为该线程的锁记录地址,如果 cas 失败,会锁重入或触发重量级锁升级。 - 偏向锁
打个比方,我要进到教室的一个座位上,重量级锁是把整间教室锁上了,这个教室只能容纳获得钥匙的那一个人,其让人进不来。轻量级锁就好比用课本占座,线程每次占座前还得比较一下,课本是不是自己的(cas),频繁 cas 性能也会受到影响。
而偏向锁就好比座位上已经刻好了线程的名字,线程【专用】这个座位,比 cas 更为轻量。
但是一旦其他线程访问偏向对象,那么比较麻烦,需要把座位上的名字擦去,这称之为偏向锁撤销,锁也升级为轻量级锁。
偏向锁撤销也属于昂贵的操作,怎么减少呢,JVM 会记录这一类对象被撤销的次数,如果超过了 20 这个阈值,下次新线程访问偏向对象时,就不用撤销了,而是刻上新线程的名字,这称为重偏向。
如果撤销次数进一步增加,超过 40 这个阈值,JVM 会认为这一类对象不适合采用偏向锁,会对它们禁用偏向锁,下次新建对象会直接加轻量级锁。
2.3.4 无锁 vs 有锁
- synchronized 更为重量,申请锁、锁重入都要发起系统调用,频繁调用性能会受影响
- synchronized 如果无法获取锁时,线程会陷入阻塞,引起的线程上下文切换成本高
- 虽然做了一系列优化,但轻量级锁、偏向锁都是针对无数据竞争场景的
- 如果数据的原子操作时间较长,仍应该让线程阻塞,无锁适合的是短频快的共享数据修改操作主要用于计数器、停止标记、或是阻塞前的有限尝试
3 更多安全问题
3.1 安全发布
构造也不安全:
public class TestUnsafeConstruct {static Student student;public static void main(String[] args) {student = new Student("zhangsan",10);new Thread(()->{if (student != null) {System.out.println(student.name + " " + student.age);} else {System.out.println("还未初始化!");}}).start();}static class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}}
}
原因分析:
初始:
发生指令重排:对象已产生,对象中的属性还未全部初始化完成
造成红色线程读取到的age==0
用final修饰任意成员变量即可保证不会出现构造不完全的现象
用volatile修饰age,注意赋值操作必须在最后
DCL 安全单例
public class Singleton {private static Singleton instance = null;int x1,x2;private Singleton(int v){x1 = v;x2 = v;}public static Singleton getInstance() {if (instance == null) {synchronized(Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}
有问题的情况:
volatile修饰instance:
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Unity UGUI 之 实现按钮 Button 长按和双击的功能效果
Unity UGUI 之 实现按钮 Button 长按和双击的功能效果目录Unity UGUI 之 实现按钮 Button 长按和双击的功能效果一、简单介绍二、实现原理三、注意事项四、效果预览五、实现步骤六、关键代码一、简单介绍UGUI,是Unity自带的 GUI 系统,有别于 NGUI;使用 UGUI 也能制作出比较酷…...
2024/5/1 11:36:11 - 服务器上pip install python库成功后但是并没有库的文件
虽然cd进了文件夹,但是虚拟环境其实并没有进入,可以把pip install 改成 ./pip install...
2024/5/2 13:11:28 - 检测假新闻:比较不同的分类方法的准确率
这些推特是真的还是假的?他们肯定是假的。在7月15日时,Twitter出现了一个大问题,大账户被黑客入侵,要求比特币捐款,并承诺将捐款金额翻倍。所以即使这些推特是真实的,它们也包含了虚假信息。 这不是第一次,也可能不是最后一次。但是,我们能阻止它吗?我们能阻止这种情况…...
2024/4/29 9:41:49 - 常见的几类矩阵(正交矩阵、酉矩阵、正规矩阵等)
目录实对称矩阵定义实反对称矩阵定义厄米特矩阵定义反厄米特矩阵定义正交矩阵定义性质酉矩阵(幺正矩阵)定义性质正规矩阵定义性质正定矩阵定义性质充要条件友矩阵(伴侣矩阵)定义性质旋转矩阵定义性质对比 实对称矩阵 定义 AT=AA^T=AAT=A实反对称矩阵 定义 AT=−AA^T=-AAT=−…...
2024/4/28 7:33:28 - MySQL—DQL语言
MySQL—DQL语言 进阶1:基础查询语法: SELECT 要查询的东西 【FROM 表名】;1.查询列表可以是:表中的字段、常量值、表达式、函数2.查询的结果是一个虚拟表格案例: #选择myemployees数据库 USE myemployees; #1.查询表中的单个字段 SELECT employee_id FROM employees; #2.查…...
2024/5/6 0:58:44 - pdf转图片
引入以下依赖(gradle) :compile group: org.apache.pdfbox, name: pdfbox, version: 2.0.20 compile group: org.apache.pdfbox, name: fontbox, version: 2.0.20 代码如下: public class PdfToImage {private static final String defaultImgType = "png"; priv…...
2024/4/18 20:03:06 - 大数据_MR开发示例
大数据_MR开发示例引入依赖封装对象工具类预处理分析获取模型数据导出jar包 引入依赖<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-core</artifactId><version>1.2.1</version></dependency>封装对象…...
2024/4/17 23:27:07 - java枚举工具类
package com.sun.collierycommon.utils;import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.sun.collierycommon.domain.BaseEnum;import java.util.HashMap; import java.util.List; import java.util.Map;/*** @Description:枚举工…...
2024/4/16 2:05:08 - 算法在线刷题记录(一)
算法在线刷题记录输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路: 将改整数转换成为二进制的字符数组,然后对数组进行遍历判断; 代码实现: public class Solution {public int NumberOf1(int n) {String string = Integer.toBinaryString(n); //转换…...
2024/4/19 3:39:13 - 刷脸支付的安全性达到极高的金融级别
刷脸支付设备依靠3D传感摄像头进行人脸识别,其内置的点阵投影仪可以投射出3万多个肉眼不可见的红外点到用户脸部,多维度、多角度在颜色、纹理、深度等数据进行高层次对比,安全性和精准性更高,识别速度更快。尽管现在刷脸支付的安全性已经达到极高的金融级别,但是随着算法和…...
2024/4/12 17:41:17 - 大数据_网络日志流量分析案例
大数据_网络日志流量分析案例技术和架构数据处理流程系统的架构数据展现数据采集Nginx日志数据内容样式示例Flume配置数据预处理目的初步处理开发mr程序脚本效果点击流模型数据梳理/visit信息表开发mr程序脚本效果数据仓库设计简述表结构实现创建ODS层数据表(ods_weblog_origi…...
2024/4/28 7:49:49 - 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
方法1: 采用递归的思想 (1)先确定合成的新链表的头节点 (2) 再合并剩下的节点ListNode* Merge(ListNode* pHead1, ListNode* pHead2){if(pHead1==nullptr)return pHead2;if(pHead2==nullptr)return pHead1;//判断节点大小,取小节点(要删除的节点)ListNode* cur=pHead1-…...
2024/4/26 6:28:26 - 了解线段树(C++)
一.定义: 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 二.功能: 快速的查找某一个节点在若干条线段中出现的次数。(单点、区间的修改、查询) 三.时间复杂度: O(logN) 四.注意: 实际应用时一般要开4N的数组…...
2024/4/10 12:57:22 - 智算之道初赛第三场---水杯
水杯 小小 D 有一个能显示温度的杯子. 其原理是杯盖上的一个传感器. 只有在杯子内的水的体积大于等于某个数 L 的时候传感器才能显示水温,并且如果水温不在 [A,B]内传感器也无法显示水温. 注意,这里温度对水的体积没有影响 初始水杯为空,有 n 次操作,操作分为三种: 1 x 表示…...
2024/4/10 12:57:21 - 数学三角形(简单dp)
大家请先看题 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 输入格式 第一个行一个正整数 rr ,表示行的数目。 后面每行为这个数…...
2024/5/6 2:27:02 - 设置eMMC和DDR的工作频率
1、MTK 平台查看eMMC和DDR的工作频率eMMC:adb shell cat /sys/kernel/debug/mmc0/clockDDR:adb shell cat /sys/bus/platform/drivers/emi_clk_test/read_dram_data_rate补充说明:cat read_dram_data_rate节点显示的是实时的dramc频率,由于相关平台可能默认开启了DVFS功能,…...
2024/4/23 11:25:43 - Java采用的字符集编码——Unicode(标准码)
Ⅰ 什么是字符集? 字符:字符(Char)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集:字符集(Charset)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。 Ⅱ 有哪些常用的字符集? 1. ASCII 7位(bits)表示一个字符,共128字…...
2024/4/19 6:32:07 - 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!
从2016年1月开始写博客,默默地更新《Spring Boot系列教程》,从无人问津到千万访问,作为一个独立站点(http://blog.didispace.com),相信只有那些跟我一样,坚持维护自己独立博客的童鞋才能体会这有多么不容易。 由于没有CSDN、博客园这样的权重优势,各种发布于这些平台上…...
2024/4/12 23:31:24 - Linux安装Docker 阿里云CentOs7
在阿里云ecs上安装docker docker官方提供的安装指导 手动安装 https://docs.docker.com/engine/install/centos/ 卸载旧版本 $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \dock…...
2024/5/5 4:54:10 - SpringBoot实现过滤器、拦截器与切片
正文 Q:使用过滤器、拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系过滤器Filter过滤器概念Filter是J2E中来的,可以看做是Servlet的一种“加强版”,它主要用于对用户请求进行预处理和后处理,拥有一个典型的处理链。Filter也可以对用户请求生成响应,这一点与…...
2024/4/10 12:28:05
最新文章
- 【Android】Android应用性能优化总结
AndroidApp应用性能优化总结 最近大半年的时间里,大部分投在了某国内新能源汽车的某款AndroidApp开发上。 由于该App是该款车上,常用重点应用。所以车厂对应用性能的要求比较高。 主要包括: 应用冷启动达到***ms。应用热(温)启动达到***ms应…...
2024/5/6 6:13:45 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - C++ //练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。
C Primer(第5版) 练习 11.14 练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。 环境:Linux Ubuntu(云服务器&#x…...
2024/5/4 2:31:17 - Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的
Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的 我有一个这样的变量值类型 一、在没用 ts 之前的 props 类型指定方式 我们都知道之前在没用 ts 之前的 props 变量值类型指定方式: 如下图,billFood 定义方式是这样的&…...
2024/5/4 17:46:51 - 【Redis】安装Redis后报ERR Client sent AUTH, but no password is set
一、问题描述 安装Redis后使用auth验证是否安装成功(或者其它应用访问redis时报错),报ERR Client sent AUTH, but no password is set 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set二、问题解决 …...
2024/5/1 12:59:02 - 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/5 18:19:03 - 【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/5 12:22:20 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/5 19:59:54 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/4 23:54:44 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/5 15:25:47 - 【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/6 6:01:13 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/4 23:54:44 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/6 1:08:53 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/5 18:50:00 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/6 0:27:44 - 用欧拉路径判断图同构推出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/5 2:25:33 - 【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/4 21:24:42 - 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/5 13:14:22 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/4 13:16:06 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/5 17:03:52 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/5 21:10:50 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/5 3:37:58 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/4 23:54:30 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/5 17:03:21 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/5 15:25:31 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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