注解和反射
文章目录
- 1、什么是注解
- 2、内置注解
- 3、元注解
- 4、反射
- 5、得到Class类的几种方式
- 6、所有类型 的Class对象
- 7、类加载内存分析
- 8、什么时候会发生类初始化
- 9、类加载器
- 类加载器的作用
- 10、类的加载与ClassLoader的理解
- 11、获取类的运行时结构
- 12、动态创建对象执行方法
- 创建类的对象
- 1 调用Class对象的newInstance()方法
- 2 调用类的指定构造器
- 通过反射调用方法
- 通过反射操作属性
1、什么是注解
Annotation的格式:
注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:
@SuppressWarings(value=“unchecked”)
Annotation的作用:
- 不是程序本身,可以对程序做出解释
- 可以被其它程序(如编译器)读取
Annotation在哪里使用?
可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
2、内置注解
-
@Override:此注解只用于修饰方法,表示重写超类中的一个方法
-
@Deprecated:此注解可用于修饰类、方法和属性,表示不鼓励使用这个类/方法/属性,通常是因为它很危险或者存在更好的选择
-
@SuppressWarnings:用来抑制编译时的警告信息
3、元注解
元注解的作用就是负责注解其它注解,有以下4个标准的meta-annotation类型,用来提供对其它注解类型作说明
- @Target:用于描述注解的作用范围(即指明被描述的注解可以用在什么地方)
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期
SOURCE<CLASS<RUNTIME
SOURCE:注解将被编译器丢弃
CLASS:类文件会记录这些注解,但VM不需要在运行时保留这些注解(默认级别)
RUNTIME:编译器会将这些注解保留到类文件中,并在运行时由VM保留,因此它们可以被反射地
读取 - @Document:说明该注解将包含在javadoc中
- @Inherited:说明子类可以继承父类中的该注解
4、反射
Reflection(反射)是java被视为动态语言的关键,反射机制允许程序在执行期间借助Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法
Class clazz=Class.forName("java.lang.String");
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以形象地称之为:反射
正常方式:
(1)引入需要的“包类”名称
(2)通过new实例化
(3)取得实例化对象
反射方式:
(1)实例化对象
(2)调用getClass()方法
(3)得到完整的“包类”名称
java反射机制提供的功能
(1)在运行时判断任意一个对象所属的类
(2)在运行时构造任意一个类的对象
(3)在运行时判断任意一个类所具有的成员变量和方法
(4)在运行时获取泛型信息
(5)在运行时调用任意一个对象的成员变量和方法
(6)在运行时处理注解
(7)生成动态代理
5、得到Class类的几种方式
Class通过反射可以得到如下信息:类的属性、方法、构造器、实现的接口。对于每个类而言,JRE为其保留了一个不变的Class类型的对象。一个Class对象包含了某个特定结构的信息(class/interface/enum/annotation/void/primitive type)
- Class 本身也是一个类
- Class对象只能由系统建立
- 一个加载的类在JVM中只会有一个Class实例
- 一个Class对象对应一个加载到JVM中的
.class
文件 - 每个类的实例都会记得自己是由哪个Class实例所生成
- 通过Class可以完整地得到一个类中所有被加载的结构
- Class类是reflection的根源,针对任何想动态加载、运行的类,唯有先获得相应的Class对象
获取Class类的实例
(1)如果已知当前类的类型,则直接通过类的class属性获取。
Class clazz=Person.class;
这种方式最安全可靠,性能最高
(2)如果已有类的实例,则调用类的getClass()方法获取Class对象
Class clazz=person.getClass();
(3)已知一个类的全类名,且该类在类路径下,可通过Class类
的静态方法forName()获取,可能抛出ClassNotFoundException
异常
Class clazz=Class.forName("com.test.entity.Person");
(4)基本数据类型可以直接用类名.Type
(5)还可以利用ClassLoader
示例:
public class TestAnnotation {public static void main(String[] args) throws ClassNotFoundException {Person person=new Student("学生");System.out.println("这个人是"+person.getName());//方式一:如果已有类的实例,则调用类的getClass()方法获取Class对象Class clazz1=person.getClass();System.out.println(clazz1.hashCode());//方式二:如果已知当前类的类型,则直接通过类的class属性获取。Class clazz2 = Student.class;System.out.println(clazz2.hashCode());//方式三:已知一个类的全类名,且该类在类路径下,可通过`Class类`的静态方法forName()获取Class clazz3=Class.forName("Student");System.out.println(clazz3.hashCode());//获得父类类型Class superclass = clazz1.getSuperclass();System.out.println(superclass);}
}class Person{private String name;public Person(){}public Person(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +'}';}
}class Student extends Person{public Student(String name) {super(name);}
}
6、所有类型 的Class对象
- class: 外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类
- interface: 接口
- []: 数组
- enum: 枚举
- annotation: 注解@interface
- primitive type: 基本数据类型
- void
示例如下“
public static void main(String[] args) {//类Class c1=Object.class;//interface: 接口Class c2=Comparable.class;//[]: 数组Class c3=char[].class;Class c4=int[][].class;//enum: 枚举Class c5= ElementType.class;//annotation: 注解@interfaceClass c6=Override.class;//primitive type: 基本数据类型Class c7=int.class;//voidClass c8=void.class;System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c4);System.out.println(c5);System.out.println(c6);System.out.println(c7);System.out.println(c8);}
输出结果
class java.lang.Object
interface java.lang.Comparable
class [C
class [[I
class java.lang.annotation.ElementType
interface java.lang.Override
int
void
7、类加载内存分析
java内存
-
堆
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
-
栈
- 存放基本变量类型(会包含这个基本类型的具体数值)
- 引用对象的变量(存放这个引用在堆中的内存地址)
-
方法区
- 可以被所有的线程共享
- 包含所有的class和static变量
类的加载过程
当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化:
(1)类的加载
将类的class文件读入内存,并为之创建一个java.lang.Class对象。此过程由类加载器完成
(2)类的链接
将类的二进制数据合并到JRE中
(3)类的初始化
JVM负责对类进行初始化
类的加载与ClassLoader的理解
(1)加载
将class的字节码文件内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象
(2)链接
将java类的二进制代码合并到JVM的运行状态之中的过程
- 验证:确保加载的类信息符合JVM规范,没有安全问题
- 准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配
- 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程
(3)初始化
- 执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)
- 当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化
- 虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步
示例如下:
public class Test01 {public static void main(String[] args) {A a=new A();System.out.println(A.m);}
}class A{static {System.out.println("A类中的静态代码块执行");m=300;}static int m=100;public A() {System.out.println("A类的无参构造初始化");}
}
运行结果:
A类中的静态代码块执行
A类的无参构造初始化
100
在链接的准备阶段,为静态m赋默认值,因此m=0
在初始化阶段,根据"类构造器<clinit>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并
产生的。"
因此合并成了
m=300;
m=100;
因此输出m的值为100
8、什么时候会发生类初始化
(1)类的主动引用(一定会发生类的初始化)
- 当虚拟机启动,先初始化main方法所在的类
- new一个类的对象
- 调用类的静态成员(除了final常量)和静态方法
- 使用java.lang.reflect包的方法对类进行反射调用
- 当初始化一个类,如果其父类没有被初始化,则会先初始化其父类
(2)类的被动引用(不会发生类的初始化)
- 当访问一个静态域时,只有真正声明这个域的类才会被初始化。如:当通过子类引用父类的静态变量,不会导致子类初始化
- 通过数组定义类的引用,不会触发此类的初始化
- 引用常量不会触发此类的初始化(常量在链接阶段就存入调用类的常量池中了)
示例如下:
public class Test01 {static {System.out.println("Main类被加载");}public static void main(String[] args) throws ClassNotFoundException {//主动引用:通过new进行主动调用Son son=new Son();运行结果:
Main类被加载
父类被加载
子类被加载//主动引用:使用java.lang.reflect包的方法对类进行反射调用Class.forName("Son");运行结果:
Main类被加载
父类被加载
子类被加载//主动引用:调用静态成员System.out.println(Son.m);运行结果:
Main类被加载
父类被加载
子类被加载
100//被动引用:子类引用父类静态成员(不会引起子类初始化)System.out.println(Son.b);运行结果:
Main类被加载
父类被加载
50//被动引用:通过数组定义类的引用,不会触发此类的初始化Son son[]=new Son[10];运行结果:
Main类被加载//被动引用:引用常量不会触发此类的初始化System.out.println(Son.N);运行结果:
Main类被加载
10}
}class Father{static int b=50;static {System.out.println("父类被加载");}
}class Son extends Father{static {System.out.println("子类被加载");m=300;}static int m=100;static final int N=10;
}
9、类加载器
类加载器的作用
类加载器的作用:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后在堆中生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口
类缓存:标准的JavaSE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间。不过JVM垃圾回收机制可以回收这些Class对象
类加载器作用是用来把类(class)装载进内存的。JVM规范定义了如下类型的类的加载器:
10、类的加载与ClassLoader的理解
加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象
链接:将Java类的二进制代码合并到JVM的运行状态之中的过程
- 验证:确保加载的类信息符合JVM规范,没有安全方面的问题
- 准备:正式为类变量(static)分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配
- 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程
初始化:
- 执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译器自动收集类中所有类变量的赋值动作和静态代码块中的语句合并产生的。(类构造器是构造类信息的,不是构造该类对象的构造器)
- 当初始化一个类的时候,如果发现其父类还没有进行初始化,则需要先触发其父类的初始化。
- 虚拟机可以保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步
public static void main(String[] args) throws ClassNotFoundException {//获取系统的加载器ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();System.out.println(systemClassLoader);//获取系统加载器的父类加载器-->扩展类加载器ClassLoader parent = systemClassLoader.getParent();System.out.println(parent);//获取扩展类加载器的父类加载器-->根加载器ClassLoader parentParent = parent.getParent();System.out.println(parentParent);//测试内置类是由哪个类加载器加载的ClassLoader classLoader = Class.forName("java.lang.String").getClassLoader();System.out.println(classLoader);
}
运行结果:
sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@4554617c
null
null
后两个输出结果之所以为null,是因为引导类加载器是无法直接获取的
11、获取类的运行时结构
通过反射获取运行时类的完整结构
filed method constructor superclass interface annotation
- 实现的全部接口
- 所继承的父类
- 全部的构造器
- 全部的方法
- 全部的字段
- 注解
- …
示例如下:
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {Class aClass = Class.forName("weimeng.Solution");//获得类的名字System.out.println(aClass.getName()); //获得包名+类名System.out.println(aClass.getSimpleName()); //获得类名//获得类的属性Field[] fields = aClass.getFields(); //获得public属性fields=aClass.getDeclaredFields(); //获得所有属性aClass.getField("publicFiledName"); //获得指定的public属性aClass.getDeclaredField("FiledName"); //获取指定的任意属性//获得类的方法aClass.getMethods(); //获得当前类和父类的public方法aClass.getDeclaredMethods(); //获得当前类的所有方法//获得指定方法Method getName = aClass.getMethod("getName", null);Method setName = aClass.getMethod("setName", String.class); //方法存在重载,因此需要传递参数//获得构造器Constructor[] constructors = aClass.getConstructors(); //获得public构造方法Constructor[] declaredConstructors = aClass.getDeclaredConstructors(); //获得所有的构造方法
}
12、动态创建对象执行方法
创建类的对象
1 调用Class对象的newInstance()方法
(1)类必须有一个无参构造器
(2)如类的构造器访问权限为private,可调用setAccessible(true)
即可顺利调用类的构造器
2 调用类的指定构造器
(1)通过Class类的getDeclaredConstructor(Class<?>… parameterTypes),根据形参列表取得本类的指定构造器
(2)向构造器的形参中传递一个对象数组,里面包含了构造器中所需的各个参数
(3)通过Constructor实例化对象
示例如下:
public static void main(String[] args) throws ClassNotFoundException{Class clazz = Class.forName("yongyou.User");//实例化一个User对象,默认是调用无参构造器User user1 = (User) clazz.newInstance();System.out.println(user1);//调用有参构造器Constructor constructor = clazz.getDeclaredConstructor(String.class, int.class);User user2 = (User)constructor.newInstance("张三", 18);System.out.println(user2);
}
输出结果:
User{name='null', age=0}
User{name='张三', age=18}
通过反射调用方法
通过反射,调用类中的方法,通过Method类来完成,步骤如下:
- 通过Class类的
getDeclaredMethod(String name, Class<?>... parameterTypes)
方法取得一个Method对象,name
是方法名,parameterTypes
是参数列表
2.获得Method对象后,让Method对象调用invoke(Object obj, Object... args)
方法,obj
是调用底层方法的对象,args
是方法调用的参数列表
示例如下:
public static void main(String[] args){Class clazz = Class.forName("yongyou.User");//根据方法名和参数列表得到方法Method setName = clazz.getDeclaredMethod("setName", String.class);Method setAge = clazz.getDeclaredMethod("setAge", int.class);User user1 = (User)clazz.newInstance();/*** param1:调用底层方法的对象* param2:用于方法调用的参数*/setName.invoke(user1,"DaMing");setAge.invoke(user1,20);System.out.println(user1);
}
运行结果如下:
User{name='DaMing', age=20}
对于方法Object invoke(Object obj, Object... args)
- Object对应原方法的返回值, 若原方法没有返回值, 此时返回null
- 若原方法为静态方法, 此时形参
obj
可以为null - 若原方法参数列表为空,则形参列表
args
为null - 若原方法访问权限为private, 则需要在调用 invoke() 方法前调用Method对象的 setAccessible(true) 方法, 即可访问权限为private的方法
通过反射操作属性
示例如下:
public static void main(String[] args){Class clazz = Class.forName("yongyou.User");//根据方法名和参数列表得到方法User user = (User) clazz.newInstance();Field name = clazz.getDeclaredField("name");Field age = clazz.getDeclaredField("age");//name,age字段为private,无法直接访问,因此需要调用setAccessible(true)使其可以被访问name.setAccessible(true);age.setAccessible(true);/*** param1:需要修改其字段的对象* param2:对象该字段的新值*/name.set(user,"LingLing");age.set(user,80);System.out.println(user);
}
运行结果:
User{name='LingLing', age=80}
视频传送:【狂神说Java】注解和反射
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- gitlab:提交本地项目到远程的只包含README的仓库
环境: GitLab Community Edition 11.6.1 1.前言 当我们进行项目开发时,常常先在本地创建一个项目,例如Spring Boot项目。当这个项目可以正常启动后,再上传到gitlab的项目上。这个时候,我们再gitlab上有一个project&am…...
2024/4/23 4:59:35 - 使用yarn install出现RequestError: read ECONNRESET
在使用yarn安装项目依赖包时,出现以下错误: 一般出现ECONNRESET错误会是网络问题,或者仓库有问题。使用排除法就能解决了。 使用淘宝镜像会下载流畅。 yarn config set registry https://registry.npm.taobao.org 就欧克了...
2024/4/25 1:06:41 - 由系统产生一个随机数,存入session中。提供8次机会猜测随机数的值,用户每次猜测数值以及与随机数比较的结果显示在输入框之上,如果猜出随机数,显示“恭喜你猜对了”,当8次机会用完还没有猜对,显示“猜
猜字游戏!由系统产生一个随机数,存入session中。提供8次机会猜测随机数的值,用户每次猜测数值以及与随机数比较的结果显示在输入框之上,如果猜出随机数,显示“恭喜你猜对了”,当8次机会用完还没有猜对… 输出效果: 代码如下: <% page import"…...
2024/4/17 20:55:37 - C语言版本数据结构01:简介
前言:从今天开始大家请原谅我不能再按照有顺序的章节来给大家更新知识博客了,是本人有原因,由于我在上学,自身学习编程的进度也在不断前进,大家学过编程的都知道学编程不是一蹴而就的事,所以有一些内容被落…...
2024/4/20 2:36:30 - Java通过socket接收指令,调用powershell的示例
不多说直接上代码,文末有整个demo的源码下载地址 socket服务端代码 public void run() {BufferedWriter writer null;InputStream inputStream null;try {// 设置连接超时5秒socket.setSoTimeout(5000);log.info("IDM连接成功");inputStream socket.g…...
2024/4/23 17:03:10 - Linux下新建用户并授予权限
ubuntu版本:18.04 目的:解决共用服务器环境冲突的问题,将环境配置到自己的文件夹下。 在home下创建文件夹用来安装自己的环境 sudo mkdir shenran退出base环境,进入root用户。 新建用户(这里新建的用户名是shenran)并设置密码。…...
2024/4/23 3:14:42 - .net 5使用quartznet包开发任务调度程序
安装quartznet包 添加任务调度类以及Hostedservice类 新建类HostedService,继承IHostedService接口 reocde是新的类,可以使用class就行public record HostedService:IHostedService{private SchedulerCenter schedulerCenterSchedulerCenter.GetSchedul…...
2024/4/23 14:31:14 - 使用docker安装Redis
文章目录安装命令安装bug参考地址安装命令 1、新建文件夹 ## 数据存放目录 mkdir -p /usr/local/redis/data ## 配置文件存放目录 mkdir -p /usr/local/redis/conf 2、增加配置文件redis.conf vi /usr/local/redis/conf/redis.conf ### 允许远程连接 #bind 127.0.0.1 protecte…...
2024/4/25 1:23:06 - Django 一些 简单 配置
urls.py 文件 """mysite URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/3.1/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2.…...
2024/4/23 5:15:56 - Ubuntu18.04 安装 Pycharm
Ubuntu18.04 安装 Pycharm一、下载anaconda二、 安装 Anaconda1)进入下载目录,首先,解压pycharm安装包2)打开终端,进入pycharm-community-2019.3.5/bin;3)执行pycharm.sh命令文件,开…...
2024/4/15 4:30:53 - STM32_HAL_IIC_ET5904调试记录
STM32_HAL_IIC_ET5904调试记录1.介绍2. 代码部分1.介绍 这个是一个通过IIC控制的LDO 两个输入 DVIN input voltage range from 0.6V to 2.0V AVIN input voltage range from 3.0 V to 5.5V 4个输出 ● LDO1/2 output voltage range from 0.6V to 1.8V with step 6mV ● LDO1/…...
2024/4/16 19:21:54 - 2021-11-04计算a+b的值
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a 0;int b 0;int sum 0;scanf("%d %d", &a, &b);sum a b;printf("sum %d\n", sum);return 0; }...
2024/4/15 4:30:43 - 阻燃电缆ZR,ZA,ZB,ZC分别是什么意思,有什么区别
阻燃电缆的主要特点是不燃烧,根据GB/T1880.3-2001,GB/T1830.3-2001《电线电缆测试方法》可分为A、B、C三种阻燃等级。即ZA、ZB、ZC。电缆型号前的ZR代表阻燃剂(未标注A、B、C级时,一般判定为C级),ZC代表C级阻燃剂。所以ZR和ZC是同…...
2024/4/15 4:31:03 - Hexagon GDB Debugger介绍(14)
Hexagon GDB Debugger介绍 (14)2.9.2 连续和单步调试2.9.2 连续和单步调试 连续意味着恢复程序执行,直到程序正常完成。 相比之下,单步调试意味着只执行程序的一个"step",其中“step”可能意味着一行源代码…...
2024/4/25 7:47:57 - Vue2.0精要版
https://www.runoob.com/vue2/vue-start.html 一、最简单使用vue的方法 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Vue 测试</title> <!-- 可直接引入js的方式。(但vue单独构建的项目好像很…...
2024/4/25 1:14:27 - Git修改项目路径,并保留提交历史
Git修改项目路径,并保留提交历史 1. git remote remove origin2. git remote add origin http://Robort.git3. git push http://Robort.git --all4. git push http://Robort.git --tags...
2024/4/25 8:19:16 - 小程序当中实现图片切换效果图
想要在微信小程序当中实现图片切换效果 autoplay"true"其意思为 是否自动切换 如果不想自动切换 则将true改成false indicator-dots"true"其意思为 图片切换底下的指示点其效果如下图 <swiper autoplay"true" indicator-dots"true&quo…...
2024/4/19 7:48:24 - 使用armDebian基本的操作方式
1、查看进程id pgrep ttnode 2、杀死进程 kill 1308 3、查看硬盘的分区 sudo fdisk -l 3、卸载文件卷 umount /dev/sda1 4、格式化 mkfs.vfat /dev/sda1 5、重启 reboot 6.创建挂载的文件夹 sudo mkdir <文件夹路径> 7。挂载操作 sudo mount /dev/sda1 <文件夹路径>…...
2024/4/7 0:56:15 - Hexagon GDB Debugger介绍(15)
Hexagon GDB Debugger介绍(15)2.9.3 中断2.9.4 停止和启动多线程程序2.9.3 中断 中断是由硬件或软件触发的异步处理器事件。 它们通常会导致处理器分支到称为中断向量的相关内存地址。 中断由唯一编号标识。 Hexagon 处理器支持 32 个中断,编…...
2024/4/20 10:30:34 - el-message修改样式
效果图: 代码如下: 给message起类名:...
2024/4/24 0:33:33
最新文章
- SpringBoot学习之Redis下载安装启动【Windows版本】(三十六)
一、下载Redis for Windows Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载安装包,下载地址:https://github.com/tporadowski/redis/releases 1、网站提供了安装包和免安装版本,这里我们直接选择下面的免安装版本 2、下载后的压缩包解压以后,如下…...
2024/4/25 9:03:29 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 第十二届蓝桥杯省赛真题(C/C++大学B组)
目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…...
2024/4/25 6:27:10 - GIS与数字孪生共舞,打造未来智慧场景
作为一名数字孪生资深用户,近日我深刻理解到GIS(地理信息系统)在构建数字孪生体中的关键作用。 数字孪生技术旨在构建现实世界的虚拟镜像,而GIS则是这一镜像中不可或缺的空间维度框架和导航灯塔。数字孪生的核心是通过数字化方式…...
2024/4/24 11:22:50 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/23 20:58:27 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/23 13:30:22 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/23 13:28:06 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/24 18:16:28 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/23 13:27:44 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/19 11:57:53 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/23 13:29:53 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/23 13:27:22 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/23 13:28:42 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/23 22:01:21 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/23 13:29:23 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/25 0:00:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/25 4:19:21 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/19 11:59:23 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/19 11:59:44 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/25 2:10:52 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/24 16:38:05 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/23 13:28:14 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/23 13:27:51 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/23 13:27:19 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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