代理模式与RPC客户端实现类

本节首先介绍客户端RPC远程调用实现类的职责,然后从基础原理讲起,依次介绍代理模式的原理、使用静态代理模式实现RPC客户端类、使用动态代理模式实现RPC客户端类,一步一步地接近Feign RPC的核心原理知识。

 客户端RPC远程调用实现类的职责

客户端RPC实现类位于远程调用Java接口和Provider微服务实例之间,承担了以下职责:

(1)拼装REST请求:根据Java接口的参数,拼装目标REST接口的URL。

(2)发送请求和获取结果:通过Java HTTP组件(如HttpClient)调用Provider微服务实例的REST接口,并且获取REST响应。

(3)结果解码:解析REST接口的响应结果,封装成目标POJO对象(Java接口的返回类型)并且返回。

RPC远程调用客户端实现类的职责如图3-1所示。

图3-1 RPC远程调用客户端实现类的职责

使用Feign进行RPC远程调用时,对于每一个Java远程调用接口,Feign都会生成一个RPC远程调用客户端实现类,只是对于开发者来说这个实现类是透明的,感觉不到这个实现类的存在。

Feign为DemoClient接口生成的RPC客户端实现类大致如图3-2所示。

图3-2 Feign为DemoClient接口生成的RPC客户端实现类参考图

由于看不到Feign的RPC客户端实现类的任何源码,初学者会感觉到很神奇,感觉这就是一个黑盒子。下面从原始的、简单的RPC远程调用客户端实现类开始为大家逐步地揭开Feign的RPC客户端实现类的神秘面纱。

在一点点揭开RPC远程调用客户端实现类的面纱之前,先模拟一个Feign远程调用Java接口,对应demo-provider服务的两个REST接口。

模拟的远程调用Java接口为MockDemoClient,它的代码如下:

package com.crazymaker.demo.proxy.FeignMock;
...
@RestController(value = TestConstants.DEMO_CLIENT_PATH)
public interface MockDemoClient
{ /***远程调用接口的方法,完成REST接口api/demo/hello/v1的远程调用*REST接口功能:返回hello world*@return JSON响应实例*/@GetMapping(name = "api/demo/hello/v1")RestOut<JSONObject> hello();/***远程调用接口的方法,完成REST接口api/demo/echo/{0}/v1的远程调用*REST接口功能:回显输入的信息*@return echo回显消息JSON响应实例*/@GetMapping(name = "api/demo/echo/{0}/v1")RestOut<JSONObject> echo(String word);
}

接下来层层递进,为大家演示以下3种RPC远程调用客户端:

(1)简单的RPC客户端实现类。

(2)静态代理模式的RPC客户端实现类。

(3)动态代理模式的RPC客户端实现类。

最后的动态代理模式的RPC客户端实现类在实现原理上已经非常接近Feign的RPC客户端实现类。

简单的RPC客户端实现类

简单的RPC客户端实现类的主要工作如下:

(1)组装REST接口URL。

(2)通过HttpClient组件调用REST接口并获得响应结果。

(3)解析REST接口的响应结果,封装成JSON对象,并且返回给调用者。

简单的RPC客户端实现类的参考代码如下:

package com.crazymaker.demo.proxy.basic;
//省略import
@AllArgsConstructor
@Slf4j
class RealRpcDemoClientImpl implements MockDemoClient
{final String contextPath = TestConstants.DEMO_CLIENT_PATH;//完成对REST接口api/demo/hello/v1的调用public RestOut<JSONObject> hello(){/***远程调用接口的方法,完成demo-provider的REST API远程调用*REST API功能:返回hello world*/String uri = "api/demo/hello/v1";/***组装REST接口URL*/String restUrl = contextPath + uri;log.info("restUrl={}", restUrl);/***通过HttpClient组件调用REST接口*/String responseData = null;try{responseData = HttpRequestUtil.simpleGet(restUrl);} catch (IOException e){e.printStackTrace();}/***解析REST接口的响应结果,解析成JSON对象并且返回给调用者*/RestOut<JSONObject> result = JsonUtil.jsonToPojo(responseData,
new TypeReference<RestOut<JSONObject>>() {});return result;}//完成对REST接口api/demo/echo/{0}/v1的调用public RestOut<JSONObject> echo(String word){/***远程调用接口的方法,完成demo-provider的REST API远程调用*REST API功能:回显输入的信息*/String uri = "api/demo/echo/{0}/v1";/***组装REST接口URL*/String restUrl = contextPath + MessageFormat.format(uri, word);log.info("restUrl={}", restUrl);/***通过HttpClient组件调用REST接口*/String responseData = null;try{responseData = HttpRequestUtil.simpleGet(restUrl);} catch (IOException e){e.printStackTrace();}/**
解析
接
的响应结果
解析成
对象
并且返回给调用者 *解析REST接口的响应结果,解析成JSON对象,并且返回给调用者*/RestOut<JSONObject> result = JsonUtil.jsonToPojo(responseData,
new TypeReference<RestOut<JSONObject>>() { });return result;}
}

以上简单的RPC实现类RealRpcDemoClientImpl的测试用例如下:

package com.crazymaker.demo.proxy.basic;
...
/***测试用例*/
@Slf4j
public class ProxyTester
{/***不用代理,进行简单的远程调用*/@Testpublic void simpleRPCTest(){/***简单的RPC调用类*/MockDemoClient realObject = new RealRpcDemoClientImpl();/***调用demo-provider的REST接口api/demo/hello/v1*/RestOut<JSONObject> result1 = realObject.hello();log.info("result1={}", result1.toString());/***调用demo-provider的REST接口api/demo/echo/{0}/v1*/RestOut<JSONObject> result2 = realObject.echo("回显内容");log.info("result2={}", result2.toString());}
}

运行测试用例之前,需要提前启动demo-provider微服务实例,然后将主机名称crazydemo.com通过hosts文件绑定到demo-provider实例所在机器的IP地址(这里为127.0.0.1),并且需要确保两个REST接口/api/demo/hello/v1、/api/demo/echo/{word}/v1可以正常访问。

运行测试用例,部分输出结果如下:

[main] INFO c.c.d.p.b.RealRpcDemoClientImpl - restUrl=http://crazydemo.com:7700/demo-provider/ api/demo/hello/v1
[main] INFO c.c.d.proxy.basic.ProxyTester - result1=RestOut{datas={"hello":"world"}, respCode=0, respMsg='操作成功}
[main] INFO c.c.d.p.b.RealRpcDemoClientImpl - restUrl=http://crazydemo.com:7700/demo-provider/ api/demo/echo/回显内容/v1
[main] INFO c.c.d.proxy.basic.ProxyTester - result2=RestOut{datas={"echo":"回显内容"}, respCode=0, respMsg='操作成功}

以上的RPC客户端实现类很简单,但是实际开发中不可能为每一个远程调用Java接口都编写一个RPC客户端实现类。如何自动生成RPC客户端实现类呢?这就需要用到代理模式。接下来为大家介绍简单一点的代理模式实现类——静态代理模式的RPC客户端实现类。

从基础原理讲起:代理模式与RPC客户端实现类

首先来看一下代理模式的基本概念。代理模式的定义:为委托对象提供一种代理,以控制对委托对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个目标对象,而代理对象可以作为目标对象的委托,在客户端和目标对象之间起到中介的作用。

代理模式包含3个角色:抽象角色、委托角色和代理角色,如图3-3所示。

图3-3 代理模式角色之间的关系图

(1)抽象角色:通过接口或抽象类的方式声明委托角色所提供的业务方法。

(2)代理角色:实现抽象角色的接口,通过调用委托角色的业务逻辑方法来实现抽象方法,并且可以附加自己的操作。

(3)委托角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

代理模式分为静态代理和动态代理。

(1)静态代理:在代码编写阶段由工程师提供代理类的源码,再编译成代理类。所谓静态,就是在程序运行前就已经存在代理类的字节码文件,代理类和被委托类的关系在运行前就确定了。

(2)动态代理:在代码编写阶段不用关心具体的代理实现类,而是在运行阶段直接获取具体的代理对象,代理实现类由JDK负责生成。

静态代理模式的实现主要涉及3个组件:(1)抽象接口类(Abstract Subject):该类的主要职责是声明目标类与代理类的共同接口方法。该类既可以是一个抽象类,又可以是一个接口。

(2)真实目标类(Real Subject):该类也称为被委托类或被代理类,该类定义了代理所表示的真实对象,由其执行具体业务逻辑方法,而客户端通过代理类间接地调用真实目标类中定义的方法。

(3)代理类(Proxy Subject):该类也称为委托类或代理类,该类持有一个对真实目标类的引用,在其抽象接口方法的实现中需要调用真实目标类中相应的接口实现方法,以此起到代理的作用。

使用静态代理模式实现RPC远程接口调用大致涉及以下3个类:

(1)一个远程接口,比如前面介绍的模拟远程调用Java接口MockDemoClient。

(2)一个真实被委托类,比如前面介绍的RealRpcDemoClientImpl,负责完成真正的RPC调用。

(3)一个代理类,比如本小节介绍的DemoClientStaticProxy,通过调用真实目标类(委托类)负责完成RPC调用。

通过静态代理模式实现MockDemoClient接口的RPC调用实现类,类之间的关系如图3-4所示。

图3-4 静态代理模式的RPC调用UML类图

静态代理模式的RPC实现类DemoClientStaticProxy的代码如下:

package com.crazymaker.demo.proxy.basic;
//省略import
@AllArgsConstructor
@Slf4j
class DemoClientStaticProxy implements DemoClient
{/***被代理的真正实例*/private MockDemoClient realClient; @Overridepublic RestOut<JSONObject> hello(){log.info("hello方法被调用" );return realClient.hello();}@Overridepublic RestOut<JSONObject> echo(String word){log.info("echo方法被调用" );return realClient.echo(word);}
}

在静态代理类DemoClientStaticProxy的hello()和echo()两个方法中,调用真实委托类实例realClient的两个对应的委托方法,完成对远程REST接口的请求。

以上静态代理类DemoClientStaticProxy的使用代码(测试用例)大致如下:

package com.crazymaker.demo.proxy.basic;
//省略import
/***静态代理和动态代理,测试用例*/
@Slf4j
public class ProxyTester
{/***静态代理测试*/@Testpublic void staticProxyTest(){/***被代理的真实RPC调用类*/MockDemoClient realObject = new RealRpcDemoClientImpl();/***静态的代理类*/DemoClient proxy = new DemoClientStaticProxy(realObject);RestOut<JSONObject> result1 = proxy.hello();log.info("result1={}", result1.toString());RestOut<JSONObject> result2 = proxy.echo("回显内容");log.info("result2={}", result2.toString());}
}

运行测试用例前,需要提前启动demo-provider微服务实例,并且需要将主机名称crazydemo.com通过hosts文件绑定到demo-provider实例所在机器的IP地址(这里为127.0.0.1),并且需要确保两个REST接口/api/demo/hello/v1、/api/demo/echo/{word}/v1可以正常访问。

一切准备妥当,运行测试用例,输出如下结果:

[main] INFO c.c.d.p.b.DemoClientStaticProxy - hello方法被调用
[main] INFO c.c.d.p.b.RealRpcDemoClientImpl - restUrl= http://crazydemo.com:7700/demo-provider/ api/demo/hello/v1
[main] INFO c.c.d.proxy.basic.ProxyTester - result1=RestOut{datas={"hello":"world"}, respCode=0, respMsg='操作成功}
[main] INFO c.c.d.p.b.DemoClientStaticProxy - echo方法被调用
[main] INFO c.c.d.p.b.RealRpcDemoClientImpl - restUrl=http://crazydemo.com:7700/demo-provider/ api/demo/echo/回显内容/v1
[main] INFO c.c.d.proxy.basic.ProxyTester - result2=RestOut{datas={"echo":"回显内容"}, respCode=0, respMsg='操作成功}

静态代理的RPC实现类看上去是一堆冗余代码,发挥不了什么作用。为什么在这里一定要先介绍静态代理模式的RPC实现类呢?原因有以下两点:

(1)上面的RPC实现类是出于演示目的而做了简化,对委托类并没有做任何扩展。而实际的远程调用代理类会对委托类进行很多扩展,比如远程调用时的负载均衡、熔断、重试等。

(2)上面的RPC实现类是动态代理实现类的学习铺垫。Feign的RPC客户端实现类是一个JDK动态代理类,是在运行过程中动态生成的。大家知道,动态代理的知识对于很多读者来说不是太好理解,所以先介绍一下代理模式和静态代理的基础知识,作为下一步的学习铺垫。

使用动态代理模式实现RPC客户端类

为什么需要动态代理呢?需要从静态代理的缺陷开始介绍。静态代理实现类在编译期就已经写好了,代码清晰可读,缺点也很明显:

(1)手工编写代理实现类会占用时间,如果需要实现代理的类很多,那么代理类一个一个地手工编码根本写不过来。

(2)如果更改了抽象接口,那么还得去维护这些代理类,维护上容易出纰漏。

动态代理与静态代理相反,不需要手工实现代理类,而是由JDK通过反射技术在执行阶段动态生成代理类,所以也叫动态代理。使用的时候可以直接获取动态代理的实例,获取动态代理实例大致需要如下3步:

(1)需要明确代理类和被委托类共同的抽象接口,JDK生成的动态代理类会实现该接口。

(2)构造一个调用处理器对象,该调用处理器要实现InvocationHandler接口,实现其唯一的抽象方法invoke(...)。而InvocationHandler接口由JDK定义,位于java.lang.reflect包中。

(3)通过java.lang.reflect.Proxy类的newProxyInstance(...)方法在运行阶段获取JDK生成的动态代理类的实例。注意,这一步获取的是对象而不是类。该方法需要三个参数,其中的第一个参数为类装载器,第二个参数为抽象接口的class对象,第三个参数为调用处理器对象。

举一个例子,创建抽象接口MockDemoClient的一个动态代理实例,大致的代码如下:

//参数1:类装载器
ClassLoader classLoader = ProxyTester.class.getClassLoader();
//参数2:代理类和被委托类共同的抽象接口
Class[] clazz = new Class[]{MockDemoClient.class};
//参数3:动态代理的调用处理器
InvocationHandler invocationHandler = new DemoClientInocationHandler (realObject);
/***使用以上3个参数创建JDK动态代理类*/
MockDemoClient proxy = (MockDemoClient)Proxy.newProxyInstance(classLoader, clazz, invocationHandler);

创建动态代理实例的核心是创建一个JDK调用处理器InvocationHandler的实现类。该实现类需要实现其唯一的抽象方法invoke(...),并且在该方法中调用被委托类的方法。一般情况下,调用处理器需要能够访问到被委托类,一般的做法是将被委托类实例作为其内部的成员。

例子中所获取的动态代理实例涉及3个类,具体如下:

(1)一个远程接口,使用前面介绍的模拟远程调用Java接口MockDemoClient。

(2)一个真实目标类,使用前面介绍的RealRpcDemoClientImpl类,该类负责完成真正的RPC调用,作为动态代理的被委托类。

(3)一个InvocationHandler的实现类,本小节将实现
DemoClientInocationHandler调用处理器类,该类通过调用内部成员被委托类的对应方法完成RPC调用。模拟远程接口MockDemoClient的RPC动态代理模式实现,类之间的关系如图3-5所示。

图3-5 动态代理模式实现RPC远程调用UML类图

通过动态代理模式实现模拟远程接口MockDemoClient的RPC调用,关键的类为调用处理器,调用处理器
DemoClientInocationHandler的代码如下:

package com.crazymaker.demo.proxy.basic;
//省略import
/***动态代理的调用处理器*/
@Slf4j
public class DemoClientInocationHandler implements InvocationHandler
{/***被代理的被委托类实例*/private MockDemoClient realClient;public DemoClientInocationHandler(MockDemoClient realClient){this.realClient = realClient;}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable{String name = method.getName();log.info("{} 方法被调用", method.getName());/***直接调用被委托类的方法:调用其hello方法*/if (name.equals("hello")){return realClient.hello();}/***通过Java反射调用被委托类的方法:调用其echo方法*/if (name.equals("echo")){return method.invoke(realClient, args);}/***通过Java反射调用被委托类的方法*/Object result = method.invoke(realClient, args);return result;}
}

调用处理器
DemoClientInocationHandler既实现了InvocationHandler接口,又拥有一个内部被委托类成员,负责完成实际的RPC请求。调用处理器有点儿像静态代理模式中的代理角色,但是在这里却不是,仅仅是JDK所生成的代理类的内部成员。

以上调用处理器
DemoClientInocationHandler的代码(测试用例)如下:

package com.crazymaker.demo.proxy.basic;
//省略import
@Slf4j
public class StaticProxyTester {/***动态代理测试*/@Testpublic void dynamicProxyTest() {DemoClient client = new DemoClientImpl();//参数1:类装载器ClassLoader classLoader = StaticProxyTester.class.getClassLoader();//参数2:被代理的实例类型Class[] clazz = new Class[]{DemoClient.class};//参数3:调用处理器InvocationHandler invocationHandler =new DemoClientInocationHandler(client);//获取动态代理实例DemoClient proxy = (DemoClient)Proxy.newProxyInstance(classLoader, clazz, invocationHandler);//执行RPC远程调用方法Result<JSONObject> result1 = proxy.hello();log.info("result1={}", result1.toString());Result<JSONObject> result2 = proxy.echo("回显内容");log.info("result2={}", result2.toString());}
}

运行测试用例前需要提前启动demo-provider微服务实例,并且需要确保其两个REST接口/api/demo/hello/v1、/api/demo/echo/{word}/v1可以正常访问。

一切准备妥当,运行测试用例,输出的结果如下:

18:36:32.499 [main] INFO c.c.d.p.b.DemoClientInocationHandler - hello方法被调用
18:36:32.621 [main] INFO c.c.d.p.b.StaticProxyTester - result1=Result{data={"hello":"world"}, status=200, msg='操作成功, reques
18:36:32.622 [main] INFO c.c.d.p.b.DemoClientInocationHandler - echo方法被调用
18:36:32.622 [main] INFO c.c.d.p.b.StaticProxyTester - result2=Result{data={"echo":"回显内容"}, status=200, msg='操作成功, reques

JDK动态代理机制的原理

动态代理的实质是通过java.lang.reflect.Proxy的newProxyInstance(...)方法生成一个动态代理类的实例,该方法比较重要,下面对该方法进行详细介绍,其定义如下:

public static Object newProxyInstance(ClassLoader loader,//类加载器Class<?>[] interfaces,//动态代理类需要实现的接口InvocationHandler h) //调用处理器throws IllegalArgumentException
{
...
}

此方法的三个参数介绍如下:

第一个参数为ClassLoader类加载器类型,此处的类加载器和被委托类的类加载器相同即可。

第二个参数为Class[]类型,代表动态代理类将会实现的抽象接口,此接口是被委托类所实现的接口。

第三个参数为InvocationHandler类型,它的调用处理器实例将作为JDK生成的动态代理对象的内部成员,在对动态代理对象进行方法调用时,该处理器的invoke(...)方法会被执行。

InvocationHandler处理器的invoke(...)方法如何实现由大家自己决定。对被委托类(真实目标类)的扩展或者定制逻辑一般都会定义在此InvocationHandler处理器的invoke(...)方法中。

JVM在调用Proxy.newProxyInstance(...)方法时会自动为动态代理对象生成一个内部的代理类,那么是否能看到该动态代理类的class字节码呢?

答案是肯定的,可以通过如下方式获取其字节码,并且保存到文件中:

 /***获取动态代理类的class字节码*/byte[] classFile = ProxyGenerator.generateProxyClass("Proxy0",RealRpcDemoClientImpl.class.getInterfaces());/***在当前的工程目录下保存文件*/FileOutputStream fos =new FileOutputStream(new File("Proxy0.class"));fos.write(classFile);fos.flush();fos.close();

运行3.1.4节的dynamicProxyTest()测试用例,在demo-provider模块的根路径可以发现被新创建的Proxy0.class字节码文件。如果IDE有反编译的能力,就可以在IDE中打开该文件,然后可以看到其反编译的源码:

import com.crazymaker.demo.proxy.MockDemoClient;
import com.crazymaker.springcloud.common.result.RestOut;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.lang.reflect.UndeclaredThrowableException;
public final class Proxy0 extends Proxy implements MockDemoClient {private static Method m1;private static Method m4;private static Method m3;private static Method m2;private static Method m0;public Proxy0(InvocationHandler var1) throws {super(var1);}...public final RestOut echo(String var1) throws {try {return (RestOut)super.h.invoke(this, m4, new Object[]{var1});} catch (RuntimeException | Error var3) {throw var3;} catch (Throwable var4) {throw new UndeclaredThrowableException(var4);}}public final RestOut hello() throws {try {return (RestOut)super.h.invoke(this, m3, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}public final String toString() throws {try {return (String)super.h.invoke(this, m2, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}...static {try {m1 = Class.forName("java.lang.Object").getMethod("equals", Class.forName("java.lang.Object"));m4 = Class.forName("com.crazymaker.demo.proxy.MockDemoClient")
.getMethod("echo", Class.forName("java.lang.String"));m3 = Class.forName("com.crazymaker.demo.proxy.MockDemoClient")
.getMethod("hello");m2 = Class.forName("java.lang.Object").getMethod("toString");m0 = Class.forName("java.lang.Object").getMethod("hashCode");} catch (NoSuchMethodException var2) {throw new NoSuchMethodError(var2.getMessage());} catch (ClassNotFoundException var3) {throw new NoClassDefFoundError(var3.getMessage());}}
}

通过代码可以看出,这个动态代理类其实只做了两件简单的事情:

(1)该动态代理类实现了接口类的抽象方法。动态代理类Proxy0实现了MockDemoClient接口的echo(String)、hello()两个方法。此外,Proxy0还继承了java.lang.Object的equals()、hashCode()、toString()方法。

(2)该动态代理类将对自己的方法调用委托给了InvocationHandler调用处理器内部成员。以上代理类Proxy0的每一个方法实现的代码其实非常简单,并且逻辑大致一样:将方法自己的Method反射对象和调用参数进行二次委托,委托给内部成员InvocationHandler调用处理器的invoke(...)方法。至于该内部InvocationHandler调用处理器的实例,则由大家自己编写,在通过java.lang.reflect.Proxy的newProxyInstance(...)创建动态代理对象时作为第三个参数传入。

至此,JDK动态代理机制的核心原理和动态代理类的神秘面纱已经彻底地揭开了。

Feign的RPC客户端正是通过JDK的动态代理机制来实现的,Feign对RPC调用的各种增强处理主要是通过调用处理器InvocationHandler来实现的。

本文给大家讲解的内容是SpringCloudRPC远程调用核心原理:代理模式与RPC客户端实现类

  1. 下篇文章给大家讲解的是SpringCloudRPC远程调用核心原理:模拟Feign RPC动态代理的实现;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 美盘休假现货金行情稳定 市场关注下周美联储会议加息信号

    1月17日&#xff0c;美市于马丁路德金纪念日休假一天&#xff0c;在全球经济放缓忧虑与美国国债收益率上升两大因素来回拉锯情况下&#xff0c;日内现货黄金行情稳定、于10美元区间内交投&#xff0c;收盘报1819.42美元/盎司。 针业金融业人士的最新调查显示&#xff0c;由于通…...

    2024/4/27 1:03:04
  2. Python学习笔记_列表

    列表相当于其他语言中的数组 列表中可以存储多个不同的数据类型 列表的创建方式&#xff1a; ①使用中括号[] ②调用内置函数list() lst [hello, world, 98] lst2 list([hello, world, 98]) print(lst) print(lst2) print(lst[1]) # world print(lst[-2]) # world列表的特…...

    2024/4/20 15:54:49
  3. 初识回调函数

    序言 今天就一个知识点&#xff0c;回调函数&#xff0c;我们以例子讲解 回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;我们就说这…...

    2024/4/23 8:32:31
  4. Linux提权-脏牛内核漏洞

    靶机环境下载地址https://www.vulnhub.com/entry/lampiao-1,249/ 环境&#xff1a;攻击机&#xff1a;kali虚拟机192.168.76.132 靶机&#xff1a;ip未知 过程&#xff1a;探针目标-CMS漏洞利用-脚本探针提权漏洞-利用内核提权 靶机密码也没有&#xff0c;ip也没有 探针目标 …...

    2024/4/14 13:42:56
  5. Installed Build Tools revision 32.0.0 is corrupted. Remove and install again using the SDK Manager.

    进入SDK目录/build-tools/32.0.0&#xff0c;讲d8改为dx&#xff0c;进入/build-tools/32.0.0/lib&#xff0c;将d8.jar改为dx.jar&#xff0c;重启&#xff0c;解决...

    2024/4/14 13:42:36
  6. 质量基础设施一站式服务平台建设,NQI线上系统开发

    质量基础设施一站式服务平台建设&#xff0c;NQI线上系统开发 质量基础设施一站式服务平台&#xff0c;整合分散的计量测试、标准研究、认证服务、检验检测等技术资源&#xff0c;构建起全要素、集约化质量服务平台&#xff0c;形成了全链条“一站式”服务新机制&#xff0c;有…...

    2024/4/18 2:18:55
  7. Android Studio 常用快捷键

    快捷键又称为“热键”&#xff0c;多个按键的组合可以实现某些快速操作&#xff0c;例如Window中最常用的CtrlC和CtrlV&#xff0c;熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生。Android Studio也默认提供了众多快捷键方式供开发者调用&#xff0c;推荐使用An…...

    2024/4/17 22:07:48
  8. 2022年骨传导耳机哪个好、骨传导耳机品牌推荐

    耳机是生活中离不开的一个“伴侣”了&#xff0c;很多伙伴运动、看书、洗澡、跳舞的时候都会有戴耳机听音乐的习惯。现在2021年了&#xff0c;随着各位朋友们的生活体验提高&#xff0c;为了我们的耳朵保护&#xff0c;别再用入耳式耳机了&#xff0c;戴久了不舒服是事小&#…...

    2024/4/16 23:24:36
  9. Docker commit 镜像

    测试Commit镜像&#xff0c;我需要先拉取基础镜像&#xff0c;运行容器&#xff0c;在容器中添加jdk和tomcat。再将这个容器commit为一个新的镜像&#xff0c;再运行新的镜像。 1.拉取一个基础的centos镜像 docker pull centos:72.创建一个容器 docker run -itd --name song…...

    2024/4/15 23:52:06
  10. 洛谷P1056排座椅 贪心思想

    洛谷 P1056 排座椅 基本思路&#xff1a; 用 row[ i ] 表示第 i 行和第 i1 行之间作为通道的话&#xff0c;可以减少多少对交头接耳的学生。 用 col[ i ] 表示第 i 列和第 i1 列之间作为通道的话&#xff0c;可以减少多少对交头接耳的学生。 在输入数据的时候即可确定row[]和c…...

    2024/4/14 13:42:46
  11. leetcode第406题根据身高重建队列

    leetcode第406题根据身高重建队列 贪心&#xff1a; 当有两个维度需要进行处理是&#xff0c;先想如何确立一个维度&#xff0c;然后按照另外一个维度重新排列&#xff0c;需要注意的一点是两个维度一起考虑一定会顾此失彼第一次排序按照身高&#xff0c;一定是按照从小到大排…...

    2024/4/18 15:10:24
  12. 使用Fiddler进行移动端抓包和模拟弱网络测试

    背景 需要再不同网络环境下查看允许情况&#xff0c;根据测试结果优化方案 一、Fiddler连接移动端 1.Fiddler设置 设置Fiddler如下图所示&#xff1a; 设置Fiddler如下图所示&#xff1a; 勾选Decrypt HTTPS traffic,下拉框选择from remote clients only &#xff0c;只获…...

    2024/4/14 13:42:36
  13. [2019watevrCTF]Supercalc wireup

    [2019watevrCTF]Supercalc wireup calc&#xff01;这个界面看着就像ssti 这里直接输入报语法错误&#xff0c;ast是python的模块&#xff0c;set应该是指我们输入的{} 查看header发现有session&#xff0c;应该是flask session伪造 利用脚本&#xff08;https://github.co…...

    2024/4/5 5:00:43
  14. python总结作业

    python内置容器&#xff1a; 容器篇&#xff1a; 变量这种存储单个数据的容器&#xff0c;也会提供存储多个数据容器 线性容器&#xff1a; 数组&#xff08;Array&#xff09;&#xff1a;连续内存 链表&#xff08;List&#xff09;&#xff1a;python list的容器&#x…...

    2024/4/14 13:43:06
  15. 《Linux C++通信架构实战》第2章

    《Linux C通信架构实战》第2章安装前提nginx源码目录编译安装启动和使用Nginx整体结构、进程模型Nginx整体结构Nginx进程模型细说Nginx&#xff0c;轻量级Web服务器&#xff0c;并发处理百万级别的TCP连接&#xff0c;运行稳定&#xff0c;热部署&#xff08;运行时升级&#x…...

    2024/4/14 13:43:47
  16. Android Framework 之换肤框架

    通过学习研究&#xff0c;Android换肤原理和思路&#xff0c;我们可以深入了解学习Android 对于控件加载流程 Android动态换肤框架实现_派派的生活-CSDN博客 插件式换肤框架搭建 - setContentView源码阅读 - 简书https://www.jianshu.com/p/531d1168b3ee...

    2024/4/14 13:43:22
  17. StreamX1.2.1+flink1.12.7 平台部署

    StreamX1.2.1flink1.12.7 平台部署 1. 必须环境准备 StreamX最新版本1.2.1支持用户上传jar包的方式运行代码&#xff0c;目前支持flink版本为1.12以上前后端混合编译得到StreamX最新安装包 streamx-console-service-1.2.1-bin.tar.gzhadoop环境准备flink安装包准备&#xff0…...

    2024/4/14 13:43:47
  18. 云科技时代力作:《读懂新基建,数字技术带来全民机遇》上市

    历时4年&#xff0c;云科技时代的重磅新作《读懂新基建&#xff1a;数字技术带来全民机遇》正式上市了&#xff08;请移步微信公众号“云科技时代”&#xff0c;领取限时5折码&#xff09;&#xff01; 这一切&#xff0c;都源于2013年的夏天&#xff0c;当时的Windows Azure&…...

    2024/4/16 9:35:57
  19. 【编程题】OR109 数组移动跳跃

    描述 给定一个非空的整数数组&#xff0c;从数组第一个元素(下标为0的元素)开始遍历进行移动&#xff0c;下一次向后或向前移动 该元素的值 的位数&#xff08;值为正数向后移动&#xff0c;值为负数向前移动&#xff0c;值为零不移动&#xff09;&#xff0c;依次类推进行移动…...

    2024/4/14 13:43:37
  20. 北航《深度学习事件抽取》文献综述和当前趋势

    基于模式的事件提取是及时理解事件本质内容的关键技术。随着深度学习技术的快速发展&#xff0c;基于深度学习的事件提取技术成为研究热点。文献中提出了大量的方法、数据集和评价指标&#xff0c;因此需要进行全面和更新的调研。本文通过回顾最新的方法填补了这一空白&#xf…...

    2024/4/14 13:43:52

最新文章

  1. 如何有效的将丢失的mfc140u.dll修复,几种mfc140u.dll丢失的解决方法

    当你在运行某个程序或应用程序时&#xff0c;突然遭遇到mfc140u.dll丢失的错误提示&#xff0c;这可能会对你的电脑运行产生一些不利影响。但是&#xff0c;不要担心&#xff0c;以下是一套详细的mfc140u.dll丢失的解决方法。 mfc140u.dll缺失问题的详细解决步骤 步骤1&#x…...

    2024/4/27 12:05:40
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 解析大语言模型训练三阶段

    大语言模型的训练过程一般包括3个阶段&#xff1a;预训练&#xff08;Pre-training&#xff09;、SFT&#xff08;有监督的微调&#xff0c;Supervised-Finetuning&#xff09;以及RLHF&#xff08;基于人类反馈的强化学习&#xff0c;Reinforcement Learning from Human Feedb…...

    2024/4/23 6:25:26
  4. FreeRTOS学习 -- 再识

    工作中一直使用FreeRTOS进行着开发&#xff0c;但是没有进行过系统的总结过。现在将快速使用几天时间将FreeRTOS相关知识点加以总结。 官网&#xff1a; https://www.freertos.org/zh-cn-cmn-s/ 参看资料&#xff1a; 正点原子 STM32F1 FreeRTOS开发手册_V1.2.pdf The FreeRTOS…...

    2024/4/23 6:24:52
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/26 20:12:18
  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/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

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

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

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

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

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

    2024/4/26 16:00:35
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

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

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

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

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

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

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

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

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

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

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

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

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

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/25 18:39:00
  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