内容简介: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:描述注解是否被子类继承
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
WWW信息体系结构(影印版第2版)
Louis Rosenfeld / 清华大学出版社 / 2003-6 / 49.8
如今的网站和内联网已经变得比以前越来越大,越来越有价值,而且越来越复杂,同时其用户也变得更忙,也更加不能容忍错误的发生。数目庞大的信息、快速的变化、新兴的技术和公司策略是设计师、信息体系结构构建师和网站管理员必须面对的事情,而这些已经让某些网让看起来像是个快速增长却规划很差的城市——到处都是路,却无法导航。规划精良的信息体系结构当前正是最关键性的。 本书介绍的是如何使用美学和机械学的理念创建......一起来看看 《WWW信息体系结构(影印版第2版)》 这本书的介绍吧!