抱歉最近实在是太鸽了
在这里插入图片描述
主要是ArrayList我是真傻了,我参考了大量前辈们写的资料,将源码翻了几遍,真的傻了,这还是我当初学的ArrayList嘛,光整理这些资料变成自己的东西就花了好久
这篇文章我参考了前辈们的一些博客文,在他们的基础上加上自己的一些理解并且进行了整理

ArrayList定义

ArrayList 底层是数组列表,当我们存储基本数据类型int、long、boolean …只能存储他们对应的包装类他们底层实现是数组Object[]elementData
相比于LinkList 它的查找和访问元素速度较快,但新增、删除的数据慢
我们来看看源码注释对ArrayList的官方解释
1.这类实现了List接口,可实现底层数组的大小的调整
2.运用了泛型允许所有类型的元素存储,包括null值,实现了所有list的操作
3.提供了操作数组大小的各类方法
4.用于内部存储列表,相当于Vector集合但是Vector同步,ArrayList不同步(线程非安全)
5.有迭代器iterator和列表迭代器Listiterator 在常量中进行操作运行
6.时间上,每一次添加一个元素时间复杂度都是0(n),相比于与Linklist性能低
7.每个ArrayList 实例都有一个容器,容器是一个array集合的大小,用于在集合中存储元素,容器至少和Arraylist大小一样大,当元素被添加到集合中会让容器的size自动增大,
8.我们可以增加list实例的容量,最好在添加大量元素之前进行预备的扩容早点定义大容量,减少重新分配元素的数量,但是这个步骤并不同步,如果多个线程同时访问一个实例如果出现一个线程是改内容的,务必在外部进行同步,来保证同步访问
9面对并发修改,迭代器快速失败、清理,而不是在未知的时间不确定的情况下冒险。请注意,快速失败行为不能被保证。通常来讲,不能同步进行的并发修改几乎不可能做任何保证。因此,写依赖这个异常的程序的代码是错误的,快速失败行为应该仅仅用于防止bug

ArrayList继承和实现,

在这里插入图片描述
实现了RandomAccess 接口,可以随机访问,
实现了Cloneable接口,可以克隆
实现了Serializable 接口,可以序列化(对象变数据)反序列化(数据变对象)
实现了List接口,有List的特性方法
实现了Collection接口 是Collection家族成员之一
实现了Iterable接口,可以使用for-each迭代

ArrayList类的属性:


//序列化版本的UID
private static final long=serialVersionUID=8683452581122892189L;
//默认的初始容量
private static final int=DEFAULT_CAPACITY=10;
//用于空实例的共享空数组实例,new ArrayList(0)
private static final Object[] =EMPTY_ELEMENTDATA={};
//用于提供默认大小的实例的共享空数组实例
private static final Object[]= DEFAULTCAPACIYT_EMPTY_ELEMENTDATA={};
//存储ArrrayList元素的数组缓冲区,ArrayList 的容量是数组的长度
transient Object[]elementData; 
//作为属性没有被封装为什么?
//一位阿里的前辈做过测试说:是因为private 一定程度上会影响其他内部类的访问
//ArrayList中元素的数量
private int size

ArrayList 构造机制:

ArrayList 可以通过构造方法在初始化的时候指定数组的大小
1.无参数构造方法

 transient Object[] elementData;private static final Object[] EMPTY_ELEMENTDATA = {};public ArrayList() {super();this.elementData = EMPTY_ELEMENTDATA;//底层数组列表指向这个空的数组,//只有当add时候才会分配默认DEFAULT_CAPCITY=10的初始容量}

2.带参数的构造方法
通过构造方法设置数组的范围

   public ArrayList(int initialCapacity) {if (initialCapacity > 0) {this.elementData =new Object[initialCapacity];} else if (initialCapacity == 0) {//如果initialCapacity==0 就使用EMPTY_ELEMENTDATAthis.elementData = EMPTY_ELEMENTDATA;} else {//如果initialCapacity<0 ,就创建一个新的长度initialCapcitythrow new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);}}

 /***无参数构造方法将elementData 赋值为DEFAULTCAPACITY_EMPTY_ELEMENTDATA*///add方法会调用ensureCapcityInteter方法在确定public boolean add(E e) {ensureCapacityInternal(size + 1);  // Increments modCount!!//size是指实际存储的数据容量elementData[size++] = e;return true;}private void ensureCapacityInternal(int minCapacity) {if (elementData == EMPTY_ELEMENTDATA) {//如果我们的储存数组指向这个默认给我们的空数组minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);//我会判断下是我原本的DEFAULT_CAPACITY=10大还是add后的minCapactiy大,大的定位我们的数组初始容量}ensureExplicitCapacity(minCapacity);}

注:大家看到final修饰的EMPTY_ELEMENTDATA可能会奇怪final修饰的变量不是不能变吗,那我们怎么加数据
确实不能变,不能变的是栈内存里面的那个地址引用,final修饰的基本类型数据不能变,修饰的引用类型引用不能变


3.带一个集合参数的构造方法

/**
* 带一个集合参数的构造方法
* @param c集合 代表集合中的元素会被放到list中
* 如果集合为空,抛出NullPointException
* 
*/
public ArrayList(Collection<? extends E> c) {//这个Collection<? extends E> 运用了泛型,表示允许Collection底下任何集合类任何elementData = c.toArray();//1.使用将集合转换为数组的方法// 如果 size != 0if ((size = elementData.length) != 0) {//2为了防止toArray方法不正确的的执行,导致没有返回Object[] 会做一些判断和处理// c.toArray 可能不正确的,不返回 Object[]// https://bugs.openjdk.java.net/browse/JDK-6260652if (elementData.getClass() != Object[].class)elementData = Arrays.copyOf(elementData, size, Object[].class);} else {//3.如果数组大小为0,则使用EMPTY_EMEMENTDATA// size == 0// 将EMPTY_ELEMENTDATA 赋值给 elementDatathis.elementData = EMPTY_ELEMENTDATA;}
}

ArrayLIst扩容机制:

数组本身你定了范围后,长度就限定在那个范围
一个长度为十的数组不够,会新建一个长度为10+10/2的数组再将原来数组的数据信息复制到新数组,将引用指向这个新数组
图示:
在这里插入图片描述
研究如何扩容什么时候扩容,我们来看看源码

    public boolean add(E e) {ensureCapacityInternal(size + 1);  // Increments modCount!!//在父类的AbstractList上定义了modCount属性,用于记录数组修改的次数//1.先把增加后的容量作为参数放进一个方法判断,是否需要扩容elementData[size++] = e;return true;}private void ensureCapacityInternal(int minCapacity) {if (elementData == EMPTY_ELEMENTDATA) {//可能数组指向的是我们的空数组我先赋值一个范围minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);//谁大用谁的}ensureExplicitCapacity(minCapacity);//将确定好的增加元素的范围再进行一次判断}private void ensureExplicitCapacity(int minCapacity) {modCount++;// overflow-conscious codeif (minCapacity - elementData.length > 0)grow(minCapacity);//如果我未来的范围大于我数组整体的长度我就要考虑扩容了}private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;private void grow(int minCapacity) {//// overflow-conscious codeint oldCapacity = elementData.length;int newCapacity = oldCapacity + (oldCapacity >> 1);//确定新的容器容量:*1.5,这里采用了位运算,比原来乘除更快//oldCapacity>>1 表示 0.5*oleCapacityif (newCapacity - minCapacity < 0)//但是有可能出现:我add方法我一次加了很多元素,直接超过了1.5原容量,//那我就按你加元素后的容量来newCapacity = minCapacity;if (newCapacity - MAX_ARRAY_SIZE > 0)//当然毕竟是容器,肯定是有着它自己的限制如果系统1.5呗后的量//比MAX_ARRAY_SIZE((2^31-1)-8) 还要大,那就拿着扩容后最少容量去判断下新容量应该是多少newCapacity = hugeCapacity(minCapacity);// minCapacity is usually close to size, so this is a win:elementData = Arrays.copyOf(elementData, newCapacity);}private static int hugeCapacity(int minCapacity) {if (minCapacity < 0) // overflowthrow new OutOfMemoryError();    return (minCapacity > MAX_ARRAY_SIZE) ?Integer.MAX_VALUE :MAX_ARRAY_SIZE;}

2.指定位置进行新增时候的扩容机制:

    public void add(int index, E element) {rangeCheckForAdd(index);//先看看这个index有没有超过array的size的范围ensureCapacityInternal(size + 1);  // Increments modCount!!System.arraycopy(elementData, index, elementData, index + 1,size - index);elementData[index] = element;size++;}
//   arraycopy 复制了一个数组从index位置开始,为了给这个index腾出个位置,然后数组一个个复制到index+1后面然后在把放到这个index的位置里

在这里插入图片描述


JavaBug经典问题:
ArrayList(int initialCapcity) 这个带参构造方法会不会初始化内部的elementData 大小:
首先我们先明白下ArrayList有length 和size 两种大小,length 是本身数组的长度,size是数组内部有值的大小也叫集合的长度
在这里插入图片描述
我们再看看这个构造方法源码:

  private int size;public ArrayList(int initialCapacity) {super();if (initialCapacity < 0)throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity);this.elementData = new Object[initialCapacity];}//这时候,size并没有被定义,虽然我们数组长度是10,但ArrayList它认为自己长度为0//这时候你输入size 是为0 ,输出set(6,1)这样是会爆出越界private void rangeCheck(int index) {if (index >= size)throw new IndexOutOfBoundsException(outOfBoundsMsg(index));}//set(int index,xxx )会调用rangeCheck这个方法判断你要输入的index是否超过了size超过就报错

报错如下:此时size为0,没有初始化
在这里插入图片描述


ArrayList的定点删除机制:

 public E remove(int index) {rangeCheck(index);//检查是否越界modCount++;E oldValue = elementData(index);int numMoved = size - index - 1;if (numMoved > 0)System.arraycopy(elementData, index+1, elementData, index,numMoved);elementData[--size] = null; // clear to let GC do its workreturn oldValue;}//根据内容对象来删public boolean remove(Object o) {if (o == null) {for (int index = 0; index < size; index++)if (elementData[index] == null) {fastRemove(index);return true;}} else {for (int index = 0; index < size; index++)if (o.equals(elementData[index])) {fastRemove(index);return true;}}return false;}

本质上跟新增是一样的,新加了一个新数组,把index+1后面的数据全部向前移动,将index+1后面的数组一个个赋值。

总结:定点删除和新增:
都是先将index之后的数据放到一个临时数组里
删除是从index 开始复制,也就是覆盖
新增是从index+1开始复制,也就是留位置

比较核心的增改调用流程图
在这里插入图片描述

注:
ArrayList线程安全问题:
ArrayList本身是线程不安全的,但它有个替代品Vector 是将Arraylist所有机制都加上线程锁
ArrayList本身不适合做先进先出的队列
相比于LinkList 遍历性能更好

常用方法:

add(E e) 将制定元素添加到列表尾部
addAll(Collection c) //将Collection下的集合一个个遍历添加到尾部

 public boolean addAll(Collection<? extends E> c) {Object[] a = c.toArray();//先变成数组int numNew = a.length;ensureCapacityInternal(size + numNew);  // Increments modCount:增加modCount值System.arraycopy(a, 0, elementData, size, numNew);//一个个遍历赋值size += numNew;return numNew != 0;}

contains(Object o)//是否有某个元素

 public boolean contains(Object o) {return indexOf(o) >= 0;}

ensureCapacity( int minCapactiye)//扩容
indexOf(Object o) 列表中首次出现的元素的索引,如果不包含元素返回-1
removeRange(int fromIndex ,int toInex)//在 [fromIndex,toIndex) 区间的元素都删除

  protected void removeRange(int fromIndex, int toIndex) {modCount++;int numMoved = size - toIndex;System.arraycopy(elementData, toIndex, elementData, fromIndex,numMoved);// clear to let GC do its work//所谓删除只是索引不指向它,这个元素没有人指向他会慢慢给GC回收int newSize = size - (toIndex-fromIndex);for (int i = newSize; i < size; i++) {elementData[i] = null;}size = newSize;}

toArray//将list变成数组

    public Object[] toArray() {return Arrays.copyOf(elementData, size);}
public E get(int index) {rangeCheck(index);return elementData(index);
}

clear()//清空元素

    public void clear() {modCount++;// clear to let GC do its workfor (int i = 0; i < size; i++)elementData[i] = null;size = 0;}

subList(int fromIndex,int toIndex) 截取某个区间的元素

 public List<E> subList(int fromIndex, int toIndex) {subListRangeCheck(fromIndex, toIndex, size);return new SubList(this, 0, fromIndex, toIndex);}

trimToSize()
去调ElementData 屁股后为null的部分//有种压缩的感觉

ArrayLIst 序列化和反序列化机制

序列化方法://初学者只需要知道序列化时把对象变成一个存在可以看到的文件,反序列化是把文件上的信息变成
序列化和反序列化实际运用

    public static void main(String []args)throws IOException,ClassNotFoundException {List<Integer>list =new ArrayList<>(Arrays.asList(3,4,5));//新建一个带有东西的数组ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();ObjectOutputStream objectOutputStream=new ObjectOutputStream(byteArrayOutputStream);//字节流包装objectOutputStream.writeObject(list);//将list序列化ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());//字节流变成字节数组ObjectInputStream objectInputStream=new ObjectInputStream(byteArrayInputStream);List<Integer> newList= (List<Integer>)objectInputStream.readObject();//字节变成对象System.out.println(Arrays.toString(newList.toArray()));//将list对象变成数组}

在这里插入图片描述

将ArrayLisy实例的状态保存到一个流里面
ArrayList 实现Serializable接口被允许能进行序列化,但是ArrayLIst重写了readObject和writeObject 类自定义的序列化和反序列化策略,
自定义序列化和反序列化定义:
1.在序列化过程中,如果被序列化的类中定义了writeObject 和readObject 方法,虚拟机 会试图 调用对象类里的writeObject和readObject 方法进行用户自定义的序列化和反序列化
2.如果没有这样的方法,则默认调用是ObjectOutputStream 的defaultWriteObject 方法以及ObjcetInputStream 的defaultReadObject方法
3.用户自定义的writeObject 和readObject 方法可以允许用户控制序列化的过程,比如可以在序列化的过程中动态改变序列化的数值

ArrayList源码中自定义的序列化和反序列化

/*** 将ArrayLisy实例的状态保存到一个流里面*/
private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException{// Write out element count, and any hidden stuffint expectedModCount = modCount;//modCount变动计数器先把他冻结在一个变量s.defaultWriteObject();// Write out size as capacity for behavioural compatibility with clone()s.writeInt(size); // 按照顺序写入所有的元素for (int i=0; i<size; i++) {//首先Arraylist是一个动态数组,1.5倍扩容的情况下会有数组会有很多为null的元素,//这些空元素序列并没有必要, 所以我们ArrayList的elementData是被transient修饰的,避免全部没用的元素被序列化//在这里会一个个的遍历elementData实际元素s.writeObject(elementData[i]);}if (modCount != expectedModCount) {//如果在序列化期间,集合发生了变动就抛出异常throw new ConcurrentModificationException();}
}

反序列化源码:

/*** **/
private void readObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException {elementData = EMPTY_ELEMENTDATA;// Read in size, and any hidden stuffs.defaultReadObject();// Read in capacitys.readInt(); // ignoredif (size > 0) {// be like clone(), allocate array based upon size not capacityensureCapacityInternal(size);Object[] a = elementData;// Read in all elements in the proper order.for (int i=0; i<size; i++) {a[i] = s.readObject();//将字节码一个个赋值下去}}}

**

ArrayList clone机制

public Object clone() {try {ArrayList<?> v = (ArrayList<?>) super.clone();v.elementData = Arrays.copyOf(elementData, size);v.modCount = 0;return v;} catch (CloneNotSupportedException e) {// this shouldn't happen, since we are Cloneablethrow new InternalError(e);}}

//下文中Fail-Fast 机制和迭代器息息相关,各位可以结合一起阅读

Fail-Fast 机制:

**
Fail-Fast机制百科解释:

在系统设计中,快速失效系统一种可以立即报告任何可能表明故障的情况的系统。快速失效系统通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。这种设计通常会在操作中的多个点检查系统的状态,因此可以及早检测到任何故障。快速失败模块的职责是检测错误,然后让系统的下一个最高级别处理错误。

这也可以说是一种思想在做设计时候优先考虑异常情况,一旦发生异常,直接停止并上报,预先识别一些错误情况,防止更大错误的产生

java中的fail-fast 机制指的是 java集合中的一种错误检验机制,当多个线程对一些线程不安全的集合做出改变时候,会产生fail-fast机制抛出我们的老朋友:ConcurrentModificationException 防止在多线程并发操作数据的时候出现问题。
但是非单线程时候也会出现问题

ArrayList中的Fail-Fast机制
modCount 用来记录ArrayList 结构发生变化的次数。结构发生变化是指添加或者添加或者删除至少一个元素所有的操作,或者是调整内部数组的大小,仅仅只是设置元素的值不算结构发生变化

在进行序列化或者迭代等操作时,需要比较操作前后modCount 是否改变,如果改变了,在迭代器或者序列化时候,会调用checkForComodification(),判断期间是否有改变,需要抛出ConcurrentModificationException 异常来保证数据的安全
这是Fail-Fast机制,当然这也是个问题,我们有时候也会希望在迭代器期间会改变元素
迭代器Iterator 已经为我们提供remove 方法,所以我们只需要调用迭代里面的remove 方法就可以 了

ArrayList 迭代器机制:

//迭代器是一种集合的遍历方式之一,ArrayList 通过内部类实现Iterator 接口来实例化迭代器类,通过Iterator来实现对集合内部元素数组的遍历

源码中的ArrayList 创建迭代器:

  /*** Returns an iterator over the elements in this list in proper sequence.** <p>The returned iterator is <a href="#fail-fast"><i>fail-fast</i></a>.** @return an iterator over the elements in this list in proper sequence* //翻译:以正确的顺序遍历这个列表中的元素*/public Iterator<E> iterator() {return new Itr();}//Iterator 是ArrayList 的一个内部类, Itr 有一个成员变量叫expectedModCount 

Itr属性

 private class Itr implements Iterator<E> {//下一个要返回的元素的下标int cursor;       // index of next element to return//最后一个要返回的元素的下标,没有元素返回1int lastRet = -1; // index of last element returned; -1 if no such//期望的modCount//操作计数器int expectedModCount = modCount;.}

内部类Itr的hasnext方法

public boolean hasNext(){return cursor!=size;
}

Itr的next方法

   public E next() {checkForComodification();//int i = cursor;if (i >= size)//检查一遍下标cursor,赋值给一个变量是为了将数据冻住,防止想要判断的数被更改throw new NoSuchElementException();Object[] elementData = ArrayList.this.elementData;if (i >= elementData.length)throw new ConcurrentModificationException();cursor = i + 1;return (E) elementData[lastRet = i];}final void checkForComodification() {//前文讲到Fail-Fast机制,检查一遍集合是否有改动if (modCount != expectedModCount)throw new ConcurrentModificationException();
}

所以在你还在迭代的时候改动集合会抛出 ConcurrentModificationException异常
如下代码

     ArrayList arrayList=new ArrayList();for(int i=0;i<10;i++){arrayList.add(i);}Iterator<Integer > iterator=arrayList.listIterator();//拿到我们Arraylist的迭代器while (iterator.hasNext()){//判断下下面是由还有元素,如果有就把它拿出来Integer   j =iterator.next();if( j== 1){arrayList.remove(j);}}

在这里插入图片描述
不仅仅是在迭代器遍历,foreach循环遍历的时候最好不要进行remove和add的修改操作可能会触发fail-each机制触发异常
我们看看实际情况:

//直接for 通过i作为索引去循环遍历不会出现问题ArrayList<Integer> arrayList=new ArrayList();for(int i=0;i<10;i++){arrayList.add(i);}for(int i =0;i<arrayList.size();i++){if(i==3){arrayList.remove(3);}}System.out.println(arrayList);
//如果是foreach会触发 ArrayList<Integer> arrayList=new ArrayList();for(int i=0;i<10;i++){arrayList.add(i);}//35      for(int i :arrayList){if(i==3){arrayList.remove(3);}}System.out.println(arrayList);

在这里插入图片描述
这里有前辈通过jad 反编译工具对这段代码进行了反编译处理我这里直接套用了
foreach其实内部有相关的语法糖, 内部实现如下

 ArrayList<Integer> arrayList=new ArrayList();for(int i=0;i<10;i++){arrayList.add(i);}Iterator iterator =arrayList.iterator();//拿到了集合的迭代器do{if(!iterator.hasNext())break;Integer i =(Integer)iterator.next();if(i==(3))arrayList.remove(i);}while(true);System.out.println(arrayList )//foreach 依然是通过迭代器实现的,如果循环遍历期间出现改动依然会触发   checkForComodification()方法中的异常抛出

其实总结一下为什么我们循环期间remove或者add 会在 checkForComodification(); 方法里判断modCount 和
expectedModCount 不一样 ,我们remove 在变动modCount时候并没有跟着改动expectedModCount
总结图指示
在这里插入图片描述

Fail-Fast问题如何解决:
(我们不直接通过list直接去删除而是让迭代器帮我们去删除,将arraylist.remove 换成iterator.remove)
我们来看看迭代器remove的源码

public void remove() {if (lastRet < 0)throw new IllegalStateException();checkForComodification();try {ArrayList.this.remove(lastRet);cursor = lastRet;lastRet = -1;// 移除之后将modCount 重新赋值给 expectedModCount,为了保证在   checkForComodification();这个方法中我们modCount 是当前实况的变动计数expectedModCount = modCount;} catch (IndexOutOfBoundsException ex) {throw new ConcurrentModificationException();}
}

总结:

1.ArrayList 底层为数组,数组为了保证序列化的效率被transient修饰防止被全部序列化,没有被private修饰防止影响内部类访问数组的情况
2.ArrayList自动扩容,扩容jdk1.8之后用了 位运算来加快扩容的计算效率,
3.不管构造方法给不给初始值两都会初始化一个数组,但不给初始值时候如果添加元素,依然会进行扩容给你赋初始容量,所以创建ArrayList 最好给初始容量,减少不必要的扩容的次数
4.迭代器或者foreach(底层还是用了迭代器)遍历时候,中间不要list.remove或者list.add ,它只会改modCount不会改expectedModCount ,两者不相等会触发fail-fast机制会抛出异常
5.多线程访问集合时候务必保证通过防止触发fail-fast
6.ArrayLIst 遍历非常快,如size、isEmpty、get、set、iterator、这些操作时间复杂都是0(1)
如果涉及到定点增,删,其他处理时间复杂度0(n)
7.ArrayList 和Vector 大致相同但是ArrayList 是线程非安全
8.ArrayList 重写了序列化反序列化,避免序列化无用的null元素(都是一个个遍历序列化的)

参考资料:
https://mp.weixin.qq.com/s/WoGclm7SsbURGigI3Mwr3w //《吊打面试官》系列-ArrayList
https://blog.csdn.net/u013277209/article/details/101757718
https://mp.weixin.qq.com/s__biz=MzI3NzE0NjcwMg==&mid=2650123769&idx=2&sn=87d070e0a1a5e66a87eed4e22a99aa63&chksm=f36bb0d8c41c39ce80af4ff385a75f762a7f73850589517cb1ba28a42e9eb09eeb3bd81d4201&scene=21#wechat_redirect

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

相关文章

  1. Vue进阶(1)第一个vue-cli程序

    Vue-cli简介 一个官方的脚手架,相当于maven创建项目的骨架。主要功能统一目录结构,本地调试,热部署,单元测试和集成打包 需要环境(cmd操作最好以管理员身份进行) 1.下载node.js node.js下载地址 注意:下载和电脑匹配的版本 无脑下一步即可 2.确认node.js安装成功 cmd 下…...

    2024/4/15 4:23:36
  2. Promise,FetchAPI,Axios(当前热门) 的个人见解

    Promise Promise两个常用的静态方法:all:同时处理多个Promise,等所有的Promise都返回结果后,才会拿到结果,拿到的结果是一个数组,里面包含了所有的Promise的结果,顺序和发送时一致 race:同时处理多个Pormise,只要有一个Promise返回结果了,那么就会拿到这个结果,也就…...

    2024/5/1 7:38:27
  3. CUDA实现FFT并行计算

    前言本文是个人学习心得的分享,希望大家在阅读文章后能在评论中一起学习交流!另外还可以访问我的HelloCUDA仓库查看我在学习CUDA中写的一些demo程序。 内容概要复数的CUDA C++实现 从DFT到FFT FFT蝴蝶操作 CUDA中的分治 FFT的并行化前置知识算法基础知识 并行计算基础知识 C+…...

    2024/5/1 5:25:11
  4. 微信官方canvas wxml-to-canvas使用,并结合weapp-qrcode,画二维码,合成一张图,并下载

    wxml-to-canvas weapp-qrcode.js demo地址 附带,其他大佬的解决方案。...

    2024/4/17 8:46:08
  5. 【网络】HTTPS理论基础

    转载地址: HTTPS理论基础 HTTPS的4次握手是指SSL认证+TCP的3次握手吗?...

    2024/5/1 5:58:35
  6. 根据两个日期返回天数差

    /** * 根据两个日期返回天数差 * @return String */ public static long getDifferDay(String time1) { try { long time = 0l;String time2 = new SimpleDateFormat("yyyy-MM-dd").format(new Date());//time2:当前日期long t1 = new SimpleDateFormat("yyyy-M…...

    2024/4/21 22:21:00
  7. 超详细推导八大排序之插入排序

    插入排序思路:首先把一组数据分成两个部分,一部分是已经排好顺序的,这里我按照从小到大排列(这部分记作A),一部分是待排列数据(这部分记作B),默认排列好的部分只有一个数据也就是arr[0],然后将后面的数据依次与arr[0]比较,如果小于arr[0]则需要插入到arr[0]的前面(因…...

    2024/4/29 21:42:56
  8. 6.11 C语言练习([C语言训练]计算t=1+1/2+1/3+...+1/n)

    【练习】 题目要求:[C语言训练]计算t=1+1/2+1/3+...+1/n#include<stdio.h> int main() {int N;double i,sum;scanf("%d",&N);for(i=1.0;i<=N;i++){sum+= (1/i);}printf("%.6lf",sum);return 0; }...

    2024/4/24 12:47:20
  9. Spark1.x升级Spark2.x常见异常HBase篇【hbase.rpc.timeout】

    一.场景分析 大数据环境频繁使用metastore连接HBase加载数据时,偶尔会抛出hbase.rpc.timeout异常导致任务直接失败的情况。 异常信息: Caused by: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=2, waitTime=600020, operationTimeout=600000 expired.at org.a…...

    2024/4/28 16:17:13
  10. Android ImageView图片点击时放大,松开时恢复原来的状态

    前言 最近在开发中,遇到点击ImagView时要求放大,然后松开后恢复原来的状态,这时就需要setOnTouchEvent的事件,然后处理 MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP事件就可以了 MotionEvent.ACTION_DOWN时图片放大,MotionEvent.ACTION_UP恢复原来的样子 具体代码如下…...

    2024/5/1 7:17:39
  11. 实现简单的斗地主发牌

    //斗地主的步骤:创建编号和牌对对应的map集合,准备牌,洗牌,发牌,排序,从map集合查找,看牌 public class Demo_test {public static void main(String[] args) {//创建编号和牌对应的map集合Map<Integer, String> map = new LinkedHashMap<Integer, String>(…...

    2024/4/30 19:38:00
  12. Windows10 Docker安装最新版本Redmine(4.1.1)+MySQL(8)

    Windows10 Docker安装最新版本Redmine(4.1.1)+MySQL(8) 最近需要安装redmine,在网上找了一些教程,但是都是使用redmine 4.0.4 和 mysql 5.7,感觉有点旧,于是自己写个最新版本的手顺记录一下踩过的坑。 Step1:拉取redmine和mysql最新镜像 命令: docker pull redmine docke…...

    2024/5/1 6:31:31
  13. Guessing Camels

    题目链接:Guessing Camels把每个数字在分别三个数组出现的位置当成三个维度的下标。 那么问题就变成一个三维偏序了,cdq分治即可。AC代码: #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> //#define int long lon…...

    2024/4/24 12:47:15
  14. 对称二叉树(C++实现)

    给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2 2/ \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2 2\ \3 3<方法1>递归实现 #include<iostream> #include<queue> using name…...

    2024/5/1 7:45:28
  15. Shell脚本实现自动登录服务器

    1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]] thenhostNum=`cat ./serverList.txt | wc -l` elseecho "No .serverList.txt in ./ dir, please cr…...

    2024/4/24 12:47:13
  16. 模式识别作业6

    模式识别作业6 clear;clc; tune_b = 28; % 需要调的参数1 tune_T = 0; % 需要调的参数2 A = [];N1=9; % 每个数字样本个数为N1+1,需要调的参数3 N = 10*(N1+1); % 样本总数为N for i=0:9B = [];for j=0:N1x = im2double(imread(strcat(D:\kp_matlab\hw6-number_recog\01\imag…...

    2024/4/24 12:47:15
  17. Vue之v-if指令与v-show指令

    一 App组件<template><section><mongo :key="1" v-if="show"/><mongo :key="2" v-show="show"/></section> </template> <script> import Mongo from "./mongo";export default …...

    2024/4/24 12:47:11
  18. ForkJoinPool线程池原理分析

    一、引言算法领域有一种基本思想叫做“分治”,所谓“分治”就是将一个难以直接解决的大问题,分割成一些规模较小的子问题,以便各个击破,分而治之。比如:对于一个规模为N的问题,若该问题可以容易地解决,则直接解决;否则将其分解为K个规模较小的子问题,这些子问题互相独…...

    2024/4/24 12:47:13
  19. Qt:QSqlTableModel 设置不同角色数据的方法

    QSqlTableModel是用于从单个表读写数据库记录的高级接口。它构建在底层的QSqlQuery之上,可用于为视图类(比如QTableView)提供数据。例如:QSqlTableModel *model = new QSqlTableModel;model->setTable("employee");model->setEditStrategy(QSqlTableModel::On…...

    2024/4/24 12:47:10
  20. 前端每日一题:手写async await的最简实现(20行搞定)!阿里字节面试必考

    手写async await的最简实现(20行搞定)!阿里字节面试必考 前言 如果让你手写async函数的实现,你是不是会觉得很复杂?这篇文章带你用20行搞定它的核心。 经常有人说async函数是generator函数的语法糖,那么到底是怎么样一个糖呢?让我们来一层层的剥开它的糖衣。 有的同学想…...

    2024/4/24 12:47:08

最新文章

  1. 羽毛多肽复合纳米纤维膜

    羽毛多肽复合纳米纤维膜是一种结合了羽毛多肽和其他纳米纤维材料&#xff08;如P(MA-AA)等&#xff09;的新型生物材料。这种复合纳米纤维膜通过引入羽毛多肽&#xff0c;进一步提升了其生物相容性、生物活性以及吸附性能。 羽毛多肽作为一种天然生物材料&#xff0c;具有良好的…...

    2024/5/1 8:55:43
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Linux mount用法

    在Linux系统中&#xff0c;系统自动挂载了以下挂载点&#xff1a; /: xfs文件系统&#xff0c;根文件系统, 所有其他文件系统的挂载点。 /sys: sysfs文件系统&#xff0c;提供内核对象的信息和接口。 /proc: proc文件系统&#xff0c;提供进程和系统信息。 /dev: devtmpfs文件系…...

    2024/4/30 3:59:48
  4. 【stm32】I2C通信协议

    【stm32】I2C通信协议 概念及原理 如果我们想要读写寄存器来控制硬件电路&#xff0c;就至少需要定义两个字节数据 一个字节是我们要读写哪个寄存器&#xff0c;也就是指定寄存器的地址 另一个字节就是这个地址下存储寄存器的内容 写入内容就是控制电路&#xff0c;读出内容就…...

    2024/4/30 17:11:40
  5. 【外汇早评】美通胀数据走低,美元调整

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

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

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

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

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

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

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

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

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

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

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

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

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

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/30 9:42:49
  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