Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。
Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。
Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。
Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就可以利用匿名类。
Anonymous inner classes 匿名内部类:匿名内部类是没有类名的局部内部类。
API 应用程序接口:提供特定功能的一组相关的类和方法的集合。
Array 数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。在Java中作为对象处理。
Automatic variables 自动变量:也称为方法局部变量method local variables,即声明在方法体中的变量。
Base class 基类:即被扩展继承的类。
Blocked state 阻塞状态:当一个线程等待资源的时候即处于阻塞状态。阻塞状态不使用处理器资源
Call stack 调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。
Casting 类型转换 :即一个类型到另一个类型的转换,可以是基本数据类型的转换,也可以是对象类型的转换。
char 字符:容纳单字符的一种基本数据类型。
Child class 子类:见继承类Derived class
Class 类:面向对象中的最基本、最重要的定义类型。
Class members 类成员:定义在类一级的变量,包括实例变量和静态变量。
Class methods 类方法:类方法通常是指的静态方法,即不需要实例化类就可以直接访问使用的方法。
Class variable 类变量:见静态变量Static variable
Collection 容器类:容器类可以看作是一种可以储存其他对象的对象,常见的容器类有Hashtables和Vectors。
Collection interface 容器类接口:容器类接口定义了一个对所有容器类的公共接口。
Collections framework 容器类构架:接口、实现和算法三个元素构成了容器类的架构。
Constructor 构造函数:在对象创建或者实例化时候被调用的方法。通常使用该方法来初始化数据成员和所需资源。
Containers容器:容器是一种特殊的组件,它可以容纳其他组件。
Declaration 声明:声明即是在源文件中描述类、接口、方法、包或者变量的语法。
Derived class 继承类:继承类是扩展继承某个类的类。
Encapsulation 封装性:封装性体现了面向对象程序设计的一个特性,将方法和数据组织在一起,隐藏其具体实现而对外体现出公共的接口。
Event classes 事件类:所有的事件类都定义在java.awt.event包中。
Event sources 事件源:产生事件的组件或对象称为事件源。事件源产生事件并把它传递给事件监听器event listener*。
Exception 异常:异常在Java中有两方面的意思。首先,异常是一种对象类型。其次,异常还指的是应用中发生的一种非标准流程情况,即异常状态。
Extensibility扩展性:扩展性指的是面向对象程序中,不需要重写代码和重新设计,能容易的增强源设计的功能。
Finalizer 收尾:每个类都有一个特殊的方法finalizer,它不能被直接调用,而被JVM在适当的时候调用,通常用来处理一些清理资源的工作,因此称为收尾机制。
Garbage collection 垃圾回收机制:当需要分配的内存空间不再使用的时候,JVM将调用垃圾回收机制来回收内存空间。
Guarded region 监控区域:一段用来监控错误产生的代码。
Heap堆:Java中管理内存的结构称作堆。
Identifiers 标识符:即指定类、方法、变量的名字。注意Java是大小写敏感的语言。
Import statement 引入语法:引入语法允许你可以不使用某个类的全名就可以参考这个类。
Inheritance 继承:继承是面向对象程序设计的重要特点,它是一种处理方法,通过这一方法,一个对象可以获得另一个对象的特征。
Inner classes 内部类:内部类与一般的类相似,只是它被声明在类的内部,或者甚至某个类方法体中。
Instance 实例:类实例化以后成为一个对象。
Instance variable 实例变量:实例变量定义在对象一级,它可以被类中的任何方法或者其他类的中方法访问,但是不能被静态方法访问。
Interface 接口:接口定义的是一组方法或者一个公共接口,它必须通过类来实现。
Java source file Java源文件:Java源程序包含的是Java程序语言计算机指令。
Java Virtual Machine (JVM) Java虚拟机:解释和执行Java字节码的程序,其中Java字节码由Java编译器生成。
javac Java编译器:Javac是Java编译程序的名称。
JVM Java虚拟机:见Java虚拟机
Keywords 关键字:即Java中的保留字,不能用作其他的标识符。
Layout managers 布局管理器:布局管理器是一些用来负责处理容器中的组件布局排列的类。
Local inner classes 局部内部类:在方法体中,或者甚至更小的语句块中定义的内部类。
Local variable 局部变量:在方法体中声明的变量
Member inner classes 成员内部类:定义在封装类中的没有指定static修饰符的内部类。
Members 成员:类中的元素,包括方法和变量。
Method 方法:完成特定功能的一段源代码,可以传递参数和返回结果,定义在类中。
Method local variables 方法局部变量:见自动变量Automatic variables
Modifier 修饰符:用来修饰类、方法或者变量行为的关键字。
Native methods 本地方法:本地方法是指使用依赖平台的语言编写的方法,它用来完成Java无法处理的某些依赖于平台的功能。
Object 对象:一旦类实例化之后就成为对象。
Overloaded methods 名称重载方法:方法的名称重载是指同一个类中具有多个方法,使用相同的名称而只是其参数列表不同。
Overridden methods 覆盖重载方法:方法的覆盖重载是指父类和子类使用的方法采用同样的名称、参数列表和返回类型。
Package 包:包即是将一些类聚集在一起的一个实体。
Parent class 父类:被其他类继承的类。也见基类。
Private members 私有成员:私有成员只能在当前类被访问,其他任何类都不可以访问之。
Public members 公共成员:公共成员可以被任何类访问,而不管该类属于那个包。
Runtime exceptions 运行时间异常:运行时间异常是一种不能被你自己的程序处理的异常。通常用来指示程序BUG。
Source file 源文件:源文件是包含你的Java代码的一个纯文本文件。
Stack trace 堆栈轨迹:如果你需要打印出某个时间的调用堆栈状态,你将产生一个堆栈轨迹。
Static inner classes 静态内部类:静态内部类是内部类最简单的形式,它于一般的类很相似,除了被定义在了某个类的内部。
Static methods 静态方法:静态方法声明一个方法属于整个类,即它可以不需要实例化一个类就可以通过类直接访问之。
Static variable 静态变量:也可以称作类变量。它类似于静态方法,也是可以不需要实例化类就可以通过类直接访问。
Superclass 超类:被一个或多个类继承的类。
Synchronized methods 同步方法:同步方法是指明某个方法在某个时刻只能由一个线程访问。
Thread 线程:线程是一个程序内部的顺序控制流。
Time-slicing 时间片:调度安排线程执行的一种方案。
Variable access 变量访问控制:变量访问控制是指某个类读或者改变一个其他类中的变量的能力。
Visibility 可见性: 可见性体现了方法和实例变量对其他类和包的访问控制。
摘要: 作为测试,我们新建一个TUser对象,其image属性中,保存了一个图片文件的二进制内容。而其resume属性,我们以一个简单的字符串作为填充。
1
TUser user
=
new
TUser();
...
阅读全文
1. Assigned
主键由应用逻辑产生,数据交由Hibernate保存时,主键值已经设置完毕,无需Hibernate干预。
2. hilo
通过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态.
3. seqhilo
与hilo类似,通过hi/lo算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。
4. increment
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。
5. identity
采用数据库提供的主键生成机制,如SQL Server, MySQL中的自增主键生成机制。
6. sequence
采用数据库提供的sequence机制生成主键.如Oralce Sequence.
7. native
由Hibernate根据数据库适配器中的定义,自动采用identity, hilo, sequence的其中一种作为主键生成方式。
8. uuid.hex
由Hibernate基于,28位惟一值产生算法,根据当前设备IP,时间,JVM启动时间,内部自增量等4个参数生成十六进制数值(编码后以长度为32位的字符串表示)作为主键。这种算法在最大程度上保证了产生ID的惟一性,即使是在多实例并发运行的情况下。当然,重复的概率在理论上依然存在,只是实在过于渺茫(可能数万年才出现一次)。一般而言,利用uuid.hex方式生成主键将提供最好的数据插入性能和数据库平台适应性。
9. uuid.string·
与uuid.hex类似,只是生成的主键未进行编码(长度16位)。在某些数据库中可能出现问题(如PostgreSQL )。
10. foreign
使用外部表的字段作为主键,此类主键生成机制我们将在数据关联部分结合实例进行讲解。
11. select
Hibernate 3中新引入的主键获取机制,主要针对遗留系统的改造工程。在一些早期系统中,主键可能依赖触发器生成,即当数据库发生insert操作时,通过触发器捕获这一操作,并为主键赋值。此时,我们就必须在插入数据之后,再次通过某一识别字段读取己插入的数据,获取其主键数据。
<转自:深入浅出hibernate>
在用Eclipse新建Web Project时总是会有如图的目录结构,而在我们部署自己的网站时往往会将我们所建立的文件夹部署为网站的根目录,这是不对的,会使jsp文件找不到import语句导入的类,正确的部署应该是把WebRoot部署为网站的根目录,另外由于Eclipse中有增加用户库的功能,因此往往会导致我们没有把全部需要的jar文件都导入lib包中,从而使jsp文件运行时出错。另外,在配置jsp运行环境时一定要将jdk目录下的dt.jar和tools.jar加入classpath变量中。
转自:http://www.blogjava.net/rickhunter/articles/28133.html
1、 Log4j是什么?
Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧:
http://jakarta.apache.org/log4j
。
2、Log4j的概念
Log4j中有三个主要的组件,它们分别是
Logger、Appender和Layout,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。有一个Logger称为Root,它永远存在,且不能通过名字检索或引用,可以通过Logger.getRootLogger()方法获得,其它Logger通过 Logger.getLogger(String name)方法。
Appender则是用来指明将所有的log信息存放到什么地方,Log4j中支持多种appender,如
console、files、GUI components、NT Event Loggers等,一个Logger可以拥有多个Appender,也就是你既可以将Log信息输出到屏幕,同时存储到一个文件中。
Layout的作用是控制Log信息的输出方式,也就是格式化输出的信息。
Log4j中将要输出的Log信息定义了5种级别,依次为DEBUG、INFO、WARN、ERROR和FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码,这点实在是方便啊。
3、Log4j的配置文件
虽然可以不用配置文件,而在程序中实现配置,但这种方法在如今的系统开发中显然是不可取的,能采用配置文件的地方一定一定要用配置文件。Log4j支持两种格式的配置文件:XML格式和Java的property格式,本人更喜欢后者,首先看一个简单的例子吧,如下:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=
100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
首先,是设置root,格式为 log4j.rootLogger=[level],appenderName, ...,其中level就是设置需要输出信息的级别,后面是appender的输出的目的地,appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
配置日志信息输出目的地Appender,其语法为
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN
Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:
2002年10月18日
22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
4、Log4j在程序中的使用
要在自己的程序中使用Log4j,首先需要将commons-logging.jar和logging-log4j-1.2.9.jar导入到构建路径中。然后再将log4j.properties放到src根目录下。这样就可以在程序中使用log4j了。在类中使用log4j,
首先声明一个静态变量
Logger logger=Logger.getLog("classname");现在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一个小例子:
import com.foo.Bar;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class MyApp {
static Logger logger = Logger.getLogger(MyApp.class.getName());
public static void main(String[] args) {
// BasicConfigurator replaced with PropertyConfigurator.
PropertyConfigurator.configure(args[0]);
logger.info("Entering application.");
Bar bar = new Bar();
bar.doIt();
logger.info("Exiting application.");
}
}