JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Certification  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 準備SCJD的一些心得 [精華]
systempanic





發文: 216
積分: 4
於 2004-07-27 10:21 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
聲明: 以下只是個人心得經驗,僅供參考,不一定是唯一方法.

本來版上已經許多人考過SCJD,應該輪不到我出來講,但我正在應考中,印象較深,而且所述若有錯誤,已考過SCJD的先進也可幫忙指正,讓我能即時修正 Smile

1.跟SCJD認證相關的書較為大家推薦的是Mehran Habibi, et al所寫的書,個人也是參考這本書,但是光看這本書可能還是會有一大堆的疑問,最重要的解答來源在www.javaranch.com,在這裡可以找到很多有用的"提示".

2.SCJD的題型大致上有四種左右,而每一種又有版本上的小差異(主要是interface的不同),
但是所強調的重點都是類似,亦即: Threading/Locking, RMI/Socket Networking, SWING GUI, MVC Design Pattern.

3.我拿到的題目是UrlyBird 1.3.1,是關於旅館房間訂位問題,題目要求你必須使用原來舊系統的資料庫檔案,然後給你一個DBMain interface,要求你寫Data.java而且必須implements DBMain

4.我第一個碰到的問題是,Habibi書上寫的是使用serialization object來代表data record,每一個record即是一個檔案,但在SCJD試題中你必須使用一個現有的資料檔. 所以我就參考ranch上大部分人的做法,即使用RandomAccessFile(RAF)來讀寫檔案. 檔案格式是前面一段為meta data,後面為一筆接一筆固定長度的資料.

5.所以我就在Data.java中把DBMain.java所定義的所有method,利用RAF給實作出來,但這裡我定義一個Room JavaBean來holding data record的每個欄位. 另外定義一個Hashtable RoomCol來存放所有沒有被delete的Room javabean. 另外定義一個HashSet存放資料檔中被mark為delete的資料編號(record number),因為試題要求必須重複利用被delete的資料空間.

6.我使用ant+junit來幫助我不斷作test & refactoring,並利用java.util.logging package來紀錄輔助debug (SCJD要求不能在提交的程式中使用3rd party library,所以不能使用log4j)

7. 再來是重頭戲threading and locking, 我的題目只需使用server-side lock (沒有client cookie), 但是參考ranch上的討論後發現有兩派做法,一派是把Data實作成singleton,亦即每一個來request的client都給同一個Data instance; 另一派做法是每一個來request的client都給不同的Data instance. 使用singleton的好處是所有client都共用同一個RAF instance,但performance會比較差;使用multiple Data instance的話,也是共用同一個RAF instance,但是必須對RAF synchronized (file level locking). (我使用multiple Data instances,若使用Data Singleton的話,可能在DataAdapter需要對Data object作synchronized)

8. 在我的Data.java中有四個靜態成員(class variable),一個是DataSchema (singleton),一個是lockedRecord Vector,一個是bookings Hashtable,一個是reusableRecNos HashSet; 在Data.java中我利用static block來作一次性初始化; 在DataSchema中存有RAF reference,和一些db metadata info.; lockedRecord是在作logical record locking時用來存放鎖定的record number,這個跟Habibi書上講的是一樣的用法; 在update/delete/create這些方法中,我自訂鎖定順序來鎖定RAF,bookings,reusableRecNos等物件,以避免dead lock.

9.我另定義一個Wrapper for Data object,即DataAdapter,在DataAdapter中使用data.lock/db operation(delete/update/create)/data.unlock順序,但在read/find方法則不使用lock/unlock,即允許dirty read,但可大幅提升performance. 另外在DataAdapter中的方法回傳值/傳入參數,改成Booking Object或是Collection,以符合OO設計(在Data.java中是int[]/String[])

10.完成DataAdapter之後必須用力測試,可spawn一堆thread然後對同一record number作booking/delete動作,觀察log資訊看看是否符合預期

11.網路方面可選擇Socket或RMI,我個人當然選擇較簡單的RMI啦,大致上follow Habibi的書上應可完成,但若是選擇使用multiple Data instances的話可能需要寫一個ConnectionFactory,把這一個ConnectionFactory object bind到rmi registry,然後每一個client request進來時都產生一個新的DataAdapter object給client. (註: DataAdapter和Data的關係是1:1)

12.記得RMI client自RMI server得到的是object interface stubs,不是 implementation stubs, 弄錯了會有ClassCastException.

13. 由於RMI server thread pooling機制有可能會使用同一個thread來服務不同的client,所以在unlock方法中可能需要使用client id來判斷該client是否是之前鎖定同一recNo的client (唉,這是我剛在ranch上發現我沒注意到的....),另外可能還要考慮萬一client當機或網路斷線時如何release locked recNo. 在ranch上有一長篇文章討論(題目是:Single table / Simple Locking - WeakHashMap vs WeakReferences),我打算這兩天就利用這方法來改進我的locking mechanism (done)

14. 再來剩下GUI部分,個人覺得這部分是最簡單的,大致上follow Habibit書上的做法使用MVC pattern,View方面用JTable+AbstractTableModel, Controller負責delegate UI action和Model<->TableModel Conversion,Model則由RMI remote object取得.....

--The End


systempanic edited on 2004-09-18 10:42
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
gitaman





發文: 42
積分: 3
於 2004-08-04 10:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
您好,那麼請問一下Habibit這本書你覺得值不值得
買呢? (還是該問你讀這本書的心得)
這本書對於考試以及實際工作上的價值在那?

謝謝你的分享Smile


reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:gitaman]
systempanic





發文: 216
積分: 4
於 2004-08-04 12:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
gitaman wrote:
您好,那麼請問一下Habibit這本書你覺得值不值得
買呢? (還是該問你讀這本書的心得)
這本書對於考試以及實際工作上的價值在那?

謝謝你的分享Smile


如果你打算考SCJD的話,Habibi這本書值得買,但如果不考的話,
而你需要寫一些Swing App的話,也還是有一定的參考價值,
尤其是threading部分.

我以前都是搞J2EE (JSP/Servlet/EJBlack Eye,對於SWING/Threading/RMI這些東西
是很陌生的,經由SCJD的考試確實會對這些主題的基本觀念清楚很多.

這本書對於要考SCJD的人是有幫助的,對於實際工作的幫助的話,
要看你的實際工作是否有用到用J2SE寫應用程式囉.

現在似乎web比較流行,所以考SCWCD的人比較多......


reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
RogerY2k





發文: 6
積分: 0
於 2004-09-16 08:46 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟現在也正要準備 SCJD, 這是一篇很棒的分享, 謝謝 systempanic.
建議版主將此篇文章放入 SCJD 的精華區. 謝謝.


reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:systempanic]
EdwardC





發文: 7
積分: 2
於 2004-09-16 15:03 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
幫原作補充幾點:

15. 請務必徹底看通題目, 題目大概有六七頁吧, 字字珠璣...
若是覺得有疑義的地方, javaranch大都有前人討論過了, 去那邊看看
一定會有收穫,我自己從頭到尾看了這份文件起碼30次以上... 發現了很多詭
異的地方, 要是沒有發現這些東西, 到現在我可能還在coding....

16. 看完javaranch後, 會發現很多人都用同一種方法來解問題, 但不一定要照著
前人的腳步走, 只要符合題目的"must"條件, 高興怎麼去實做都行, 我自己
就以身試法, 用比較tricky方法來實做, 可以省個幾百行程式碼, 我這個人很
懶, 但又很有種, 所以就採用這種方法, 沒問題~~
照樣高分過.(如果你因此被fail了, 可以寫信去請他們列舉出你被fail的原因
, 如果沒有違反"must"條件, 且達到題目所要求的目標, 可以嘗試要求他們
重新審核你的專案, 據我所知就有兩例是這樣起死回生的...))

17. 專案與筆試考完後, 寫信到SunCert@Prometric.com請他們確認是否有收
到你的考試資料, 不然你可能專案沒有upload成功, 然後一直痴痴的等結
果.

18. 專案與筆試都考完後, 才會開始計分, 評分過程約2~6週(sun的說法是4~6
週, 但prometric是說2~4週, 所以我取2~6週), 評分時間長短跟你會fail或
pass無關(有人等了六週, 結果是automatic failure, 也有人一週就收到
automatic failure的通知)

19. 考試結果會公佈於
http://www.certmanager.net/sun_assignment/
http://www.certmanager.net/sun
第一個網址公佈的最快, 昇陽不會以其他任何的形式告知你考試結果.


reply to postreply to post
==============================
SCMAD(preparing...)
SCJP SCJD
SCWCD
RHCE

Have a dream? Go forward it!
==============================
作者 Re:準備SCJD的一些心得 [Re:systempanic]
systempanic





發文: 216
積分: 4
於 2004-09-18 10:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
成績終於出來了,380分,Passed. Big Smile

This report shows the total number of points awarded for each section. The maximum number of poins is 400, to pass you need a score of 320. Section Summary: Section Max Actual Points Points General Con: 100 90, Documentation: 70 70, OOD: 30 30, GUI: 40 30, Locking: 80 80, Network Server: 40 40, Data Store: 40 40, Total: 400 380

我的UI比較陽春,但應該有滿足spec要求,只能搜尋hotel name和location.
有些可能發生的例外沒有去考慮,例如啟動rmi server失敗時,我是出現個錯誤訊息對話框後,直接結束程式,沒有給User更正的機會,這可能會扣些分(我承認我偷懶Tongue)


systempanic edited on 2004-09-18 10:41
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:EdwardC]
systempanic





發文: 216
積分: 4
於 2004-09-18 12:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
EdwardC wrote:
16. 看完javaranch後, 會發現很多人都用同一種方法來解問題, 但不一定要照著
前人的腳步走, 只要符合題目的"must"條件, 高興怎麼去實做都行, 我自己
就以身試法, 用比較tricky方法來實做, 可以省個幾百行程式碼, 我這個人很
懶, 但又很有種, 所以就採用這種方法, 沒問題~~
照樣高分過.(如果你因此被fail了, 可以寫信去請他們列舉出你被fail的原因
, 如果沒有違反"must"條件, 且達到題目所要求的目標, 可以嘗試要求他們
重新審核你的專案, 據我所知就有兩例是這樣起死回生的...))

在spec中有說明,你的設計或程式即使給novice level developer看應容易了解,所以最好是以簡單易懂的做法為主,避免smart hacks.

Quoted from spec: A clear design, such as will be readily understood by junior programmers, will be preferred to a complex one, even if the complex one is a little more efficient.


systempanic edited on 2004-09-18 12:24
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
dtaun





發文: 15
積分: 0
於 2004-09-18 21:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
恭喜systempanic, 這是一篇很棒的心得分享, 多謝 Smile

reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:systempanic]
EdwardC





發文: 7
積分: 2
於 2004-09-18 22:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list

systempanic wrote:
11.網路方面可選擇Socket或RMI,我個人當然選擇較簡單的RMI啦,大致上follow Habibi的書上應可完成,但若是選擇使用multiple Data instances的話可能需要寫一個ConnectionFactory,把這一個ConnectionFactory object bind到rmi registry,然後每一個client request進來時都產生一個新的DataAdapter object給client. (註: DataAdapter和Data的關係是1:1)

13. 由於RMI server thread pooling機制有可能會使用同一個thread來服務不同的client,所以在unlock方法中可能需要使用client id來判斷該client是否是之前鎖定同一recNo的client (唉,這是我剛在ranch上發現我沒注意到的....),另外可能還要考慮萬一client當機或網路斷線時如何release locked recNo. 在ranch上有一長篇文章討論(題目是:Single table / Simple Locking - WeakHashMap vs WeakReferences),我打算這兩天就利用這方法來改進我的locking mechanism (done)

在spec中有說明,你的設計或程式即使給novice level developer看應容易了解,所以最好是以簡單易懂的做法為主,避免smart hacks.

Quoted from spec: A clear design, such as will be readily understood by junior programmers, will be preferred to a complex one, even if the complex one is a little more efficient.


我所謂的tricky,指的不是用複雜難懂的設計來達成目的,我用一套更簡單的方法來達成locking&RMI的目的,原因是因為我覺得SCJD的應考者幾乎把Habibi的書當作聖經在讀,一遇到疑問就比照書上的方法辦理,近幾年來javaranch上更是所有討論一面倒都是以這種方法來設計,但試問為了達成locking的issue就一定要照著11與13點去做嗎? 這樣的架構真的好懂嗎? 這樣的設計絕對是正確的,因為已經有成千上萬的人,都照本宣科的拿到了這張證照,但這是不是最好的解決方案,就是未知數了....

想說的是在SCJD考試中,locking是一個issue,為了達成這個issue,所有的應考者都應該要嘗試想一套自己的方式來解決問題,而不是直接把書上與討論區上的東西當成是自己的solution,如果是這樣的話這張SCJD證照對應考者來說,充其量不過是SCJP partII。

如果是為了證照而去參加考試,去買Habibi的書來看,照著裡面的方法作,保證會過,但值得深思的是,在現實工作環境中,會不會有一本這樣標準答案的書可以依循。

P.S. 我這個人除了懶與有種外,對錢也很小氣,我不想花了13000後讓閱卷者很輕鬆的賺這個錢,我要他們必須遵照我的想法來看專案程式,幫我看看我的想法是否有不妥之處,這樣我的13000才花得值得Big Smile


EdwardC edited on 2004-09-18 22:50
reply to postreply to post
==============================
SCMAD(preparing...)
SCJP SCJD
SCWCD
RHCE

Have a dream? Go forward it!
==============================
作者 Re:準備SCJD的一些心得 [Re:EdwardC]
systempanic





發文: 216
積分: 4
於 2004-09-18 23:00 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
EdwardC wrote:
我所謂的tricky,指的不是用複雜難懂的設計來達成目的,我用一套更簡單的方法來達成locking&RMI的目的,原因是因為我覺得SCJD的應考者幾乎把Habibi的書當作聖經在讀,一遇到疑問就比照書上的方法辦理,近幾年來javaranch上更是所有討論一面倒都是以這種方法來設計,但試問為了達成locking的issue就一定要照著11與13點去做嗎? 這樣的架構真的好懂嗎? 這樣的設計絕對是正確的,因為已經有成千上萬的人,都照本宣科的拿到了這張證照,但這是不是最好的解決方案,就是未知數了....

想說的是在SCJD考試中,locking是一個issue,為了達成這個issue,所有的應考者都應該要嘗試想一套自己的方式來解決問題,而不是直接把書上與討論區上的東西當成是自己的solution,如果是這樣的話這張SCJD證照對應考者來說,充其量不過是SCJP partII。

如果是為了證照而去參加考試,去買Habibi的書來看,照著裡面的方法作,保證會過,但值得深思的是,在現實工作環境中,會不會有一本這樣標準答案的書可以依循。

P.S. 我這個人對錢也很小氣,我不想花了13000後讓閱卷者很輕鬆的賺這個錢,我要他們必須遵照我的想法來看專案程式,幫我看看我的想法是否有不妥之處,這樣我的13000才花得值得Big Smile


well, 那應該是你對 networking/threading 已經有相當的了解,才有能力去思考另一種的做法, 像很多人(like me)只是把考SCJD當作強迫自己學習的另一方式,畢竟要先學會基本的東西,才能再求變化. 能夠innovative/creative自然很好,但是我覺得用在考SCJD太浪費了(and maybe risky),畢竟也只有審閱你卷子的人知道 Smile


systempanic edited on 2004-09-18 23:06
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
gitaman





發文: 42
積分: 3
於 2004-09-20 10:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
恭禧∼systempanic兄

以高分考過scjd,謝謝你的經驗分享~
還有幾點想請教一下:
請問一下,

(1)assignment實作的時間,你大概花了多久時間。平均每天花多久呢?

(2)程式的縮排,註解會不會影響考試成績。我是想以eclipise來寫並利用
eclipise的內建功能來排我的程式碼。因為我通常寫程式的縮排方式和sun所建議的方式有點不太相同。

(3)第二階段essay是考什麼呢?之前有看版上的前輩談到是考簡單的問題以測試程式是否是自已寫的。不過還是覺得有點模糊。可否多談你這一階段考試的心得。

(4)附帶一點,想請問一下,你程式大概行數是多少行。你覺得整個assignment的難度,複雜度如何呢?

謝謝你的分享Smile


reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:gitaman]
systempanic





發文: 216
積分: 4
於 2004-09-20 10:44 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
gitaman wrote:
恭禧∼systempanic兄

以高分考過scjd,謝謝你的經驗分享~
還有幾點想請教一下:
請問一下,

(1)assignment實作的時間,你大概花了多久時間。平均每天花多久呢?

(2)程式的縮排,註解會不會影響考試成績。我是想以eclipise來寫並利用
eclipise的內建功能來排我的程式碼。因為我通常寫程式的縮排方式和sun所建議的方式有點不太相同。

(3)第二階段essay是考什麼呢?之前有看版上的前輩談到是考簡單的問題以測試程式是否是自已寫的。不過還是覺得有點模糊。可否多談你這一階段考試的心得。

(4)附帶一點,想請問一下,你程式大概行數是多少行。你覺得整個assignment的難度,複雜度如何呢?

謝謝你的分享Smile


1. assigment我大概花了35天,總時數大概是120小時.

2. 縮排似乎沒強制規定要用那一種. 註解是需要寫的,尤其在你認為重要的程式區段,加上適當的註解是有須要的. 另外,spec中也要求你使用javadoc notation把每一個class中的每一個屬性變數和方法都註解.

3. essay是問你的一些設計的方法,例如你如何處理logical record locking. 這部份你在assignmet提交前會寫一份設計說明文件,所以如果你當時好好寫這份文件的話,考essay時,只是再把你之前寫過的再寫一遍而已.

4. 我分成db,remote,util,gui 4個package,總共24個class, unit test的class不算在內. 程式全部共有3910行,但這包含了註解與javadoc notaion. 複雜度或難度有點難置評,如果你本來就對swing/threading/networking很熟的人,可能會覺得這assignment只是piece of cake. 像我是這方面的生手,所以會花比較多的時間. 程式開發中使用ant+junit和java logging,個人認為是很有幫助的.

另補充一下,如果已經有許多java程式經驗的話來考SCJD會比較好,若是只是考過SCJP但是缺乏寫程式經驗的話,那這個assigment會太難.


systempanic edited on 2004-09-20 14:53
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
anc





發文: 6
積分: 0
於 2004-10-13 01:54 user profilesend a private message to usersend email to ancreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
systempanic 恭喜了! 我還記得兩年多前我用JUnit的多執行緒測我的SCJD作業,捉到一些bugs,也學到了不少好的觀念,至今受用無窮!

reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:systempanic]
systempanic





發文: 216
積分: 4
於 2004-12-29 23:00 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有網友對我的測試thread/locking方式有興趣,我評估這個應該沒有違背
Sun的規定,所以我post出來,有興趣的人自行參考即可,不一定要照我的方法做~

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package suncertify.test;
 
import junit.framework.*;
import java.io.*;
import java.util.*;
 
import suncertify.db.*;
 
public class DataAdapterClient  {    
            
      
      public static void main(String[] args) throws Exception {
          
          DataAdapter da1 = new DataAdapter();
          DataAdapter da2 = new DataAdapter();
          DataAdapter da3 = new DataAdapter();
          
             String s1 = "00000001";
             String s2 = "00000002";
             String s3 = "00000003";
             String s4 = "00000004";
             String s5 = "00000005";
             String s6 = "00000006";
          
          String[] s7 = {"My Name S7","My Location S7","15","Y","$100.00","2004/12/12","MyOwner7"};
          String[] s8 = {"My Name S8","My Location S8","15","Y","$100.00","2004/12/12","MyOwner8"};
          String[] s9 = {"My Name S9","My Location S9","15","Y","$100.00","2004/12/12","MyOwner9"};
          String[] s10 = {"My Name SX","My Location SX","15","Y","$100.00","2004/12/12","MyOwnerX"};
          
          DataAdapterClient dac = new DataAdapterClient();
          
 
             RunnerBooking rb1= dac.new RunnerBooking(da1, 0, s1);
             RunnerBooking rb2= dac.new RunnerBooking(da2, 0, s2);
             RunnerBooking rb3= dac.new RunnerBooking(da3, 0, s3);
             RunnerBooking rb4= dac.new RunnerBooking(da1, 0, s4);
             RunnerBooking rb5= dac.new RunnerBooking(da2, 0, s5);
             RunnerBooking rb6= dac.new RunnerBooking(da1, 0, s6);
 
             RunnerBooking rb7= dac.new RunnerBooking(da1, 6, s1);
             RunnerBooking rb8= dac.new RunnerBooking(da2, 6, s2);
             RunnerBooking rb9= dac.new RunnerBooking(da3, 6, s3);
             RunnerBooking rb10= dac.new RunnerBooking(da1, 6, s4);
             RunnerBooking rb11= dac.new RunnerBooking(da2, 6, s5);
             RunnerBooking rb12= dac.new RunnerBooking(da1, 6, s6);
 
                    
             RunnerDelete rd1 = dac.new RunnerDelete(da2, 7);
             RunnerDelete rd2 = dac.new RunnerDelete(da3, 21);
          
          
             RunnerCreate rc1 = dac.new RunnerCreate(da1, s7);
             RunnerCreate rc2 = dac.new RunnerCreate(da2, s8);
             RunnerCreate rc3 = dac.new RunnerCreate(da1, s9);
             RunnerCreate rc4 = dac.new RunnerCreate(da3, s10);
 
              rb7.start();
              rb8.start();
              rb9.start();
              rb10.start();
              rb11.start();
              rb12.start(); 
              
    
              rd1.start();
              rd2.start();
          
              rc1.start();
              rc2.start();
              rc3.start();
              rc4.start();
     
              rb1.start();
              rb2.start();
              rb3.start();
              rb4.start();
              rb5.start();
              rb6.start(); 
                  
          
      }    
 
    class RunnerBooking extends Thread {
        
      private DataAdapter da;
      private String customerId;
      private int recNo;
      
      public RunnerBooking() {}
      
      public RunnerBooking(DataAdapter da, int recNo, String customerId) {
        super();
        this.da = da;
        this.recNo = recNo;
        this.customerId = customerId;
      }
              
      public void run(){
        //System.out.println("Thread: " + this);
        try {
          da.book(recNo,customerId);                    
        }
        catch (RoomAlreadyBookedException e) {
          System.out.println("The room is already booked for recNo="+recNo);       
        }
        catch (Exception e) {
           e.printStackTrace();
        }
      }
    }            
 
   class RunnerDelete extends Thread {
        
      private DataAdapter da;
      private int recNo;
      
      public RunnerDelete() {}
      
      public RunnerDelete(DataAdapter da, int recNo) {
        super();
        this.da = da;
        this.recNo = recNo;
      }
              
      public void run(){
        //System.out.println("Thread: " + this);
        try {
          da.delete(recNo);                    
        }
        catch (Exception e) {
           e.printStackTrace();
        }
      }
    }   
 
   class RunnerCreate extends Thread {
        
      private DataAdapter da;
      private String[] s;
      
      public RunnerCreate() {}
      
      public RunnerCreate(DataAdapter da,  String[] s) {
        super();
        this.da = da;
        this.s = s;
      }
              
      public void run(){
        //System.out.println("Thread: " + this);
        try {
          int recNo = da.create(s);  
          System.out.println("New Record created, recNo="+ recNo);                  
        }
        catch (Exception e) {
           e.printStackTrace();
        }
      }
    }   
 
      
}
 


systempanic edited on 2004-12-29 23:03
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
btsai





發文: 162
積分: 0
於 2005-01-01 12:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
congratulations
SCJD 真的不好考, its specification and question are very vague and had to state a lot of assumptions


reply to postreply to post
BEA 8.1 Certified Administrator,
IBM Certified Solution Developer For XML 1.1 and Related Technologies,
Oracle Database SQL Certified Expert,
SCJP,SCWCD,SCBCD,SCDJWS,SCJD,SCEA,
Oracle Certified Master Java EE 5 Enterprise Architect
作者 Re:準備SCJD的一些心得 [Re:systempanic]
gitaman





發文: 42
積分: 3
於 2005-01-04 09:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
再次閱讀systempanic前輩的心得之後,我又有些疑問?煩請解惑一下。

在首篇的第5點(另外定義一個Hashtable RoomCol來存放所有沒有被delete的Room javabean)RoomCol不是Data的靜態成員之一嗎?在第8點中並沒有提到RoomCol只有DataSchema (singleton),lockedRecord Vector,bookings Hashtable,reusableRecNos HashSet。所以我在想,RoomCol和第8點的bookings Hashtable是不是相同的東西。若不是相同的東西的話,bookings Hashtable是做什麼用的呢?這bookings Hashtable裡面所裝的東西是不是和第9點的Booking Object有關?

Stupid

謝謝


reply to postreply to post
SCJP(1.4),SCWCD(1.3,1.4),SCBCD,SCJD,SCMAD,SCJA,SCEA
作者 Re:準備SCJD的一些心得 [Re:gitaman]
systempanic





發文: 216
積分: 4
於 2005-01-04 12:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
gitaman wrote:
再次閱讀systempanic前輩的心得之後,我又有些疑問?煩請解惑一下。

在首篇的第5點(另外定義一個Hashtable RoomCol來存放所有沒有被delete的Room javabean)RoomCol不是Data的靜態成員之一嗎?在第8點中並沒有提到RoomCol只有DataSchema (singleton),lockedRecord Vector,bookings Hashtable,reusableRecNos HashSet。所以我在想,RoomCol和第8點的bookings Hashtable是不是相同的東西。若不是相同的東西的話,bookings Hashtable是做什麼用的呢?這bookings Hashtable裡面所裝的東西是不是和第9點的Booking Object有關?

Stupid

謝謝


你讀得真仔細,那兩個是一樣的東西,都是放available Room objects,只是我當時
寫的時候前後時間不同,後來又改了名子....


reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
gitaman





發文: 42
積分: 3
於 2005-01-04 17:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Systempanic前輩。

另外我不了解的是。第9點中提到(在DataAdapter中的方法回傳值/傳入參數,改成Booking Object或是Collection,以符合OO設計(在Data.java中是int[]/String[]))。為什麼?

還有您thread/locking test case中的DataAdapter並不是以你所說的Booking來做為傳入/傳出參數。是我搞錯什麼地方嗎?還是您最終的test case也有做相對應的修改

謝謝
Stupid


reply to postreply to post
SCJP(1.4),SCWCD(1.3,1.4),SCBCD,SCJD,SCMAD,SCJA,SCEA
作者 Re:準備SCJD的一些心得 [Re:gitaman]
systempanic





發文: 216
積分: 4
於 2005-01-04 20:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
gitaman wrote:
Systempanic前輩。

另外我不了解的是。第9點中提到(在DataAdapter中的方法回傳值/傳入參數,改成Booking Object或是Collection,以符合OO設計(在Data.java中是int[]/String[]))。為什麼?

還有您thread/locking test case中的DataAdapter並不是以你所說的Booking來做為傳入/傳出參數。是我搞錯什麼地方嗎?還是您最終的test case也有做相對應的修改

謝謝
Stupid


(1) 你的Room的資料未來可能會變動,所以利用JavaBean做encapsulation.

(2) This depends on your design descision.

我的Room object是在getter/retrieval時回傳用的,booking room時你認為應該傳入什麼呢?

原則: Encapsulate what you think is most possible to change in future.

我的做法僅供參考,不用太follow me.....


systempanic edited on 2005-01-04 20:09
reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
gitaman





發文: 42
積分: 3
於 2005-01-05 08:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
謝謝您的回答,獲益良多!Thumbs up

reply to postreply to post
SCJP(1.4),SCWCD(1.3,1.4),SCBCD,SCJD,SCMAD,SCJA,SCEA
作者 Re:準備SCJD的一些心得 [Re:systempanic]
cvc





發文: 13
積分: 0
於 2006-08-20 15:12 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問 essay 是問答題嗎? 是否要用英文回答...?

reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:cvc]
systempanic





發文: 216
積分: 4
於 2006-10-21 12:27 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
cvc wrote:
請問 essay 是問答題嗎? 是否要用英文回答...?


yes

yes

Cool


reply to postreply to post
NaN
作者 Re:準備SCJD的一些心得 [Re:systempanic]
LKK388





發文: 1
積分: 0
於 2011-09-09 20:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
結果你拿到SCJD的認證了嗎? 看起來很難.

reply to postreply to post
作者 Re:準備SCJD的一些心得 [Re:systempanic]
ha9016559





發文: 8
積分: 0
於 2011-11-30 00:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我打算在部落格中寫一些我得到SCJD(OCMJD)過程中的所有心得,因為我發現網路上討論SCJD的文章跟資料也是少的可憐,我想要幫一些後進想要在這張認證上努力的人,留下一點有用的訊息,因為我在考SCJD時也是發現網上中文資料少的可憐,我想要改變一下..

以下是我的部落格
SCJD /OCMJD認證者的心得
http://weiming487.blogspot.com/
http://tw.myblog.yahoo.com/jw!gTVnqiOaEU6ligzKXuyKDcA-


ha9016559 edited on 2011-12-01 20:51
reply to postreply to post
SCJP 6.0 SCJD/OCMJD
我的部落格 SCJD/OCMJD認證者的心得
google 部落格
yahoo 部落格
» JWorld@TW »  Java Certification

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8