在《推断构造方法(上)》中介绍了通过determineConstructorsFromBeanPostProcessors()获取候选的构造方法,完成构造方法的获取后,下一步就是要推断使用哪一个构造方法,并根据构造方法实例化一个bean

如果候选的构造方法不为空,或者指定了注入方式为构造注入,或者通过BeanDefinition指定了构造方法的参数值,或者通过getBean()获取实例的时候传入了构造方法参数值,对于这些情况,都需要进行构造注入,调用autowireConstructor()完成实例化

如果以上情况都不满足,就会使用无参构造方法进行实例化

Constructor<?>[] ctors = determineConstructorsFromBeanPostProcessors(beanClass, beanName);// 如果推断出来了构造方法,则需要给构造方法赋值,也就是给构造方法参数赋值,也就是构造方法注入
// 如果没有推断出来构造方法,但是autowiremode为AUTOWIRE_CONSTRUCTOR,则也可能需要给构造方法赋值,因为不确定是用无参的还是有参的构造方法
// 如果通过BeanDefinition指定了构造方法参数值,那肯定就是要进行构造方法注入了
// 如果调用getBean的时候传入了构造方法参数值,那肯定就是要进行构造方法注入了
if (ctors != null || mbd.getResolvedAutowireMode() == AUTOWIRE_CONSTRUCTOR ||mbd.hasConstructorArgumentValues() || !ObjectUtils.isEmpty(args)) {return autowireConstructor(beanName, mbd, ctors, args);
}
// Preferred constructors for default construction?
ctors = mbd.getPreferredConstructors();
if (ctors != null) {return autowireConstructor(beanName, mbd, ctors, null);
}// No special handling: simply use no-arg constructor.
// 不匹配以上情况,则直接使用无参构造方法
return instantiateBean(beanName, mbd);

简单介绍一下上面第二种和第三种情况

  • 指定注入类型

    通过xml的方式指定注入类型为构造注入

    public class UserService {OrderService orderService;public UserService(OrderService orderService){}
    }
    
    <bean id="orderService" class="com.lizhi.service.OrderService"/>
    <bean id="userService" class="com.lizhi.service.UserService" autowire="constructor"/>
    

    通过BeanDefinition指定构造注入

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition();
    AbstractBeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
    beanDefinition.setBeanClass(UserService.class);
    //通过BeanDefintion指定为构造注入
    beanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR);
    context.registerBeanDefinition("userService",beanDefinition);
    
  • BeanDefinition指定构造方法参数值

    为构造方法指定参数值

    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition();
    AbstractBeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
    beanDefinition.setBeanClass(UserService.class);
    //指定构造方法参数值
    beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(new OrderService());
    beanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR);
    context.registerBeanDefinition("userService",beanDefinition);
    

    根据索引为构造方法的指定参数指定参数值

    为构造方法的第一个参数指定参数值

    beanDefinition.getConstructorArgumentValues().addIndexedArgumentValue(0,new OrderService());
    

一、初步确定构造方法和参数

使用constructorToUse变量存将要使用的构造方法,argsToUse变量存需要使用的构造方法参数值,ArgumentsHolder是对构造方法参数值的封装

首先判断getBean()方法调用时有没有指定构造方法参数,如果指定了,则优先使用指定的值作为构造方法的参数值

如果没有指定,则判断BeanDefinition中是否缓存了构造方法参数值

public BeanWrapper autowireConstructor(String beanName, RootBeanDefinition mbd,@Nullable Constructor<?>[] chosenCtors, @Nullable Object[] explicitArgs) {Constructor<?> constructorToUse = null;ArgumentsHolder argsHolderToUse = null;Object[] argsToUse = null;// 如果getBean()传入了args,那构造方法要用的入参就直接确定好了if (explicitArgs != null) {argsToUse = explicitArgs;}else {Object[] argsToResolve = null;synchronized (mbd.constructorArgumentLock) {constructorToUse = (Constructor<?>) mbd.resolvedConstructorOrFactoryMethod;if (constructorToUse != null && mbd.constructorArgumentsResolved) {// Found a cached constructor...argsToUse = mbd.resolvedConstructorArguments;}}}
}

二、推断构造方法和方法参数

如果缓存中没有构造方法,或者没有得到可用的构造方法参数,则需要自行去推断获取

2.1 推断使用默认无参构造方法

先获取前面推断时的到的候选构造方法数组,如果为null,说明有两种情况:1、只有一个默认的无参构造方法 2、有多个有参构造方法,只有这两种情况会返回null

如果没有候选的构造的方法,则直接根据beanClass去获取构造方法

如果只有一个构造方法,并且getBean()调用时没有指定构造方法的参数,BeanDefinition中也没有指定构造方法的参数值,则使用默认的无参构造方法来实例化,同时将构造方法以及参数(空数组)进行缓存,防止后面不必要的构造推断

// 如果没有确定要使用的构造方法,或者确定了构造方法但是所要传入的参数值没有确定
if (constructorToUse == null || argsToUse == null) {// Take specified constructors, if any.// 如果没有指定构造方法,那就获取beanClass中的所有构造方法所谓候选者Constructor<?>[] candidates = chosenCtors;if (candidates == null) {Class<?> beanClass = mbd.getBeanClass();candidates = (mbd.isNonPublicAccessAllowed() ?beanClass.getDeclaredConstructors() : beanClass.getConstructors());}// 如果只有一个候选构造方法,并且没有指定所要使用的构造方法参数值,并且该构造方法是无参的,那就直接用这个无参构造方法进行实例化了if (candidates.length == 1 && explicitArgs == null && !mbd.hasConstructorArgumentValues()) {Constructor<?> uniqueCandidate = candidates[0];if (uniqueCandidate.getParameterCount() == 0) {synchronized (mbd.constructorArgumentLock) {mbd.resolvedConstructorOrFactoryMethod = uniqueCandidate;mbd.constructorArgumentsResolved = true;mbd.resolvedConstructorArguments = EMPTY_ARGS;}bw.setBeanInstance(instantiate(beanName, mbd, uniqueCandidate, EMPTY_ARGS));return bw;}}……
}

2.2 记录构造方法的最小参数个数

首先判断是否需要进行构注入,如果候选的构造方法不为空,或指定了注入方式为构造注入时,都需要进行构造注入

而候选的构造方法不为空包含两种情况:1、有加了@Autowired的构造方法 2、只有一个多参的构造方法,对于这两种情况,都需要进行构造注入

然后记录构造方法所需的最小参数个数,如果getBean()调用的时候,指定了构造方法参数,则最小的参数个数就是getBean()中指定的参数个数;如果通过BeanDefinition的方式指定了构造方法参数,则通过指定的最大索引位置的来计算最小的参数个数,在文章前面讲到了BeanDefinition可以通过指定索引位置的参数值,如果指定的索引值为2,说明要使用的构造方法最少包含3个参数值

记录构造方法的最小参数个数主要就是为了筛选构造方法,如果指定了构造方法的参数个数为2,那么只有一个参数的构造方法就无法使用,只用参数个数大于等于2的构造方法才有可能被使用

// Need to resolve the constructor.
boolean autowiring = (chosenCtors != null ||mbd.getResolvedAutowireMode() == AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR);
ConstructorArgumentValues resolvedValues = null;// 确定要选择的构造方法的参数个数的最小值,后续判断候选构造方法的参数个数如果小于minNrOfArgs,则直接pass掉
int minNrOfArgs;
if (explicitArgs != null) {// 如果直接传了构造方法参数值,那么所用的构造方法的参数个数肯定不能少于minNrOfArgs = explicitArgs.length;
}
else {// 如果通过BeanDefinition传了构造方法参数值,因为有可能是通过下标指定了,比如0位置的值,2位置的值,虽然只指定了2个值,但是构造方法的参数个数至少得是3个ConstructorArgumentValues cargs = mbd.getConstructorArgumentValues();resolvedValues = new ConstructorArgumentValues();// 处理RuntimeBeanReferenceminNrOfArgs = resolveConstructorArguments(beanName, mbd, bw, cargs, resolvedValues);
}

2.3 对构造方法进行排序

在得到构造方法后,按照public类型、参数个数进行排序,也就是优先使用public类型,参数最多的构造方法进行实例化

// 对候选构造方法进行排序,public的方法排在最前面,都是public的情况下参数个数越多越靠前
AutowireUtils.sortConstructors(candidates);
public static void sortConstructors(Constructor<?>[] constructors) {Arrays.sort(constructors, EXECUTABLE_COMPARATOR);
}
public static final Comparator<Executable> EXECUTABLE_COMPARATOR = (e1, e2) -> {int result = Boolean.compare(Modifier.isPublic(e2.getModifiers()), Modifier.isPublic(e1.getModifiers()));return result != 0 ? result : Integer.compare(e2.getParameterCount(), e1.getParameterCount());
};

2.4 遍历构造方法进行筛选

后面的逻辑获取参数值以及对构造方法计算分数都是在遍历构造方法中完成的

如果已经找到了可用的构造方法,再下次遍历的时候,需要比较上一个构造方法的参数个数是否比当前构造方法的参数个数,如果比当前的构造方法多,则认为上一个可用的构造方法就是最合适的

如果当前构造方法的参数个数比要求的最小参数个数还少,该构造方法直接被过滤掉,不可用

// 遍历每个构造方法,进行筛选
for (Constructor<?> candidate : candidates) {// 参数个数int parameterCount = candidate.getParameterCount();// 本次遍历时,之前已经选出来了所要用的构造方法和入参对象,并且入参对象个数比当前遍历到的这个构造方法的参数个数多,则不用再遍历,退出循环if (constructorToUse != null && argsToUse != null && argsToUse.length > parameterCount) {// Already found greedy constructor that can be satisfied ->// do not look any further, there are only less greedy constructors left.break;}// 如果参数个数小于所要求的参数个数,则遍历下一个,这里考虑的是同时存在public和非public的构造方法if (parameterCount < minNrOfArgs) {continue;}……
}

2.5 寻找构造方法参数

resolvedValues变量记录了通过BeanDefinition指定的构造方法参数值,如果BeanDefinition没有指定,getBean()也没有指定参数值,那么resolvedValues就是一个空的ConstructorArgumentValues对象,但不是null

@ConstructorProperties可以用于构造方法上,指定构造方法的参数名,如果加了该注解,就使用指定的名称作为参数名;如果没有加该注解,就通过反射技术去获取到构造方法定义时的参数名

然后调用createArgumentArray()去获取参数,如果getBean()指定了参数值,判断当前遍历的构造方法的参数个数是否与指定的参数个数相同,如果个数相同,就算找到当前构造方法的参数了,后面再去判断构造方法是否是最佳的

ArgumentsHolder argsHolder;
Class<?>[] paramTypes = candidate.getParameterTypes();
// 没有通过getBean()指定构造方法参数值
if (resolvedValues != null) {try {// 如果在构造方法上使用了@ConstructorProperties,那么就直接取定义的值作为构造方法的参数名String[] paramNames = ConstructorPropertiesChecker.evaluate(candidate, parameterCount);// 获取构造方法参数名if (paramNames == null) {ParameterNameDiscoverer pnd = this.beanFactory.getParameterNameDiscoverer();if (pnd != null) {paramNames = pnd.getParameterNames(candidate);}}// 根据参数类型、参数名找到对应的bean对象argsHolder = createArgumentArray(beanName, mbd, resolvedValues, bw, paramTypes, paramNames,getUserDeclaredConstructor(candidate), autowiring, candidates.length == 1);}catch (UnsatisfiedDependencyException ex) {// 当前正在遍历的构造方法找不到可用的入参对象,记录一下if (logger.isTraceEnabled()) {logger.trace("Ignoring constructor [" + candidate + "] of bean '" + beanName + "': " + ex);}// Swallow and try next constructor.if (causes == null) {causes = new ArrayDeque<>(1);}causes.add(ex);continue;}
}
else {// Explicit arguments given -> arguments length must match exactly.// 没有通过BeanDefinition指定构造方法参数值,但是在调getBean方法是传入了参数值,那就表示只能用对应参数个数的构造方法if (parameterCount != explicitArgs.length) {continue;}// 不用再去BeanFactory中查找bean对象了,已经有了,同时当前正在遍历的构造方法就是可用的构造方法argsHolder = new ArgumentsHolder(explicitArgs);
}

createArgumentArray()方法中,会去遍历参数类型,查找参数值

方法入参resolvedValues中存放的是BeanDefinition中指定的参数值,resolvedValues包含了按索引指定的参数值集合和通用的参数集合,如果resolvedValues中指定了参数值,会首先会从indexedArgumentValues(指定索引的参数Map)中去找,再从genericArgumentValues(通用参数集合)去找,如果找到了,再去判断是否需要进行类型转换以及类型转换

如果resolvedValues中没有指定参数值,则通过autowiring入参判断是否需要进行注入,只有需要注入时,Spring才会为构造方法去寻找注入值;如果不需要注入意味着找不到构造方法的参数值,则直接抛异常

如果需要注入,会调用resolveAutowiredArgument(),该方法会调用核心的resolveDependency(),根据类型、名称取查找Bean实例,依赖注入时,为属性查找注入值也是使用resolveDependency(),关于该方法,在《依赖注入(下)》有详细介绍

private ArgumentsHolder createArgumentArray(String beanName, RootBeanDefinition mbd, @Nullable ConstructorArgumentValues resolvedValues,BeanWrapper bw, Class<?>[] paramTypes, @Nullable String[] paramNames, Executable executable,boolean autowiring, boolean fallback) throws UnsatisfiedDependencyException {ArgumentsHolder args = new ArgumentsHolder(paramTypes.length);Set<ConstructorArgumentValues.ValueHolder> usedValueHolders = new HashSet<>(paramTypes.length);Set<String> autowiredBeanNames = new LinkedHashSet<>(4);// 遍历构造方法的参数类型for (int paramIndex = 0; paramIndex < paramTypes.length; paramIndex++) {// 拿到具体的参数类型和参数名Class<?> paramType = paramTypes[paramIndex];String paramName = (paramNames != null ? paramNames[paramIndex] : "");// Try to find matching constructor argument value, either indexed or generic.ConstructorArgumentValues.ValueHolder valueHolder = null;// 如果在BeanDefinition中指定了构造方法参数值,则拿到具体的对象if (resolvedValues != null) {valueHolder = resolvedValues.getArgumentValue(paramIndex, paramType, paramName, usedValueHolders);if (valueHolder == null && (!autowiring || paramTypes.length == resolvedValues.getArgumentCount())) {valueHolder = resolvedValues.getGenericArgumentValue(null, null, usedValueHolders);}}if (valueHolder != null) {// We found a potential match - let's give it a try.// Do not consider the same value definition multiple times!usedValueHolders.add(valueHolder);//省略的代码主要处理类型转换……// 当前所遍历的参数所对应的参数值args.arguments[paramIndex] = convertedValue;args.rawArguments[paramIndex] = originalValue;}else {MethodParameter methodParam = MethodParameter.forExecutable(executable, paramIndex);// No explicit match found: we're either supposed to autowire or// have to fail creating an argument array for the given constructor.if (!autowiring) {throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, new InjectionPoint(methodParam),"Ambiguous argument values for parameter of type [" + paramType.getName() +"] - did you specify the correct bean references as arguments?");}try {// 根据方法参数类型和名字从BeanFactory中匹配Bean对象Object autowiredArgument = resolveAutowiredArgument(methodParam, beanName, autowiredBeanNames, converter, fallback);// 当前所遍历的参数所对应的参数值args.rawArguments[paramIndex] = autowiredArgument;args.arguments[paramIndex] = autowiredArgument;args.preparedArguments[paramIndex] = autowiredArgumentMarker;args.resolveNecessary = true;}catch (BeansException ex) {throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, new InjectionPoint(methodParam), ex);}}}return args;
}

2.6 寻找最佳的构造方法

前面已经找到了构造方法的参数值,接着将对每个构造方法进行一个打分,分值最小的构造方法,认为是最匹配的构造方法

其中打分又分为宽松模式和严格模式:

在严格模式下,如果最终参数与参数类型不匹配(经过类型转换),直接返回Integer.MAX_VALUE,表示非常不匹配;如果原始参数与当前类型也不匹配,返回Integer.MAX_VALUE - 512;如果最终参数和原始参数都与参数类型匹配,则返回Integer.MAX_VALUE - 1024

在宽松模式下,如果最终值与参数类型不匹配,直接返回Integer.MAX_VALUE;如果值继承了父类和实现了接口,会根据值的类型和参数类型来计算分数,每增加一层父类,分数就会加2,如果是接口,还会再加1

计算得到的分数越小的构造方法,就是越匹配的构造方法,对于分数相同的情况,则记录一下,放进ambiguousConstructors中缓存

int minTypeDiffWeight = Integer.MAX_VALUE;
// 当前遍历的构造方法所需要的入参对象都找到了,根据参数类型和找到的参数对象计算出来一个匹配值,值越小越匹配
// Lenient表示宽松模式
int typeDiffWeight = (mbd.isLenientConstructorResolution() ?argsHolder.getTypeDifferenceWeight(paramTypes) : argsHolder.getAssignabilityWeight(paramTypes));
// Choose this constructor if it represents the closest match.
// 值越小越匹配
if (typeDiffWeight < minTypeDiffWeight) {constructorToUse = candidate;argsHolderToUse = argsHolder;argsToUse = argsHolder.arguments;minTypeDiffWeight = typeDiffWeight;ambiguousConstructors = null;
}
// 值相等的情况下,记录一下匹配值相同的构造方法
else if (constructorToUse != null && typeDiffWeight == minTypeDiffWeight) {if (ambiguousConstructors == null) {ambiguousConstructors = new LinkedHashSet<>();ambiguousConstructors.add(constructorToUse);}ambiguousConstructors.add(candidate);
}

宽松模式下算分规则:比如参数类型为A,而A继承于类B,类B继承与类C,同时A又实现了接口D

Object[] objects = new Object[]{new A()};// 0
System.out.println(MethodInvoker.getTypeDifferenceWeight(new Class[]{A.class}, objects));// 2
System.out.println(MethodInvoker.getTypeDifferenceWeight(new Class[]{B.class}, objects));// 4
System.out.println(MethodInvoker.getTypeDifferenceWeight(new Class[]{C.class}, objects));// 1
System.out.println(MethodInvoker.getTypeDifferenceWeight(new Class[]{D.class}, objects));

2.7 生成实例

如果前面的操作,没有找到可用的构造方法,或者找到了多个匹配度相同的构造方法不知道用哪个,这两种情况都会抛出异常

如果getBean()调用没有传入参数,并且找到了构造方法以及要用的入参对象,则对其进行缓存,然后利用构造方法生成实例并返回

// 如果没有可用的构造方法,就取记录的最后一个异常并抛出
if (constructorToUse == null) {throw new BeanCreationException(mbd.getResourceDescription(), beanName,"Could not resolve matching constructor on bean class [" + mbd.getBeanClassName() + "] " +"(hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)");
}
// 如果有可用的构造方法,但是有多个
else if (ambiguousConstructors != null && !mbd.isLenientConstructorResolution()) {throw new BeanCreationException(mbd.getResourceDescription(), beanName,"Ambiguous constructor matches found on bean class [" + mbd.getBeanClassName() + "] " +"(hint: specify index/type/name arguments for simple parameters to avoid type ambiguities): " +ambiguousConstructors);
}// 如果没有通过getBean方法传入参数,并且找到了构造方法以及要用的入参对象则缓存
if (explicitArgs == null && argsHolderToUse != null) {argsHolderToUse.storeCache(mbd, constructorToUse);
}bw.setBeanInstance(instantiate(beanName, mbd, constructorToUse, argsToUse));return bw;
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 第二章:数据类型,运算符和表达式

    2.1 引例 [例 2.1】 /*Output:“Programming is fun.”*/ #include<stdio.h> intmain(void) {printf("Programming is fun.");return 0; } 【例2.2】 #include<stdio.h> #define PI 3.14159 main(void) {int r;float v, f;r 2;v 4.0 * PI * r * …...

    2024/4/21 17:34:11
  2. $.ajax如何在response中获取请求头

    $.ajax如何在response中获取请求头 下载文件时需要获取后端带在responseHeader中的文件名称 $.ajax({type: "get",url: "http://xxxx/currentuser",contentType: "application/json; charsetutf-8",responseType: blob,success: function (dat…...

    2024/4/28 14:44:45
  3. 同步和异步的区别

    同步和异步的区别 同步是阻塞模式&#xff0c;异步是非阻塞模式。 同步就是指一个进程在执行某个请求的时候&#xff0c;若该请求需要一段时间才能返回信息&#xff0c;那么这个进程将会一直等待下去&#xff0c;直到收到返回信息才继续执行下去; 异步是指进程不需要一直等下…...

    2024/4/21 17:34:08
  4. 矩阵对角线求和

    作者&#xff1a;墨启飞 环境&#xff1a;vs2019 题目 1024: 矩阵对角线求和 时间限制: 1Sec 内存限制: 128MB 提交: 24085 解决: 15532 题目描述 求一个33矩阵对角线元素之和。 输入 矩阵 输出 主对角线 副对角线 元素和 样例输入复制 1 2 3 1 1 1 3 2 1 样例输出复制 3 7 #i…...

    2024/4/21 17:34:07
  5. 2021-10-27 Qt QString arg() 使用过程遇到的问题

    问题描述&#xff1a; 有这样一段代码 QString s QString("SELECT hash, type, x, y, zoom FROM TilesDownload WHERE setID %1 AND state "" 0 LIMIT %2").arg(_task->setID(), _task->count());LOG_DEBUG() << s;结果输出的 s 里第二个%…...

    2024/4/21 17:34:06
  6. Matlab App Designer自学笔记(一):Button控件、Lable控件及文本编辑控件

    MATLAB R2019b超详细安装教程&#xff08;附完整安装文件&#xff09;https://www.cnblogs.com/sixuwuxian/p/12512803.html matlab的安装教程有很多&#xff0c;建议使用2018年及之后的版本。 1.启动App Designer 启动App Designer设计台&#xff0c;只需要在命令行中输入a…...

    2024/4/21 17:34:05
  7. JavaScript 解析 xml 字符串

    使用场景在获取 ArcGIS WMS 详细信息 http://localhost:6080/arcgis/services/World/MapServer/WMSServer?requestGetCapabilities&serviceWMS 返回 xml 信息如下 使用 loadXML 对象解析 // 支持 IE9均支持、Google function loadXML(xmlString){let domParser new …...

    2024/4/20 13:53:29
  8. 令牌桶算法原理

    token_bucket令牌桶算法原理 讲在原理之前 我们今天主要是分析令牌桶算法&#xff0c;分析之前我们先介绍一下使用该算法的背景。 限流 每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也…...

    2024/4/20 13:53:27
  9. 隧道代理ip的作用

    隧道代理ip就是通过固定的隧道代理地址进行链接&#xff0c;会将用户发送的请求转发到不同的代理IP。 隧道代理又有固定时长和动态转发两种。 ①隧道代理-固定时长&#xff0c;隧道代理&#xff08;固定时长&#xff09;每个IP代理的使用时长一般为N分钟&#xff08;不同服务…...

    2024/4/28 7:59:12
  10. 机器学习之多项式曲线拟合的Python实现

    1、什么是多项式曲线拟合 多项式拟合就是我们需要得到一个无限逼近真实曲线的的多项式&#xff1a; y(x,W)w0w1xw2x2…wkxk∑i0kwixiy(x,W) w_0 w_1x w_2x^2 … w_kx^k \sum_{i0}^{k}w_ix^i y(x,W)w0​w1​xw2​x2…wk​xki0∑k​wi​xi 注&#xff1a; kkk 为多项式的阶…...

    2024/4/20 13:53:26
  11. 全卷积网络解决抄表类问题,车牌识别等一个思路

    在工业场景中经常会遇到一些抄表类问题&#xff0c;如示例图片所示&#xff1a; 在这类问题中&#xff0c;可以使用全卷积网络很好的解决&#xff0c;笔者借助Tensorflow设计了全卷积网络&#xff0c;进行了训练&#xff0c;从结果来看&#xff0c;准确度还非常高&#xff0c;以…...

    2024/4/21 17:34:05
  12. 2021-10-27自动采集商品图片,自动获取店铺商品分类,并指定分类下载

    基本上所有的店铺都会将商品进行分类&#xff0c;方便客户快速找到自己的需要的内容&#xff0c;整体的布局页面也比较清晰&#xff0c;那么很多商家在采集图片的时候就也想要分类下载&#xff0c;今天就来教大家怎么操作。 1、 我们在采集的过程中需要借助固乔电商图片助手这款…...

    2024/4/21 17:34:04
  13. C# 文件流写入方法

    C# 文件流写入方法&#xff1a; stream为服务端接收的文件流 var bytes new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begin); var pathHead HttpContext.Current.Request.PhysicalApplicatio…...

    2024/4/21 17:34:02
  14. 乒乓球比赛,求出3对赛手的名单

    #include <stdio.h> int main() { char i, j, k, h; for (i X; i < Z; i) { if (i ! X && i ! Z) { k i;//找到C的对手 } if (i ! X && i ! k) { j i;//找到A的对手…...

    2024/4/23 18:14:06
  15. 学习使用学习使用学习使用学习使用

    ...

    2024/4/21 17:34:00
  16. OSPF DR选举与主从选举

    1、阶段不同&#xff1a; DR/BDR选举在2-way状态。 主从选举在extart状态。 2、选举方法不同&#xff1a; DR/BDR先看优先级&#xff0c;然后查RID来选DR。 主从选举看MS位&#xff0c;1为主&#xff0c;0为从&#xff0c;如果都为1&#xff0c;比RID. 3、功能不同&#xff1…...

    2024/4/21 17:33:59
  17. MySQL沉浸式面试:隔离级别、锁、索引原理连环炮你扛得住吗?

    今天我们来聊聊MySQL原理 基础篇主要是侧重基础知识&#xff0c;原理篇是有一定基础后的递进&#xff0c;通过学习本篇&#xff0c;不仅可以进一步了解MySQL的各项特性&#xff0c;还能为接下来的容灾调优打下坚实的基础。 现在&#xff0c;就让我们继续跟随阿柴进行这场沉浸式…...

    2024/4/21 17:33:59
  18. 虾皮网怎么注册开店?多站点申请教程

    虾皮怎么注册开店。虾皮注册开店非常简单&#xff0c;不管是企业户&#xff0c;还是个体户&#xff0c;只要有企业资质、其他电商平台三个月的流水&#xff0c;还有有效的联系方式等&#xff0c;就可以申请店铺了。 所以准备好资料&#xff0c;在虾皮的官方网站点击申请入驻&a…...

    2024/4/21 17:33:57
  19. ThreadLocal的源码解读

    ThreadLocal的解读 基本测试使用代码 public class ThreadLoaclDemo {static ThreadLocal<String> threadLocal new ThreadLocal<>();static String test "hello";public static void main(String[] args) {new Thread(() ->{threadLocal.set(&qu…...

    2024/4/21 17:33:59
  20. centos和ubuntu操作系统有啥不同

    导读: 这篇文章是给刚了解什么是Linux操作系统的小白讲的,其他人可以划走 小白说: 是有界面和没界面的区别? 不对,Linux操作系统在安装的时候可以选择最小安装和自定义安装,全部安装.一个很全的Linux安装包大概7个多G, 桌面程序只是其中的一个组件.对于centos和ubuntu来说,都可…...

    2024/4/21 17:33:56

最新文章

  1. 基于51单片机的电子秤LCD1602液晶显示( proteus仿真+程序+设计报告+讲解视频)

    基于51单片机电子秤LCD显示 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子秤LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.9及以上 程序编译器&#xf…...

    2024/4/29 2:17:21
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 蓝桥杯第十五届抱佛脚(十)贪心算法

    蓝桥杯第十五届抱佛脚&#xff08;十&#xff09;贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法&#xff0c;它在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是最好或最优的算法。 贪…...

    2024/4/19 0:49:59
  4. 解决前端性能瓶颈:高效处理大量数据渲染与复杂交互的策略与优化方法

    ✨✨祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、分页加载数据 二、虚拟滚动 三、懒加载 四、数据缓存 五、减少重绘和回流 …...

    2024/4/25 14:28:35
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

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

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

    2024/4/28 13:51:37
  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/28 15:57:13
  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/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

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

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

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

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

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

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

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

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

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

    2024/4/27 8:32:30
  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