相关历史文章(阅读本文之前,您可能需要先看下之前的系列👇

 

国内最全的Spring Boot系列之三

没有预热,不叫高并发「限流算法第三把法器:令牌桶算法」- 第302篇

 

水满自溢「限流算法第四把法器:漏桶算法」- 第303篇

一分钟get:缓存穿透、缓存击穿、缓存雪崩 - 第304篇

布隆过滤器Bloom Filter竟然让我解决了一个大厂的问题 - 第305篇

100G的文件如何读取 - 第306篇

 

师傅:徒儿,睡醒了没有,赶紧起床学习了

悟纤:师傅,这不天还没亮嘛?

师傅:学习要趁早,没听过早起的鸟有虫嘛!

悟纤:晚起的鸟儿也有虫吃呀,晚起的鸟儿吃晚起的虫。

师傅:是,是,你都说的都对,你再不起来,午饭都快没了。

悟纤:欧侯,师傅,现在不会是快到下午了吧。

师傅:是呀,你现在才发现,太阳都晒到你屁股了。

悟纤:(#^.^#) ….

师傅:赶紧吃饭,学习来…

 

文章目录

一、大文件读取之文件分割法

二、大文件读取之多线程读取

三、悟纤小结

 

 

一、大文件读取之文件分割法

      

我们来看下这种方法的核心思路就是:不是文件太大了嘛?那么是否可以把文件拆分成几个小的文件,然后使用多线程进行读取呐?具体的步骤:

(1)先分割成多个文件。

(2)多个线程操作多个文件,避免两个线程操作同一个文件

(3)按行读文件

 

1.1 文件分割

       在Mac和Linux都有文件分割的命令,可以使用:

split  -b 1024m  test2.txt   /data/tmp/my/test.txt.

说明:

(1)split:分割命令;

(2)-b 1024m:指定每多少字就要切成一个小文件。支持单位:m,k;这里是将6.5G的文件按照1G进行拆分成7个文件左右。

(3)test2.txt:要分割的文件;

(4)test.txt. : 切割后文件的前置文件名,split会自动在前置文件名后再加上编号;

其它参数:

(1)-l<行数> : 指定每多少行就要切成一个小文件。

(2) -C<字节>:与-b参数类似,但切割时尽量维持每行的完整性。

分割成功之后文件是这样子的:

1.2 多线程读取分割文件

       我们使用多线程读取分割的文件,然后开启线程对每个文件进行处理:

	public void readFileBySplitFile(String pathname) {//pathname这里是路径,非具体的文件名,比如:/data/tmp/myFile file = new File(pathname);File[] files = file.listFiles();List<MyThread> threads = new ArrayList<>();for(File f:files) {MyThread thread = new MyThread(f.getPath());threads.add(thread);thread.start();}for(MyThread t:threads) {try {t.join();} catch (InterruptedException e) {e.printStackTrace();}}}private class MyThread extends Thread{private String pathname;public MyThread(String pathname) {this.pathname = pathname;}@Overridepublic void run() {readFileFileChannel(pathname);}}

 

说明:

(1)获取到指定目录下的所有分割的文件信息;

(2)遍历文件路径,将路径使用线程进行处理,这里线程的run使用readFileChannel进行读取每个文件的信息。

(3)join方法:就是让所有线程等待,然后回到主线程,不懂的可以参之前的一篇文章:《悟纤和师傅去女儿国「线程并行变为串行,Thread你好牛」

测试:6.5G 耗时:4

       这个多线程的方式,那么理论上是文件越大,优势会越明显。对于线程开启的个数,这里使用的是文件的个数,在实际中,能这么使用嘛?答案肯定是不行的。相信大家应该知道怎么进行改良下,这里不展开讲解。

 

 

二、大文件读取之多线程读取同一个文件

2.1 多线程1.0版本

我们在看一下这种方式就是使用多线程读取同一个文件,这种方式的思路,就是讲文件进行划分,从不同的位置进行读取,那么满足这种要求的就是RandomAccessFile,因为此类中有一个方法seek,可以指定开始的位置。

	public void readFileByMutiThread(String pathname, int threadCount) {BufferedRandomAccessFile randomAccessFile = null;try {randomAccessFile = new BufferedRandomAccessFile(pathname, "r");// 获取文件的长度,进行分割long fileTotalLength = randomAccessFile.length();// 分割的每个大小.long gap = fileTotalLength / threadCount;// 记录每个的开始位置和结束位置.long[] beginIndexs = new long[threadCount];long[] endIndexs = new long[threadCount];// 记录下一次的位置.long nextStartIndex = 0;// 找到每一段的开始和结束的位置.for (int n = 0; n < threadCount; n++) {beginIndexs[n] = nextStartIndex;// 如果是最后一个的话,剩下的部分,就全部给最后一个线程进行处理了.if (n + 1 == threadCount) {endIndexs[n] = fileTotalLength;break;}/** 不是最后一个的话,需要获取endIndexs的位置.*/// (1)上一个nextStartIndex的位置+gap就是下一个位置.nextStartIndex += gap;// (2)nextStartIndex可能不是刚好这一行的结尾部分,需要处理下.// 先将文件移动到这个nextStartIndex的位置,然后往后进行寻找位置.randomAccessFile.seek(nextStartIndex);// 主要是计算回车换行的位置.long gapToEof = 0;boolean eol = false;while (!eol) {switch (randomAccessFile.read()) {case -1:eol = true;break;case '\n':eol = true;break;case '\r':eol = true;break;default:gapToEof++;break;}}// while循环,那个位置刚好是对应的那一行的最后一个字符的结束,++就是换行符号的位置.gapToEof++;nextStartIndex += gapToEof;endIndexs[n] = nextStartIndex;}// 开启线程List<MyThread2> threads = new ArrayList<>();for (int i = 0; i < threadCount; i++) {MyThread2 thread = new MyThread2(pathname, beginIndexs[i], endIndexs[i]);threads.add(thread);thread.start();}// 等待汇总数据for (MyThread2 t : threads) {try {t.join();} catch (InterruptedException e) {e.printStackTrace();}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

说明:此方法的作用就是对我们的文件根据线程的个数进行位置的分割,每个位置负责一部分的数据处理。

 

       我们看下具体线程的处理:

	private class MyThread2 extends Thread{private long begin;private long end;private String pathname;public MyThread2(String pathname,long begin,long end) {this.pathname = pathname;this.begin = begin;this.end = end;}@Overridepublic void run() {//System.out.println("TestReadFile.MyThread2.run()-"+begin+"--"+end);RandomAccessFile randomAccessFile = null;try {randomAccessFile = new RandomAccessFile(pathname, "r");//指定其实读取的位置.randomAccessFile.seek(begin);StringBuffer buffer = new StringBuffer();String str;while ((str = randomAccessFile.readLine()) != null) {//System.out.println(str+"--"+Thread.currentThread().getName());//处理字符串,并不会将字符串保存真正保存到内存中// 这里简单模拟下处理操作.buffer.append(str.substring(0,1));//+1 就是要加上回车换行符号begin += (str.length()+1);if(begin>=end) {break;}}System.out.println("buffer.length:"+buffer.length()+"--"+Thread.currentThread().getName());} catch (IOException e) {e.printStackTrace();}finally {//TODO close处理.}}}

说明:此线程的主要工作就是根据文件的位置点beginPositionendPosition读取此区域的数据。

       运行看下效果,6.5G的,居然要运行很久,不知道什么时候要结束,实在等待不了,就结束运行了。

       为啥会这么慢呐?不是感觉这种处理方式很棒的嘛?为什么要伤害我弱小的心灵

       我们分析下:之前的方法readFileByRandomAccessFile,我们在测试的时候,结果也是很慢,所以可以得到并不是因为我们使用的线程的原因导致了很慢了,那么这个是什么原因导致的呐?

       我们找到RandomAccessFile  readLin()方法:

  public final String readLine() throws IOException {StringBuffer input = new StringBuffer();int c = -1;boolean eol = false;while (!eol) {switch (c = read()) {case -1:case '\n':eol = true;break;case '\r':eol = true;long cur = getFilePointer();if ((read()) != '\n') {seek(cur);}break;default:input.append((char)c);break;}}if ((c == -1) && (input.length() == 0)) {return null;}return input.toString();}

       此方法的原理就是:使用while循环,不停的读取字符,如果遇到\n或者\r的话,那么readLine就结束,并且返回此行的数据,那么核心的方法就是read():

public int read() throws IOException {return read0();}private native int read0() throws IOException;

       直接调用的是本地方法了。那么这个方法是做了什么呢?我们可以通过注释分析下:

* Reads a byte of data from this file. The byte is returned as an
* integer in the range 0 to 255 ({@code 0x00-0x0ff}). This
* method blocks if no input is yet available.

       通过这里我们可以知道:read()方法会从该文件读取一个字节的数据。 字节返回为介于0到255之间的整数({@code 0x00-0x0ff})。 这个如果尚无输入可用,该方法将阻塞。

       到这里,不知道你是否知道这个为啥会这么慢了。一个字节一个字节每次读取,那么肯定是比较慢的嘛。

 

2.2 多线程2.0版本

       那么怎么办呢?有一个类BufferedRandomAccessFile,当然这个类并不属于jdk中的类,需要自己去找下源代码:

package com.kfit.bloomfilter;/*** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements.  See the NOTICE file* distributed with this work for additional information* regarding copyright ownership.  The ASF licenses this file* to you under the Apache License, Version 2.0 (the* "License"); you may not use this file except in compliance* with the License.  You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Arrays;/*** A <code>BufferedRandomAccessFile</code> is like a* <code>RandomAccessFile</code>, but it uses a private buffer so that most* operations do not require a disk access.* <P>* * Note: The operations on this class are unmonitored. Also, the correct* functioning of the <code>RandomAccessFile</code> methods that are not* overridden here relies on the implementation of those methods in the* superclass.*/public final class BufferedRandomAccessFile extends RandomAccessFile{static final int LogBuffSz_ = 16; // 64K bufferpublic static final int BuffSz_ = (1 << LogBuffSz_);static final long BuffMask_ = ~(((long) BuffSz_) - 1L);private String path_;/** This implementation is based on the buffer implementation in Modula-3's* "Rd", "Wr", "RdClass", and "WrClass" interfaces.*/private boolean dirty_; // true iff unflushed bytes existprivate boolean syncNeeded_; // dirty_ can be cleared by e.g. seek, so track sync separatelyprivate long curr_; // current position in fileprivate long lo_, hi_; // bounds on characters in "buff"private byte[] buff_; // local bufferprivate long maxHi_; // this.lo + this.buff.lengthprivate boolean hitEOF_; // buffer contains last file block?private long diskPos_; // disk position/** To describe the above fields, we introduce the following abstractions for* the file "f":** len(f) the length of the file curr(f) the current position in the file* c(f) the abstract contents of the file disk(f) the contents of f's* backing disk file closed(f) true iff the file is closed** "curr(f)" is an index in the closed interval [0, len(f)]. "c(f)" is a* character sequence of length "len(f)". "c(f)" and "disk(f)" may differ if* "c(f)" contains unflushed writes not reflected in "disk(f)". The flush* operation has the effect of making "disk(f)" identical to "c(f)".** A file is said to be *valid* if the following conditions hold:** V1. The "closed" and "curr" fields are correct:** f.closed == closed(f) f.curr == curr(f)** V2. The current position is either contained in the buffer, or just past* the buffer:** f.lo <= f.curr <= f.hi** V3. Any (possibly) unflushed characters are stored in "f.buff":** (forall i in [f.lo, f.curr): c(f)[i] == f.buff[i - f.lo])** V4. For all characters not covered by V3, c(f) and disk(f) agree:** (forall i in [f.lo, len(f)): i not in [f.lo, f.curr) => c(f)[i] ==* disk(f)[i])** V5. "f.dirty" is true iff the buffer contains bytes that should be* flushed to the file; by V3 and V4, only part of the buffer can be dirty.** f.dirty == (exists i in [f.lo, f.curr): c(f)[i] != f.buff[i - f.lo])** V6. this.maxHi == this.lo + this.buff.length** Note that "f.buff" can be "null" in a valid file, since the range of* characters in V3 is empty when "f.lo == f.curr".** A file is said to be *ready* if the buffer contains the current position,* i.e., when:** R1. !f.closed && f.buff != null && f.lo <= f.curr && f.curr < f.hi** When a file is ready, reading or writing a single byte can be performed* by reading or writing the in-memory buffer without performing a disk* operation.*//*** Open a new <code>BufferedRandomAccessFile</code> on <code>file</code>* in mode <code>mode</code>, which should be "r" for reading only, or* "rw" for reading and writing.*/public BufferedRandomAccessFile(File file, String mode) throws IOException{this(file, mode, 0);}public BufferedRandomAccessFile(File file, String mode, int size) throws IOException{super(file, mode);path_ = file.getAbsolutePath();this.init(size);}/*** Open a new <code>BufferedRandomAccessFile</code> on the file named* <code>name</code> in mode <code>mode</code>, which should be "r" for* reading only, or "rw" for reading and writing.*/public BufferedRandomAccessFile(String name, String mode) throws IOException{this(name, mode, 0);}public BufferedRandomAccessFile(String name, String mode, int size) throws FileNotFoundException{super(name, mode);path_ = name;this.init(size);}private void init(int size){this.dirty_ = false;this.lo_ = this.curr_ = this.hi_ = 0;this.buff_ = (size > BuffSz_) ? new byte[size] : new byte[BuffSz_];this.maxHi_ = (long) BuffSz_;this.hitEOF_ = false;this.diskPos_ = 0L;}public String getPath(){return path_;}public void sync() throws IOException{if (syncNeeded_){flush();getChannel().force(true);syncNeeded_ = false;}}//      public boolean isEOF() throws IOException
//      {
//          assert getFilePointer() <= length();
//          return getFilePointer() == length();
//      }public void close() throws IOException{this.flush();this.buff_ = null;super.close();}/*** Flush any bytes in the file's buffer that have not yet been written to* disk. If the file was created read-only, this method is a no-op.*/public void flush() throws IOException{        this.flushBuffer();}/* Flush any dirty bytes in the buffer to disk. */private void flushBuffer() throws IOException{   if (this.dirty_){if (this.diskPos_ != this.lo_)super.seek(this.lo_);int len = (int) (this.curr_ - this.lo_);super.write(this.buff_, 0, len);this.diskPos_ = this.curr_;             this.dirty_ = false;}}/** Read at most "this.buff.length" bytes into "this.buff", returning the* number of bytes read. If the return result is less than* "this.buff.length", then EOF was read.*/private int fillBuffer() throws IOException{int cnt = 0;int rem = this.buff_.length;while (rem > 0){int n = super.read(this.buff_, cnt, rem);if (n < 0)break;cnt += n;rem -= n;}if ( (cnt < 0) && (this.hitEOF_ = (cnt < this.buff_.length)) ){// make sure buffer that wasn't read is initialized with -1Arrays.fill(this.buff_, cnt, this.buff_.length, (byte) 0xff);}this.diskPos_ += cnt;return cnt;}/** This method positions <code>this.curr</code> at position <code>pos</code>.* If <code>pos</code> does not fall in the current buffer, it flushes the* current buffer and loads the correct one.<p>* * On exit from this routine <code>this.curr == this.hi</code> iff <code>pos</code>* is at or past the end-of-file, which can only happen if the file was* opened in read-only mode.*/public void seek(long pos) throws IOException{if (pos >= this.hi_ || pos < this.lo_){// seeking outside of current buffer -- flush and read             this.flushBuffer();this.lo_ = pos & BuffMask_; // start at BuffSz boundarythis.maxHi_ = this.lo_ + (long) this.buff_.length;if (this.diskPos_ != this.lo_){super.seek(this.lo_);this.diskPos_ = this.lo_;}int n = this.fillBuffer();this.hi_ = this.lo_ + (long) n;}else{// seeking inside current buffer -- no read requiredif (pos < this.curr_){// if seeking backwards, we must flush to maintain V4this.flushBuffer();}}this.curr_ = pos;}public long getFilePointer(){return this.curr_;}public long length() throws IOException{// max accounts for the case where we have written past the old file length, but not yet flushed our bufferreturn Math.max(this.curr_, super.length());}public int read() throws IOException{if (this.curr_ >= this.hi_){// test for EOF// if (this.hi < this.maxHi) return -1;if (this.hitEOF_)return -1;// slow path -- read another bufferthis.seek(this.curr_);if (this.curr_ == this.hi_)return -1;}byte res = this.buff_[(int) (this.curr_ - this.lo_)];this.curr_++;return ((int) res) & 0xFF; // convert byte -> int}public int read(byte[] b) throws IOException{return this.read(b, 0, b.length);}public int read(byte[] b, int off, int len) throws IOException{if (this.curr_ >= this.hi_){// test for EOF// if (this.hi < this.maxHi) return -1;if (this.hitEOF_)return -1;// slow path -- read another bufferthis.seek(this.curr_);if (this.curr_ == this.hi_)return -1;}len = Math.min(len, (int) (this.hi_ - this.curr_));int buffOff = (int) (this.curr_ - this.lo_);System.arraycopy(this.buff_, buffOff, b, off, len);this.curr_ += len;return len;}public void write(int b) throws IOException{if (this.curr_ >= this.hi_){if (this.hitEOF_ && this.hi_ < this.maxHi_){// at EOF -- bump "hi"this.hi_++;}else{// slow path -- write current buffer; read next onethis.seek(this.curr_);if (this.curr_ == this.hi_){// appending to EOF -- bump "hi"this.hi_++;}}}this.buff_[(int) (this.curr_ - this.lo_)] = (byte) b;this.curr_++;this.dirty_ = true;syncNeeded_ = true;}public void write(byte[] b) throws IOException{this.write(b, 0, b.length);}public void write(byte[] b, int off, int len) throws IOException{        while (len > 0){              int n = this.writeAtMost(b, off, len);off += n;len -= n;this.dirty_ = true;syncNeeded_ = true;}}/** Write at most "len" bytes to "b" starting at position "off", and return* the number of bytes written.*/private int writeAtMost(byte[] b, int off, int len) throws IOException{        if (this.curr_ >= this.hi_){if (this.hitEOF_ && this.hi_ < this.maxHi_){// at EOF -- bump "hi"this.hi_ = this.maxHi_;}else{                                // slow path -- write current buffer; read next one                this.seek(this.curr_);if (this.curr_ == this.hi_){// appending to EOF -- bump "hi"this.hi_ = this.maxHi_;}}}len = Math.min(len, (int) (this.hi_ - this.curr_));int buffOff = (int) (this.curr_ - this.lo_);System.arraycopy(b, off, this.buff_, buffOff, len);this.curr_ += len;return len;}}

       然后将我们在上面使用到的类RandomAccessFile  替换成BufferedRandomAccessFile 即可。

       来测试下吧:

如果是前面的方法:

TestReadFile.readFileByBufferedRandomAccessFile(pathname2);

6.5G 耗时:32

       相比之前一直不能读取的情况下,已经是好很多了,但是相对于nio的话,还是慢了。

       测试下多线程版本的吧:

6.5G 耗时:2个线程20秒,3个线程16秒,4个线程14秒,5个线程11秒,6个线程8秒,7个线程8秒,8个线程9

       我这个Mac电脑是6核处理器,所以在6核的时候,达到了性能的最高点,在开启的更多的时候,线程的上下文切换会浪费这个时间,所以时间就越越来越高。但和上面的版本好像还是不能媲美。

 

2.3 多线程3.0版本

       RandomAccessFile的绝大多数功能,在JDK 1.4以后被nio的”内存映射文件(memory-mapped files)”给取代了MappedByteBuffer,大家可以自行去尝试下,本文就不展开讲解了。

 

三、悟纤小结

师傅:本文有点难,也有点辣眼睛骚脑,今天就为师给你总结下。

徒儿:师傅,我太难了,我都要听睡着了。

师傅:文件操作本身就会比较复杂,在一个项目中,也不是所有人都会去写IO流的代码。

       来个小结,主要讲了两个知识点。

(1)第一:使用文件分隔的方式读取大文件,配套NIO的技术,速度会有提升。核心的思路就是:使用Mac/Linx下的split命令,将大文件分割成几个小的文件,然后使用多线程分别读取每个小文件。13.56G :分割为6个文件,耗时8秒;26G,耗时16秒。按照这样的情况,那么读取100G的时间,也就是1分钟左右的事情了,当然实际耗时,还是和你具体的获取数据的处理方法有很大的关系,比如你使用系统的System.out的话,那么这个时间就很长了。

(2)第二:使用多线程读取大文件。核心的思路就是:根据文件的长度将文件分割成n段,然后开启多线程利用类RandomAccessFile的位置定位seek方法,直接从此位置开启读取。13.56G 6个线程耗时23秒。

       另外实际上NIO的FileChannel单线程下的读取速度也是挺快的:13.56G  :耗时15,之前就提到过了Java天然支持大文件的处理,这就是Java ,不仅Write once ,而且Write happy

       最后要注意下,ByteBuffer读取到的是很多行的数据,不是一行一行的数据。

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

学院中有Spring Boot相关的课程:

à悟空学院:https://t.cn/Rg3fKJD

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

JVM内存模型和性能调优:http://t.cn/A6wWMVqG

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. week12csp模测

    目录T1 瑞神的序列题目描述求解思路代码T2 消消乐大师——Q老师题目描述求解思路代码T4 咕咕东学英语题目描述求解思路代码 T1 瑞神的序列 题目描述 瑞神的数学一向是最好的,连强大的咕咕东都要拜倒在瑞神的数学水平之下,虽然咕咕东很苦 恼,但是咕咕东拿瑞神一点办法都没有。…...

    2024/4/23 15:45:00
  2. 2020政府工作报告:加强新型基础设施建设,发展新一代信息网络

    2020年5月22日在第十三届全国人民代表大会第三次会议上,李克强总理指出要重点支持既促消费惠民生又调结构增后劲的“两新一重”建设,主要是:加强新型基础设施建设,发展新一代信息网络,拓展5G应用,建设充电桩,推广新能源汽车,激发新消费需求、助力产业升级。加强新型城镇…...

    2024/4/23 15:44:56
  3. Oracle学习总结5--单表查询

    单表查询select查询查看员工的 姓名,职位,工资查看员工的 姓名,职位,工资,入职时间显示员工的姓名,职位,工资,疫情期间工资(原工资的70%)显示员工的姓名,职位,工资,以及年底涨薪之后的工资(sal+500)利用 *作为通配符,显示表中所有列 select * 表示 显示数据源中的所有列如果…...

    2024/4/23 15:44:51
  4. 4.14嵌入式设计(拓展)

    linux与windows区别 1、免费与收费 在中国,windows和linux都是免费的,至少对个人用户是如此,如果那天国内windows真的严打盗版了,那linux的春天就到了!但现在linux依然是任重道远,前路漫漫。 2、软件与支持 windows下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近…...

    2024/4/23 15:44:53
  5. 大数据之Hudi + Kylin的准实时数仓实现

    问题导读: 1、数据库、数据仓库如何理解? 2、数据湖有什么用途?解决什么问题? 3、数据仓库的加载链路如何实现? 4、Hudi新一代数据湖项目有什么优势?在近期的 Apache Kylin Apache Hudi Meetup 直播上,Apache Kylin PMC Chair 史少锋和 Kyligence 解决方案工程师刘永恒…...

    2024/4/23 15:44:56
  6. centos7安装docker

    1.先删除原先的docker yum remove dokcer docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -y#可先docker version查看一下,没有安装则省略这一步 2.更新yum源,安装需要的软件包, yum-util 提供yu…...

    2024/4/23 15:44:56
  7. 源码安装nginx-1.16.1

    1.先上传nginx-1.16.1.tar.gz 2.解压解包nginx-1.16.1.tar.gz:tar zxvf nginx-1.16.1.tar.gz 3.进入解压解包后的nginx-1.16.1:cd nginx-1.16.1 4.yum安装所需依赖:yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel 5.检查环境:./configure --pref…...

    2024/4/23 15:44:47
  8. Gox Rising计划以每比特币800美元的价格购买Mt Gox债权人的债权

    波多黎各公司Gox Rising提出购买Mt Gox债权人的债权。该公司将以BTC或现金的形式向不愿等待民事诉讼终结的债权人支付每比特币800美元的索赔。 原文链接:https://www.tuoluocaijing.cn/kuaixun/detail-118518.html...

    2024/4/17 1:28:23
  9. 使用icheck插件实现复选框、单选框控件美化

    icheck插件github地址:https://github.com/fronteed/icheckicheck插件的简单使用1:引入css<link rel="stylesheet" href="/icheck/skins/all.css">2:引入js<!--引入jquery--> <script src="/js/jquery.min.js"></script…...

    2024/4/15 7:50:44
  10. simple uploader 对上传文件校验

    simpleuploader的具体方法使用方法看官方文档,这里记录一下对上传的文件的校验<uploader :options="options":file-status-text="statusText"class="uploader-example"ref="uploader"@file-added="onFileAdded"@complet…...

    2024/4/19 17:52:17
  11. Linux守护脚本(Python)——自动重启死掉的SpringBoot工程

    进程守护脚本——python脚本 一般Linux系统自动集成了python,可直接运行python脚本,如果没有请自行百度,一般使用 yum 命令选择想要安装的python依赖即可 该SpringBoot工程已经具有了启动与关闭Shell脚本,可参考我的上一篇博客 Shell脚本——启动与关闭SpringBoot工程在指定…...

    2024/4/20 7:51:24
  12. 关于引入布局,自定义控件及按钮交互

    以title标题栏为例 新建title.xml background处可以自定义图片背景,此处用背景色替代 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width=&q…...

    2024/4/23 15:44:49
  13. springmvc 对上传的图片进行压缩

    第一种方式:Thumbnailator Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录…...

    2024/4/23 15:44:45
  14. 【Music 系列:一】Deep Learning Techniques for Music Generation

    Deep Learning Techniques for Music Generation Performance RNN MusicVAE Wavenet Abstract 五个维度分析:Objectmelody polyphony accompaniment counterpointRepresentation waveform, spectrogram, note, chord, meter and beat 波形,频谱图,音符,和弦, 节拍format M…...

    2024/4/23 15:44:44
  15. 智能云组网平台EasyNTS中发送HttpPost请求如何处理数据?

    目前,越来越多的企业对智能化办公需求强烈,越来越需要移动办公和资源共享。但要实现这些,需要较高的网络部署成本且运行维护复杂,普通企业和个人难以承担。智能云组网的出现,将这一问题简单化。使用我们智能云组网的硬件终端根据需求直接配置在终端网络现场;在云端部署云…...

    2024/4/23 15:44:50
  16. Rust中的常量、变量、mut变量

    Rust的常量Rust的常量和C语言中的常量基本一样,常量只能赋值编译时就能计算出来的表达式,不可以是函数返回值、变量的计算值等。 Rust的常量必须指定类型。 Rust的常量要求使用大写字母,如果使用小写字母,会产生编译警告。C语言中一般会使用大写字母定义宏,Rust的常量和C语…...

    2024/4/23 15:44:50
  17. 举个栗子!Tableau技巧(54):通过 tabadmin 备份 Tableau Server

    工作生活中,我们需要养成做备份的习惯!不论备份智能手机,还是备份服务器。备份Tableau Server 能让你的数据工作变得有恃无恐,一旦出现意外,利用备份就可以将服务器配置和内容还原到之前。 备份 Tableau Server 的数据和配置,只能通过 tabadmin 命令行来执行。在学习如何…...

    2024/4/23 15:44:41
  18. ubuntu 16.04常见错误--Could not get lock /var/lib/dpkg/lock解决

    ubuntu 16.04常见错误--Could not get lock /var/lib/dpkg/lock解决望天际 2018-06-22 17:06:44 4852 已收藏 3展开https://www.cnblogs.com/ace-wu/p/6623150.htmlubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决通过终端安装程序sudo apt-get install xxx时出错…...

    2024/4/23 15:44:43
  19. CentOS7下Nginx安装及配置

    Nginx的安装及使用 1.上传文件到Centos7 打开终端工具SF,登陆上去(不懂的先看Maven私服务中的CentOs7安装及配置,关注公众号java大马哈,直接回复maven可以得百度云盘提供的链接,有安装软件及视频教程。或关注b站23164741直接查找) 公众号资料先确定自己电脑上本机IP和Cen…...

    2024/4/23 15:44:42
  20. spark读取hdfs文件过滤临时文件 scala

    spark读取hdfs中文件的时候,.tmp文件不是我们需要的,需要进行过滤import org.apache.hadoop.fs.{Path, PathFilter}/*** filter temp files in hdfs dirs* eg: 1234556.tmp*/ class FilterTmpPath extends PathFilter {@Overridedef accept(path:Path):Boolean = {val tmpStr…...

    2024/4/23 15:44:38

最新文章

  1. 安卓手机APP开发__用媒体会话服务进行后台播放

    安卓手机APP开发__媒体开发部分__用媒体会话服务进行后台播放 目录 概述 使用一个媒体会话服务 实现服务的生命周期 提供对媒体会话的读取 在配置文件中声明服务 概述 当APP不在前台时&#xff0c;经常希望能够播放媒体。例如&#xff0c;一个音乐播放器 在用户锁屏或者…...

    2024/5/6 6:37:28
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 《c++》多态案例一.电脑组装

    一.代码展示 #include <iostream> using namespace std; class CPU { public://抽象计算函数virtual void calculate() 0;};class CVideoCard { public://抽象显示函数virtual void display() 0;}; class Memory { public://抽象存储函数virtual void storage() 0;};…...

    2024/5/5 8:48:19
  4. vscode安装通义灵码

    作为vscode的插件&#xff0c;直接使用 通义灵码-灵动指间&#xff0c;快码加编&#xff0c;你的智能编码助手 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研…...

    2024/5/6 2:26:42
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  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