国产精品色无码视频,国产av毛片影院精品资源,亚洲人成网站77777·c0m,囯产av无码片毛片一级,夜夜操www99视频,美女白嫩胸交在线观看,亚洲a毛片性生活

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 報告體會 > 心得體會 > java基礎(chǔ)學(xué)習(xí)心得

java基礎(chǔ)學(xué)習(xí)心得

網(wǎng)站:公文素材庫 | 時間:2019-05-17 11:25:07 | 移動端:java基礎(chǔ)學(xué)習(xí)心得
第一篇:java學(xué)習(xí)需要什么基礎(chǔ)

java學(xué)習(xí)需要什么基礎(chǔ)

隨著java這種語言的廣泛運用,越來越多從事開發(fā)的人員開始學(xué)習(xí)接觸這門課程,那么,java學(xué)習(xí)需要什么基礎(chǔ)?java剛剛?cè)腴T應(yīng)該接觸哪些知識呢?java入門應(yīng)該學(xué)習(xí)什么內(nèi)容呢?

首先要說明的,java有三個大的方向(j2se,j2me,j2ee),走不同的方向可能學(xué)的技術(shù)和要花費的時間可能有所不同。我是搞m.hmlawpc.como

{

public static void main(string[] args)

{

int x= 7;

//邏輯運算符用于連接boolean類型的表達(dá)式。

//x>3 & x<6 = true & true = true;

/*

true & true = true;

true & false = false;

false & true = false;

false & false = false;

& : 只要兩邊的boolean表達(dá)式結(jié)果,有一個為false。那么結(jié)果就是false。只有兩邊都為true,結(jié)果為true。

true | true = true;

true | false = true;

false | true = true;

false | false = false;

| : 兩邊只要有一個為true,結(jié)果為true。

只有兩邊都有false,結(jié)果為false。

^ : 異或;就是和|有點不一樣。當(dāng)true ^ true = false;

true ^ true = false;

true ^ false = true;

false ^ true = true;

false ^ false = false;

^ : 兩邊相同結(jié)果是false。

兩邊不同結(jié)果是true。

&和&&的特點:

&:無論左邊是true是false。右邊都運算。

&&:當(dāng)左邊為false時,右邊不運算。

|:兩邊都參與運算。

||:當(dāng)左邊為true。右邊不運算。

int n = 3,m = 8;

system.out.println("n="+n+",m="+m);

1,通過第三方變量。

/*int temp; temp = n; n = m; m = temp;

2不用第三方變量。

11 = 3 +8; 3 = 11 - 8; 8 = 11 - 3; n = n + m;//如果n和m的值非常大,容易超出int范圍。 m = n - m;

3.用^來交換

}

} n = n - m; n = n ^ m; m = n ^ m;//(n^m)^m; n = n ^ m;//n ^ (n ^ m) system.out.println("n="+n+",m="+m);

if和sm.hmlawpc.comport =”java.util.*” %>;

session可以不賦值,默認(rèn)為true,如果session=”false”,則在jsp頁面中,隱含的變量session就不能使用。

3. 請求控制器結(jié)構(gòu)(request controller)

也被稱之為jsp model 2 architecture

這種途徑涉及到使用一個servlet或一個jsp作為一個應(yīng)用程序或一組頁面的入口點。

為創(chuàng)建可維護(hù)的jsp系統(tǒng),request controller是最有用的方式之一。

不是jsp,而是java類才是放置控制邏輯的正確的地方。

請求控制器的命名模式為: xxxcontroller.jsp

請求控制器類的命名模式為: xxxrequestcontroller

2.jsp中的javabean

jsp三種bean的類型

1) 頁面bean

2) 會話bean

3) 應(yīng)用bean

大多數(shù)的系統(tǒng)會使用一個會話bean來保持狀態(tài),而對每一個頁面使用一個頁面bean 來對復(fù)雜的數(shù)據(jù)進(jìn)行表示。

頁面bean是一個模型,而jsp是一個視圖。

3.custom tag

bean是信息的攜帶者,

而tag更適用于處理信息。

標(biāo)記庫包含一個標(biāo)記庫描述符(tld)和用于實現(xiàn)custom tag的java類

在翻譯階段,jsp容器將使用tld來驗證頁面中的所有的tag是否都被正確的使用。

標(biāo)記處理程序只是一個簡單的適配器,而真正的邏輯是在另一個類中實現(xiàn)的,標(biāo)記處理程序只是提供了一個供其他的可復(fù)用的類的jsp接口

servlet

1.servletconfig

&#61548; 一個servletconfig對象是servlet container在servlet initialization的時候傳遞給servlet的。

servletconfig包涵 servletcontext 和 一些 name/value pair (來自于deployment descriptor)

&#61548; servletcontext接口封裝了m.hmlawpc.coml就是m.hmlawpc.coml

1.xml基礎(chǔ)知識

1. 一個xml文檔可以分成兩個基本部分:

首部( header )

內(nèi)容( content )

2. xml名字空間規(guī)范中指定:

xml文檔中的每一個元素都處在一個名字空間中;如果沒有指定的名字空間,缺省的名字空間就是和該元素相關(guān)聯(lián)的名字空間。

3. a document that is m.hmlawpc.coml.sax.reader

/|

org.xm.l.sax.xmlreader

/|

org.apche.xerces.parsers.saxparser

2.m.hmlawpc.comlns:xsd1="http://example.com/stockquote.xsd"

xmlns:soap="http://schemas.xmlsoap.org/m.hmlawpc.comlschema">;

<element name="tradepricerequest">;

<complextype>;

<all>;

<element name="tickersymbol" type="string"/>;

</all>;

</complextype>;

</element>;

<element name="tradeprice">;

<complextype>;

<all>;

<element name="price" type="float"/>;

</all>;

</complextype>;

</element>;

</schema>;

</types>;

<message name="getlasttradepriceinput">;

<part name="body" element="xsd1:tradepricerequest"/>;

</message>;

<message name="getlasttradepriceoutput">;

<part name="body" element="xsd1:tradeprice"/>;

</message>;

<porttype name="stockquoteporttype">;

<operation name="getlasttradeprice">;

<input message="tns:getlasttradepriceinput"/>;

<output message="tns:getlasttradepriceoutput"/>;

</operation>;

</porttype>;

<binding name="stockquotesoapbinding"

type="tns:stockquoteporttype">;

<soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/>;

<operation name="getlasttradeprice">;

<soap:operation

soapaction="http://example.com/getlasttradeprice"/>;

<input>;

<soap:body use="literal"/>;

</input>;

<output>;

<soap:body use="literal"/>;

</output>;

</operation>;

</binding>;

<service name="stockquoteservice">;

<documentation>;my first service</documentation>;

<port name="stockquoteport" binding="tns:stockquotebinding">;

<soap:address location="http://example.com/stockquote"/>;

</port>;

</service>;

</definitions>;

它包含了以下的關(guān)鍵信息:

消息的描述和格式定義可以通過xml文檔中的<types>;和<message>; 標(biāo)記來傳送。

<porttype>; 標(biāo)記中表示了消息傳送機(jī)制。 (e.g. request-only, request-response, response-only) 。

<binding>; 標(biāo)記指定了編碼的規(guī)范 。

<service>; 標(biāo)記中表示服務(wù)所處的位置 (url)。

m.hmlawpc.comi客戶并且可以和容器所管理的環(huán)境外面的代碼進(jìn)行通訊。

6.使用映象api查詢ejb組件由于安全規(guī)則所不能訪問的類。這個約束加強(qiáng)了java平臺的安全性。

7.欲創(chuàng)建或獲得一個類的加載器,設(shè)置或創(chuàng)建一個新的安全管理器,停止java虛擬機(jī),改變輸入、輸出和出錯流。這個約束加強(qiáng)了安全性同時保留了ejb容器管理運行環(huán)境的能力。

8.設(shè)置socket工廠被url's serversocket,socket和stream handler使用。避免這個特點,可以加強(qiáng)安全性同時保留了ejb容器管理運行環(huán)境的能力。

9.使用任何方法啟動、停止和管理線程。這個約束消除了與ejb容器管理死鎖、線程

和并發(fā)問題的責(zé)任相沖突的可能性。

通過限制使用10-16幾個特點,你的目標(biāo)是堵上一個潛在的安全漏洞:

10.直接讀寫文件描述符。

11.為一段特定的代碼獲得安全策略信息。

12.加載原始的類庫。

13.訪問java一般角色所不能訪問的包和類。

14.在包中定義一個類。

15.訪問或修改安全配置對象(策略、安全、提供者、簽名者和實體)。

16.使用java序列化特點中的細(xì)分類和對象替代。

17.傳遞this引用指針作為一個參數(shù)或者作為返回值返回this引用指針。你必須使用

sessioncontext或entitycontext中的getejbobject()的結(jié)果。

java2平臺的安全策略

以上所列的特點事實上正是java編程語言和java2標(biāo)準(zhǔn)版中的標(biāo)準(zhǔn)的、強(qiáng)有力的特色。ejb容器允許從j2se中使用一些或全部的受限制的特色,盡管對于ejb組件是不可用的,但需通過j2se的安全機(jī)制來使用而不是通過直接使用j2se的api。

java2平臺為ejb1.1規(guī)范中的ejb容器所制定的安全策略定義了安全許可集,這些許可在ejb組件的編程限制中出現(xiàn)。通過這個策略,定義了一些許可諸如:java.io.filepermission,java.net.netpermission,java.io.reflect.reflectpermission,java.lang.security.securitypermission,以便加強(qiáng)先前所列出的編程限制。

許多ejb容器沒有加強(qiáng)這些限制,他們希望ejb組件開發(fā)者能遵守這些編程限制或者是帶有冒險想法違背了這些限制。違背這些限制的ejb組件,比標(biāo)準(zhǔn)方法依賴過多或過少的安全許可,都將很少能在多個ejb容器間移植。另外,代碼中都將隱藏著一些不確定的、難以預(yù)測的問題。所有這些都足以使ejb組件開發(fā)者應(yīng)該知道這些編程限制,同時也應(yīng)該認(rèn)真地遵守它們。

任何違背了這些編程限制的ejb組件的實現(xiàn)代碼在編譯時都不能檢查出來,因為這些特點都是java語言和j2se中不可缺少的部分。

對于ejb組件的這些限制同樣適用于ejb組件所使用的幫助/訪問(helper/access)類,j2ee應(yīng)用程序使用java文檔(jar)文件格式打包到一個帶.ear(代表enterprise archive)擴(kuò)展名的文件中,這個ear文件對于發(fā)送給文件部署器來說是標(biāo)準(zhǔn)的格式。ear文件中包括在一個或多個ejb-jar文件中的ejb組件,還可能有ejb-jar所依賴的庫文件。所有ear文件中的代碼都是經(jīng)過深思熟慮開發(fā)的應(yīng)用程序并且都遵守編程限制和訪問許可集。

未來版本的規(guī)范可能會指定通過部署工具來定制安全許可的能力,通過這種方法指定了一個合法的組件應(yīng)授予的許可權(quán)限,也指定了一個標(biāo)準(zhǔn)方法的需求:如從文件系統(tǒng)中讀文件應(yīng)有哪些要求。一些ejb容器/服務(wù)器目前在它們的部署工具中都提供了比標(biāo)準(zhǔn)權(quán)限或多或少的許可權(quán)限,這些并不是ejb1.1規(guī)范中所需要的。

理解這些約束

ejb容器是ejb組件生存和執(zhí)行的運行期環(huán)境,ejb容器為ejb組件實例提供了一些服務(wù)如:事務(wù)管理、安全持久化、資源訪問、客戶端連接。ejb容器也負(fù)責(zé)ejb組件實例整個生命期的管理、擴(kuò)展問題以及并發(fā)處理。所以,ejb組件就這樣寄居在一個被管理的執(zhí)行環(huán)境中--即ejb容器。

因為ejb容器完全負(fù)責(zé)ejb組件的生命期、并發(fā)處理、資源訪問、安全等等,所以與容器本身的鎖定和并發(fā)管理相沖突的可能性就需要消除,許多限制都需要使用來填上潛在的安全漏洞。除了與ejb容器責(zé)任與安全沖突的問題,ejb組件還意味著僅僅聚焦于商務(wù)邏輯,它依賴于ejb容器所提供的服務(wù)而不是自己來直接解決底層的系統(tǒng)層的問題。

可能的問題

通常,ejb組件在容器之間的移植不可避免地與如下問題相關(guān):

1.它需要依靠的受限制的特點在特定ejb容器中沒有得到加強(qiáng)。

2.它需要依靠的非標(biāo)準(zhǔn)的服務(wù)從容器中可獲得。

為了保證ejb組件的可移植性和一致的行為,你應(yīng)該使用一個具有與java2平臺安全

策略集相一致的策略集的容器來測試ejb組件,并且其加強(qiáng)了前述的編程限制。

總結(jié)

ejb組件開發(fā)者應(yīng)該知道這些推薦的關(guān)于ejb組件的編程限制,明白它們的重要性,并且從組件的穩(wěn)定性和可移植性利益方面考慮來遵循它們。因為這些編程限制能阻止你使用標(biāo)準(zhǔn)的java語言的特點,違背了這些編程限制在編譯時不會知道,并且加強(qiáng)這些限制也不是ejb容器的責(zé)任。所有這些原因都使你應(yīng)很小心地遵守這些編程限制,這些限制在組件的合同中已經(jīng)成為了一個條款,并且它們對于建造可靠的、可移植的組件是非常重要的。

2. 優(yōu)化ejb

entity bean為在應(yīng)用程序和設(shè)計中描述持久化商業(yè)對象(persistent business objec ts)提供了一個清晰的模型。在java對象模型中,簡單對象通常都是以一種簡單的方式進(jìn)行處理但是,很多商業(yè)對象所需要的事務(wù)化的持久性管理沒有得到實現(xiàn)。entity bean將持久化機(jī)制封裝在容器提供的服務(wù)里,并且隱藏了所有的復(fù)雜性。entity bean允許應(yīng)用程序操縱他們就像處理一個一般的java對象應(yīng)用。除了從調(diào)用代碼中隱藏持久化的形式和機(jī)制外,entity bean還允許ejb容器對對象的持久化進(jìn)行優(yōu)化,保證數(shù)據(jù)存儲具有開放性,靈活性,以及可部署性。在一些基于ejb技術(shù)的項目中,廣泛的使用oo技術(shù)導(dǎo)致了對entity bean的大量使用,sun的工程師們已經(jīng)積累了很多使用entity bean的經(jīng)驗,這篇文章就詳細(xì)闡述的這些卡發(fā)經(jīng)驗:

*探索各種優(yōu)化方法

*提供性能優(yōu)化和提高適用性的法則和建議

*討論如何避免一些教訓(xùn)。

法則1:只要可以,盡量使用cmp

cmp方式不僅減少了編碼的工作量,而且在container中以及container產(chǎn)生的數(shù)據(jù)庫訪問代碼中包括了許多優(yōu)化的可能。container可以訪問內(nèi)存緩沖中的bean,這就允許它可以監(jiān)視緩沖中的任何變化。這樣的話就在事物沒有提交之前,如果緩存的數(shù)據(jù)沒有變化就不用寫到數(shù)據(jù)庫中。就可以避免許多不必要的數(shù)據(jù)庫寫操作。另外一個優(yōu)化是在調(diào)用find方法的時候。通常情況下find方法需要進(jìn)行以下數(shù)據(jù)庫操作:

查找數(shù)據(jù)庫中的紀(jì)錄并且獲得主鍵

將紀(jì)錄數(shù)據(jù)裝入緩存

cmp允許將這兩步操作優(yōu)化為一步就可以搞定。[具體怎么做我也沒弄明白,原文沒有具體闡述]

法則2:寫代碼時盡量保證對bmp和cmp都支持

許多情況下,ejb的開發(fā)者可能無法控制他們寫的bean怎么樣被部署,以及使用的container是不是支持cmp.

一個有效的解決方案是,將商業(yè)邏輯的編碼完全和持久化機(jī)制分離。再cmp類中實現(xiàn)商業(yè)邏輯,然后再編寫一個bmp類,用該類繼承cmp類。這樣的話,所有的商業(yè)邏輯都在cmp類中,而持久化機(jī)制在bmp中實現(xiàn)。[我覺得這種情況在實際工作中很少遇到,但是作者解決問題的思路值得學(xué)習(xí)]

法則3:把ejbstore中的數(shù)據(jù)庫訪問減小到最少。

如果使用bmp,設(shè)置一個緩存數(shù)據(jù)改變標(biāo)志dirty非常有用。所有改變數(shù)據(jù)庫中底層數(shù)據(jù)的操作,都要設(shè)置dirty,而在ejbstore()中,首先檢測dirty的值,如果dirty的值沒有改變,表明目前數(shù)據(jù)庫中的數(shù)據(jù)與緩存的一致,就不必進(jìn)行數(shù)據(jù)庫操作了,反之,就要把緩存數(shù)據(jù)寫入數(shù)據(jù)庫。

法則4:總是將從lookup和find中獲得的引用進(jìn)行緩存。(cache)

引用緩存對session bean和entity bean 都是適用的。

通過jndi lookup獲得ejb資源。比如datasource,bean的引用等等都要付出相當(dāng)大的代價。因此應(yīng)該避免多余的lookup.可以這樣做:

將這些引用定義為實例變量。

從setentitycontext(session bean使用setsessioncontext)方法查找他們。setentitycontext方法對于一個bean實例只執(zhí)行一次,所有的相關(guān)引用都在這一次中進(jìn)行查找,這樣查找的代價就不是那么昂貴了。應(yīng)該避免在其他方法中查找引用。尤其是訪問數(shù)據(jù)庫的方法:ejbload()和ejbstore(),如果在這些頻繁調(diào)用的方法中進(jìn)行datasource的查找,勢必造成時間的浪費。

調(diào)用其他entity bean的finder方法也是一種重量級的調(diào)用。多次調(diào)用finder()方法的代價非常高。如果這種引用不適合放在setentitycontext這樣的初始化時執(zhí)行的方法中執(zhí)行,就應(yīng)該在適當(dāng)?shù)臅r候緩存finder的執(zhí)行結(jié)果。只是要注意的是,如果這個引用只對當(dāng)前的entity有效,你就需要在bean從緩沖池中取出來代表另外一個實體時清除掉這些引用。,這些操作應(yīng)該在ejbactivate()中進(jìn)行。

法則5:總是使用prepare statements

這條優(yōu)化法則適用于所有訪問關(guān)系數(shù)據(jù)庫的操作。

數(shù)據(jù)庫在處理每一個sql statement的時候,執(zhí)行前都要對statement進(jìn)行編譯。一些數(shù)據(jù)庫具有緩存statement和statement的編譯后形式的功能。數(shù)據(jù)庫可以把新的statement和緩存中的進(jìn)行匹配。然而,如果要使用這一優(yōu)化特性,新的statement要必須和緩存中的statement完全匹配。

對于non-prepared statement,數(shù)據(jù)和statement本身作為一個字符串傳遞,這樣由于前后調(diào)用的數(shù)據(jù)不同而不能匹配,就導(dǎo)致無法使用這種優(yōu)化。而對于prepared statement,數(shù)據(jù)和statement是分開傳遞給數(shù)據(jù)庫的,這樣statement就可以和cache中已編譯的statement進(jìn)行匹配。statement就不必每次都進(jìn)行編譯操作。從而使用該優(yōu)化屬性。

這項技術(shù)在一些小型的數(shù)據(jù)庫訪問中能夠減少statement將近90%的執(zhí)行時間。

法則6:完全關(guān)閉所有的statement

在編寫bmp的數(shù)據(jù)庫訪問代碼時,記住一定要在數(shù)據(jù)庫訪問調(diào)用之后關(guān)閉statement,因為每個打開的statement對應(yīng)于數(shù)據(jù)庫中的一個打開的游標(biāo)。

security

1.加密

對稱加密

(1)分組密碼

(2)流密碼

常用的對稱加密算法:

des和tripledes

blom.hmlawpc.comdash;—ssl(se cure socketslayer),并且已經(jīng)幾乎成為了目前m.hmlawpc.comanager,并且 logincontext 已經(jīng)認(rèn)證了一個帶有名為“admin”的 com.ibm.resource.security.auth.principalexample 主體的 subject。

清單 4. 一個簡單的授權(quán)請求

public class jaasexample {

public static void main(string[] args) {

...

// m.hmlawpc.compleaction 類中。還要注意,調(diào)用類不要求為 jaasexampleaction 類代碼源授予許可權(quán),因為它實現(xiàn)了一個 privilegedaction。

擴(kuò)展 jaas

大多數(shù)應(yīng)用程序都有定制邏輯,它授權(quán)用戶不僅僅在類上執(zhí)行操作,而且還在該類的實例上執(zhí)行操作。這種授權(quán)通常建立在用戶和實例之間的關(guān)系上。這是 jaas 的一個小缺點。然而,幸運的是,這樣設(shè)計 jaas 使得 jaas 可以擴(kuò)展。只要做一點工作,我們將可以擴(kuò)展 jaas,使其包含一個通用的、類實例級的授權(quán)框架。

在文章開頭處我已經(jīng)說明了,抽象類 javax.security.auth.policy 被用于代表 jaas 安全性策略。它的缺省實現(xiàn)是由 com.sun.security.auth.policyfile 類提供。policyfile 類從 jaas 格式的文件(象清單 3 中顯示的那個一樣)中讀取策略。

我們需要向這個文件添加一個東西為類實例級授權(quán)擴(kuò)展策略定義:一個與許可權(quán)語句相關(guān)的可選關(guān)系參數(shù)。

缺省 jaas 許可權(quán)語句的格式如下:

permission <permission implementation class>; [name], [actions];

我們在這個許可權(quán)語句的末尾添加一個可選的關(guān)系參數(shù)來完成策略定義。下面是新許可權(quán)語句的格式:

permission <permission implementation class>;

[name], [actions], [relationship];

在為類實例級授權(quán)擴(kuò)展 jaas 時要注意的最重要的一點是:許可權(quán)實現(xiàn)類必須有一個帶三個參數(shù)的構(gòu)造函數(shù)。第一個參數(shù)是名稱參數(shù),第二個是行為參數(shù),最后一個是關(guān)系參數(shù)。

解析新文件格式

既然文件格式已經(jīng)改變,就需要一個新的 javax.security.auth.policy 子類來解析文件。

為簡單起見,我們的示例使用了一個新的 javax.security.auth.policy 子類 com.ibm.resource.security.auth.xmlpolicyfile,來從 xml 文件讀取策略。在實際的企業(yè)應(yīng)用程序中,關(guān)系數(shù)據(jù)庫更適合執(zhí)行這個任務(wù)。

使用 xmlpolicyfile 類代替缺省的 jaas 訪問控制策略實現(xiàn)的最容易的方法是向 java.security 屬性文件添加 auth.policy.provider=com.ibm.resource.security.auth.xmlpolicyfile 條目。java.security 屬性文件位于 java 2 平臺運行時的 lib/security 目錄下。清單 5 是與 xmlpolicyfile 類一起使用的樣本 xml 策略文件:

清單 5. 一個 xml 策略文件

<?xml version="1.0"?>;

<policy>;

<grant codebase="file:/d:/sample_actions.jar">;

<principal classname=

"com.ibm.resource.security.auth.principalexample" name="users">;

<permission classname=

"com.ibm.resource.security.auth.resourcepermission"

name="com.ibm.security.sample.auction"

actions="create" />;

<permission classname=

"com.ibm.resource.security.auth.resourcepermission"

name="com.ibm.security.sample.auction"

actions="read" />;

<permission classname=

"com.ibm.resource.security.auth.resourcepermission"

name="com.ibm.security.sample.auction"

actions="m.hmlawpc.comission"

name="com.ibm.security.sample.bid"

actions="accept"

relationship="actionom.hmlawpc.comple.auction", "create");

accesscontroller.checkpermission(permission);

}

所有者關(guān)系

resourcepermission 類的 implies(permission p) 方法是這個框架的關(guān)鍵。implies() 方法就等同性比較名稱和行為屬性。如果定義了一個關(guān)系,那么必須把受保護(hù)的類實例(resource)傳遞到 resourcepermission 構(gòu)造函數(shù)中。resourcepermission 類理解所有者關(guān)系。它將類實例的所有者與執(zhí)行代碼的 subject(用戶)進(jìn)行比較。特定關(guān)系被委托給受保護(hù)類的 fulfills() 方法。

例如,在清單 5 中所示的 xml 策略文件中,只有 auction 類實例的所有者可以更新(寫)文件。該類的 setter 方法使用清單 6 中顯示的保護(hù)代碼:

清單 6. 運行中的 implies(permission) 方法

public void setname(string nem.hmlawpc.come = nem.hmlawpc.come().equals(auctionom.hmlawpc.comple.jar

exampleactions.jar

resourcesecurity.jar 文件包含允許實例級訪問控制的 jaas 擴(kuò)展框架。它還包含一個 loginmoduleexample 類,這個類從 xml 文件讀取用戶認(rèn)證信息。用戶標(biāo)識和密碼存儲在 users.xml 文件中。用戶組存儲在 groups.xml 文件中。關(guān)于 loginmoduleexample 的更多信息,請參閱參考資料部分。

該示例包含四個附加的文件:

login.conf

policy

resourcepolicy.xml

run.bat

在試圖運行這個示例程序之前,請確保更新了 run.bat、policy 和 resourcepolicy.xml 文件中的路徑。缺省情況下,所有的密碼都是“passm.hmlawpc.comanager)

每個java application都可以有自己地security manager,但是默認(rèn)地java application沒有一個security manager

可以通過下面地代碼得到一個security manager

try

{

system.setsecuritymanager(nem.hmlawpc.come%/jre/lib/ext/*.jar

如果光copy不ren為.jar是沒有用的。

4. 事務(wù)處理

本地事務(wù)

java.sql.connection接口可以控制事務(wù)邊界(即開始和結(jié)束)。

在事務(wù)開始的時候調(diào)用setautocommit( false ), 而在中止事務(wù)時調(diào)用rollback或commit()方法。這類事務(wù)叫本地事務(wù)。

分布式事務(wù)

但是,在特定的情況下,可能有多個客戶(例如兩個不同的servlet或ejb組件)參與了同一個事務(wù)。

或者,客戶在同一個事務(wù)中可能會執(zhí)行跨越多個數(shù)據(jù)庫的數(shù)據(jù)庫操作。

jdbc2.0 optional package 同jta一起來實現(xiàn)分布式樣事務(wù)。

5. 一些技巧

檢索自動產(chǎn)生的關(guān)鍵字

為了解決對獲取自動產(chǎn)生的或自動增加的關(guān)鍵字的值的需求,jdbc 3.0 api 現(xiàn)在將獲取這種值變得很輕松。要確定任何所產(chǎn)生的關(guān)鍵字的值,只要簡單地在語句的 execute() 方法中指定一個可選的標(biāo)記,表示您有興趣獲取產(chǎn)生的值。您感興趣的程度可以是 statement.return_generated_keys,也可以是 statement.no_generated_keys。在執(zhí)行這條語句后,所產(chǎn)生的關(guān)鍵字的值就會通過從 statement 的實例方法 getgeneratedkeys() 來檢索 resultset 而獲得。resultset 包含了每個所產(chǎn)生的關(guān)鍵字的列。清單 1 中的示例創(chuàng)建一個新的作者并返回對應(yīng)的自動產(chǎn)生的關(guān)鍵字。

清單 1. 檢索自動產(chǎn)生的關(guān)鍵字

statement stmt = conn.createstatement();

// obtain the generated key that results from the query.

stmt.executeupdate("insert into authors " +

'(first_name, last_name) " +

"values ('george', 'orm.hmlawpc.comanagers.

a jts transaction manager provides transaction services to the parties involved in distributed transactions: the application server, the resource manager, the standalone transactional application, and the communication resource manager (crm).

2.jta

1.1 事務(wù)處理的概念

jta實際上是由兩部分組成的:一個高級的事務(wù)性客戶接口和一個低級的 x/open xa接口。

我們關(guān)心的是高級客戶接口,因為bean可以訪問它,而且是推薦的客戶應(yīng)用程序的事務(wù)性接口。

低級的xa接口是由ejb服務(wù)器和容器使用來自動協(xié)調(diào)事務(wù)和資源(如數(shù)據(jù)庫)的

1.1.1事務(wù)劃分

a.程序劃分

使用usertransaction啟動jta事務(wù)

the usertransaction interface defines the methods that allom.hmlawpc.comport java.util.*;

import javax.sm.hmlawpc.come.setvisible(true);

}

}

class mouseframe extends jframe

{

public mouseframe()

{

settitle("mouse test");

setsize(default_m.hmlawpc.comove(rectangle2d s)

{

if(s==null) return;

if(s==current) current=null;

squares.remove(s);

repaint();

}

private static final int side_length=20;//正方形的邊長

private arraylist<rectangle2d> squares;//存放所有已繪制的方塊(鼠標(biāo)有效繪制路徑)

private rectangle2d current;//當(dāng)前需要繪制的方塊

private class mousehandler extends mouseadapter

{

/*

* 當(dāng)鼠標(biāo)按鈕被按下時,先查找當(dāng)前點是否已經(jīng)包含在前期圖新內(nèi),* 否,則添加至數(shù)組列表

*/

public void mousepressed(mouseevent event)

{

current=find(event.getpoint());

if(current==null)

add(event.getpoint());

}

/*

* 處理鼠標(biāo)點擊事件,如果當(dāng)前點包含于圖形之中,且鼠標(biāo)連續(xù)點擊兩次以上,則擦除該圖形。

*/

public void mouseclicked(mouseevent event)

{

current=find(event.getpoint());

if(current!=null && event.getclickcount()>=2)

remove(current);

}

}

private class mousemotionhandler implements mousemotionlistener

{

/*

* 改變鼠標(biāo)形狀

h);*/public void mousemoved(mouseevent event){if(find(event.getpoint())==null)setcursor(cursor.getdefaultcursor());elsesetcursor(cursor.getpredefinedcursor(cursor.crosshair_cursor));}/** 拖動圖形*/public void mousedragged(mouseevent event){if(current!=null){int x=event.getpoint().x;int y=event.getpoint().y;current.setframe(x-side_length/2,y-side_length/2,side_length,side_lengt

}}}} repaint();

第五篇:關(guān)于java學(xué)習(xí)的一點心得體會

管理科學(xué)與工程學(xué)院11信管2班孫鑫201*4548

關(guān)于java學(xué)習(xí)的一點心得體會

我是學(xué)信管專業(yè)的,這學(xué)期除了學(xué)習(xí)了java軟件開發(fā)綜合實驗這門選修課外,還有自己本專業(yè)要學(xué)的java面向?qū)ο蟮某绦蛟O(shè)計。學(xué)習(xí)了近一學(xué)期的java課程,覺得是該總結(jié)自己的心得體會了。開始學(xué)習(xí)任何一門課(包括java),興趣最重要。一直覺得自己在學(xué)習(xí)了計算機(jī)編程語言(也就是c語言),學(xué)到了很多東西,再學(xué)習(xí)java的話,應(yīng)該問題不大,但在學(xué)習(xí)了幾個星期后,還是明確感到了,有點吃力,于是趁學(xué)校開設(shè)這門選修課,并且有自己院的老師講解,還有了上機(jī)的機(jī)會,比自己自學(xué)省事多了,于是鼓足信心,開始了漫長的java征途。

還記得我編寫的第一個程序是簡單的輸出程序。當(dāng)時自己不是很理解為什么main方法要這樣來定義public static void main(string[] args),問了好多同學(xué),他們告訴我的答案是一樣的“java本身要求就是這樣子的”,但我自己不甘心,就自己進(jìn)行了探索:把main改個名字運行一下,看看報什么錯誤,然后根據(jù)出錯信息進(jìn)行分析;把main的public取掉,在試試看,報什么錯誤;static去掉還能不能運行;不知道m(xù)ain方法是否一定要傳一個string[]數(shù)組的,把string[]改掉,改成int[],或者string試試看;不知道是否必須寫args參數(shù)名稱的,也可以把args改成別的名字,看看運行結(jié)果如何。 結(jié)果一個簡單程序反復(fù)改了七八次,不斷運行,分析運行結(jié)果,最后就徹底明白為什么了main方法是這 1

樣定義的了。接著在以后的學(xué)習(xí)中我也采用這樣的方法解決問題,卻發(fā)現(xiàn)自己的速度比別人慢了好多,我就把自己的課余時間也分一部分給了java。

因為基礎(chǔ)是最重要的,只有基礎(chǔ)牢固才有可能對后面的學(xué)習(xí)有更加深刻的認(rèn)識!

學(xué)習(xí)一門新的語言,參考書是離不開的。聽專業(yè)課老師說訂的教材偏難,不適合我們初學(xué)者,于是我在圖書館借了本參考書(一本篇幅較短的入門書來學(xué)習(xí)那些最簡單、最基本的東西,包括學(xué)習(xí)java語法等)。同時,對一個最簡單的程序也應(yīng)該多去調(diào)試,多想想如果改動一下會出現(xiàn)什么結(jié)果?為什么必須那樣寫?多去想想這些問題然后去操作,會讓你有更多的收獲。這樣反復(fù)地思考是很有用的。

在學(xué)習(xí)java的語法時,java的語法是類似c語言的,所以學(xué)習(xí)的比較輕松。唯一需要注意的是有幾個不容易搞清楚的關(guān)鍵字的用法,public,protected,private,static,什么時候用,為什么要用,怎么用,和同學(xué)一起討論了好久才得以解決。

在學(xué)習(xí)java的面向?qū)ο蟮木幊陶Z言的特性。比如繼承,抽象類,方法的多態(tài),重載,覆蓋。對于一個沒有面向?qū)ο笳Z言背景的人來說,我覺得這個過程需要花很長很長時間,因為學(xué)習(xí)java之前沒有c++的經(jīng)驗,只有c語言的經(jīng)驗,花了很長時間,才徹底把這些概念都搞清楚,把書上面的例子反復(fù)的揣摩,修改,嘗試,把那幾章內(nèi)容反復(fù)的看過來,看過去,看了很多遍,才徹底領(lǐng)悟了。

此外,我對于static,public,private等等一開始都不是很懂,

都是把書上面的例子運行成功,然后就開始破壞它,不斷的根據(jù)自己心里面的疑問來重新改寫程序,看看能不能運行,運行出來是個什么樣子,是否可以得到預(yù)期的結(jié)果。這樣雖然比較費時間,不過一個例子程序這樣反復(fù)破壞幾次之后。我就對這個相關(guān)的知識徹底學(xué)通了。有時候甚至故意寫一些錯誤的代碼來運行,看看能否得到預(yù)期的運行錯誤。這樣對于編程的掌握是及其深刻的。

在學(xué)習(xí)java的過程中我得出這樣的結(jié)論:

1.學(xué)習(xí)中,要養(yǎng)成良好的習(xí)慣(寫括號時要成對,字母大小寫要區(qū)分,單詞拼寫要準(zhǔn)確)。

2.在學(xué)習(xí)的過程中,最好不是僅僅停留在java表層,不是抄書上的例子運行出結(jié)果就可以。要注意,即便對一個簡單的例子也要有耐心去琢磨、調(diào)試、改動。

3.在學(xué)習(xí)的過程中一定要動手做、試著寫代碼,而不是抱一本書看看就行。很多東西和體會必須自己動手才能真正屬于自己。

4. 在 java 的學(xué)習(xí)過程中,可能會遇到形形色色的問題不容易解決,應(yīng)多去專業(yè)論壇了解相關(guān)的知識,書本上的知識有限。要會從網(wǎng)上搜索有用的信息 加以整理,促進(jìn)學(xué)習(xí)的深入和知識水平的提高。

看了好多網(wǎng)上課程,說學(xué)到一定程度要嘗試著自己做東西,但覺得自己僅僅經(jīng)過一學(xué)期的學(xué)習(xí),還遠(yuǎn)遠(yuǎn)不夠,希望自己在以后學(xué)習(xí)中繼續(xù)努力,能夠真真正正擁有一門編程語言,對自己今后的發(fā)展起到作用。

本網(wǎng)推薦更多文章:

學(xué)習(xí)java的心得體會

java學(xué)習(xí)的心得體會

java培訓(xùn)學(xué)習(xí)心得

java學(xué)習(xí)心得體會

java學(xué)習(xí)心得

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


java基礎(chǔ)學(xué)習(xí)心得》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://m.hmlawpc.com/gongwen/284327.html
相關(guān)文章