博客

  • SCJP認證信息

    Sun Java。考試內容涉及所有Java相關知識、編程概念及applet開發技巧。Sun 認證Java程序員考試旨在觀察您通過應用軟件分配進行復雜編程的能力。之後還要測試您完成編程所需的知識。
      
    認證要求:
    學員掌握如何使用標準Java Development kit,V1.2 (JDK)或V1.4(JDK)開發應用程序和applets。學會Java語言的語法;如何使用Java來創建圖形用戶接口(GUI),事件處理機制,例外處理,通過設計與開發各種Java程序來獲得實際的編程經驗;您也將學到文件輸入/輸出(I/O);多線程和網絡的知識。
      
    通過認證將證明您能夠:認證是業界唯一經Sun授權的Java認證

    1.使用Java編程語言創建Java應用程序和applets
    2.定義和描述垃圾搜集,安全性和Java虛擬機(JVM)
    3.描述和使用Java語言面向對象的特點
    4.開發圖形用戶接口(GUI)。利用Java支持的多種布局管理
    5.描述和使用Java 1.2的事件處理模式
    6.使用Java語言的鼠標輸入,文本,窗口和菜單窗口部件
    7.使用Java的例外處理來控制程序執行和定義用戶自己的例外事件
    8.使用Java語言的先進的面向對象特點,包括方法重載,方法覆蓋,抽象類,接口,final,static和訪問控制
    9.實現文件的輸入/輸出(I/O)
    10.使用Java語言內在的線程模式來控制多線程

  • SUN認證常識

    Sun在 UNIX領域一直是技術上和市場占有率的領先者;近年來推出的Java技術,更成為業界的標準。所以Sun公司所舉辦的認證考試,必然成為Java和UNIX在全球信息界公認的標準。Sun推出的專業認證包括下列三種:

    1.Java認證考試:

     對於Java程序設計員,Sun推出兩項認證:Sun Certified Java Programmer(SCJP)和Sun Certified Java Developer(SCJD)。310-027SCJP測驗Java程序設計概念及能力,內容偏重於Java語法及JDK的內容;SCJD則進一步測試用Java開發應用程序的能力,考試者必須先完成一個程序的設計方案,再回答與此方案相關的一些問題。

    2.Solaris系統管理認證考試:

     對Solaris/Sun OS系統管理員,Sun推出Certified Solaris Administrator(CSA)。CSA分別為兩個等級(Part I 和 Part II ),測試對Solaris 系統管理的了解程度。

    3.Solaris網絡管理認證考試:

     為了測試使用者對於Solaris網絡的管理能力,Sun還特別推出Certified NetworkAdministrator(CNA). 內容包括基本網絡概念、 Routing and Subnet、Security、Performance、DNS、NIS+等通過SUN任何一門專業認證後,將全收到Sun Microsystems 總公司寄發的資格證及徽章,並有權將通過Sun認證的標記印在個人名片上,作為個人技術能力的肯定。

    SUN認證JAVA程序員

    眾所周知,Java以其獨有的開放性,跨平臺性和面向網絡的交互性席卷全球,以其安全性、易用性和開發周期短的特點,迅速從最初的編程語言發展成為全球第二大軟件開發平臺。這些優點已引起國內外計算機界的極大關註;Java公用規範(PAS)已被國際標準化組織(ISO)認定,Java技術已列為當今世界信息技術三大要點之一。

     Sun Java認證是業界唯一經Sun授權的Java認證。考試內容涉及所有Java相關知識、編程概念及applet開發技巧。Sun 認證Java程序員考試旨在觀察您通過應用軟件分配進行復雜編程的能力。之後還要測試您完成編程所需的知識。每次考試都包括65道以上的選擇題,時間大約為90分鐘。

    課程:SL-275 JAVA語言編程
    本課程是使學員掌握如何使用標準Java Development Kit,V1.1 (JDK) 開發應用程序和applets。在本課程中您將學會Java語言的語法。如何使用Java 來創建圖形用戶接口GUI,事件處理機制, 例外處理,通過設計與開發各種Java 程序來獲得實際的編程經驗.您也將學到文件輸入/輸出(I/O)、 多線程和網絡的知識.。本課程適用於熟悉C或C++的編程人員,也適用於想參加Sun Java 認證考試的各位考生。

  • 簡述SUN認證

    Sun公司為了為業界建立一套認證的標準,特別針對最先進的科技,推出Java及Solaris 技術認證方案。根據這些認證,在企業方面可以藉此作為招聘人才的評判標準,或是作為衡量員工技術水準的依據;在技術方面,通過這些認證也可以證明個人的技術能力。

    Sun在 UNIX領域一直是技術上和市場占有率的領先者;近年來推出的Java技術,更成為業界的標準。所以Sun公司所舉辦的認證考試,必然成為Java和UNIX在全球信息界公認的標準。Sun推出的專業認證包括下列三種:

    Java認證考試

    對於Java程序設計員,Sun推出兩項認證:Sun Certified Java Programmer (SCJP)和Sun Certified Java Developer(SCJD)。SCJP測驗Java程序設計概念及能力,內容偏重於Java語法及JDK的內容;SCJD則進一步測試用Java 開發應用程序的能力,考試者必須先完成一個程序的設計方案,再回答與此方案相關的一些問題。

    Solaris系統管理認證考試

    對Solaris/Sun OS系統管理員,Sun推出Certified Solaris Administrator(CSA)。CSA分別為兩個等級( Part I 和 Part II ),測試對Solaris 系統管理的了解程度。

    Solaris網絡管理認證考試

    為了測試使用者對於Solaris網絡管理能力,Sun推出Certified Network Administrator(CNA)。內容包括基本網絡概念、Routing and Subnet、Security、Performance、DNS、NIS+等。通過SUN任何一門專業認證後,將全收到Sun Microsystems 總公司寄發的資格證書及徽章,並有權將通過Sun認證的標記印在個人名片上,作為個人技術能力的肯定。

    java開發員認證Sun Certified JAVA Deverloper(SCJD) java開發員的認證考試以Sun指定的javaSL-285為教材,機考部分的考試號為310-027。Java開發員的認證考試: Java開發員的考試分程序設計和機考兩部分。其中,程序設計部分不限時。考生報名後,可從指定的網址下載考試題目,並根據題目要求進行程序設計。在指定的時間段(1年)內,考生須傳回自行設計的java程序。

  • 初學者,你應當如何學習C++以及編程

    Javascript是世界上最受誤解的語言,其實C++何嘗不是。坊間流傳的錯誤的C++學習方法一抓就是一大把。我自己在學習C++的過程中也走了許多彎路,浪費了不少時間。

    為什麼會存在這麼多錯誤認識?原因主要有三個,一是C++語言的細節太多。二是一些著名的C++書籍總在(不管有意還是無意)暗示語言細節的重要性和有趣。三是現代C++庫的開發哲學必須用到一些犄角旮旯的語言細節(但注意,是庫設計,不是日常編程)。這些共同塑造了C++社群的整體心態和哲學。

    單是第一條還未必能夠成氣候,其它語言的細節也不少(儘管比起C++起來還是小巫見大巫),就拿javascript來說,作用域規則,名字查找,closure,for/in,這些都是細節,而且其中還有違反直覺的。但許多動態語言的程序員的理念我猜大約是學到哪用到哪罷。但C++就不一樣了,學C++之人有一種類似於被暗示的潛在心態,就是一定要先把語言核心基本上吃透了才能下手寫出漂亮的程序。這首先就錯了。

    這個意識形成的原因在第二點,C++書籍。市面上的C++書籍不計其數,但有一個共同的缺點,就是講語言細節的書太多——《C++ gotchas》,《Effective C++》,《More Effective C++》,但無可厚非的是,C++是這樣一門語言:要拿它滿足現代編程理念的需求,尤其是C++庫開發的需求,還必須得關注語言細節,乃至於在C++中利用語言細節已經成了一門學問。比如C++模板在設計之初根本沒有想到模板元編程這回事,更沒想到C++模板系統是圖靈完備的,這也就導致了《Modern C++ Design》和《C++ Template Metaprogramming》的驚世駭俗。
    這些技術的出現為什麼驚世駭俗,打個比方,就好比是一塊大家都認為已經熟悉無比,再無秘密可言的土地上,突然某天有人挖到原來地下還蘊藏著最豐富的石油。在這之前的C++雖然也有一些細節,但也還算容易掌握,那可是C++程序員們的happy old times,因為C++的一切都一覽無餘,everything is figured out。然而《Modern C++ Design》的出世告訴人們,“瞧,還有多少細節你們沒有掌握啊。”於是C++程序員們久違的激情被重燃起來,奮不顧身的踏入細節的沼澤中。尤其是,模板編程將C++的細節進一步挖掘到了極致——我們幹嘛關心涉及類對象的隱式轉換的優先級高低?看看boost::is_base_of就可以知道有多詭異了。
    但最大的問題還在於,對於這些細節的關注還真有它合適的理由:我們要開發現代模板庫,要開發active library,就必須動用模板編程技術,要動用模板編程技術,就必須利用語言的犄角旮旯,enable_if,type_traits,甚至連早就古井無波的C宏也在亂世中重生,看看

    boost::preprocessor有多詭異就知道了,連C宏的圖靈完備性(預編譯期的)都被挖掘出來了。為什麼要做這些?好玩?標榜?都不是,開發庫的實際需求。但這也正是最大的悲哀了。在boost裡面因實際需求而動用語言細節最終居然能神奇的完成任務的最好教材就是
    boost::foreach,這個小設施對語言細節的發掘達到了驚天地泣鬼神的地步,不信你先試著自己去看看它的源代碼,再看看作者介紹它的文
    章吧。而boost::typeof也不甘其後——C++語言裡面有太多被“發現”而不是被“發明”的技術。難道最初無意設置這些語言規則的傢伙們都是oracles?

    因為沒有variadic templates,人們用宏加上缺省模板參數來實現類似效果。因為沒有concepts,人們用模板加上析構函數的細節來完成類似工作。因為沒有typeof,人們用模板元編程和宏加上無盡的細節來實現目標… C++開發者們的DIY精神不可謂不強。然而,如果僅僅是因為要開發優秀的庫,那麼涉及這些細節都還是情有可原的,至少在C++09出現並且編譯器廠商跟上之前,這些都還能說是不得已而為之。但我們廣大的C++程序員呢?大眾是容易被誤導的,我也曾經是。以為掌握了更多的語言細節就更牛,但實際卻是那些語言細節十有八九是平時編程用都用不到的。 C++中眾多的細節雖然在庫設計者手裡面有其用武之地,但普通程序員則根本無需過多關注,尤其是沒有實際動機的關注。一般性的編碼實踐準則,以及基本的編程能力和基本功,乃至基本的程序設計理論以及算法設計。才是真正需要花時間掌握的東西。學習最佳編碼實踐比學習C++更重要。看優秀的代碼也比埋頭用差勁的編碼方式寫垃圾代碼要有效。直接、清晰、了、KISS地表達意圖比玩編碼花招要重要…

    避免去過問任何語言細節,除非必要。這個必要是指在實際編程當中遇到問題,這樣就算需要過問細節,也是最省事的,懶惰者原則嘛。一個掌握了基本的編程理念並有較強學習能力的程序員在用一門陌生的語言編程時就算拿著那本語言的聖經從索引翻起也可以編出合格的程序來。十年學會編程不是指對每門語言都得十年,那一輩子才能學幾門語言哪,如果按字母順序學的話一輩子都別指望學到Ruby了;十年學習編程更不是指先把語言特性從粗到細全都吃透才敢下手編程,在實踐中提高才是最重要的。

    至於這種摳語言細節的哲學為何能在社群裡面呈野火燎原之勢,就是一個心理學的問題了。想像人們在論壇上討論問題時,一個對語言把握很細緻的人肯定能夠得到更多的佩服,而由於論壇上的問題大多是小問題,所以解決實際問題的真正能力並不能得到顯現,也就是說,知識型的人能夠得到更多佩服,後者便成為動力和仿效的砝碼。然而真正的編程能力是與語言細節沒關係的,熟練運用一門語言能夠幫你最佳表達你的意圖,但熟練運用一門語言絕不意味著要把它的邊邊角角全都記住。懂得一些常識,有了編程的基本直覺,遇到一些細節錯誤的時候再去查書,是最節省時間的辦法。

    C++的書,Bjarne的聖經《The C++ Programming Language》是高屋建瓴的。 《大規模C++程序設計》是挺務實的。 《Accelerated C++》是最佳入門的。 《C++ Templates》是僅作參考的。 《C++ Template Metaprogramming》是精力過剩者可以玩一玩的,普通程序員碰都別碰的。 《ISO.IEC C++ Standard 14882》不是拿來讀的。 Bjarne最近在做C++的教育,新書是絕對可以期待的。

    PS關於如何學習編程,g9的blog上有許多精彩的文章:這裡,這裡,這裡,這裡…實際上,我建議你去把g9老大的blog翻個底朝天:P

    再PS書單?我是遑於給出一個類似《C++初學者必讀》這種書單的。 C++的書不計其數,被公認的好書也不勝枚舉。只不過有些書容易給初學者造成一種錯覺,就是“學習C++就應該是這個樣子的”。比如有朋友提到的《高質量C/C++編程》,這本書有價值,但不適合初學者,初學者讀這樣的書容易一葉障目不見泰山。實際上,正確的態度是,細節是必要的。但細節是次要的。其實學習編程我覺得應該最先學習如何用偽碼表達思想呢,君不見《Introduction to Algorithm》裡面的代碼?《TAOCP》中的代碼?哦,對了它們是自己建立的語言,但這種僅教學目的的語言的目的就是為了避免讓寫程序的人一開始就忘了寫程序是為了完成功能,以為寫程序就是和語言細節作鬥爭了。 Bjarne說程序的正確性最重要,boost的編碼標準裡面也將正確性列在性能前面。此外,一旦建立了正確的學習編程的理念,其實什麼書(只要不是太垃圾的)都有些用處。都當成參考書,用的時候從目錄或索引翻,基本就對了。

    再再PS myan老大和g9老大都給出了許多精彩的見解。我不得不再加上一個P.S。具體我就不摘錄了,如果你讀到這裡,請務必往下看他們的評論。轉載者別忘了轉載他們的評論:-)許多朋友都問我同一個問題,到底要不要學習C++。其實這個問題問得很沒有意義。 “學C++”和“不學C++”這個二分法是沒意義的,為什麼?因為這個問題很表面,甚至很浮躁。重要的不是你掌握的語言,而是你掌握的能力,借用myan老大的話,“重要的是這個磨練過程,而不是結果,要的是你粗壯的腿,而不是你身上背的那袋鹽巴。 ”。此外學習C++的意義其實真的是醉翁之意不在酒,像C/C++這種系統級語言,在學習的過程中必須要涉及到一些底層知識,如內存管理、編譯連接系統、彙編語言、硬件體系結構等等等等知識(注意,這不包括過分犄角旮旯的語言枝節)。這些東西也就是所謂的內功了(其實最最重要的內功還是長期學習所磨練出來的自學能力)。對此大嘴Joel在《Joel On Software》裡面提到的漏洞抽象定律闡述得就非常漂亮。

    所以,答案是,讓你成為高手的並不是你掌握什麼語言,精通C++未必就能讓你成為高手,不精通C++也未必就能讓你成為低手。我想大家都不會懷疑g9老大如果要抄起C++做一個項目的話會比大多數自認熟練C++的人要做得漂亮。所以關鍵的不是語言這個表層的東西,而是底下的本質矛盾。當然,不是說那就什麼語言都不要學了,按照一種曹操的邏輯,“天下語言,唯imperative與declarative耳”。 C++是前者裡面最複雜的一種,支持最廣泛的編程範式。借用當初數學系入學大會上一個老師的話,“你數學都學了,還有什麼不能學的呢?”。學語言是一個途徑,如果你把它用來磨練自己,可以。如果你把它用來作為學習系統底層知識的鑰匙,可以。如果你把它用來作為學習如何編寫優秀的代碼,如何組織大型的程序,如何進行抽象設計,可以。如果掉書袋,光啃細節,我認為不可以(除非你必須要用到細節,像boost庫的coder們)。

  • Linux認證的基本知識點介紹

    一、什麼是Linux ?

    Linux誕生於1991年10月,至今已有十多年曆史。 Linux是一套免費且功能完整的UNIX軟件。且它是一個32位的操作系統,運作穩定且有

    效率,被廣泛用作服務器操作系統。 Linux承襲的是開放式原始碼(Open Source)的精神,所有Linux Source Code(源代碼)均可免費取得,

    這使得它相對其它的操作系統(尤其是昂貴的Windows NT)而言價格極其便宜。同時,因為它的源代碼是開放的,因此,可以方便地被全球數

    以萬計的程序員應用並不斷改進,使得它在技術上的進展突飛猛進—–目前Linux的內核已經升級到2.4版。這種進步使得Linux成為市場倍

    加青睞的操作系統,1999年,Linux超過了Novell公司的Netware,成為僅次於微軟Windows NT的排名第二的服務器操作系統。 IDC預測,未

    來四年Linux的出貨量將以年增長28%的比例增長,從1999年的130萬套增長到2004年的470萬套。

    目前,全球最大的Linux是Red Hat Linux,紅旗Linux則是中國Linux的第一品牌。

    二、為什麼你應該選擇Linux認證?

    知識產權保護將逐步規範,使得更多企業轉向成本低廉的Linux操作平台。據統計,2000年,Linux在服務器市場上的佔有率超過27%,

    其增長率超過Windows操作系統4個百分點。同時,這一市場正在飛速發展,IDC日前表示,Linux急速增加的使用者急需專業訓練,到公元

    2004年,光是在美國,這塊市場就能成長到3億1千1百萬美金。尤其Linux持續不斷滲入各大企業中,使得Linux的專業教育訓練格外緊要。

    因此,對那些急於轉向IT業界的同學來說,linux認證是一個不錯的選擇。在目前來看,至少它有以下優勢:

    Windows XP高昂的價格和升級收費政策使更多企業和個人用戶轉向自由開放的Linux操作系統,目標雇主群會迅速增長;

    方便地向潛在的雇主證明您在Linux方面獨特的專業技能,獲得更多提升和提薪的機會;

    成為屈指可數的Linux認證工程師,可以在與成千上萬的MCSE、CCNA競爭中脫穎而出,輕鬆勝出;

    相對其他IT認證更低廉的花費(例如最廣泛被接受的LPIL Linux認證的兩門考試每門只需要100美元)。

    同時,根據Tech RePublic的調查,IT業界內人士也有相當多的技術人員正在考慮Linux認證,這一比例高達45%。

    三、國際Linux認證現狀

    目前在國外廣泛承認的linux認證共有四種:

    1. Linux Professional Institute(簡稱為LPI)

    就目前Linux團體所關注的程度來看,LPI認證計劃受到了最為廣泛的支持。 LPI已經先期推出了Linux Profession Institute

    Certified-Level 1 (簡稱為LPIC-1)認證計劃,不久的將來還會按預定計劃推出第2和第3級認證。為了獲得LPIC-1證書,你必須通過兩門各

    自長達90分鐘的考試—–101 (LPI General Linux,Part1)和102 (LPI General Linux,Part 2)。 LPI的LPIC—1的應試對象主要是有至少1

    年Linux工作經驗的系統管理員。

    2.Sair Linux和GNU

    同LPI一樣,Sair提供了三種級別的認證計劃;

    Level 1——Sair Linux & GNU Certified Administrator(LCA)

    Level 2 —– Sair Linux & GNU Certified Engineer(LCE)

    Level 3 —- Master Sair Linux & GNU Certified Engineer(MLCE)

    第1級才是目前得到完全開發的Sair認證項目,這一點也和LPI一樣。

    3.Linux+

    CompTIA主辦的Linux+認證計劃是最新進入Linux認證市場的。該計劃於2001年9月21日正式推出,目前已經在Linux從業人員和業內引起

    了廣泛的關注。幾乎所有的主要認證出版商都撰寫了針對Linux+認證的考試參考書,眾多的IT培訓中心都在準備Linux+認證計劃了。

    同CompTIA推出的其他帶“+”號的認證一樣,Linux十資格證書只需要通過一場考試即可獲得(VUE和Prometric考試中心舉辦此類考試)

    ,一旦你獲得了Linux+資格證書,證書就終生有效。 Linux+考試價格是190美元,考試採用多選題形式,時長120分鐘,所覆蓋的內容很多都

    是和Sair以及LPI認證完全一樣的,但難度稍有降低。

    LPI和Sair認證計劃的考試對像是具有相當經驗的Linux網絡和系統管理員,而Linux+認證則主要面向只有半年左右的Linux體驗、想獲

    得基本Linux技術資格的個人。

    4.Red Hat Certified Engineer

    Linux+代表了低級的Linux認證計劃,而高級的Linux認證長期以來則幾乎完全是Red Hat Certified Engineer(RHCE)認證計劃的天下

    。 RHCE是該領域最具挑戰性的認證考試,所以它也是最有價值的Linux認證。但也是最貴的,全套課程費用為2,498美金,也可單獨做認證

    測驗,費用為749美金。

  • linux的職業方向

    如何入門及如何規劃自己的Linux學習之路一直是困擾Linux愛好者的一大難題,實際上,Linux的入門與學習並不難,只是由於長期使用其他操作系統的習慣與沒有正確的引導指向,所以一個本身不是難題的問題變成了難題。

    本文為長期在Linux行業從業的技術人員與您分享他的經驗與指導意見,相信這篇文章將對很多想入門的Linux愛好者有較大幫助。學習Linux的一個非常大的誤區在於僅僅學習Linux本身,想要讓它對自己有利,必須學習使用Linux做事情,比如:用Linux平台做大型網站、用Linux作為Oracle RAC集群的平台、製作一個電視中運行的小型嵌入式Linux系統。

    很多國家及地區的政府(如新加坡、台灣和德國)已經表明有計劃把自己的服務器體系結構由WINDOWS向Linux轉移。英國政府在與微軟協商一個三年期的合同續約時,利用有可能轉向Linux成功地節省了1.5億美元。美國也不甘落後,其國防部(DOD)、國家安全局(NSA)、國家航空和宇宙航行局(NASA)以及美國國家標準和技術委員會(NIST)都在就部署Linux服務器系統和開放源碼軟件進行研究。千萬不能僅僅學習Linux系統本身,Linux僅僅是操作系統,重要的是其上的應用,就是能為你能創造多少價值,學習Linux的一個誤區在於精力只是局限於Linux本身,從Linux的操作到Linux的內核,也不管自己到底要幹嘛?但是系統畢竟是拿來用的,學習使用Linux的目的是創造效益,如果不是僅僅製作Linux系統,不是加入Red Hat這樣的專業Linux發布版廠商,那麼你在學習了Linux基礎後就相當於掌握了Windows,很顯然這是不夠的,你還需要更進一步的學習,選擇Linux上的應用或者Linux上的軟件開發。

    學習Linux要選擇好自己的發展方向,大的方向有兩個,一是Linux的系統、網絡、服務應用方向,另一個是Linux下軟件開發方向。根據我們多年跟踪的學員情況,我們發現,學員在同等條件,學習Linux後,選擇開發要比系統應用薪水要上升的更為迅速,而且更容易突破5000、8000或10000等每月的門檻,但是這個方向難度會更大,同時會更枯燥些,需要“鐵屁股”——能坐得住,一但真正入門,就會有很強的成就感,進入大公司也只是早晚的事。但是另一方面,高級的系統應用方面,如集群、數據庫等也相當不錯,那些不想吃程序員的苦的人可以選擇這個方向。以下為兩個方向的詳細介紹:

    Linux的系統、網絡、服務、集群,網站,Oracle數據庫應用方向:

    1、數據庫服務器如Oracle Sybase

    2、Web應用服務器如sina baidu大型網站

    3、Mail應用服務器如163或外企mail系統等

    4、中間件或J2EE服務器如為JBOSS Weblogic Websphoto做平台

    5、網絡應用等

    嵌入式開發、UNIX/Linux應用系統開發,Linux內核驅動開發方向,主要有以下幾類:

    1、Linux下的C/C++系統程序開發

    2、Linux平台Java體系開發

    3、Linux下的圖形界面開發

    4、Linux底層內核/驅動開發

    5、嵌入式Linux開發等。

  • Oracle初學者心得

    oracle的體系太龐大了,對於初學者來說,難免會有些無從下手的感覺,什麼都想學,結果什麼都學不好,所以把學習經驗共享一下,希望讓剛剛入門的人對oracle有一個總體的認識,少走一些彎路。
      
    一、定位
    oracle分兩大塊,一塊是開發,一塊是管理。開發主要是寫寫存儲過程、觸發器什麼的,還有就是用Oracle的Develop工具做form。有點類似於程序員,需要有較強的邏輯思維和創造能力,個人覺得會比較辛苦,是青春飯J;管理則需要對oracle數據庫的原理有深刻的認識,有全局操縱的能力和緊密的思維,責任較大,因為一個小的失誤就會down掉整個數據庫,相對前者來說,後者更看重經驗。
      
    因為數據庫管理的責任重大,很少公司願意請一個剛剛接觸oracle的人去管理數據庫。對於剛剛畢業的年輕人來說,可以先選擇做開發,有一定經驗後轉型,去做數據庫的管理。當然,這個還是要看人個的實際情況來定。

    二、學習方法
    我的方法很簡單,就是:看書、思考、寫筆記、做實驗、再思考、再寫筆記
      
         看完理論的東西,自己靜下心來想想,多問自己幾個為什麼,然後把所學和所想的知識點做個筆記;在想不通或有疑問的時候,就做做實驗,想想怎麼會這樣,同樣的,把實驗的結果記下來。思考和做實驗是為了深入的了解這個知識點。而做筆記的過程,也是理清自己思路的過程。
      
         學習的過程是使一個問題由模糊到清晰,再由清晰到模糊的過程。而每次的改變都代表著你又學到了一個新的知識點。
      
         學習的過程也是從點到線,從線到網,從網到面的過程。當點變成線的時候,你會有總豁然開朗的感覺。當網到面的時候,你就是高手了
      
         很多網友,特別是初學的人,一碰到問題就拿到論壇上來問,在問前,你有沒有查過書,自己有沒有研究過,有沒有搜索一下論壇?這就叫思維惰性。由別人來回答你的問題,會讓你在短時間內不費勁地弄懂這個知識點,然而通過自己的努力去研究它,不但會更深入的了解這個知識點,更重要的是在研究的過程會提高你解決問題和分析問題的能力。總的來說,沒有鑽研的學習態度,不管學什麼東西,都不會成功的。
      
         當然,初學的人很多時候是因為遇到問題時,無從下手,也不知道去哪裡找資料,才會到論壇上提問題的。但我認為,在提問的時候,是不是可以問別人是如何分析這個問題?從哪裡可以找到相關的資料?而不是這個問題的答案是什麼?授人以魚不如授人以漁。

       下面我講下我處理問題的過程

       首先要知道oracle的官方網站:www.oracle.com這裡有oracle的各種版本的數據庫、應用工具和權威的官方文檔。其次,還要知道http://metalink.oracle.com/這裡是買了oracle服務或是oracle的合作夥伴才可以進去的,裡面有很多權威的解決方案和補丁。然後就是一些著名網站:asktom.oracle.com www.orafaq.net, www.dbazine.com。這裡有很多經驗之談。

        遇到問題了。如果是概念上的問題,第一時間可以找tahiti.oracle.com,這裡會給你最詳細的解釋。如果在運行的過程中出了什麼錯誤。可以去metalink看看。如果是想知道事務的處理的經驗之談。可以去asktom。當然。這裡只是相對而言。

    三、oracle的體系
    oracle的體系很龐大,要學習它,首先要了解oracle的框架。在這裡,簡要的講一下oracle的架構,讓初學者對oracle有一個整體的認識。
      
    1、物理結構(由控製文件、數據文件、重做日誌文件、參數文件、歸檔文件、密碼文件組成)
    控製文件:包含維護和驗證數據庫完整性的必要信息、例如,控製文件用於識別數據文件和重做日誌文件,一個數據庫至少需要一個控製文件
    數據文件:存儲數據的文件
    重做日誌文件:含對數據庫所做的更改記錄,這樣萬一出現故障可以啟用數據恢復。一個數據庫至少需要兩個重做日誌文件
    參數文件:定義Oracle例程的特性,例如它包含調整SGA中一些內存結構大小的參數
    歸檔文件:是重做日誌文件的脫機副本,這些副本可能對於從介質失敗中進行恢復很必要。
    密碼文件:認證哪些用戶有權限啟動和關閉Oracle例程
      
    2、邏輯結構(表空間、段、區、塊)
    表空間:是數據庫中的基本邏輯結構,一系列數據文件的集合。
    段:是對像在數據庫中佔用的空間
    區:是為數據一次性預留的一個較大的存儲空間
    塊:ORACLE最基本的存儲單位,在建立數據庫的時候指定
      
    3、內存分配(SGA和PGA)
    SGA:是用於存儲數據庫信息的內存區,該信息為數據庫進程所共享。它包含Oracle服務器的數據和控制信息,它是在Oracle服務器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
    PGA:包含單個服務器進程或單個後台進程的數據和控制信息,與幾個進程共享的SGA正相反PGA是只被一個進程使用的區域,PGA在創建進程時分配在終止進程時回收
      
    4、後台進程(數據寫進程、日誌寫進程、系統監控、進程監控、檢查點進程、歸檔進程、服務進程、用戶進程)
    數據寫進程:負責將更改的數據從數據庫緩衝區高速緩存寫入數據文件
    日誌寫進程:將重做日誌緩衝區中的更改寫入在線重做日誌文件
    系統監控:檢查數據庫的一致性如有必要還會在數據庫打開時啟動數據庫的恢復
    進程監控:負責在一個Oracle進程失敗時清理資源
    檢查點進程:負責在每當緩衝區高速緩存中的更改永久地記錄在數據庫中時,更新控製文件和數據文件中的數據庫狀態信息。
    歸檔進程:在每次日誌切換時把已滿的日誌組進行備份或歸檔
    服務進程:用戶進程服務。
    用戶進程:在客戶端,負責將用戶的SQL語句傳遞給服務進程,並從服務器段拿回查詢數據。
      
    5、oracle例程:Oracle例程由SGA內存結構和用於管理數據庫的後台進程組成。例程一次只能打開和使用一個數據庫。
      
    6、SCN(System Change Number):系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,他是系統中維持數據的一致性和順序恢復的重要標誌。

    四、深入學習
    管理:可以考OCP證書,對oracle先有一個系統的學習,然後看Oracle Concepts、oracle online document,對oracle的原理會有更深入的了解,同時可以開始進行一些專題的研究如:RMAN、RAS、 STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
      
    開發:對於想做Oracle開發的,在了解完Oracle基本的體系結構之後,可以重點關注PL/SQL及Oracle的開發工具這一部分。 PL/SQL主要是包括怎麼寫SQL語句,怎麼使用Oracle本身的函數,怎麼寫存儲過程、存儲函數、觸發器等。 Oracle的開發工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer這些),學會如何熟練使用這些工具。

    介紹幾本oracle入門的好書

    oracle官方文檔:《concept》上面講了oracle的體系和概念,很適合初學者看。

    OCP的教學用書,也就是STUDY GUIDE(SG)。
    Oracle8i備份恢復手冊
    Oracle8高級管理與優化
    Oracle8i PLSQL程序設計
    Oracle8數據庫管理員手冊
    以上書本都是機械工業出版社出版。
      
    介紹幾個網站
    http://tahiti.oracle.com oracle的官方文檔
    現在http://www.oracle.com.cn/onlinedoc/index.htm也有官方文檔,速度奇快
    http://metalink.oracle.com/ oracle的技術支持網站。需要購買Oracle服務才能有一個帳號,才能登陸,有大量的Knowledge Base,大量問題解決經驗。
    http://www.oracle.com oracle的官方網站,可以在這裡down oracle的軟件、官方文檔和獲得最新的消息
    http://www.dbazine.com/ Oracle的雜誌
    http://asktom.oracle.com
    http://www.orafaq.net/
    http://www.ixora.com.au/
    http://www.oracle-base.com
    http://www.dba-oracle.com/oracle_links.htm

    來源:www.itcert.org
  • 虛擬化項目實施前需考慮的十大問題

    利用虛擬化技術,把軟件從硬件當中抽取出來,創建靈活、動態的環境,這樣的好處很吸引人。不過能否成功實施該項技術則取決於所需技能、安全和管理工具以及業務驅動因素是否到位。因為,在有些情況下,虛擬化技術還沒有準備好,或者回報不夠明顯,因而不能立刻開始實施。虛擬化項目不應該倉促上馬。這是一個長期機會,如果企業把虛擬化當成是一項戰略,而不僅僅是一個項目,那樣更有可能獲得長遠效益。

    以下是啟動全企業虛擬化項目之前要問自己的幾個重要問題。

    1、你擁有支持虛擬化技術的技能嗎?

    EMA把缺少“相應技能”列為成功部署虛擬化技術面臨的最大障礙。這家研究公司聲稱,虛擬化技術還沒有到位的企業約有四分之三不具備支持這項技術的技能。 EMA建議:在採用這項技術之前,對員工進行培訓、確定需求、記下預期出現的變化,並且在小的試點環境裡對虛擬化技術進行試用。

    2、你對虛擬化技術可能帶來的人事紛爭做好準備了嗎?

    第二個隱藏困難也與人這個因素有關。 EMA認為,因為IT部門多年來存在於各自獨立的環境,IT主管試圖讓公司的主流用戶接受虛擬化技術時可能會面臨阻力。譬如說,有些部門可能不想共享服務器資源,正因為如此,EMA建議公司部署報告工具,顯示虛擬化技術如何有助於提升性能,或者因為可共享彼此的資源而至少不會損害各部門的利益。

    3、你有沒有考慮過相關風險?能不能承受?

    雖然虛擬化技術減少了支持多個系統及應用所需的物理資源的數量,但同時把更多的用戶和應用集中到了數量更少、更複雜的共享虛擬化環境下。正因為如此,硬件故障、人為錯誤、安全漏洞、規劃問題、支持問題及其他因素帶來的影響在虛擬化環境下會得到極大地放大。 EMA給出的建議就是:在虛擬化項目的每個階段,企業應當制訂詳細的業務連續性和災難恢復計劃。

    4、你的安全系統承受得了嗎?

    虛擬化技術會帶來更多的安全漏洞、惡意軟件及薄弱環節,數量之多超出了許多公司原先準備的應對能力——這主要是因為如今的技術還無法處理新的威脅。 EMA認為,借助現有工具,幾乎發現不了像虛擬機管理程序感染、rootkIT病毒以及惡意虛擬機這類安全問題。 IT主管必須像保護物理機器那樣來保護虛擬機,還要採取其他步驟來確保虛擬化環境得到保護。 EMA認為,發現、配置、變革管理及其他方面的技術和製度對發現針對虛擬化環境的惡意軟件變得更為關鍵。

    5、你的系統和應用與虛擬化技術兼容嗎?

    有些應用和系統與虛擬化技術之間缺乏良好的兼容性。譬如說,EMA提到的“具有對各種資源的高效利用、極大的需求峰值或者持續高利用率等特點”的應用。這家研究公司認為,直接與硬件進行聯繫的應用也會妨礙虛擬化項目的實施。

    6、你有沒有容量規劃措施?

    虛擬服務器散亂現像是部署的虛擬化技術超過現有容量所帶來的一個常見結果。 EMA建議,IT部門應當利用詳細的容量規劃措施,確保自己有足夠的軟硬件資源來支持所實施的虛擬化技術,並確保虛擬化技術不會失去控制。

    7、你的環境得到支持嗎?

    EMA認為,雖然許多流行的套裝應用軟件支持虛擬化技術,但還是有許多應用軟件不支持。這家研究機構建議,IT部門在部署虛擬化技術之前,應當調查哪些軟硬件平台得到支持、哪些需要升級。

    8、你的網絡支持虛擬化技術嗎?

    網絡和存儲可能會給數據中心的虛擬化技術帶來瓶頸。譬如說,專注於用戶的虛擬化技術(如應用虛擬化、桌面虛擬化或者應用流)在低帶寬連接上就無法使用。企業的IT管理人員可以試著利用廣域網優化技術或者限制系統映像數量過多,克服網絡和存儲帶來的局限性。

    9、你的管理系統能夠處理虛擬化環境嗎?

    雖然虛擬化技術減少了要管理的物理資源的數量,但也加大了整個環境的複雜性,還帶來了讓某些IT管理人員為之頭痛的管理問題。譬如,易於部署可能會帶來虛擬機數量過多,或者虛擬服務器散亂現象,這可能會導致管理難度大大提高。

    另外,添加的一層軟件加大了管理整個環境的複雜性。 EMA認為,在管理工具跟上虛擬化技術的步伐之前,成功的關鍵在於不但要有相應工具,還要有發現、性能管理、配置管理、補丁管理、服務級別管理、自動配置、災難恢復等其他方面嚴格的流程製度。

    10、虛擬化技術可以幫助你滿足業務目標嗎?

    也許在倉促實施虛擬化技術過程中最容易被忽視的因素就是,沒有把技術實施與具體的業務目標聯繫起來。為了評估虛擬化技術部署項目的成功,企業的IT部門必須在部署這項技術之前,先要知道所需要的結果。 EMA建議,IT管理人員應當為長遠的戰略成果做好規劃,不要使用虛擬化技術作為解決緊迫的棘手問題的權宜之計。譬如說,雖然許多公司認為節省成本是虛擬化技術的一個成果,但EMA認為情況往往並非如此。

    EMA認為: “總的來說,節省成本並非是總能得到的結果,實際上,減少成本(軟件、硬件和場地等方面的成本)是最不能指望的結果。譬如說,儘管服務器合併帶來的成本效益經常被吹噓,但它帶來的只是一次性的成本節省,而額外成本(特別是對軟件而言)往往相當大。”