匿名使用者
匿名使用者 發問時間: 教育與參考考試 · 1 0 年前

有人考過SCJD嗎?

有人考過SCJD嗎?

可以分享如何準備嗎?

2 個解答

評分
  • 匿名使用者
    1 0 年前
    最佳解答

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

    2.SCJD的題型大致上有四種左右,而每一種又有版本上的小差異,但是所強調的重點都是類似,亦即: 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取得.....

    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

    第一個網址公佈的最快, 昇陽不會以其他任何的形式告知你考試結果.

    參考資料: 網路 + 自己
  • 匿名使用者
    6 年前

    我一直都有過敏狀況,是最近才知道要用防螨寢具的,因為醫師建議我用,我也考慮了很久,想說要買就買最好的,上個月趁網站有折扣的時候買了一組【北之特】防蹣(螨)寢具來用用看,真沒想到~~現在覺得過敏狀況有改善多了。雖然比一般的貴一些,不過~真值得!

還有問題?馬上發問,尋求解答。