javaSec-rmi详解

对于rmi这从很久前就接触到了利用,原理也是只简单的了解了一些,一直没有好好的梳理过,最近正好看到了好多相关的资料,顺便写下。
前置知识:RPC
理解RPC可以从他的名字开始,RPC的全称是Remote Method Call,顾名思义就是远程方法调用,RPC呢他不是一个框架也不是一个协议,是一个概念性的东西,只是远程通信的一种方式,区别其他远程通信的方式,他是其中的一种,这种概念性的东西,可能从定义说起来很烦,所以我尽量从代码的方式来理解。

从单机到分布式->分布式通信 :就是我原先只有一台主机,当时并不能实现我的需求,这时候我又加了一台,还不够,我用了个局域网的,还不够,这时候直接通过网络来建立各个主机之间的需求,来通过传递0和1这些二进制来建立联系,来通过tcpip来通信。

rpc的迭代过程

demo1.0
User实体类:

import java.io.Serializable;public class User implements Serializable{private static final long serialVersionUID = 1L;private  Integer id;private String name;public User(Integer id,String name) {this.id = id;this.name = name;}public Integer getId() {return id;}public String getName() {return name;}public void setId(Integer id) {this.id = id;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}

写的一个传参数的接口:

public interface IUserService {public User findUserById(Integer id);
}

接口实现:

public class UserServiceImpl implements IUserService {@Overridepublic User findUserById(Integer id) {return new User(id,"wa1ki0g");}
}

server端:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {private static boolean running = true;public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(7777);while (running) {Socket s = ss.accept();process(s);s.close();}ss.close();}public static void process(Socket s) throws  Exception {InputStream in = s.getInputStream();OutputStream out = s.getOutputStream();DataInputStream dis = new DataInputStream(in);DataOutputStream dos = new DataOutputStream(out);System.out.println(1);int id = dis.readInt();IUserService service = new UserServiceImpl();User user = service.findUserById(id);dos.writeInt(user.getId());dos.writeUTF(user.getName());dos.flush();System.out.println(2);}
}

client端:

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws Exception{Socket s = new Socket("127.0.0.1",7777);ByteArrayOutputStream baos = new ByteArrayOutputStream();DataOutputStream dos = new DataOutputStream(baos);dos.writeInt(123);s.getOutputStream().write(baos.toByteArray());s.getOutputStream().flush();DataInputStream dis = new DataInputStream(s.getInputStream());int id = dis.readInt();String name = dis.readUTF();User user = new User(id,name);System.out.println(user);dos.close();s.close();}
}

上述的client过程就是通过传递过去一个ID,server端传回一个对象属性,client端在根据属性来new这个对象,最终得到想要的对象,这种方式是极不方便实用的,假如我们的user类多了一个属性,那么代码要改变半天,并且在编辑client时的代码时候是极不方便的。注:传输的时候都是以底层二进制来传输的,在代码里也是用了ByteArrayOutputStream与DataOutputStream两个函数来进行二进制的转换与传递,运行结果:
在这里插入图片描述
在这里插入图片描述
demo2.0
由于demo1里的client端在进行传输使用的时候,需要先建立socket,又有io流之间的转换,这时候是极不方便的,我们可以把建立socket等的过程写成一个代理的方式,来供用户使用,这里只更改下client代码及新建一个Stub代理类,把一些重复的代码写到Stub类里,其他如上:

client端:

public class Client {public static void main(String[] args) throws Exception{Stub stub = new Stub();System.out.println(stub.findUserById(123));}
}

Stub类:

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;public class Stub {public User findUserById(Integer id) throws Exception {Socket s = new Socket("127.0.0.1",7777);ByteArrayOutputStream baos = new ByteArrayOutputStream();DataOutputStream dos = new DataOutputStream(baos);dos.writeInt(123);s.getOutputStream().write(baos.toByteArray());s.getOutputStream().flush();DataInputStream dis = new DataInputStream(s.getInputStream());int receivedId = dis.readInt();String name = dis.readUTF();User user = new User(receivedId,name);dos.close();s.close();return user;}
}

client运行,结果一样:
在这里插入图片描述
demo3.0
在使用我们的demo2.0的时候会发现,client的调用是极不合理的,Stub里只有findById这个方法,如果我们新加了findByName,findByAge这些新方法呢,我们又得对我们的代码进行改动,这里我们就要使用动态代理的方法,因此下面代码实现的就是可以支持在一个接口里面的随意访法的调用:
stub

import java.io.DataInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.Socket;public class Stub {public static IUserService getStub() {InvocationHandler h = new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Socket s = new Socket("127.0.0.1",7777);ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());String methodName = method.getName();Class[] parametersTypes = method.getParameterTypes();oos.writeUTF(methodName);oos.writeObject(parametersTypes);oos.writeObject(args);oos.flush();DataInputStream dis = new DataInputStream(s.getInputStream());int receivedId = dis.readInt();String name = dis.readUTF();User user = new User(receivedId,name);oos.close();s.close();return user;}};Object o = Proxy.newProxyInstance(IUserService.class.getClassLoader(),new Class[]{IUserService.class},h);System.out.println(12345);return (IUserService)o;}
}

client:

public class Client {public static void main(String[] args) throws Exception{IUserService service = Stub.getStub();System.out.println(service.findUserById(123));}
}

server:

import java.io.*;
import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.net.Socket;public class Server {private static boolean running = true;public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(7777);while (running) {Socket s = ss.accept();process(s);s.close();}ss.close();}public static void process(Socket s) throws  Exception {InputStream in = s.getInputStream();OutputStream out = s.getOutputStream();ObjectInputStream oos = new ObjectInputStream(in);DataOutputStream dos = new DataOutputStream(out);String methodName = oos.readUTF();Class[] parameterTypes = (Class[]) oos.readObject();Object[] args = (Object[]) oos.readObject();IUserService service = new UserServiceImpl();Method method = service.getClass().getMethod(methodName,parameterTypes);User user = (User) method.invoke(service,args);dos.writeInt(user.getId());dos.writeUTF(user.getName());dos.flush();;}
}

其他的同上
demo4.0
虽然我们已经优化了很多,但是还不够,我们接下来要实现对随意接口中的随意方法的调用:
server:

import java.io.*;
import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.net.Socket;public class Server {private static boolean running = true;public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(7777);while (running) {Socket s = ss.accept();process(s);s.close();}ss.close();}public static void process(Socket s) throws  Exception {InputStream in = s.getInputStream();OutputStream out = s.getOutputStream();ObjectInputStream ois = new ObjectInputStream(in);String clazzName = ois.readUTF();String methodName = ois.readUTF();Class[] parameterTypes = (Class[]) ois.readObject();Object[] args = (Object[]) ois.readObject();Class clazz = null;//从服务注册表找到具体的实现类clazz = UserServiceImpl.class;Method method = clazz.getMethod(methodName,parameterTypes);Object o = (Object)method.invoke(clazz.newInstance(),args);ObjectOutputStream oos = new ObjectOutputStream(out);oos.writeObject(o);oos.flush();}
}

client:

public class Client {public static void main(String[] args) throws Exception{IUserService service = (IUserService)Stub.getStub(IUserService.class);System.out.println(service.findUserById(123));}
}

stub:

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.Socket;public class Stub {public static Object getStub(Class clazz) {InvocationHandler h = new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Socket s = new Socket("127.0.0.1",7777);ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());String className = clazz.getName();String methodName = method.getName();Class[] parametersTypes = method.getParameterTypes();oos.writeUTF(className);oos.writeUTF(methodName);oos.writeObject(parametersTypes);oos.writeObject(args);oos.flush();ObjectInputStream ois = new ObjectInputStream(s.getInputStream());Object o = ois.readObject();oos.close();s.close();return o;}};Object o = Proxy.newProxyInstance(IUserService.class.getClassLoader(),new Class[]{IUserService.class},h);System.out.println(12345);return o;}
}

这样我们就简单的对rpc进行了一个小小的实现,这里面还有大部分可以改进的地方,在我们的代码中我们进行传递参数的方式是使用java中自带的序列化,这种可以说是最土的方法,他只支持java语言并且效率还很低,序列化完了以后的长度还是特别的长,所以仅仅在序列化传输方面就有很多很多可以代替的:
在这里插入图片描述
再或者我们可以对协议方面进行更改,在上述代码中我们传输数据的时候用到了最基本的socket编程,也就是通过tcp/ip协议来进行对我们的数据进行传输,当然我们还可以选择其他协议如http,以及rmi等等其他更高级的:
在这里插入图片描述
根据上面总结描述的,大家应该可以简单的理解了rmi是个什么东西

RMI 应用概述

RMI 应用程序通常包含两个独立的程序,一个服务器和一个客户端。典型的服务器程序创建一些远程对象,使对这些对象的引用可访问,并等待客户端调用这些对象上的方法。典型的客户端程序获取对服务器上一个或多个远程对象的远程引用,然后调用它们上的方法。RMI 提供了服务器和客户端通信和来回传递信息的机制。这样的应用程序有时被称为分布式对象应用程序。
总结来说,RMI(Remote Method Invocation),是一种跨JVM实现方法调用的技术。

在RMI的通信方式中,由以下三个大部分组成:

  1. Client
  2. Registry
  3. Server

其中Client是客户端,Server是服务端,而Registry是注册中心。

下图描述了一个 RMI 分布式应用程序,它使用 RMI 注册表来获取对远程对象的引用。服务器调用注册表以将名称与远程对象关联(或绑定)。客户端通过远程对象的名称在服务器的注册表中查找远程对象,然后调用它的方法。该图还显示 RMI 系统使用现有的 Web 服务器在需要时为对象加载类定义,从服务器到客户端以及从客户端到服务器。
在这里插入图片描述

他的概念的话其实还是比较好理解,就是一个远程的调用,就是一台机器想要执行另外一台机器上的java代码,我们看上面的图,我们的client是怎么来去调用这个服务端的呢,实际上就是在服务端通过绑定这个远程对象,但是这里有一个小问题,就是客户端怎么知道你这个服务端这个对象开到了哪里,因为socket通信基于端口的么,不可能每个对象都对应固定的端口吧,所以为了解决这个问题,rmi引入了注册中心,就是说你服务端绑定的这个远程对象不是开了个端口么,然后它绑定以后去告诉注册中心,这样我们的客户端通过查询注册中心,就知道了地址,在返回去找。
一句话来说就是:
客户端会Registry取得服务端注册的服务,从而调用服务端的远程方法。
实际上rmi还提供了一个大胆的想法,就是说当客户端去调用的时候,服务端没有我想调的这个对象,就是说允许服务端去远程的web server去加载一个类下来,可以类比UrlClassLoader,这是很危险的,这种机制在jdk8中以后就直接去掉了。

一个简单的demo:
这里为了看着方便写了两个项目,分别是client端和server端,他们都要定义一个相同的接口,这个接口都要继承这个remote,并且服务端有一个实现类,来实现接口里定义的方法。在接口中写的是一个sayHello方法,就是将小写转换成大写的。

client:

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;public class RMIClient {public static void main(String[] args) throws RemoteException, NotBoundException {Registry registry = LocateRegistry.getRegistry("127.0.0.1",9999);IRemoteObj remoteObj = (IRemoteObj) registry.lookup("remoteObj");remoteObj.sayHello("walking");}
}
import java.rmi.Remote;
import java.rmi.RemoteException;public interface IRemoteObj extends Remote {// sayHello是客户端要调用的方法,要抛RemoteException异常public String sayHello(String keywords) throws RemoteException;
}

server:

import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;public class RMIServer {public static void main(String[] args) throws RemoteException, AlreadyBoundException {IRemoteObj remoteObj= new IRemoteObjImpl();//这一步其实已经可以进行通信了,就是没有地址而已Registry r= LocateRegistry.createRegistry(9999);//把地址添加到注册中心r.bind("remoteObj",remoteObj);//绑定到注册中心}
}
import java.rmi.Remote;
import java.rmi.RemoteException;public interface IRemoteObj extends Remote {// sayHello是客户端要调用的方法,要抛RemoteException异常public String sayHello(String keywords) throws RemoteException;
}
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;public class IRemoteObjImpl extends UnicastRemoteObject implements IRemoteObj {public IRemoteObjImpl() throws RemoteException {}@Overridepublic String sayHello(String keywords) {String upKeywords = keywords.toUpperCase();System.out.println(upKeywords);return upKeywords;}
}

运行结果:
server端开始监听,client端运行:
在这里插入图片描述

server端成功执行:
在这里插入图片描述
rmi的流程看完了,那么我们说下这之间有什么安全问题,首先就是低版本中我们说的那个类加载问题,其次我们考虑server,client通信的问题,这实际是通过java的序列化与反序列化来实现的。

rmi调试

我们先来看从先知找的一个图:
在这里插入图片描述
可以看到在不算创建方面,在通信方面一共有六个,客户端->服务端。服务端->客户端,服务端->注册中心,注册中心->服务端,客户端->注册中心,
注册中心->客户端,我们接下来先分析服务创建的几个过程(远程对象创建,注册中心创建及绑定)其次再分析他们的通信

server端创建远程对象的流程:

我们先来看下server端创建远程对象的流程:
在这里插入图片描述
跟进去,首先进到了远程对象的构造函数,我们有了这个对象之后呢,其实最后呢目的就是要把我们的这个远程对象发布到网络上,我们要调试的也是这个过程:
在这里插入图片描述
到他父类的构造函数里:
在这里插入图片描述
我们port传的是0,也就是默认值,那么他这部分他代表着他会将你的远程对象发布到随机的端口上,这里说的是远程对象的端口,并不是注册中心的那个默认端口,现在调试的是远程对象的创建流程,不要弄混了:
在这里插入图片描述
在一些静态赋值后会调用上图的exportObject函数,我们跟进去看下:
在这里插入图片描述
exportObject函数,是我们这个过程核心的一个函数,我们的实现类是一定要继承这个函数的,当然不继承也可以,那么必须在我们实现类的构造函数里要手动调用下这个静态函数,拿我们上述的demo举例:
在这里插入图片描述
ok,说完题外话接着往下看,看下exportObject函数中的两个参数,第一个obj就是我们的实现类对象,第二个参数实际上就可以猜到他是处理网络请求用的,仅仅传了一个端口进去,ip是自动获取的,我们跟下看下他真正处理网络请求的部分:
在这里插入图片描述
我们先记住 new的LiveRef这个类,这也是一个关键的点,我们跟到 LiveRef里面去看看:
在这里插入图片描述
objid,很明显就是与id相关的,暂时先不管了,我们看下this也就是他这个构造函数,跟进去:
在这里插入图片描述
可以看到第一个参数就是个objid,第二个参数里的函数应该是个处理网络请求的一个函数,看下这个函数,可以看见他的返回值是TCPEndpoint,一定是处理网络的一个模块:
在这里插入图片描述
看下TCPEndpoint这个类:
在这里插入图片描述
可以大致的猜到这应该是一个封装处理网络的一个模块,接着我们回来我们在进到LiveRef的this构造函数:
在这里插入图片描述
可以看到这有一个TcpTransport的这样一个东西,他才是真正处理网络了一个东西,可以说他是又封装的一层,一路上都是封装过来了,到了这里才发现真正有意义的东西,所以我们先去记住这个LiveRef,我们接着往下走,调用了他父类的构造函数:
在这里插入图片描述在这里插入图片描述

就是个简单的赋值操作,将我们之前创造出的LiveRef赋值给UnicastRef的,这里的UnicastRef与UnicastServerRef其实就是一个对应着客户端,一个对应着服务端,这里我们要记住,从始至终我们只创建了一个LiveRet,剩下的一些操作只是赋值并不会创造新的,这样就不会很乱,接着往下走到这,我们出来了:
在这里插入图片描述
再进到exportObject里面,可以看到参数第二个参数是我们刚刚创建的那个UnicastServerRef,看一下他的参数可以发现,他包含了我们的LiveRef:
在这里插入图片描述
上图的判断是恒过的,然后又是一个赋值,主要就是LiveRef的赋值,下一步接着导出,我们跟进去:
在这里插入图片描述
可以发现,是进行了一个创建代理的操作,这个创建的var5就是上图中我们的客户端操作的那个stub代理,也就是会进行网络请求的那个东西,可能会想这个客户端的东西怎么会在服务端创建呢?因为他的流程是先在服务端创建好了在把它放到注册中心上去,然后客户端去注册中心上拿,然后在通过这个拿到的stub进行操作服务端的代理,服务端的代理就是Remote Skeleton,最后再通过服务端的代理来操作这个远程对象。

看一下他是怎么创建的呢,跟进去createProxy看一下:
在这里插入图片描述
看一下他的几个参数,第一个参数就是他的远程对象的这个类,就是我们的那个实现类,第二个参数就是封装起来了一个LiveRef,核心主要的就是LiveRef,接着往下走,走到判断这:
在这里插入图片描述
我们看下这个exists函数:
在这里插入图片描述

我们这里肯定是不会返回true的,这里应该是判断调用的是不是系统内置的几个,像jdk自带的那些,比如下图圈红框框这样的:
在这里插入图片描述
OK,这个if判断是进不去的,那我们接着往下走:
在这里插入图片描述
可以发现,接下来的步骤是一个创建动态代理的一个标准的流程,看他的hander参数就是var6可以发现,他的handler参数还是一个封装的一个LiveRef:
在这里插入图片描述
接着往下走,可以发现他的动态代理创建好了已经,然后下面有一个if这个if判断是不是系统自带的,就是和我们前面的那个jdk里带着的几个是对应的,这里条件是不满足的:
在这里插入图片描述
我们接着往下走,进到target那:
在这里插入图片描述
这个target就是起到了一个封装的作用,就是目前我们不是创建了一大堆的东西么,这个new target就是创建了一个总封装,把目前有用的都放到这个new出来的对象里面,可以进去看下:
在这里插入图片描述
我们往下走赋值完后看下:
在这里插入图片描述
我们看到上图中的客户端和服务端两个分别对应的LiveRef是相同的,这是因为我们客户端服务端要通信,所以用的是同一个东西,同一个LiveRef,我们走完这个Target函数,接着往下走:
在这里插入图片描述
我们再跟进这个exportObject发布函数,一直跟到这个核心代码这里:
在这里插入图片描述
发现调用了listen函数,listen函数凭常识应该可以猜到,是处理网络相关的,比如监听端口,我们在跟进去看看:
在这里插入图片描述
我们走到调用newServerSocket()函数处,跟进去看下再,看这:
在这里插入图片描述
那里就是当我们传的port参数是默认的0时,我们就会随机找一个端口进行监听,我们步出这个函数,看属性可以发现此时服务端口已被创建:
在这里插入图片描述
我们接着往下走,下一步创建了一个新的线程:
在这里插入图片描述
这个线程呢是用来处理当我们监听的端口被连接时应该做什么,处理逻辑在AcceptLoop函数里,就是进行一些网络的操作,这里就应该明白网络请求的线程,和真正的代码逻辑的线程是都是独立的,到目前为止我们的服务端就应该把远程对象发布出去了已经,发布在了一个随机的端口上面:
在这里插入图片描述
这个时候呢客户端是默认不知道发布到了哪里的,之后呢服务端还要做什么呢,他要记录一下,我们走出listen函数,再接着往下走:
在这里插入图片描述一直走到exportObject函数,再跟进去,我们主要看下这putTarget()函数,跟进去,主要是这两行:
在这里插入图片描述
看下objTable和impTable:
在这里插入图片描述
在这里插入图片描述
其实就是系统创建的两个静态表,为了方便找寻,用来储存我们最终创建完成的target信息,我们的这个流程差不多就完事了,接下来就是监听在这等待连接,省略了一些繁琐无用的过程,我们的整个创建过程就完成了:
在这里插入图片描述

注册中心的创建

打个断点跟进去:
在这里插入图片描述
调用一个创建注册中心的静态方法,然后会传入一个端口参数,并new一个对象,出来:
在这里插入图片描述
我们跟进去看下有用的部分:
在这里插入图片描述
上面这里应该就是个安全检查的部分,接着往下走下看看:
在这里插入图片描述new了一个LiveRef,看到这里应该有一点熟悉的感觉了,可以发现和我们上一部分的代码有点类似,其实这两部分从本质上来说是差不多的,都是在一个端口上开一个服务。所以好多步骤都是与上部分重复的。所以直接跟setup:
在这里插入图片描述
可以看到我们的var2属性与上部分还是雷同的,是一个新建的liveRef,包含网络的一些信息,包括我们创建UnicastServerRef对象都是差不多的代码,我们跟进去setup进去瞅瞅这里有不同的:
在这里插入图片描述
可以看到都比较像,他这也是调了UnicastServerRef对象的exportObject方法,但是值这里是不同的上一部分的三个参数分别是创建的远程对象,null,flase,但是呢与当前对比会发现,第三个参数不同,跟进去看看他是什么:
在这里插入图片描述
这个var3参数应该是判断是否jdk自带的,就是判断这个对象是永久的还是短期的,向我们之前自定义的那个远程对象是临时的一个对象,而这个是写在jdk里面的。我们仔细看看这段代码,会发现这完全就是之前创建代理的那段的代码,我们进到createProxy函数去看下:
在这里插入图片描述
可以看到有一个判断这里也是与上部分完全相同的,但是我们上部分讲了一个区别:是否是由jdk提供的,由于上部分我们使用的是我们自己创建的远程对象,所以并没有通过,但是在这里用的jdk自带的是可以通过的:
在这里插入图片描述
在这里插入图片描述
我们返回出去:
在这里插入图片描述
进到这个createStub方法:
在这里插入图片描述
这就是做了一个创建的操作,参数就放了ref,接着就走了出去,我们创建完看下这个stub参数:
在这里插入图片描述
我们的上部分的动态代理,当时里面也是放了一个ref,所以实际上基本就是一样的,接下来往下走:
在这里插入图片描述
这段if判断的是如果他是服务端定义好的就去调用他下面的那个方法,跟进去看下:
在这里插入图片描述
这里又调用了setSkeleton方法,这个Skeleton是什么呢,他指的是服务端的那个代理,就是说他会反向生成一个服务端代理,接着继续往下走:
在这里插入图片描述
上图和上部分一样也是进行生成封装,这大概就是注册中心的创建流程,所以只要知道大概的流程还是很容易去理解的,就是服务端生成stub放到注册中心,客户端去注册中心拿再利用这个stub进行通信,注册中心又会给服务端反向生成一个Skeleton,服务端再利用这个Skeleton进行应答通信。

绑定

打个断点:
在这里插入图片描述
跟进去瞅瞅:
在这里插入图片描述
看上图的bindings世界上就是可以理解为一个hash表,下面的那个if是判断被绑没绑定过,如果绑定过了,就会抛出个异常,如果没有就将他put进去,就是记录在这个表内。

未完待续。。。

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

相关文章

  1. DRD-NET:Detail-recovery Image Deraining viaContext Aggregation Networks(通过上下文聚合网络进行细节恢复图像去雾)

    简介: 图像去噪是计算机视觉和图形学中一个基本但尚未很好解决的问题。传统的图像去噪方法在中雨和暴雨去除中通常表现不佳,而基于学习的方法会导致图像退化,例如图像细节丢失、光晕伪影和/或颜色失真。与现有缺乏细节恢复机制的图像去噪方法…...

    2024/5/6 18:58:08
  2. docker consul

    文章目录一、定义1、consul的优势2、Consul的特性3、构建核心二、部署1、consul服务器配置2、容器服务自动注册到consul集群3、consul-server节点配置nginx4、配置模板信息5、启动consul-template6、测试一、定义 consul在docker中,一个能够自动发现并且更新监控信…...

    2024/4/8 19:13:16
  3. 第八次网页前端培训(JS)

    一,JS表单 1.获取表单(前两种常用) (1)document.getElementById("id属性值"); 通过from标签的id属性值获取表单对象 (2)document.表单的name属性值; 通过表单的name属…...

    2024/4/20 19:19:28
  4. JDBC练习 —— 查询数据封装成对象返回简单的登录demo

    目录 1、封装数据返回 1.1、编写实体类 Person 1.2、编写jdbc代码 2、简单登录逻辑 学习完jdbc,使用jdbc做的小练习 1、查询数据库中的person表 将查询的数据封装成Person对象返回 2、简单的登录逻辑判断 1、封装数据返回 定义一个方法,查询person表…...

    2024/4/13 5:33:33
  5. Unity UGUI 源码Graphic

    目录Graphic它是如何将我们的UI显示在屏幕上的Graphic的代码逻辑Graphic 它是如何将我们的UI显示在屏幕上的 贴一个简单的例子 using System.Collections; using System.Collections.Generic; using UnityEngine;public class MyGraphic : MonoBehaviour {public Texture te…...

    2024/4/13 5:33:43
  6. 日志统计(双指针)

    这道题是一个双指针题目,我们先对赞按照时间进行排序,我们设置i和j分别表示当前时间段小于k的热帖边界,每次对右边界所对应的id赞加1,若满足赞等于k,就置为true,当时间段大于k时就把当前左边界所表示的id赞…...

    2024/4/15 17:06:12
  7. Spring AOP实现原理

    入口:META/spring.handlers中配置了aspectj-autoproxy的解析类为AopNamespaceHandler,当在xml配置时,会找到这个handler,并执行init方法 一、前提,注册解析器 1.注册AspectJAutoProxyBeanDefinitionParser解析类 2.扫…...

    2024/5/3 17:39:50
  8. 中国影视IP制作行业投资前景及发展策略分析报告2022~2028年

    中国影视IP制作行业投资前景及发展策略分析报告2022~2028年 第1章:影视剧IP制作基本概念及分类 1.1 IP的基本概念 1.1.1 IP概念的提出 1.1.2 泛娱乐的提出与IP热的出现 1.1.3 IP的核心 1.2 IP的开发运营 1.2.1 IP 运营体系工业化流程 1.2.2 中、美…...

    2024/4/13 5:33:33
  9. Linux 集群免密配置脚本

    参考自&#xff1a;https://blog.csdn.net/zhanggqianglovec/article/details/103384458 准备工作&#xff1a; 安装expect yum install expect -y #!/usr/bin/bashexpect << EOF set timeout 10 # 创建公有密钥 spawn ssh-keygen -t rsa expect {"*to save the …...

    2024/4/13 9:08:31
  10. 用二维数组打印一个10行的杨辉三角

    /* 使用二维数组打印一个 10 行杨辉三角。 【提示】 1. 第一行有 1 个元素, 第 n 行有 n 个元素 2. 每一行的第一个元素和最后一个元素都是 1 3. 从第三行开始, 对于非第一个元素和最后一个元 素的元素。即&#xff1a; yanghui[i][j] yanghui[i-1][j-1] yanghui[i-1][j];/* …...

    2024/5/3 21:57:09
  11. 【DataMining week3】

    Web Scraping 流程 HTTP requests -> check response&#xff08;因为获取可能失败&#xff09; -> parse response -> store HTTP HTTP 协议&#xff0c;hypertext transfer protocol 超文本传输协议 HTML 数据文件 URL URL&#xff0c;想要获取的文件在服务器中…...

    2024/5/3 20:35:03
  12. 7-5 表格输出 (5 分)(shell编写)

    本题要求编写程序&#xff0c;按照规定格式输出表格。 #!/bin/bashecho "------------------------------------" echo "Province Area(km2) Pop.(10K)" echo "------------------------------------" echo "Anhui 139600.…...

    2024/4/24 12:10:01
  13. L1-003 个位数统计 (15 分)

    给定一个 k 位整数 Ndk−1​10k−1⋯d1​101d0​ (0≤di​≤9, i0,⋯,k−1, dk−1​>0)&#xff0c;请编写程序统计每种不同的个位数字出现的次数。例如&#xff1a;给定 N100311&#xff0c;则有 2 个 0&#xff0c;3 个 1&#xff0c;和 1 个 3。 输入格式&#xff1a; …...

    2024/4/19 16:58:22
  14. 【backtrader源码解析3】使用cython一些参考文章、使用cython改写backtrader的原则及魔改backtrader后的代码地址

    关于cython的使用方法在这个专栏里面就不多做介绍了,提供一些链接供大家参考。 官网教程:https://cython.readthedocs.io/en/latest/ 第三方一些适合入门的教程,对我帮助特别大的一些文章 《Cython系列》1. Cython 是什么?为什么要有 Cython?为什么我们要用 Cython?《Cyt…...

    2024/5/3 20:02:43
  15. 论C++的自我修养(3)C++对象模型和this指针

    文章目录C对象模型和this指针成员变量和成员函数分开存储this指针空指针访问成员函数const修饰成员函数C对象模型和this指针 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储&#xff0c;只有非静态成员变量才属于类的对象上。 this指针 在…...

    2024/5/1 14:49:50
  16. 如何高清录制iPhone屏幕?

    在制作视频过程中&#xff0c;我们经常会使用到录制屏幕功能&#xff0c;iPhone也支持屏幕录制&#xff08;在控制中心打开录制屏幕功能即可&#xff09;&#xff0c;那我为什么还要教大家使用电脑来给iPhone录屏呢&#xff1f; iPhone自身的屏幕录制视频质量和清晰度都比较低…...

    2024/5/3 12:49:04
  17. 从技术和风控角度,分析微信支付宝限制个人收款码远程收款

    目前市面上频发的跑分、赌博、电信诈骗等违规行为&#xff0c;在这些案件中&#xff0c;从风控的角度&#xff0c;个人微信、支付宝的二维码收款码&#xff0c;承担着其中资金过渡的重要一环。且必有“隐蔽性强、资金分散、监管难等”显著特点&#xff0c;同时也给相关执法机构…...

    2024/4/26 15:11:01
  18. (BDCI-CCF)出租车发票识别

    参考文章&#xff1a; ​​​​​​百度AI攻略&#xff1a;出租车票识别_才能我浪费的博客-CSDN博客 附完整python源码&#xff09;基于tensorflow、opencv的入门案例_发票识别一&#xff1a;关键区域定位_小白来搬家-CSDN博客_python发票识别 注&#xff1a;感谢一起完成项目…...

    2024/4/18 15:33:02
  19. game101 作业2(含提高)

    虚拟机代码&#xff1a; 计算重心坐标的函数 static std::tuple<float, float, float> computeBarycentric2D(float x, float y, const Vector3f* v) static std::tuple<float, float, float> computeBarycentric2D(float x, float y, const Vector3f* v) {float …...

    2024/4/5 2:04:07
  20. 《版式设计》课程自测川农网院【标准答案】

    《版式设计》课程自测 1.[单选题]版式设计中预先设定的由一系列相关参考线和定位点组成的协调画面布局和建立图文联系的管理体系被称为 A.布局结构 B.分栏结构 C.网格结构 D.点阵结构 答:——C—— 2.[单选题]视觉流程是指 A.版式讯息呈现和阅读的顺序 B.版面上的线条 C.版式视…...

    2024/4/5 2:04:06

最新文章

  1. 设备自动化技术商务咨询

    ​南京纳恩自动化科技有限公司&#xff0c;成立于 2010年。高新技术企业、软件企业&#xff0c;致力于为客户提供最佳的继电保护、电力监控、智慧用电、工业自动化系统以及基于大数据、云系统的产品解决方案和服务。 自动化行业深耕多年&#xff0c;成就丰富的电力自动化行业经…...

    2024/5/7 8:18:06
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/5/6 9:38:23
  3. springboot websocket 持续打印 pod 日志

    springboot 整合 websocket 和 连接 k8s 集群的方式参考历史 Java 专栏文章 修改前端页面 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>Java后端WebSocket的Tomcat实现</title><script type"text/javasc…...

    2024/5/6 8:43:03
  4. Unity核心学习

    目录 认识模型的制作流程模型的制作过程 2D相关图片导入设置图片导入概述纹理类型设置纹理形状设置纹理高级设置纹理平铺拉伸设置纹理平台打包相关设置 SpriteSprite Editor——Single图片编辑Sprite Editor——Multiple图片编辑Sprite Editor——Polygon图片编辑SpriteRendere…...

    2024/5/5 8:40:53
  5. 【蓝桥杯】省模拟赛

    题目 1.奇数次数2.最小步数3.最大极小值和最小极大值 1.奇数次数 问题描述 给定一个仅包含数字字符的字符串&#xff0c;统计一下这个字符串中出现了多少个值为奇数的数位。 输入格式 输入一行包含一个字符串&#xff0c;仅由数字字符组成。 输出格式 输出一行包含一个整数&am…...

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

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

    2024/5/7 5:50:09
  7. 【原油贵金属周评】原油多头拥挤,价格调整

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

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

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

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

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

    2024/5/6 9:21:00
  10. 【外汇早评】日本央行会议纪要不改日元强势

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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