與
C
或
C++
編寫的程序不同,
Java
程序并不是一個可執行文件,而是由許多獨立的類文件組成,每一個文件對應于一個
Java
類。此外,這些類文件并非立即全部都裝入內存,而是根據程序需要裝入內存。
ClassLoader
是
JVM
中將類裝入內存的那部分。而且,
Java ClassLoader
就是用
Java
語言編寫的。這意味著創建您自己的
ClassLoader
非常容易,不必了解
JVM
的微小細節。
Java
的
classloader
不但可以使你運行本地得
class
類
,
你也可以定制
classloader
運行來自遠程的字節代碼
.
ClassLoader
的基本目標是對類的請求提供服務。當
JVM
需要使用類時,它根據名稱向
ClassLoader
請求這個類,然后
ClassLoader
試圖返回一個表示這個類的
Class
對象。
通過覆蓋對應于這個過程不同階段的方法,可以創建定制的
ClassLoader
。通常當你需要動態加載資源的時候
,
你至少有三個
ClassLoader
可以選擇
:
1.??????
系統類加載器(應用類加載器)
(system classloader or application classloader)
2.??????
當前類加載器
3.??????
當前線程類加載器
第一種
:
系統類加載器
系統類加載器
(system classloader).
這個類加載器處理
-classpath
下的類加載工作
,
可以通過
ClassLoader.getSystemClassLoader()
方法調用
.
ClassLoader
下所有的
getSystemXXX()
的靜態方法都是通過這個方法定義的
.
在你的代碼中
,
你應該盡量少地調用這個方法
,
以其它的類加載器作為代理
.
否則你的代碼將只能工作在簡單的命令行應用中
,
這個時候系統類加載器
(system classloader)
是
JVM
最后創建的類加載器
.
一旦你把代碼移到
EJB, Web
應用或
Java Web Start
應用中
,
一定會出問題
.
Class.loadClass( String name, boolean resolve );
name
參數指定了
JVM
需要的類的名稱,該名稱以包表示法表示,如
Foo
或
? java.lang.Object
。
resolve
參數告訴方法是否需要解析類。在準備執行類之前,應考慮類解析。并不總是需要解析。如果
JVM
只需要知道該類是否存在或找出該類的超類,那么就不需要解析。
方法
defineClass
是
ClassLoader
的主要訣竅。
該方法接受由原始字節組成的數組并把它轉換成
Class
對象。原始數組包含如從文件系統或網絡裝入的數據。
defineClass
管理
JVM
的許多復雜、神秘和倚賴于實現的方面
--
它把字節碼分析成運行時數據結構、校驗有效性等等。不必擔心,您無需親自編寫它。事實上,即使您想要這么做也不能覆蓋它,因為它已被標記成最終的。
方法
findSystemClass
findSystemClass
方法從本地文件系統裝入文件。它在本地文件系統中尋找類文件,如果存在,就使用
defineClass
將原始字節轉換成
Class
對象,以將該文件轉換成類。當運行
Java
應用程序時,這是
JVM
正常裝入類的缺省機制
.
??
如果
ClassLoader
不能找到類,它會請求父代
ClassLoader
來執行此項任務。所有
ClassLoaders
的根是系統
ClassLoader
,它會以缺省方式裝入類
--
即,從本地文件系統。
方法
findLoadedClass
充當一個緩存
當請求
loadClass
裝入類時,它調用該方法來查看
ClassLoader
是否已裝入這個類,這樣可以避免重新裝入已存在類所造成的麻煩。應首先調用該方法。
讓我們看一下如何組裝所有方法。
loadClass
實現示例執行以下步驟:
(這里,我們沒有指定生成類文件是采用了哪種技術,它可以是從
Net
上裝入、或者從歸檔文件中提取、或者實時編譯。無論是哪一種,那是種特殊的神奇方式,使我們獲得了原始類文件字節。)
1.??
調用
findLoadedClass
來查看是否存在已裝入的類。
2.??
如果沒有,那么采用那種特殊的神奇方式來獲取原始字節。
3.??
如果已有原始字節,調用
defineClass
將它們轉換成
Class
對象。
4.??
如果沒有原始字節,然后調用
findSystemClass
查看是否從本地文件系統獲取類。
5.??
如果
resolve
參數是
true
,那么調用
resolveClass
解析
Class
對象。
6.??
如果還沒有類,返回
ClassNotFoundException
。
7.??
否則,將類返回給調用程序。
第二種選擇
:
當前上下文環境下的類加載器
.
BURS ????Business and User Requirement Specification
業務和用戶需求規格說明
CCB ??????Change Control Board
變更控制委員會
CI ??????? ?Configuration Item
配置管理項
CR ??????? ?Change Request
變更申請
CMM?????? Capability Maturity??Model
軟件能力成熟度模型
COQ ????? Cost Of Quality
質量成本
CUT ?????? Coding&Unit Test /Construct
編碼及單元測試
DD ? Detail Design
詳細設計
?
HLD? High Level Design
概要設計
LLD? Low Level Design
詳細設計
SD ????????System Design
系統設計
SRS ?????? System/Software Requirement Specification
軟件需求規格說明
UT Unit Testing
單元測試
IT Integration Test
集成測試
ST System Test
系統測試
PT Performance Test
性能測試
UAT ?????? User Acceptance Test
用戶驗收測試
FURPS+
Functionality, Usability, Reliability, Performance,Supportability, + Localizability, Portability
功能性,可用性,可靠性,性能,支持性+
本地化,可移植性
IC (IGC)
Inter-group Coordination ( CMM Level 3 KPA ) ???
組間協調(
CMM
第三級的
KPA
)
ISM
Integrated Software Management ( CMM Level 3 KPA )
集成軟件管理(
CMM
第三級的
KPA
)
?
KPA Key Process Area
關鍵過程區域
LC Lifecycle
生命周期
?
OOA Object Oriented Analysis
面對對象分析
OOD Object Oriented Design
面向對象設計
OPD
?Organization Process Definition ( CMM Level 3 KPA )
組織過程定義(
CMM
第三級的
KPA
)
OPF
?Organization Process Focus ( CMM Level 3 KPA )
組織過程焦點(
CMM
第三級的
KPA
)
OSSP
Organization Standard Software Process
組織標準軟件過程
PCB
Process Capability??Baselines
過程能力基準
PCM
Process Change??Management ( CMM Level 5 KPA )
過程更改管理(
CMM
第五級的
KPA
)
PDSP
Project's Defined??Software Process
項目定義的軟件過程
PI
Process Improvement
過程改進
PMR
Project Management Review
項目管理評審
PM
Project Manager
項目經理
PP
Project Planning
項目策劃
PR
Peer Reviews ( CMM Level 3 KPA)
同行評審(
CMM
第三級的
KPA
)
QC
Quality Champion
項目
SQA
人員
QP
Quality Plan
質量計劃
QPM
Quantitative Process Management ( CMM Level 4 KPA )
定量過程管理(
CMM
第四級的
KPA
)
RA
Requirement Analysis
需求分析
RCA
Root Cause Analysis
根本原因分析
RFP
Request for Proposal
提議和請求
RM
Requirements Management ( CMM Level 2 KPA )
需求管理(
CMM
第二級的
KPA
)
ROI
Return On Investment
投資收益率
SCCB
Software Configuration Control Board
軟件配置控制組
SCM
Software Configuration Management ( CMM Level 2 KPA)
軟件配置管理(
CMM
第二級的
KPA
)
SCMP
?Software Configuration Management Plan
軟件配置管理計劃
SDLC
Software Development Life Cycle
軟件開發生命周期
SEI
Software Engineering Institute
軟件工程研究所
SEPG
Software Engineering??Process Group
軟件工程過程組
SMR ???? Senior Management??Review
高級管理評審
SPC ?????? Statistical Process Control
統計過程控制
SPE? Software Product Engineering ( CMM Level 3 KPA )
軟件產品工程(
CMM
第三級的
KPA
)
SPI Software Process??Improvement
軟件過程改進
SPP ?????? Software Project Plan ( CMM Level 2 KPA )
軟件項目策劃(
CMM
第二級的
KPA
)
SPTO ???? Software Project Tracking & Oversight
軟件項目跟蹤和監督
SQA ????? Software Quality??Assurance??( CMM Level 2 KPA )
軟件質量保證(
CMM
第二級的
KPA
)
SQM ????? Software Quality Management
軟件質量管理
DP ? Defect Prevention ( CMM Level 5 KPA )
缺陷預防
(CMM
第五級的
KPA)
SSD ?????? System Sequence Diagram
系統時序圖
SSM ????? Software Subcontract Management??( CMM Level 2 KPA )
軟件子合同管理(
CMM
第二級的
KPA
)
TCM ????? Technology Change Management
技術改革管理
TP ? Training Plan / Training Program??( CMM Level 3 KPA )
培訓大綱(
CMM
第三級的
KPA
)
TQM ????? Total Quality Management
總質量管理
?
UC ? Use Case
用例
UCD Use Case Diagram
用例圖
WBS Work Breakdown Structure 工作分解結構
自我介紹應該寫得簡潔易懂,應首先列出必要的項目,然后按照各項進行詳述。
新入社員の自己紹介
會社員 近藤晴次
このたび入社いたしました近藤晴次(はるじ)でございます。はるは晴天の晴、次は「つぎの次です。どうぞよろしくご指導をお願いいたします。
私の別名は「コンドもスレ次」といいまして、これは中學
?
高校
?
大學を通しての呼び名でした。
この名の起こりですが、學生時代を通じて試験の成績がどんじりから二番目か三番目という、スレスレの次と、いつも判子で押したような結果だったからです。
もちろんこれで満足していたわけではありませんが、そのうち、これは運というよりも名人蕓だと、自分ながら感心するほどになり、こころよくその呼び名に明るい返事をするようになってしまっていました。
しかし、一度も裏口入學などのお情けにすがろうなどと考えたことがありませんでした。
いつも妙な自信とスリルが同居しているうちに「スレ次」」の結果が出ていたからです。
コンドの入社試験の結果も、採用、不採用よりも、「コンドもレス次」であるかないかのほうが気になりました。
そのうちに、人事課でおたずねしてみたいと思っております。
先輩の中には○○大出身の方が多いと聞いておりますが、私のような妙な、世話のやける後輩の入社にお困りでしょうが、よろしくお願いします。本社はかねがね私の憧れの的(まと)でありました。
入社しましたからには、精いっぱいやってみたいと存じております。
産地は九州長崎、趣味は音楽、スポーツですが自分では何もやりません。他人がやるのを見たり、聞いたりするだけです。
一言で言えば、趣味は「ヤジ馬」です。でもスジの通った、罪の無い「ヤジ馬」です。
あとはご覧のとおりの田舎者___
これで全部です。よろしくお願いします。
(譯文)
公司職員 近藤晴次
我是新進公司的近藤晴次。晴是晴天的晴,次是下次的次,請多指教。
我的別名是"這次也差一點兒",這是我從中學、高中直到大學一貫的稱呼。
關于這個名字的起因,是因為在整個學生時代,我的考試成績總是倒數第二三名,總是差一點就倒數第一。
當然,對這樣的結果我并不滿足。但是漸漸地我暗自感嘆,與其說這是命運,不如說是我的一種特有能力,因此對于這個別名我也就欣然接受了。
成績不好,但卻從來沒有考慮過通過人情走后門入學。因為總是有一種奇妙的自信與驚險同在,所以也就出現了"差一點兒"這樣的結果。
這次公司應聘,比起錄用與否,我更關心這次是否"也差一點兒"。對比,我想事后去詢問一下人事科。
聽說在前輩之中,有很多人畢業于○○大學。像我這樣奇怪的、給人添麻煩的晚輩進入公司,肯定會給各位帶來不便,還請多多關照。進入本公司工作,是我很久以來的憧憬。我一定精神百倍地工作。
我的產地是九州長崎,愛好音樂、體育。但是我自己卻什么也做不來,只是看別人做。
總之一句話,我的愛好是起哄看熱鬧。是守規守法地看熱鬧。
此外,如大家所見,我是一個鄉下人。__這就是我的全部。請多多關照。
參考資料:實用日語寫作教程
這幾天嘗試在 Eclipse 上配置了 JSP 開發環境,不僅可以高亮顯示 jsp 語法部分,還能在 eclipse IDE 上調試 jsp 頁面。
和目前項目要求一樣,所用到的軟件列表如下:
1 , eclipse-SDK-3.1M7-win32
? 在 http://www.eclipse.org/downloads/index_topic.php 上下載相應版本
2 , wtp-R-1.0.3-200607290929
? 在 http://download.eclipse.org/webtools/downloads/ 下載對應 eclipse3.1 的應該是 R1.0 版本
? 另根據 WTP 要求,還須下載
JEM-SDK-1.1.0.1.zip
,
GEF-SDK-3.1.1.zip
,
emf-sdo-xsd-SDK-2.1.2.zip
等
3 , tomcatPluginV3
? http://www.sysdeo.com/eclipse/tomcatplugin
上可下載
4 , Tomcat 5.0
在
http://tomcat.apache.org/
下載
5
,
j2sdk1.4.2
安裝步驟:
1 、 Java 環境安裝: 配置 JAVA_HOME , PATH
2 、 Tomcat 環境安裝: 配置 TOMCAT_HOME , CATALINA_HOME
3 、 Eclipse 3.1 解壓縮
4 、 Eclipse 幾個插件解壓縮 [wtp-R-1.0.3-200607290929 , JEM-SDK-1.1.0.1.zip , GEF-SDK-3.1.1.zip , emf-sdo-xsd-SDK-2.1.2.zip , tomcatPluginV3 ]
5 、 lomboz 插件安裝 [ 可選 ]
網上很多配置用到了 lomboz 插件: http://forge.objectweb.org/project/showfiles.php?group_id=97 ,我沒有安裝不知道有什么影響。
測試例子:
1
,新建工程:選擇
Dynamic Web Project
,點
Next?
2 ,輸入 project name ,點 Next??
3 ,點擊 Finish ,然后點擊項目 TestJSP 新建 JSP ,點擊 Next
4
,輸入
index.jsp
建在
webContent
目錄下,點擊
Next?
5 ,因為用于測試,使用 jsp 模板即可,點擊 Finish
6 ,編輯 index.jsp ,添加點測試信息 Testing...
7 ,右鍵點擊 index.jsp 選擇 Run as->Run on server
8 ,選擇 Tomcat5
9 ,設定 server 相關參數
10 ,點擊 Finish 。 Server 就會啟動,然后轉到 index 頁面。到此就成功配置完畢。
最近又開始要使用
JSP
,于是寫下這些便于將來參考!
Tomcat 5.5
開發
Servlet
和
JavaBean
的配置
1
、
JDK
安裝到
C:\jdk
JAVA_HOME=C:\jdk
PATH=C:\jdk
2
、
Tomcat
安裝到
C:\Tomcat,
配置環境變量如下:
CATALINA_HOME=C:\Tomcat
TOMCAT_HOME=C:\Tomcat
然后修改環境變量中的
CLASSPATH
,把
Tomat
安裝目錄下的
common\lib
下的
servlet-api.jar
加到
CLASSPATH
中去,修改后的
CLASSPATH
為:
C:\Tomcat\common\lib\servlet-api.jar
第
1
步:建立自己的開發目錄
1.
到
Tomcat
的安裝目錄下
webapps
目錄
2.
在
webapps
目錄下新建一個目錄
myapp
3.myapp
下新建一個目錄
WEB-INF
(目錄名稱是區分大小寫)
4.WEB-INF
下新建一個文件
web.xml
,將
tomcat\conf\web.xml
直接拷貝過來就
OK
第
2
步:建立自己的
Servlet
目錄
1.
新建
servlet
程序,文件名為
Test.java
,內容如下:
package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ PrintWriter out=response.getWriter(); out.println(" This is a servlet test.");
out.flush();
}
}
2 .
編譯
Test.java
3 .
將
Test.class
剪切到
..\webapps\myapp\WEB-INF\classes\test\
下
4 .
修改
webapps\myapp\WEB-INF\web.xml
,改動
servlet
和
servlet-mapping
的內容
:
<servlet-name>Test</servlet-name>
<servlet-class>test.Test</servlet-class>
<servlet-mapping>
??????? <servlet-name>Test</servlet-name>
??????? <url-pattern>/test</url-pattern>
</servlet-mapping>
5 .
啟動
Tomcat
,
http://localhost:8080/myapp/Test
看到輸出
This is a servlet test.
說明編寫的
servlet
成功了。
第
3
步:建立自己的
Bean
1.
新建一個
java
程序
TestBean.java
,內容如下:
?package test;
public class TestBean{
public String name = "TestBean Testing ";
public String test()
{ return this.name; }
}
2 .
編譯
TestBean.java
產生
TestBean.class
3 .
將
TestBean.class
文件剪切到
\webapps\myapp\WEB-INF\classes\test
下,
4 . \myapp
目錄下新建一個
TestBean.jsp
文件,文件內容為:
<html><body>
<jsp:useBean id="tb" scope="page" class="test.TestBean" />
This is <%=tb.test()%>
</body></html>
5
重啟
Tomcat
,啟動瀏覽器,輸入
http://localhost:8080/myapp/TestBean.jsp
如果看到輸出
This is TestBean Testing
就說明編寫的
Bean
成功了
IBM-developerworks
http://www-128.ibm.com/developerworks/cn/
ITPUB
http://www.itpub.net/
51Testing
http://www.51testing.com/
Sun Forum
http://gceclub.sun.com.cn/NASApp/sme/controller/techsubcatquery?cat_id=0301
Matrix
http://www.matrix.org.cn/
JR
http://www.javaresearch.org/
Dev2Dev
http://dev2dev.bea.com.cn/index.html
JCalssRoom
http://japanese.jikx.com/bbs/list.asp?boardid=32
CoffeeJapanese
http://coffeejp.com/bbs/discuz.php
Linux MAN
http://man.lupaworld.com/
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |