??????? 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.tkk7.com/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.");
??? }
??}