Java 序列化界新贵 kryo 和熟悉的“老大哥”,就是 PowerJob 的序列化方案
序列化与反序列化一直是分布式编程中无法绕开的话题。PowerJob 作为一个完全意义上的分布式系统,自然少不了节点通讯时不可避免的序列化问题。由于 PowerJob 定位是中间件,出于对性能的追求,在序列化上自然也是花费了不少时间去雕琢。以下是整个过程中的一些经验与分享,希望对大家有所帮助。
一、序列化界新贵:kryo
kryo 作为目前最快的序列化框架,自然受到了我的青睐。在 PowerJob 中,kryo 是内置默认的序列化框架。下面为大家介绍 kryo 的用法。
1.1 基础用法
对于序列化框架来说,API 其实都差不多,毕竟入参和出参都定义好了(一个是需要序列化的对象,一个是序列化后的结果,比如字节数组)。下面简单介绍下 kryo 的基础用法,由于序列化和反序列化类似,以下使用序列化来作为演示。
Kryo kryo = new Kryo();
try (Output opt = new Output(1024, -1)) {kryo.writeClassAndObject(opt, obj);opt.flush();return opt.getBuffer();
}
代码很简单,首先需要创建两个对象:Kryo 和 Output。其中,Kryo 是序列化主角,负责完成实际的序列化/反序列化工作。而 Output 则是 kryo 框架封装的流对象,用于存储序列化后的二进制数据。当两个对象都准备完毕后,调用 kryo.writeClassAndObject(opt, obj)
方法即可完成对象的序列化,最后调用 Output 流对象的 getBuffer()
方法获取序列化结果,也就是二进制数组。
1.2 线程不安全
相信大家都用过 fastjson,初次接触 fastjson 肯定会被它简单的 API 所吸引,常用的序列化/反序列化统统一行代码搞定,比如 JSON.toJSONString()
。通常来说,这种通过静态方法暴露的 API,其背后的设计与实现都是线程安全的,也就是在多线程环境中,你可以安心的使用 fastjson 的静态方法进行序列化和反序列化,那么 kryo 可以吗?
从上述代码不难看出,不可以~否则,人家为什么要多次一举让你创建对象提高使用成本呢?
王进喜同志说过,没有条件就创造条件。既然 kryo 官方不提供静态方法让我们简单使用,那就自己封装一个吧~
抛开性能因素,封装一个工具类非常简单,毕竟我们的目标是解决 kryo 的并发安全问题,而当没有任何共享资源时,是不存在任何并发安全问题的。那么我们只需要在刚刚的实例代码上,套上一个静态方法,就完成了最简单的kryo 工具类封装,代码示例如下:
public static byte[] serialize(Object obj) {Kryo kryo = new Kryo();try (Output opt = new Output(1024, -1)) {kryo.writeClassAndObject(opt, obj);opt.flush();return opt.getBuffer();}
}
安全问题是解决了,但...事情往往不会那么简单。这种模式下,每一次调用都会重复创建 2 个新对象(Kryo 和 Output),这在高并发下会产生一笔不小的开销。为了获取性能的提升,自然要考虑到对象的复用问题。对象的复用常用解决方案有两个,分别是对象池和 ThreadLocal,下面分别进行介绍。
1.3 对象池
在编程中,“池”这个名词相信大家一定不陌生。线程池、连接池已经是并发编程中不可避免的一部分。“池”重复利用了复用的思想,将创建完后的对象通过某个容器保存起来反复使用,从而达到提升性能的作用。Kryo 对象池原理上便是如此。Kryo 框架自带了对象池的实现,因此使用非常简单,不外乎创建池、从池中获取对象、归还对象三步,以下为代码实例。
首先,创建 Kryo 对象池,通过重写 Pool 接口的 create 方法,便可创建出自定义配置的对象池。
private static final Pool<Kryo> kryoPool = new Pool<Kryo>(true, false, 512) {@Overrideprotected Kryo create() {Kryo kryo = new Kryo();// 关闭序列化注册,会导致性能些许下降,但在分布式环境中,注册类生成ID不一致会导致错误kryo.setRegistrationRequired(false);// 支持循环引用,也会导致性能些许下降 T_Tkryo.setReferences(true);return kryo;}
};
当需要使用 kryo 时,调用 kryoPool.obtain()
方法即可,使用完毕后再调用 kryoPool.free(kryo)
归还对象,就完成了一次完整的租赁使用。
public static byte[] serialize(Object obj) {Kryo kryo = kryoPool.obtain();// 使用 Output 对象池会导致序列化重复的错误(getBuffer返回了Output对象的buffer引用)try (Output opt = new Output(1024, -1)) {kryo.writeClassAndObject(opt, obj);opt.flush();return opt.getBuffer();}finally {kryoPool.free(kryo);}
}
对象池技术是所有并发安全方案中性能最好的,只要对象池大小评估得当,就能在占用极小内存空间的情况下完美解决并发安全问题。这也是 PowerJob 诞生初期使用的方案,直到...PowerJob 正式推出容器功能后,才不得不放弃该完美方案。
在容器模式下,使用 kryo 对象池计算会有什么问题呢?这里简单给大家提一下,至于看不看得懂,就要看各位造化了~
PowerJob 容器功能指的是动态加载外部代码进行执行,为了进行隔离,PowerJob 会使用单独的类加载器完成容器中类的加载。因此,每一个 powerjob-worker 中存在着多个类加载器,分别是系统类加载器(负责项目的加载)和每个容器自己的类加载器(加载容器类)。序列化工具类自然是 powerjob-worker 的一部分,随 powerjob-worker 的启动而被创建。当 kryo 对象池被创建时,其使用的类加载器是系统类加载器。因此,当需要序列化/反序列化容器中的类时,kryo 并不能从自己的类加载器中获取相关的类信息,妥妥的抛出 ClassNotFoundError!
因此,PowerJob 在引入容器技术后,只能退而求其次,采取了第二种并发安全方法:ThreadLocal。
1.4 ThreadLocal
ThreadLocal 是一种典型的牺牲空间来换取并发安全的方式,它会为每个线程都单独创建本线程专用的 kryo 对象。对于每条线程的每个 kryo 对象来说,都是顺序执行的,因此天然避免了并发安全问题。创建方法如下:
private static final ThreadLocal<Kryo> kryoLocal = ThreadLocal.withInitial(() -> {Kryo kryo = new Kryo();// 支持对象循环引用(否则会栈溢出),会导致性能些许下降 T_Tkryo.setReferences(true); //默认值就是 true,添加此行的目的是为了提醒维护者,不要改变这个配置// 关闭序列化注册,会导致性能些许下降,但在分布式环境中,注册类生成ID不一致会导致错误kryo.setRegistrationRequired(false);// 设置类加载器为线程上下文类加载器(如果Processor来源于容器,必须使用容器的类加载器,否则妥妥的CNF)kryo.setClassLoader(Thread.currentThread().getContextClassLoader());return kryo;
});
之后,仅需要通过 *kryoLocal*.get()
方法从线程上下文中取出对象即可使用,也算是一种简单好用的方案。(虽然理论性能比对象池差不少)
二、老牌框架:Jackson
大名鼎鼎的 Jackson 相信大家都听说过,也是很多项目的御用 JSON 序列化/反序列化框架。在 PowerJob 中,本着不重复造轮子的原则,在 akka 通讯层,使用了 jackson-cbor 作为默认的序列化框架。
“什么,你问我为什么不用性能更好且已经在项目中集成了的 kryo?”
“那当然是因为 akka 官方没有提供 kryo 的官方实现,于是......”
如果使用 kryo,则需要自己实现一大堆编解码器,俨然有点写 netty 的味道...而 jackson-cbor 呢?只需要一点小小的配置就能搞定~
actor {provider = remoteallow-java-serialization = offserialization-bindings {"com.github.kfcfans.powerjob.common.OmsSerializable" = jackson-cbor}}
虽然绝对性能可能不及 kryo,但对比于自带的 Java 序列化方式,性能已经提升 10 倍以上,在绝大部分场景都不会是性能瓶颈。所以~又有什么理由拒绝它呢~
三、最后
好了,这就是本文的全部内容了。下篇文章将会为大家带来 PowerJob 的独一无二分布式计算功能背后的原理分析,如此重磅的文章作为本专栏的压轴好戏也是再恰当不过了~
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Ngrok内网穿透
Ngrok内网穿透 通常家中的电脑都是处在局域网中的,如果把家里的某台电脑搭建成一个服务器,就会面临无法从公网直接访问到服务器的尴尬情况 此时可以通过内网穿透技术,建立家里服务器电脑与Ngrok服务器的隧道链接。这样用户可以通过访问Ngrok的公网服务器,从Ngrok服务器间接…...
2024/5/1 2:00:58 - LVS+nginx实现四层和七层的负载均衡
实验背景说明 某公司有两个站点www.jw.com bbs.jw.com经过调查nginx服务器做七层负载均衡无法实验流量的承担,但是又要去使用域名进行访问。公司有六台服务器搭建站点。 LVS+nginx实现多级负载均衡配置 环境准备6台centos7服务器,提前在所有的节点关闭防火墙和selinux命令如…...
2024/4/30 19:20:23 - 大点干!早点散----------深入剖析Redis集群原理与实验
文章目录一、 Redis 集群的实现1、数据分片(1)客户端实现数据分片(2)服务器实现数据分片(3)通过代理服务器实现数据分片(4)Redis集群数据分片2、Redis群集TCP端口3、Redis Cluster的高可用(1)Redis Cluster主从模型(2)Redis群集一致性保证二、Redis集群配置参数三、…...
2024/4/5 3:10:13 - 机器学习面试笔试超详细总结(二)(转载)
51、概率和信息量的关系示例:符号集 a 、 b 、 c 、 d ,它们相互独立,相应概率为 1/2 、 1/4 、 1/8/ 、 1/16 ,其中包含信息量最小的符号(a)解析:消息出现的概率越小,说明限制条件越多,则消息中所包含的信息量就越大;事件出现的概率越大,说明限制条件越少,则所包含…...
2024/4/27 14:50:26 - 【懒人系列】抖音/快手视频自动滑动切换视频技术实现
文章目录前言一、技术要点二、使用步骤1.安装Frida2.执行JS代码总结前言 近代很多科技发明,都是基于“懒惰”。比如夏天手摇扇子,费劲还效果低下,于是发明了电风扇;最初的电视机是手调频道,冬天在被窝看电视,还要下床去调频道、关电视简直不要太难受,于是人们发明了遥控…...
2024/5/3 12:44:48 - 如何部署Redis集群?
文章目录一、Redis集群简介二、Redis集群概述2.1Redis集群介绍2.2Redis集群的优势2.3Redis集群的实现方法2.4Redis-Cluster数据分片2.5Redis-Cluster的主从复制模型三、搭建Redis集群3.1案例环境3.2实验步骤 一、Redis集群简介 Redis Cluster是一个无中心的结构,每个节点都保存…...
2024/4/15 0:22:16 - 奇淫巧技的KMP算法--详解
奇淫巧技的KMP算法–详解 花了一下午时间,看了十几个博客,终于拿下了KMP高地,现在总结下下自己对KMP的理解和实现。 情景1 假如你是一名生物学家,现在,你的面前有两段 DNA 序列 S 和 T,你需要判断 T 是否可以匹配成为 S 的子串。你可能会凭肉眼立即得出结论:是匹配的。可…...
2024/4/30 20:14:31 - 2020 ArXiv之跨模态ReID:Cross-Spectrum Dual-Subspace Pairing for RGB-infrared Cross-Modality Person Re-id
Cross-Spectrum Dual-Subspace Pairing for RGB-infrared Cross-Modality Person Re-Identification 简述: 本文的主要目的是为了减少不同光谱的摄像机产生的模态差异问题。本文提出了一种新的多光谱图像生成方法,利用生成的样本帮助网络找到鉴别信息,从而实现对同一个人的跨…...
2024/4/13 19:22:31 - KMP算法详解
KMP算法详解 花了一下午时间,看了十几个博客,终于拿下了KMP高地,现在总结下下自己对KMP的理解和实现。 情景1 假如你是一名生物学家,现在,你的面前有两段 DNA 序列 S 和 T,你需要判断 T 是否可以匹配成为 S 的子串。你可能会凭肉眼立即得出结论:是匹配的。可是计算机没有…...
2024/4/14 18:18:22 - 简单记录自己初学Mybatis
Mybatis入门 1:创建maven工程 2:配置Mybatis坐标,简单的配置如下 <packaging>jar</packaging> //打包方式<dependencies>/*配置mybatis依赖*/<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId>…...
2024/5/3 15:25:27 - POJ - 3984(BFS路径回溯)
传送门 算是回顾旧知识了吧 #include <set> #include <map> #include <cmath> #include <stack> #include <queue> #include <string> #include <vector> #include<cstring> #include <stdio.h> #include <iostream&…...
2024/5/1 19:50:56 - python学习——Conda - Downloaded bytes did not match Content-Length 问题解决方案
目录 问题描述 解决方案一 解决方案二 解决方案三 参考 问题描述 CondaError: Downloaded bytes did not match Content-Lengthurl: https://repo.anaconda.com/pkgs/main/linux-64/cudnn-7.0.5-cuda8.0_0.tar.bz2target_path: /home/yyf/miniconda3/pkgs/cudn…...
2024/4/30 20:21:07 - IDEA 快捷键大全
#代码编辑: Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate) fori/sout/psvm + Tab Ctrl+Alt+T 生成try catch 或者 Alt+enter CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里 Ctrl + O 重写方法 Ctrl + I 实现方法 Ctr…...
2024/4/30 12:41:44 - stm32cubemx配置编码器
首先打开timer2的encoder模式:配置系统时钟。配置具体定时器的参数: 选择的encoderMode是 TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。也就是第一个参数,分频值设为3,实际上是3+1=4分频。 还有个地方需要解释一下,…...
2024/5/2 18:25:47 - 优美的讲解equals和==的区别
初步了解在JVM中的内存分配知识在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的…...
2024/4/30 16:36:14 - 为商务办公赋能,TOM商务邮箱,塑造职场新形象
转眼已至2020年,互联网的这10年发生了翻天覆地的改变。短视频红利崛起、人脸识别支付、AI智能机器人对话…很多产品从默默无闻到一夜崛起。而对于商务邮箱领域,邮箱已成为一种习惯,却往往忽略了它的点滴改变。以TOM VIP邮箱为例,正在以一番全新的风貌与大家见面! 一. 布局…...
2024/5/1 0:45:36 - mysql8.0更改lower_case_table_names
mysql8.0更改lower_case_table_names mysql8.0安装初始化之后是不能更改lower_case_table_names的 下面是官方文档的一段话: In MySQL 8.0, the lower_case_table_names variable can only be configured when the MySQL server is initialized. 解决方法: 方法一:在初始化的…...
2024/4/9 13:26:02 - xhost +报错: unable to open display
SecureCRT是一款特别好用的windows客户端和linux客户端连接的工具,很方便的就解决了两者的连接关系,而且集成了很多相关的功能,其可以实现和远程服务器的连接。要想实现能够远程访问,需要安装一个软件叫做Xming,https://xming.en.softonic.com/download。下载完成之后需要…...
2024/3/28 2:18:11 - jquery上传图片,限制4张,回显删除多图上传,限制格式大小
1.效果2.HTML <div class="upload-content"><div class="content-img"><ul class="content-img-list"></ul><div class="file">+<input type="file" name="file" accept="…...
2024/5/1 5:53:53 - Gym 101987K TV Show Game(2-SAT)
题解: 转化为命题的形式就是,如果这个位置猜错了那么其他两个位置就必须要猜对。 #include <bits/stdc++.h> using namespace std; //#define int long long const int N=2e6+10; stack<int> st; int head[N],e[N],ne[N],dfn[N],low[N],ins[N],cnt,id[N],ts,scc;…...
2024/5/1 7:01:36
最新文章
- VMware比Docker容器安全性
VMware和Docker是两种不同的虚拟化技术,它们在安全性方面有一些不同之处。 VMware是一种传统的虚拟机技术,它通过完全隔离的虚拟化方式在物理服务器上创建多个独立的虚拟机实例。每个虚拟机都有自己的操作系统和内核,相互之间隔离程度较高。…...
2024/5/3 18:26:09 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - macU盘在电脑上读不出来 u盘mac读不出来怎么办 macu盘不能写入
对于Mac用户来说,使用U盘是很常见的操作,但有时候可能会遇到Mac电脑无法读取U盘的情况,这时候就需要使用一些特定的工具软件来帮助我们解决问题。本文就来告诉大家macU盘在电脑上读不出来是怎么回事,u盘mac读不出来怎么办。 一、m…...
2024/5/1 14:03:01 - 编译amd 的 amdgpu 编译器
1,下载源码 git clone --recursive https://github.com/ROCm/llvm-project.git 2, 配置cmake cmake -G "Unix Makefiles" ../llvm \ -DLLVM_ENABLE_PROJECTS"clang;clang-tools-extra;compiler-rt" \ -DLLVM_BUILD_EXAMPLESON …...
2024/5/3 2:37:23 - 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/3 11:50:27 - 【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/2 16:04:58 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/2 23:55:17 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/3 16:00:51 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/3 11:10:49 - 【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/2 6:03:07 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/2 9:47:30 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/2 23:47:43 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/3 13:26:06 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/3 1:55:15 - 用欧拉路径判断图同构推出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/2 9:47:28 - 【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/3 16:23:03 - 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/3 1:55:09 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/2 8:37:00 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/3 14:57:24 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/2 9:47:25 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/2 23:47:16 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/2 18:46:52 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/3 7:43:42 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/3 1:54:59 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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