JAVASE——简单掌握注解与反射
前言
万字简单总结一下Java学习过程中的注解与反射,有不足之处欢迎指正,觉得不错的也可以三连一下
文章目录
- 前言
- 注解
- 什么是注解
- 内置注解
- 元注解
- 自定义注解
- 扩充知识
- 静态语言
- 动态语言
- 反射机制
- Java Reflection
- Class类
- Class类常用的方法
- 获取Class类的实例
- 哪些类型可以有Class对象
- Java内存分析
- 类的加载过程与ClassLoader的理解
- 什么时候类初始化
- 类加载器的作用
- 创建运行时类的对象
- 获取运行时类的完整结构
- 有了Classl对象,能做什么
- 调用指定的方法
- setAccessible
- 反射操作泛型
- 反射操作注解
注解
什么是注解
-
Annotation是从JDK5.0开始引入的新技术
-
Annotation的作用
- 不是程序本身,可以对程序做出解释(这一点和注释(comment)没什么区别)
- 可以被其他程序(比如:编译器等)读取
-
Annotation的格式:
- 注解是以”@注释名“在代码中存在的,还可以添加一些参数值,
- 例如:@Override/@SuppressWarning(value=“unchecked”)
-
Annotaion在哪里使用?
- 可以附加在packege,class,method field等上面,相当于给他们添加了额外的辅助信息
- 我们可以通过反射机制编程实现对这些元数据的访问
内置注解
- @Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明
- @Deprecated:定义在java.lang.Deprecated中,此注释可以用于修辞方法,属性,类,表示鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择
- @SuppressWarings:定义在java.lang.SuppressWaring中,用来抑制编译时的警告信息
- 与前两个注释有所不同,需要添加一个参数才能正确使用,这些参数都是已经定义好了的我们选择性使用即可
- @SuppreWaring(“all”)
- @SuppreWaring(“unchecked”)
- @SuppreWaring(value={“unchecked”,“deprecation”})
- …
//什么是注解
public class Test01 extends Object {// @Override 重写的注解@Overridepublic String toString() {return super.toString();}//不推荐程序员使用,但是可以使用 或者存在更好的方式@Deprecatedpublic static void test(){System.out.println("@Deprecated");}@SuppressWarnings("all")public void test02(){List list=new List();}public static void main(String[] args) {test();}
}
元注解
- 元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明.
- 这些类型和他们所支持的类在java.lang.annottation包中可以找到(@Target,@Retention,@Documented,@Inherited)
- @Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
- @Retention:表示需要在什么级别保存改注释的信息,用于描述注解的生命周期
- (SOURCE<CLASS<RUNTIME)
- @Documented:说明该注解将被包含在javadoc中
- @Inherited:说明子类可以继承父类中的该注解
//测试元注解
@MyAnnotation
public class Test02 {public void test(){}
}//定义一个元注解
//Target 表示我们的注解可以用在哪些地方
@Target(value ={ElementType.METHOD,ElementType.TYPE})
//@Retention 表示我们的注解在哪些地方有效
//(SOURCE<CLASS<RUNTIME)
@Retention(value = RetentionPolicy.RUNTIME)
//@Documented 表示我们的注解是否生成在Javadoc中
@Documented
//@Inherited 表示子类可以继承父类的注解
@Inherited
@interface MyAnnotation{}
自定义注解
-
用@Interface自定义注解时,自动继承了java.lang.annotation.Annotation接口
-
分析
- @Interface用来声明一个注解,格式:public @Interface 注解名{定义内容}
- 其中的每一个方法实际上是声明了一个配置参数
- 方法的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能时基本类型,Class String,enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值
//测试自定义注解
public class Test03 {//注解可以显示定义,如果没有默认值,我们就必须给注解赋值@MyAnnotation2(schools = {"华商大学"}) //若有默认值default 可以不加name="你好"public void test(){ }@MyAnnotation3("你好") //只有一个值的情况public void test2(){}
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{//注解的参数:参数类型+参数名()String name() default "";int age() default 0;int id() default -1;//如果默认值为-1 代表不存在。indexof--如果找不到就返回-1String[] schools() default {"北华"};
}@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation3{String value(); //只有一个值的情况
}
扩充知识
静态语言
- 与动态语言相对应,运行时结构不可变的语言就是静态语言。例如Java、C、C++
- Java不是动态语言,但Java可以称之为”准动态语言“
- Java具有一定的动态性、我们可以利用反射机制获得类似动态语言的特性
- Java的动态性让编程的时候更加灵活
动态语言
- 一类在运行时可以改变其结构的语言:列如新的函数,对象,甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化
- 通俗点就是在运行时代码可以根据某些条件改变自身结构
- 主要动态语言:Object—C、C#、JavaScrit、PHP、Python等
反射机制
Java Reflection
-
Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法
Class c=Class.forName(“Java.lang.String”)
-
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个对象只有一个Class类对象),这个对象就包含了完整的类的结构信息。可以通过这个对象看到类的结构,这个对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的称之为:反射
-
正常方式:引入需要的”包类“的=名称——>通过new实例化——>取得实例化对象
-
反射方式:实例化对象——>getClass()方法——>得到完整的”包类“名称
-
反射机制提供的功能
-
在运行时判断任意一个对象所属的类
-
在运行时构造任意一个类的对象
-
在运行时判断任意一个类所具有的成员变量和方法
-
在运行时获取泛型信息
-
在运行时调用任意一个对象的成员变量和方法
-
在运行时处理注解
-
生成动态代理
-
-
Java反射的优点与缺点
-
优点
- 可以实现动态创建对象和编译,体现出很大的灵活性
-
缺点
- 对性能有影响。使用反射基本上是一种解释操作,可以告诉JVM
- 希望做什么并且它满足我们的要求。这类操作总是慢于直接执行相同的操作.
-
-
反射相关的主要API
- java.lang.Class:代表一个类
- java.lang.reflect.Method:代表类的方法
- java.lang.reflect.Field:代表类的成员变量
- java.lang.reflect.Constructor:代表类的构造器
//什么叫反射
public class Test02 extends Object{public static void main(String[] args) throws ClassNotFoundException {//通过反射获取类的Class对象Class c1 = Class.forName("reflect.User");System.out.println(c1);//输出结果相同,说明一个类在内存中只有一个Class对象//一个类被加载后,类的整个结构都会被封装在Class对象中Class c2 = Class.forName("reflect.User");Class c3 = Class.forName("reflect.User");Class c4 = Class.forName("reflect.User");System.out.println(c2.hashCode());System.out.println(c3.hashCode());System.out.println(c4.hashCode());}
}//实体类:pojo、entity
class User{private String name;private int id;private int age;public User() {}public User(String name, int id, int age) {this.name = name;this.id = id;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", id=" + id +", age=" + age +'}';}
}
Class类
-
在Object类中定义了以下的方法,此方法将被所有子类继承
-
public final Class getClass()
-
以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称.
-
对象照镜子后可以得到的信息:某个类的属性,方法和构造器、某个类到底实现了哪些接口。
-
对于每个类而言,JRE都为其保留一个不变的Class类型的对象.一个Class对象包含了特定某个结构(class/interface/enum/annotation/primitive type/void[])的有关信息
-
Class本身也是一个类
-
Class对象只能由系统建立对象
-
一个加载的类在JVM中只会有一个Class实例
-
一个Class对象对应的是一个加载到JVM中的一个.class文件
-
每个类的实例都会记得自己是由哪个Class实例所生成
-
通过Class可以完整地得到一个类中所有被加载的结构
-
Class类是Reflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象
-
Class类常用的方法
方法名 | 功能说明 |
---|---|
static ClassforName(String name) | 返回指定类名name的Class对象 |
Object newInstance | 调用却省构造函数,返回Class对象的一个实例 |
getName() | 返回此Class对象所表示的实体(类、接口、数组类或void)的名称 |
Class getSuperClass() | 返回当前Class对象的父类的Class对象 |
Class[] gettinterfaces() | 获取当前Class对象的接口 |
ClassLoader getClassLoader() | 返回该类的类加载器 |
Constructor getConstructors | 返回一个包含某些Contructor对象的数组 |
Method getMothed(String name,Class…T) | 返回一个Method对象,,此对象的形参类型为param Type |
Field getDeclareFields() | 返回Field对象的一个数组 |
获取Class类的实例
- 若已知具体的类,通过类的class属性获取,该方法最为安全可靠,程序性能最高.
Class class = Person.class;
- 若已知谋个类的实例,调用该实例的getClass()方法获取Class对象
Class class = person.getClass();
- 已知一个类的全类名,且该类在类路径下,可通过Class类的静态方法forName()获取可能抛出ClassNotFoundException
Class class = class.forName("demo01.Student");
- 内置基本数据类型可以直接用类名.Type
- 还可以利用ClassLoader
//测试Class类的创建方式有哪些
public class Test03 {public static void main(String[] args) throws ClassNotFoundException {Person person = new Student();System.out.println("这个人是:"+person.name);//方式一:通过对象获得Class c1 = person.getClass();System.out.println(c1.hashCode());System.out.println(c1);//class reflect.Student//方式二:forname获得Class c2 = Class.forName("reflect.Student");System.out.println(c2.hashCode());//方式三:通过类名.class获得Class c3 = Student.class;System.out.println(c3.hashCode());//方式四:基本内置类型的包装类都有一个Type属性Class c4 = Integer.TYPE;System.out.println(c4); //默认的int类型//获得父类类型Class c5 = c1.getSuperclass();System.out.println(c5);//class reflect.Person}
}class Person{public String name;public Person() {}public Person(String name) {this.name = name;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +'}';}
}class Student extends Person{public Student(){this.name="学生";}
}class Teacher extends Person{public Teacher(){this.name="老师";}
}
哪些类型可以有Class对象
- class:外部类,成员(成员内部类、静态内部类)、局部内部类、匿名内部类.
- interface:接口
- []:数组
- enum:枚举
- annotation:注解@interface
- primitive type:基本数据类型
- void
Java内存分析
类的加载过程与ClassLoader的理解
- 当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化。
- 类的加载(Load)
- 将类的class文件读入内存,并为之创建一内存,并为之创建一java.lang.Class对象,此过程由类加载器完成
- 类的链接(Link)
- 将类的二进制数据合并到JRE中
- 类的初始化(Initialize)
- JVM负责对类的初始化
- 类的加载(Load)
- 类的加载与ClassLoader的理解
- 加载
- 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,
然后生成一个代表这个类的java.lang.Class对象.
- 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,
- 链接
- 将Java类的二进制代码合并到JVM的运行状态之中的过程。
- 验证
- 确保加载的类信息符合JVM规范,没有安全方面的问题
- 准备
- 正式为类变量(static) 分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配。
- 解析
- 虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程。
- 初始化
- 执行类构造器 ()方法的过程。类构造器 ()方法是由编译期自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的(类构造器 是构造类信息的,不是构造该类对象的构造器)。
- 当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。
- 虚拟机会保证一个类的 ()方法在多线程环境中被正确加锁和同步。
- 加载
public class Test05 {public static void main(String[] args) {A a=new A();System.out.println(A.m);/*1.加载到内存,会产生一个类对象的Class对象2.链接,链接结束后m=03.初始化<clint>(){System.out.println("A类静态代码类初始化");m=300;m=100;}m=100*/}
}class A{static {System.out.println("A类静态代码类初始化");m=300;}/*第一次给m赋值300第二次给m赋值100此时m100将m300覆盖了*/static int m=100;public A() {System.out.println("A类无参构造初始化");}
}
什么时候类初始化
-
类的主动引用(一定会发生类的初始化)
-
当虚拟机启动,先初始化main方法所在的类
-
new一个类的对象
-
调用类的静态成员(除了final常量)和静态方法
-
使用java.lang.reflect包的方法对类进行反射调用
-
当初始化一个类,如果其父类没有被初始化,则先会初始化它的父类
-
-
类的被动引用(不会发生类的初始化)
- 当访问-个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化
- 通过数组定义类引用,不会触发此类的初始化
- 引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)
//测试类什么时候会初始化
public class Test06 {static {System.out.println("Main被加载");}public static void main(String[] args) throws ClassNotFoundException {//1.主动引用//Son son=new Son();//反射也会产生主动引用//Class.forName("reflect.Son");//不会产生类的引用的方法//System.out.println(Son.b);//通过子类调用父类的方法//这里不会执行子类//Son[] array=new Son[5];//常量不会引起父类和子类的初始化System.out.println(Son.M);}
}class Father{static int b=2;static {System.out.println("父类被加载");}
}
class Son extends Father{static {System.out.println("子类被加载");m=300;}static int m=100;static final int M=1; //常量池
}
类加载器的作用
- 类加载的作用:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后在堆中生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口
- 类缓存:标准的JavaSE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间,不过JVM垃圾回收机制可以回收这些Class对象
public class Test07 {public static void main(String[] args) throws ClassNotFoundException {//获取系统类的加载器ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();System.out.println(systemClassLoader);//获取系统类加载器的父类加载器-->扩展类ClassLoader parent = systemClassLoader.getParent();System.out.println(parent);//获取扩展类加载器的父类加载器--->根加载器(c/c++)ClassLoader parent1 = parent.getParent();System.out.println(parent1);//测试当前类是那个加载器加载的ClassLoader classLoader = Class.forName("reflect.Test07").getClassLoader();System.out.println(classLoader);//用户自定义的类//测试JDK内置的类是谁加载的classLoader = Class.forName("java.lang.Object").getClassLoader();System.out.println(classLoader);//如何获得系统类加载器可以加载的路径System.out.println(System.getProperty("java.class.path"));}
}
创建运行时类的对象
获取运行时类的完整结构
-
通过反射获取运行时类的完整结构
-
Field、Method、Constructor、Superclass、Interface、Annotation
-
实现的全部接口
-
所继承的父类
-
全部的构造器
-
全部的方法
-
全部的Field
-
//获得类的信息
public class Test08 {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {Class c1= Class.forName("reflect.User");//User user=new User();// c1= user.getClass(); //添加了这个之后 Class.forName("reflect.User");无效//获得类的名字System.out.println(c1.getName()); //获得包名+类名System.out.println(c1.getSimpleName());//获得类名//获得类的属性System.out.println("====================================");Field[] fields = c1.getFields(); //只能找到public属性fields=c1.getDeclaredFields(); //可以找到全部的属性for (Field field:fields){System.out.println(field);}//获得指定属性的值Field name = c1.getDeclaredField("name");System.out.println(name);//获得类的方法System.out.println("====================================");Method[] methods = c1.getMethods(); //获得本类及其父类的全部public方法for (Method method : methods) {System.out.println("正常的:"+method);}Method[] declaredMethods = c1.getDeclaredMethods(); //获得本类的所有方法for (Method method : methods) {System.out.println("getDeclaredMethods"+method);}//获得指定的方法Method getName = c1.getMethod("getName", null);Method setName = c1.getMethod("setName", String.class);System.out.println(getName);System.out.println(setName);//获得指定的构造器System.out.println("====================================");Constructor[] constructors = c1.getConstructors();for (Constructor constructor : constructors) {System.out.println(constructor);}constructors = c1.getDeclaredConstructors();for (Constructor constructor : constructors) {System.out.println("getDeclaredConstructors"+constructor);}Constructor declaredConstructor = c1.getDeclaredConstructor(String.class, int.class, int.class);System.out.println("执指定:"+ declaredConstructor );}
}
有了Classl对象,能做什么
-
创建类的对象:调用Class对象的newInstance()方法
- 类必须有一个无参数的构造器
- 类的构造器的访问权限需要足够
-
难道没有无参的构造器就不能创建对象了吗?
-
只要在操作的时候明确的调用类中的构造器并将参数传递进去之后,才可以实例化操作
-
步骤如下
- 通过Class类的getDeclaredConstructor(Class … parameterTypes)取得本类的指定形参类型的构
造器 - 向构造器的形参中传递一一个对象数组进去,里面包含了构造器中所需的各个参数
- 通过Constructor实例化对象
- 通过Class类的getDeclaredConstructor(Class … parameterTypes)取得本类的指定形参类型的构
调用指定的方法
- 通过反射,调用类中的方法,通过Method类完成。
- 通过Class类的getMethod(String name,Clas…parameterTypes)方法取得一个Method对象,并设置此方法操作时所需要的参数类型。
- 之后使用Object invoke(Object obj, Object[] args)进行调用,并向方法中传递要设置的obj对象的参数信息
- Object invoke(Object obj, Object … args)
- Object 对应原方法的返回值,若原方法无返回值,此时返回null
- 若原方法若为静态方法,此时形参Object obj可为null
- 若原方法形参列表为空,则Object[] args为null
- 若原方法声明为private,则需要在调用此invoke()方法前,显式调用方法对象的setAccessible(true)方法,将可访问private的方法。
setAccessible
- Method和Field、 Constructor对象都有setAccessible()方法
- setAccessible作用是启动和禁用访问安全检查的开关
- 参数值为true则指示反射的对象在使用时应该取消Java语言访问检查
- 提高反射的效率。如果代码中必须用反射,而该句代码需要频繁的被调用,那么请设置为true
- 使得原本无法访问的私有成员也可以访问
- 参数值为false则指示反射的对象应该实施Java语言访问检查
//动态的创建对象,通过反射
public class Test09 {public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {//获得Class对象Class c1 = Class.forName("reflect.User");//构造一个对象//User user =(User)c1.newInstance();//本质是调用了类的无参构造器//System.out.println(user);//通过构造器创建对象//Constructor constructor = c1.getDeclaredConstructor(String.class, int.class, int.class);//User user2 =(User)constructor.newInstance("kk", 006, 19);//System.out.println(user2);//将User删除,也可以构建//通过反射调用普通方法User user3 =(User)c1.newInstance();//通过反射调用方法//invoke激活 执行的意思//(对象,“方法的值”)Method setName = c1.getDeclaredMethod("setName", String.class);setName.invoke(user3,"kk");System.out.println(user3.getName());//通过方式操作属性System.out.println("================================");User user4 =(User)c1.newInstance();Field name = c1.getDeclaredField("name");//不能直接操作私有属性,需要关闭程序的安全检测,属性或方法的setAccessible(true)name.setAccessible(true);//关闭name.set(user4,"kk006");System.out.println(user4.getName());}
}
反射操作泛型
- Java采用泛型擦除的机制来弓|入泛型, Java中的泛型仅仅是给编译器javac使用的,确保数据的安全性和免去强制类型转换问题,但是,一旦编译完成,所有和泛型有关的类型全部擦除
- 为了通过反射操作这些类型, Java新增了ParameterizedType , GenericArrayType,TypeVariable和WildcardType几种类型来代表不能被归一-到Class类中的类型但是又和原始类型齐名的类型
- ParameterizedType : 表示-种参数化类型,比如Collection
- GenericArrayType :表示一种元素类型是参数化类型或者类型变量的数组类型
- TypeVariable :是各种类型变量的公共父接口
- WildcardType :代表一种通配符类型表达式
//通过反射获取泛型
public class Test11 {public void test01(Map<String,User>map, List<User>list){System.out.println("Test01");}public Map<String,User> test02(){System.out.println("Test02");return null;}public static void main(String[] args) throws NoSuchMethodException {Method method = Test11.class.getMethod("test01", Map.class, List.class);Type[] genericParameterTypes = method.getGenericParameterTypes();for (Type genericParameterType : genericParameterTypes) {System.out.println("#"+ genericParameterType );if (genericParameterType instanceof ParameterizedType){Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments();for (Type actualTypeArgument : actualTypeArguments) {System.out.println(actualTypeArgument);}}}method = Test11.class.getMethod("test02", null);Type genericReturnType = method.getGenericReturnType();}
}
反射操作注解
- getAnnotations
- getAnnotation
//练习反射操作注解
public class Test12 {public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {Class c1 = Class.forName("reflect.Student2");//通过反射获得注解Annotation[] annotations = c1.getAnnotations();for (Annotation annotation : annotations) {System.out.println(annotation);}//获得注解value的值Tablehua tablehua =(Tablehua)c1.getAnnotation(Tablehua.class);String value = tablehua.value();System.out.println(value);//获得类指定的注解Field f = c1.getDeclaredField("id");Fieldhua annotation = f.getAnnotation(Fieldhua.class);System.out.println(annotation.columName());System.out.println(annotation.type());System.out.println(annotation.length());}
}@Tablehua("db_student")
class Student2{@Fieldhua(columName = "db_id",type = "int",length = 10)private int id;@Fieldhua(columName = "db_age",type = "int",length = 10)private int age;@Fieldhua(columName = "db_name",type = "varchar",length = 3)private String name;public Student2() {}public Student2(int id, int age, String name) {this.id = id;this.age = age;this.name = name;}public int getId() {return id;}public int getAge() {return age;}public String getName() {return name;}public void setId(int id) {this.id = id;}public void setAge(int age) {this.age = age;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student2{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}
}//类名的注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Tablehua{String value();
}//属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Fieldhua{String columName();String type();int length();
}
tring name) {this.id = id;this.age = age;this.name = name;}public int getId() {return id;}public int getAge() {return age;}public String getName() {return name;}public void setId(int id) {this.id = id;}public void setAge(int age) {this.age = age;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student2{" +"id=" + id +", age=" + age +", name='" + name + '\'' +'}';}
}//类名的注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Tablehua{String value();
}//属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Fieldhua{String columName();String type();int length();
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【AHK】循环读取操作
;循环读取 脚本处理 GotoSeqs: Loop, read, list.txt { send,^f sleep,100 send, ^a send, %A_LoopReadLine% sleep,1000 send,{enter} sleep,1450 ;4500 send, {RButton} sleep,450 send,^s sleep,100 ;msgbox, 48 , GOTO, NEXT, 0.2 } send,{F2} return...
2024/5/10 6:24:26 - Android-基础教程-应用资源-概览
应用资源概览 | Android 开发者 | Android Developers...
2024/4/19 14:33:44 - C#基础知识回顾(第三部分 共四部分)
第6章 目录与文件操作 目录第6章 目录与文件操作6.1 目录和文件管理6.1.1 Environment类和DriveInfo类6.1.2 Path类6.1.3 目录管理6.1.4 文件管理6.2 文件的读写6.2.1 文件编码6.2.2 文本文件的读写6.2.3 StreamReader类和StreamWriter类6.2.4 二进制文件的读写第7章 WPF应用程…...
2024/5/10 14:48:45 - Go类型转换
什么是隐式类型的转换? #include <iostream> using namespace std;int main() {int a 5;float b 6.2;a b ;cout<<a<<endl; }6GO不支持隐式类型的转换 package mainimport ("fmt""strconv" )func main() {1.基本类型转换…...
2024/5/10 4:29:31 - mysql-事务篇
事务简介 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。(默认MySQL的事务是自动提交的,也就是说…...
2024/4/13 4:47:30 - JAVASE——简单理解多线程
前言 万字简单总结一下Java学习过程中的多线程,有不足之处欢迎指正,觉得不错的也可以三连一下 文章目录前言Thread类图片下载Runnable接口图片下载龟兔赛跑Callable接口图片下载静态代理模式Lamda表达式线程状态线程方法线程停止线程休眠(sle…...
2024/4/13 14:12:21 - 蓝桥杯国信长天单片机--硬件环境(一)
CT107D 单片机由以下功能模块组成 1、功能模块 (1)单片机芯片 配置IAP15F2K61S2单片机 (2)显示模块 配置8路LED输出L1~L8配置8位8段共阳极数码管DS1~DS2配置LCM 1602和12860液晶接口 (3)输入/输出模块 配置44矩阵…...
2024/4/13 4:47:25 - 【scala+spark+hadoop+idea】踩坑记
昨天装了一天,出现各种问题,比如版本不对应,hadoop的配置文件修改错误等等,我出现了问题照着网上的教程一步步走,最终还是死在了spark版本应该改低点【传送门】的问题上,这个问题我没有找到其他的解决方法&…...
2024/4/16 14:30:01 - JS高级(1)
目录 数据类型 分类 判断 问题 数据_变量_内存 数据 变量 内存 数据、变量、内存三者之间的关系: 问题 对象 问题 函数 回调函数 IIFE(匿名函数自调用) 函数中的this 数据类型 分类 基本类型 String:任意字符串…...
2024/4/13 4:47:35 - goland 2021.2 配置go( go1.17.6)
一,配置settings: 1,打开配置界面: file->settings->Go 如图: 2,配置GOROOT,如图: 3,配置GOPATH,如图:无需配置: 4,Go Modules: 选中Enable Go modules integration 默认已选中,无需配置 说明:刘宏缔的go森林是一个专注…...
2024/4/14 15:56:27 - VOS音质不好要怎样解决?
音质好坏主要取决于传输网络和经由设备的处理能力 如果 VOS 没有开启媒体转发的情况下,出现音质不好,那么排查问题时完全可以认为 VOS 是正常的,因为VOS没有参与语音流的处理,所以不涉及音质问题。 在 VOS 开启媒体转发的情况下…...
2024/4/13 4:48:30 - qt GraphicsScene添加背景
我想给GraphicsScene添加如下图所示这样的一个浅绿色背景图片,然后百度找了很多没用的方法。最实在的还是继承QGraphicsScence,重写drawBackground方法,详情可以看看事例 但是后来我发现直接给GraphicsScene设置背景颜色更加简单 直接用下面代码就可以…...
2024/4/15 13:48:08 - python学习测试题1
1. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗? myteacher 白天 yourteacher myteacher yourteacher 黑夜 print(myteacher)2. 在不上机的情况下,以下代码你能猜到屏幕会打印什么内容吗? myteacher 白天 yourt…...
2024/4/26 23:00:57 - 三菱PLC基于Modbus协议通讯的DEMO程序
EMERSON EV1000/EV2000变频器与MITSUBISH FX2 PLC 基于Modbus协议通讯的DEMO程序 一、硬件连接 三菱FX系列PLC基于Modbus协议通讯的DEMO称重程序 二、通讯方式 Modbus协议,ASCII格式,LRC校验; 主从方式:PLC为主机,…...
2024/4/13 4:48:30 - Mongodb随记
目录使用1.控制台命令行中操作mongodb常见命令行2.可视化图形工具中操作MongoDB:Navicat Premium 153.通过后端代码区操作MongoDBmongoose:Node.js提供的一个用于便捷操作MongoDB的库express项目连接Mongodbmongoose对数据库集合操作:mongoos…...
2024/5/8 6:13:38 - InnoDB索引,终于懂了
《数据库索引,终于懂了》介绍了为什么B树适合做数据库索引,数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Index)。InnoDB和MyISAM是怎么利用B树来实现这两类索引,其又有什么差…...
2024/4/14 21:36:45 - 【SpringBoot后台】整合阿里云OSS实现文件上传
关于OSS的基础使用,可以参看下前面的文章 点击进入,这里主要介绍下SpringBoot怎样操作阿里云OSS实现文件上传。 1 ServiceImpl.java 代码,可参看官方文档 进入 这个是官方文档中的代码,可以看到这里是实现上传一段文字 : “Hello…...
2024/5/3 20:44:53 - 99. 恢复二叉搜索树
恢复二叉搜索树 给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 示例 1: 输入:root [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:…...
2024/4/20 9:52:30 - 学大数据小胖的第十四天
字节缓冲流:避免了底层系统的多次调用 BufferedOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。 BufferedInputStream:创建一个内部缓冲区数组。 当从流…...
2024/4/18 10:21:35 - View体系(十)从LinearLayout分析View的布局流程
之前的文章《View体系(六)View工作流程入口》提到View的工作流程包括了measure、layout和draw的过程,上两篇文章《View体系(八)深入剖析View的onMeasure方法》和《View体系(九)从LinearLayout分…...
2024/4/13 4:48:25
最新文章
- python数据分析——数据的选择和运算
数据的选择和运算 前言一、数据选择NumPy的数据选择一维数组元素提取示例 多维数组行列选择、区域选择示例 花式索引与布尔值索引布尔索引示例一示例二 花式索引示例一示例二 Pandas数据选择Series数据获取DataFrame数据获取列索引取值示例一示例二 取行方式示例loc() 方法示例…...
2024/5/10 16:39:06 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - BetterZip for Mac2024最新mac解压缩软件
作为一名软件专家,对于市面上各类软件都有较为深入的了解,下面介绍的是一款适用于Mac系统的解压缩软件——BetterZip,将从其功能特点、使用方法、用户体验及适用人群等方面进行详细介绍。 BetterZip5-安装包绿色版下载如下: htt…...
2024/5/10 0:12:25 - Kafka架构概述
Kafka的体系结构 Kafka是由Apache软件基金会管理的一个开源的分布式数据流处理平台。Kafka具有支持消息的发布/订阅模式、高吞吐量与低延迟、持久化、支持水平扩展、高可用性等特点。可以将Kafka应用于大数据实时处理、高性能数据管道、流分析、数据集成和关键任务应用等场景。…...
2024/5/10 0:11:33 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/10 12:36:12 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/10 10:22:18 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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