Java虚拟机将结束生命周期:
1.执行System.exit()
2.程序正常执行结束
3.程序在执行过程中遇到了异常或错误而终止
4.操作系统出现错误而导致java虚拟机操作终止;
类操作:
1.加载:查找加载类的二进制数据,从硬盘加载到内存中。将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装在方法内的数据结构。
2.连接:1)验证:确保被加载类的正确性
2)准备:为类的静态变量分配内存,并将其初始化为默认值
3)解析:把类中的符号引用转化为直接引用。
3.初始化:为类的静态变量赋予正确的初始值。(我们用户赋予的值,不是默认值)。静态类的赋值顺序是自上而下的。
Java程序对类的使用方式:
1. 主动使用:java虚拟机事先必须在每个类或借口被java程序“首次主动使用”时才初始化他们
A.创建类的实例
B. 创建摸个类或接口的静态变量,或对该类变量赋值
C. 调用类的静态方法
D.反射
E. 初始化类的一个子类Class.forname()
F. Java虚拟机启动时被表明为启动类的类. 用java命令启动helo world
2. 被动使用。
下图是java加载过程
第一种是c++编写,其余是java编写。
数据源是(最好)单例模式的。& 用“&”表示,在xml文件的text(驱动配置)
扫描加注解方式可以加快开发速度。
Hibernate提供构造器一定也要记得提供一个无参构造器(无参就可以)。Ibaits要默认构造器
在action中,Struts2与spring注解方式@Controller @Scope(”prototype”)设置为后加的容易冲突。***要看相关知识。Struts2在接受一个请求时创建一个action,如果spring注释默认是单例模式。所以作用域更改为prototype。。。
Struts2 配置时不要忘记extends=struts-defalt。例如:拦截器的使用