内容简介:java文件在计算机中的三个阶段
定时任务
开启定时任务
@EnableScheduling
在spring boot启动类加上,表示开启定时任务
设置定时任务
@Scheduled
设置需要定时执行的方法
参数cron
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
second | 0-59 | ,-*/ |
minute | 0-59 | ,-*/ |
hour | 0-23 | ,-*/ |
day of month | 1-31 | ,-*/?LWC |
month | 1-12 | ,-*/ |
day of week | 0-7(0和7都是星期天) | ,-*/?LW# |
特殊字符 | 表示含义 |
---|---|
, | 枚举 |
- | 区间 |
* | 任意 |
/ | 步长 |
? | 日/星期冲突匹配 |
L | 最后 |
W | 工作日 |
C | 和calendar联系后计算的值 |
# | 星期,4#2表示的是第二个星期四 |
例子1
//周五的每分钟第0,第1,第2,第3秒都运行一次 @Scheduled(cron = "0,1,2,3 * * * * 5") public void aa() {...}
例子2
//周五的每分钟,从零秒启动,每四秒都运行一次 @Scheduled(cron = "0/4 * * * * 5") public void aa() {...}
反射
反射机制:将类的各个组成部分封装成对象
java文件在计算机中的三个阶段
Source 源代码阶段 | Class 类对象阶段 | Runtime 运行阶段 |
---|---|---|
将 java 文件通过javac编译成class文件,通过ClassLoader(类加载器)将class字节码文件加载进内存, | 通过Class类对象对该类的成员变量、构造方法、成员方法进行分类,分别加载进fields、constructors、methods进行分类 | 创建对象 |
-
获取成员变量
- Field[] getFields() 获取public修饰的成员变量
- Field getField(String name) 获取指定名称的public修饰的成员变量
- Field[] getDeclaredFields() 获取所有的成员变量
- Field[] getDeclaredField(String name) 获取指定名称的成员变量
-
获取成员方法
- Constructor<?>[] getConstructors()
-
Constructor
getConstructor(类<?>... parameterTypes) -
Constructor
getDeclaredConstructor(类<?>... parameterTypes) - Constructor<?>[] getDeclaredConstructors()
-
获取成员方法
- Method[] getMethods()
- Method getMethod(String name,类<?>... parameterTypes)
- Method[] getDeclaredMethods()
- Method getDeclaredMethod(String name,类<?>... parameterTypes)
-
获取类名
- String getName()
例子1
//获取字节码文件的class类对象 Class<Person> personClass = Person.class; //获取public修饰的成员变量 Field field = personClass.getField("a"); Person person = new Person(); Object o = field.get(person); System.out.println(o);
例子2
//获取字节码文件的class类对象 Class<Person> personClass = Person.class; //获取protected的成员变量 Field d = personClass.getDeclaredField("d"); Person person = new Person(); //忽略访问权限修饰符安全检查, d.setAccessible(true);//暴力反射 Object o = d.get(person); System.out.println(o);
获取Class对象的方式
-
Class.forName("全类名");将字节码文件加载进内存,返回Class对象
-
类名.class;通过类名的属性class获取
-
对象.getClass();getClass()方式在Object类中定义着。
同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取class对象都是同一个。
注解
注解的分类:
- 编写文档:通过代码里标识的元数据生成文档
- 代码分析:通过代码里标识的元数据对代码进行分析
- 编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查
jdk内置注解:
- @Override:检查该数据标识的方法是否是继承自父类(接口)
- @Deprecated:将该注解标注的内容,已过时
- @SuppressWarnings:压制警告
自定义注解:
-
格式:
元注解
public @interface 注解名称{}
-
本质:注解本质就是一个接口,该接口默认继承Annotation接口
-
属性: 接口中可以定义的成员方法
-
要求:
-
数据返回值类型
- 基本数据类型
- String
- 枚举
- 注解
- 以上类型的数组
-
数据返回值类型
-
要求:
-
元注解:用于描述注解的注解
- @Target: 描述注解能够作用的位置
- @Retention: 描述注解能保留的阶段
- @Documented: 描述注解是否被抽取到api文档中
- @Inherited:描述注解是否被子类继承
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Facebook Effect
David Kirkpatrick / Simon & Schuster / 2010-6-8 / USD 26.00
《Facebook 效应》的作者近距离地采访了与Facebook相关的人士,其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。作者以其细腻的笔触,精巧的叙事结构,解密了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的......一起来看看 《The Facebook Effect》 这本书的介绍吧!