<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    李開復(fù)2003年12月


    三年前離開中國時,我在《給中國學(xué)生的一封信》中,與廣大青年學(xué)生一道,討論了一些大家共同關(guān)心的話題,并結(jié)合自己的學(xué)習(xí)和工作經(jīng)歷,就青年學(xué)生如何對待機(jī)遇、學(xué)業(yè)、工作、他人、自己等問題,闡述了我的個人意見。我提出誠信和正直、主動意識、交流和溝通、努力一生學(xué)習(xí)這幾個個人素質(zhì)方面值得中國學(xué)生高度重視,

    在這三年,許多中國學(xué)生,經(jīng)過電子郵件、講座后的問答、座談、和其他渠道(例如在電視節(jié)目“對話”中),常對我提到“如何成才”的問題。對于這個大家關(guān)注的問題,我整理了許多材料,集成這封“第二封信”。

    在第一封信力所提到的個人素質(zhì)或“價值觀”是成材的必要的基礎(chǔ)。但是,除了素質(zhì)之外,成才同樣的需要領(lǐng)導(dǎo)能力(leadership)。很多人誤以為領(lǐng)導(dǎo)能力最重視的是天資、號召力、管理能力。但是,根據(jù)我個人的經(jīng)驗(yàn),和最近一些研究的結(jié)論,如果你想成為一名成功的領(lǐng)導(dǎo),最重要的不是你的智商(IQ),而是你的情商(EQ)。最重要的不是要成為一個有號召力令人信服的領(lǐng)導(dǎo),而是要成為一個有 “謙虛”、“執(zhí)著”和“勇氣” 的領(lǐng)導(dǎo)。

    這“給中國學(xué)生的第二封信”是為那些希望不斷提高自己,不斷學(xué)習(xí)事業(yè)成功所必需的基本技能和領(lǐng)導(dǎo)藝術(shù)的人所寫的。第一部分重申了《給中國學(xué)生的一封信》中討論過的有關(guān)個人素質(zhì)的話題;第二部分闡釋了領(lǐng)導(dǎo)能力中最重要的情商;第三部分給出了卓越的領(lǐng)導(dǎo)所必須具備的、有別于普通人的基本特質(zhì)。


    ?

    如何提高個人素質(zhì)
    ?

    誠信和正直

    一個人的人品如何直接決定了這個人對于社會的價值。而在與人品相關(guān)的各種因素之中,誠信又是最為重要的一點(diǎn)。微軟公司在用人時非常強(qiáng)調(diào)誠信,我們只雇傭那些最值得信賴的人。去年,當(dāng)微軟列出對員工期望的“核心價值觀”時,誠信(honesty and integrity)被列為一位。

    在我發(fā)表“第一封信”后,曾經(jīng)有一位同學(xué)問我:為什么一個公司要涉入員工的道德呢?我回答:這是為了公司自己的利益。例如,一位應(yīng)聘者在面試時曾對我說,如果他能加入微軟公司,他就可以把他在前一家公司所做的發(fā)明成果帶過來。對這樣的人,無論他的技術(shù)水平如何,我都不會雇用他。他既然可以在加入微軟時損害先前公司的利益,那他也一定會在加入微軟后損害微軟公司的利益。

    另外有一位同學(xué)看了“對話”后問我,為什么我會把誠信放在智慧之前呢?難道我們會去衡量員工的誠信和他們的智慧而給誠信更高的比重?其實(shí),我們的衡量都在直接的工作目標(biāo)上,并不會對誠信或智慧做直接的衡量。但是,作為第一“核心價值”,誠信是我們對員工最基本的要求。 我們根本不會去雇用沒有誠信的人。如果一個員工發(fā)生了嚴(yán)重誠信的問題,他會被立刻解雇。

    當(dāng)一個公司這么重視誠信,員工一定更值得信賴。因此,公司對員工也能夠完全信任,讓他們發(fā)揮自己的才能。在微軟公司,公司的各級管理者都會給員工較大的自由和空間發(fā)展他們的事業(yè),并在工作和生活上充分信任、支持和幫助員工。只要是微軟錄用的人,微軟就會百分之百地信任他。和一些軟件企業(yè)對員工處處提防的做法不同,微軟公司內(nèi)的員工可以看到許多源代碼,接觸到很多技術(shù)或商業(yè)方面的機(jī)密。正因?yàn)槿绱说玫焦镜男湃危④浀膯T工對公司才有更強(qiáng)的責(zé)任心和更高的工作熱情。



    培養(yǎng)主動意識

    坦白地說,中國的學(xué)生和職員大多屬于比較內(nèi)向的類型,在學(xué)習(xí)和工作中還不夠主動。在學(xué)校時,學(xué)生們往往需要老師安排學(xué)習(xí)任務(wù),或是按照老師的思路做課題研究。在公司里,中國職員常常要等老板吩咐做什么事、怎么做之后,才開始工作。此外,許多中國人并不善于推銷和宣傳自己,這恐怕和中國自古以來講求中庸的文化氛圍有很大關(guān)系。

    但是,要想在現(xiàn)代企業(yè)中獲得成功,就必須努力培養(yǎng)自己的主動意識:在工作中要勇于承擔(dān)責(zé)任,主動為自己設(shè)定工作目標(biāo),并不斷改進(jìn)方式和方法;此外,還應(yīng)當(dāng)培養(yǎng)推銷自己的能力,在領(lǐng)導(dǎo)或同事面前要善于表現(xiàn)自己的優(yōu)點(diǎn),有了研究成果或技術(shù)創(chuàng)新之后要通過演講、展示、交流、論文等方式和同事或同行分享,在工作中犯了錯誤也要勇于承認(rèn)。只有積極主動的人才能在瞬息萬變的競爭環(huán)境中獲得成功,只有善于展示自己的人才能在工作中獲得真正的機(jī)會。



    客觀、直接的交流和溝通


    開誠布公的交流和溝通是團(tuán)隊(duì)合作中最重要的環(huán)節(jié)。人與人之間遮遮掩掩、言不由衷甚至挑撥是非的做法都會嚴(yán)重破壞團(tuán)隊(duì)中的工作氛圍,阻礙團(tuán)隊(duì)成員間的正常交流,并最終導(dǎo)致項(xiàng)目或企業(yè)經(jīng)營失敗。

    比如,在開會討論問題的時候,與會的所有人員都應(yīng)當(dāng)坦誠地交換意見,這樣才能做出正確的決定。如果某個人因?yàn)榭紤]到某些其他因素(比如不愿反駁上級領(lǐng)導(dǎo)的意見)而在會議上不敢表達(dá)自己的觀點(diǎn),一味地唯唯諾諾,會后到了洗手間里再和別人說“其實(shí)我不同意他的觀點(diǎn)”,這種戴著假面具工作的人不但不能堅持自己的觀點(diǎn),還會破壞公司內(nèi)部的溝通和交流渠道,對工作產(chǎn)生負(fù)面的影響。

    微軟公司有一個非常好的文化叫“開放式交流(Open communication)”,它要求所有員工在任何交流或溝通的場合里都能敞開心扉,完整地表達(dá)自己的觀點(diǎn)。在微軟開會時,大家如果意見的不統(tǒng)一,一定要表達(dá)出來,否則公司可能錯過良機(jī)。當(dāng)Internet剛開始時,很多微軟的領(lǐng)導(dǎo)者不理解、不贊成花太多精力做這個“不掙錢”的技術(shù)。但是有幾位技術(shù)人員,他們不斷地提出他們的意見和建議,雖然他們的上司不理解,但是仍然支持他們“開放式交流”的權(quán)利。后來,他們的聲音很快的達(dá)到比爾?蓋茨的耳里,促成比爾改變公司方向,徹底支持Internet。從這個例子我們可以看到,這種開放的交流環(huán)境對微軟公司保持企業(yè)活力和創(chuàng)新能力都是非常重要的。

    徹底的開放式交流也有缺點(diǎn)。開放式交流有時會造成激烈的辯論甚至是爭吵,而吵到氣頭上有時會說出不尊重別人的語言,會破壞人與人之間的關(guān)系。因此,微軟公司的總裁史蒂夫?鮑爾默去年在微軟的核心價值觀中,提出我們要把這種開放式交流文化改進(jìn)成“開放并相互尊重(Open and respectful)”。這要求我們在相互交流時充分尊重對方。當(dāng)我們不同意對方的意見時,一定要用建設(shè)性的語言提出。



    挑戰(zhàn)自我、學(xué)無止境

    從一名大學(xué)生到一名程序員,再到一位管理者,在軟件人才的成長歷程中,學(xué)習(xí)是永無止境的。在大學(xué)期間,我們要打好基礎(chǔ),培養(yǎng)自己各方面的素質(zhì)和能力;工作以后,我們應(yīng)當(dāng)努力在實(shí)際工作中學(xué)習(xí)新的技術(shù)并積累相關(guān)經(jīng)驗(yàn);即使走上了管理崗位,我們也應(yīng)當(dāng)不斷學(xué)習(xí),不斷提高自己。軟件產(chǎn)業(yè)本身就是一個每天都會有新技術(shù)、新概念誕生,充滿了活力和創(chuàng)造力的產(chǎn)業(yè)。作為軟件產(chǎn)業(yè)的從業(yè)人員,如果只知道閉門造車、抱殘守缺,我們就必然會落伍,必然會被市場淘汰。

    許多中國學(xué)生喜歡與別人競爭,但這種競爭更多地表現(xiàn)為一種“零和游戲”,無法使自己和他人得到真正的提高。我建議大家最好能不斷和自己競爭——不要總想著勝過別人,而要努力超越自我,不斷在自身的水平上取得進(jìn)步。

    在學(xué)習(xí)的過程中,打好基礎(chǔ)最為重要。從軟件產(chǎn)業(yè)對人才的需求來看,我們必須學(xué)好數(shù)學(xué)和英語這兩門基礎(chǔ)學(xué)科。數(shù)學(xué)是所有工程科學(xué)的基礎(chǔ),無論是軟件產(chǎn)品的開發(fā),還是軟件技術(shù)的研究,都要大量使用數(shù)學(xué)方法和數(shù)學(xué)原理。英文則是軟件行業(yè)中的國際語言,要想了解國際上軟件技術(shù)的發(fā)展趨勢,掌握最新的研究成果,或是與國外同行進(jìn)行技術(shù)交流,就必須掌握英文的聽、說、讀、寫,能夠在工作中熟練使用英文來解決問題。

    ?


    情商和領(lǐng)導(dǎo)能力


    同學(xué)們都希望增進(jìn)自己的leadership skills(領(lǐng)導(dǎo)能力)。從我的經(jīng)驗(yàn)和一些最近的研究結(jié)果看來,領(lǐng)導(dǎo)能力中最重要的是所謂的“情商”( EQ)。

    智商(IQ)反映人的智慧水平,情商則反映了人在情感、情緒方面的自控和協(xié)調(diào)能力。在高新技術(shù)企業(yè)中,大家都知道智慧的重要,但是情商的重要性甚至超過了智商。我看過一篇文章,該文的作者調(diào)查了188個公司,他用心理學(xué)方法測試了這些公司里每一名員工的智商和情商,并將測試結(jié)果和該員工在工作上的表現(xiàn)聯(lián)系在一起進(jìn)行分析。經(jīng)過研究,該文的作者發(fā)現(xiàn),在對個人工作業(yè)績的影響方面,情商的影響力是智商的兩倍。此外,他還專門對公司中的高級管理者進(jìn)行了分析。他發(fā)現(xiàn)在高級管理者中,情商對于個人成敗的影響力是智商的九倍。這說明,智商略遜他人的人如果擁有更高的情商指數(shù),也一樣可以獲得成功;反之,智商很高,但情商不足的人欠缺“領(lǐng)導(dǎo)能力”,很難成為一個成功的領(lǐng)導(dǎo)。


    什么是情商?
    ?

    在現(xiàn)代社會,如果你只知道智商而不曉得情商的話,你至少在意識上已經(jīng)落伍了。許多心理學(xué)家早已明確地指出,單單使用智商的標(biāo)準(zhǔn)考察一個人在才智方面的表現(xiàn),并不足以準(zhǔn)確預(yù)測這個人在事業(yè)上可能取得的成就。為了全面考察個人能力,特別是考察個人在社會生活中的適應(yīng)能力和創(chuàng)造能力,心理學(xué)家們提出了情商的概念。

    情商主要是指那些與認(rèn)識自我、控制情緒、激勵自己以及處理人際關(guān)系等相關(guān)的個人能力。在情商所描述的各項(xiàng)能力因素中,自覺、同理心、自律和人際關(guān)系是四種對現(xiàn)代人的事業(yè)成敗起決定性作用的關(guān)鍵因素。

    智商是先天賦予的,但是情商是可以培養(yǎng)的。多花功夫理解和應(yīng)用這四種情商的關(guān)鍵因素。除此之外,因?yàn)榍樯滩皇亲约耗芸辞宄模医ㄗh可多理解別人對你的看法、多吸取別人(尤其是情商高的人)的意見。


    自覺

    中國人常說,人貴有自知之明。這實(shí)際上是說,社會生活中的每個人都應(yīng)當(dāng)對自己的素質(zhì)、潛能、特長、缺陷、經(jīng)驗(yàn)等各種基本能力有一個清醒的認(rèn)識,對自己在社會工作生活中可能扮演的角色有一個明確的定位。心理學(xué)上把這種有自知之明的能力稱為“自覺”,這通常包括察覺自己的情緒對言行的影響,了解并正確評估自己的資質(zhì)、能力與局限,相信自己的價值和能力等幾個方面。

    我的下屬中有一個“自覺心”明顯不足的人:他雖然有一些能力,但是他自視甚高,總是對自己目前的職位不滿意,隨時隨地自吹自擂,總是不滿現(xiàn)狀。前一段時間,他認(rèn)為我不識才,沒有重用他,決定離開我的組,并期望在微軟其他組中另謀高就。但是,他最終發(fā)現(xiàn),自己不但找不到更好的工作,公司里的同事也都對他頗有微辭,認(rèn)為他缺少自知之明,期望和現(xiàn)實(shí)相距太遠(yuǎn)。最近,他沮喪地離開了公司。接替他職位的人,是一個能力很強(qiáng),而且很有“自覺心”的人。雖然這個人在上一個職位工作時不很成功,但他理解自己升遷太快,愿意自降一級來做這份工作,以便打好基礎(chǔ)。他現(xiàn)在的確做得很出色。

    簡單地說,一個人既不能對自己的能力判斷過高,也不能輕易低估自己的潛能。對自己判斷過高的人往往容易浮躁、冒進(jìn),不善于和他人合作,在事業(yè)遭到挫折時心理落差較大,難以平靜對待客觀事實(shí);低估了自己的能力的人,則會在工作中畏首畏尾、踟躕不前,沒有承擔(dān)責(zé)任和肩負(fù)重?fù)?dān)的勇氣,也沒有主動請纓的積極性。無論是上述哪一種情況,個人的潛力都不能得到充分的發(fā)揮,個人事業(yè)也不可能取得最大的成功。

    有自知之明的人既能夠在他人面前展示自己的特長,也不會刻意掩蓋自己的欠缺。談成自己的不足而向他人求教不但不會降低了自己,反而可以表示出自己虛心和自信,贏得他人的青睞。比如,當(dāng)一個領(lǐng)導(dǎo)對某個職員說“在技術(shù)上你是專家,我不如你,我要多向你學(xué)習(xí)”的時候,職員不但認(rèn)為這個領(lǐng)導(dǎo)非常謙虛,也一定會對這個領(lǐng)導(dǎo)更加信任,因?yàn)樗斫庾约旱哪芰Α?br />
    在微軟公司,大家在技術(shù)上互幫互學(xué),在工作中互相鼓勵,沒有誰天天都擺出盛氣凌人的架子,也沒有誰自覺矮人一頭,這就自然營造出了一種坦誠、開放的工作氛圍。

    有自知之明的人在工作遇到挫折的時候不會輕言失敗,在工作取得成績時也不會沾沾自喜。認(rèn)識自我,準(zhǔn)確定位自我價值的能力不僅僅可以幫助個人找到自己合適的空間及發(fā)展方向,也可以幫助企業(yè)建立起各司其職、協(xié)同工作的優(yōu)秀團(tuán)隊(duì)。有自知之明的人讓人感覺他是一個自信、謙虛、真誠的人。



    同理心

    同理心(Empathy)是一個比較抽象的心理學(xué)概念,但解釋起來非常簡單:同理心指的是人們常說的設(shè)身處地、將心比心的做法。也就是說,在發(fā)生沖突或誤解的時候,當(dāng)事人如果能把自己放在對方的處境中想一想,也許就可以更容易地了解對方的初衷,消除誤解。我們在生活中常說“人同此心,心同此理”,就是這個道理。

    人與人之間的關(guān)系沒有固定的公式可循,要從關(guān)心別人、體諒別人的角度出發(fā),做事時為他人留下空間和余地,發(fā)生誤會時要替他人著想,主動反省自己的過失,勇于承擔(dān)責(zé)任。只要有了同理心,我們在工作和生活中就能避免許多抱怨、責(zé)難、嘲笑和譏諷,大家就可以在一個充滿鼓勵、諒解、支持和尊重的環(huán)境中愉快地工作和生活。

    對于軟件企業(yè)中的管理者來說,體現(xiàn)同理心的最重要一點(diǎn)就是要體諒和重視職員的想法,要讓職員們覺得你是一個非常在乎他們的領(lǐng)導(dǎo)。拿我自己來說,我在工作中不會盲目地褒獎下屬,不會動不動就給職員一些“非常好”、“不錯”、“棒極了”等泛泛的評價,但是我會在職員確實(shí)做出了成績的時候及時并具體地指出他對公司的貢獻(xiàn),并將他的業(yè)績公之于眾。例如,我會給部門內(nèi)的全體職員發(fā)電子郵件說某個員工在上一周的工作中取得了出色的成績,并詳細(xì)說明他的工作成果,列舉他的工作對于公司的重要價值,給出具體的表彰意見。這種激勵員工的方式能夠真正贏得員工的信任和支持,能夠?qū)ζ髽I(yè)的凝聚力產(chǎn)生巨大的影響。

    同理心也是一種了解和認(rèn)識他人的有效方法。我被調(diào)到新部門擔(dān)任領(lǐng)導(dǎo)職位的時候,部門中有400多名員工,我都不認(rèn)識。于是,我每周選出了10名員工,與他們共進(jìn)午餐。在午餐時,我詳細(xì)了解了每一個人的姓名、履歷、工作情況以及他們對部門工作的建議。這些信息對于一個部門領(lǐng)導(dǎo)來說非常重要。在午餐會后,我立即根據(jù)這10名員工對部門的建議,安排部署相關(guān)的工作,并給這10名員工一一發(fā)回反饋意見,告訴他們我的處理方法。我的計劃是在一個不長的時間里,認(rèn)識并了解部門中的每一位員工,并在充分聽取員工意見的基礎(chǔ)上合理地安排工作。


    自律

    自律(Self-Regulation)指的是自我控制和自我調(diào)整的能力。這包括:自我控制不安定的情緒或沖動,在壓力面前保持清晰的頭腦;以誠實(shí)贏得信任,并且隨時都清晰地理解自己的行為將影響他人。

    自律對于領(lǐng)導(dǎo)者來說更為重要。作為軟件企業(yè)的領(lǐng)導(dǎo),要管理別人,要讓下屬信服,就要先從自我做起。這是因?yàn)椋I(lǐng)導(dǎo)的做法通常是大家做事的目標(biāo)和榜樣,領(lǐng)導(dǎo)的每一次舉手投足都會給下屬留下深刻的印象,如果處理不好的話,可能會造成負(fù)面的影響。特別是當(dāng)公司或團(tuán)隊(duì)處于危急時刻,需要領(lǐng)導(dǎo)帶領(lǐng)大家克服困難、沖出重圍的時候,如果領(lǐng)導(dǎo)表現(xiàn)得比職員還要急躁,翻來覆去拿不定主意,大家就會對領(lǐng)導(dǎo)喪失信心,公司或團(tuán)隊(duì)也會因此而走向失敗。

    有一次,我見過公司里的兩個組即將被合并。第一個組的經(jīng)理缺少自律,開會時對他的隊(duì)伍說合并不是他的決定,他自己也不知下一步該怎么辦。這個經(jīng)理對未來沒有信心,并猜測自己的隊(duì)伍可能會被裁員。而第二個組的經(jīng)理則在合并后告訴他的隊(duì)伍這次合并對公司的好處。他也坦誠地說自己并不掌握所有的信息,但是他承諾會提醒上級盡快地做決定。并且,第二個經(jīng)理還告訴大家他會盡其所能,幫助每一個員工安排最合理、最公平的出路。最后的結(jié)果是,第一個組的人很快就散了,他們的經(jīng)理離開了公司,而第二個組的經(jīng)理接管了合并后的機(jī)構(gòu)。

    自律必須建立在誠信的基礎(chǔ)上。為了表現(xiàn)所謂的“自律”而在他人面前粉飾、遮掩自己的缺點(diǎn),刻意表演的做法是非常不可取的。只有在贏得他人信任的基礎(chǔ)上,嚴(yán)于律己、寬以待人,才能真正獲得他人的尊重和贊許。



    人際關(guān)系

    人際關(guān)系包括在社會交往中的影響力、傾聽與溝通的能力,處理沖突的能力、建立關(guān)系、合作與協(xié)調(diào)的能力,說服與影響的能力等等。

    有些人在人際交往中的影響力是與生俱來的,他們在參加酒會或慶典的時候,只要很短的時間就能和所有人交上朋友。但也有些人并不具備這樣的天賦,他們在社交活動中常常比較內(nèi)向,寧愿一個人躲在角落里也不愿主動與人交談。

    我個人就缺乏人際交往的傾向。以前,我并不認(rèn)為這有什么不妥,直到我遇到了一位非常具有個人影響力的經(jīng)理為止。那個經(jīng)理沒有超人的智慧,但是他自稱他認(rèn)識了公司中幾乎每一個有能力的人,并和其中的許多人成為了非常要好的朋友。我不知道他是怎么做到這一點(diǎn)的,但我很快就發(fā)現(xiàn),他的這種能力對公司非常有用。比如,我需要在公司內(nèi)部選拔一些職員到我的部門工作時,我就可以從他那里獲得許多有關(guān)該職員的詳細(xì)信息;與公司其他部門協(xié)調(diào)工作時,他的人際關(guān)系網(wǎng)也可以發(fā)揮非常大的作用。從那時起,我發(fā)現(xiàn)處理人際關(guān)系的能力對于一個人,特別是一個領(lǐng)導(dǎo)者來說非常重要,我開始特別注重培養(yǎng)自己在人際關(guān)系方面的影響力。

    在技術(shù)研究和開發(fā)方面,溝通和說服的能力也至關(guān)重要。比如,我們開發(fā)出了一項(xiàng)先進(jìn)的技術(shù),要把它變成公司的產(chǎn)品。這首先要說服公司的決策層。我們必須細(xì)心準(zhǔn)備我們的產(chǎn)品建議書,并通過精彩的演講和現(xiàn)場展示讓領(lǐng)導(dǎo)者相信我們研究出的技術(shù)對公司來說大有裨益,讓決策層認(rèn)為即將開發(fā)的產(chǎn)品可以在市場上取得成功。這些工作都需要我們具備處理人際關(guān)系、展示自己、影響他人的能力。

    ?


    從優(yōu)秀到卓越


    在著名企業(yè)管理學(xué)家吉姆·柯林斯的《從優(yōu)秀到卓越》(中信出版社,2002年)一書中,作者通過大量的案例調(diào)查和統(tǒng)計,討論并分析了一家企業(yè)或一位企業(yè)的領(lǐng)導(dǎo)者是如何從優(yōu)秀(Good)上升到卓越(Great)的層次的。柯林斯和他的研究小組耗費(fèi)了10.5個人年,閱讀并系統(tǒng)整理了6000多篇文章,記錄了2000多頁的專訪內(nèi)容,對1435家企業(yè)進(jìn)行了問卷調(diào)查,收集了28家公司過去50年甚至更早的信息,進(jìn)行了大范圍的定性和定量分析,得出了如何使公司和公司的管理者從優(yōu)秀跨越到卓越的令人驚異而振奮的答案。

    根據(jù)吉姆·柯林斯得出的結(jié)論,優(yōu)秀的公司和優(yōu)秀的領(lǐng)導(dǎo)者很多,許多公司都可以在各自的行業(yè)里取得不俗的業(yè)績。但如果以卓越的標(biāo)準(zhǔn)來衡量公司和個人的成績,那么,能夠保持持續(xù)健康增長的企業(yè)和能夠不斷取得事業(yè)成功的領(lǐng)導(dǎo)者都非常少。一位企業(yè)的領(lǐng)導(dǎo)者在成功的基礎(chǔ)上,要想進(jìn)一步提高自己,使自己的企業(yè)保持持續(xù)增長,使自己的個人能力從優(yōu)秀向卓越邁進(jìn),就必須努力培養(yǎng)自己在“謙虛”、“執(zhí)著”和“勇氣”這三個方面的品質(zhì)。

    謙虛使人進(jìn)步。許多領(lǐng)導(dǎo)者在工作中唯我獨(dú)尊,不能聽取他人的規(guī)諫,不能容忍他人和自己意見相左,這些不懂得謙虛謹(jǐn)慎的領(lǐng)導(dǎo)者也許可以取得暫時的成功,但卻無法在事業(yè)上不斷進(jìn)步,達(dá)到卓越的境界。這是因?yàn)椋粋€人的力量終究有限,在瞬息萬變的商業(yè)環(huán)境中,領(lǐng)導(dǎo)者必須不斷學(xué)習(xí),善于綜合他人的意見,否則就將陷入一意孤行的泥潭,被市場所淘汰。比爾·蓋茨就是一個非常謙虛的人。例如,他在每一次演講結(jié)束后,請撰寫演講稿的人分析一下他的演講有哪些不足之處,以便下一次改進(jìn)。

    執(zhí)著是指我們堅持正確方向,矢志不移的決心和意志。無論是公司也好,還是個人也好,一旦認(rèn)明了工作的方向,就必須在該方向的指引下鍥而不舍地努力工作。在工作中輕言放棄或者朝三暮四的做法都不能取得真正的成功。微軟公司在Windows 95操作系統(tǒng)取得了巨大的成功之后,比爾·蓋茨仍然堅持發(fā)展企業(yè)級的Windows NT和Windows 2000操作系統(tǒng)。這是因?yàn)椋吹搅似髽I(yè)級市場的廣闊前景和微軟在此方面的巨大潛力。經(jīng)過幾年的發(fā)展,微軟公司的企業(yè)級操作系統(tǒng)終于在原本被Unix統(tǒng)治的市場上取得了成功,現(xiàn)在,包括個人操作系統(tǒng)在內(nèi)的所有Windows產(chǎn)品都已經(jīng)被構(gòu)建在了更加安全、可靠的Windows NT架構(gòu)之上。


    成功者需要有足夠的勇氣來面對挑戰(zhàn)。任何事業(yè)上的成就都不是輕易就可以取得的。一個人想要在工作中出類拔萃,就必須面對各種各樣的艱難險阻,必須正視事業(yè)上的挫折和失敗。只有那些有勇氣正視現(xiàn)實(shí),有勇氣迎接挑戰(zhàn)的人才能真正實(shí)現(xiàn)超越自我的目標(biāo),達(dá)到卓越的境界。正如馬克·吐溫所說:“勇氣不是缺少恐懼心理,而是對恐懼心理的抵御和控制能力。”



    結(jié)論


    很多人認(rèn)為,在IT和其他高科技領(lǐng)域內(nèi),西方人表現(xiàn)得更為出色,因此中國人只有吸取西方的企業(yè)文化才能獲得一席之地。的確,IT產(chǎn)業(yè)內(nèi)的一些新觀點(diǎn)、新理念,與中國古老的東方文化之間確實(shí)有差異(例如,西方文化直截了當(dāng)?shù)臏贤ê椭鲃訁⑴c的意識)。

    不過,從本文中我們不難發(fā)現(xiàn),成功所需要的一些最重要、最基本的素質(zhì)大多還是中華的傳統(tǒng)美德。在故宮里,我看到“正大光明”的匾額,其含義也就是“誠信和正直”;“學(xué)無止境”、“人貴有自知之明”、“將心比心”、“嚴(yán)于律己、寬以待人”都是中國歷來推崇的道德觀;人際關(guān)系更是在西方人公認(rèn)在中國成功的秘訣;而最重要的“謙虛”、“執(zhí)著”、“勇氣”這三點(diǎn)則是中國傳統(tǒng)文化的直接體現(xiàn)。因此,我認(rèn)為中國人的EQ決不低于西方人,我對中國卓越的人才無比樂觀。

    在今天這個充滿機(jī)遇和挑戰(zhàn)的時代里,在軟件產(chǎn)業(yè)這個高速發(fā)展、不斷創(chuàng)新的領(lǐng)域內(nèi),只有那些不懈努力、善于把握自己、勇于迎接挑戰(zhàn)的人才能取得真正的成功。我個人衷心地希望中國高新技術(shù)產(chǎn)業(yè)能夠在新世紀(jì)中蓬勃發(fā)展,中國的人才能夠在事業(yè)上不斷取得成功,實(shí)現(xiàn)從優(yōu)秀到卓越的跨越。

    posted @ 2006-12-14 14:20 重歸本壘(Bing) 閱讀(224) | 評論 (0)編輯 收藏
     

    李開復(fù)2000年4月


    今年5月23日,比爾·蓋茨先生在《華爾街日報》上撰文,支持和敦促美國政府給予中國永久性正常貿(mào)易國待遇。文中,他特別談到了在清華大學(xué)與中國大學(xué)生那次對話的愉快經(jīng)歷以及因此而留下的深刻印象。

    這篇文章令我不禁想到,在中國的這兩年來,我工作中最大的享受也是到國內(nèi)各高校與學(xué)生們進(jìn)行交流。這些訪問和交流使得我有機(jī)會與成千上萬的青年學(xué)生就他們所關(guān)心的事業(yè)、前途等問題進(jìn)行面對面的溝通。中國學(xué)生的聰明、好學(xué)和上進(jìn)給我留下了非常深刻的印象。

    在與這些青年學(xué)生的交流過程中,我發(fā)現(xiàn)有一些問題是大家都十分關(guān)心的。那些已經(jīng)獲得國外大學(xué)獎學(xué)金的學(xué)生,大都希望我談一談應(yīng)該如何度過自己在美國的學(xué)習(xí)生涯;那些決定留在國內(nèi)發(fā)展的學(xué)生,非常關(guān)心如何確定一個正確的方向,并以最快的速度在科研和學(xué)業(yè)方面取得成功;還有那些剛剛踏進(jìn)大學(xué)校門的學(xué)生,則希望我能講給他們一些學(xué)習(xí)、做人的經(jīng)驗(yàn)之談。最近,更有一些學(xué)生關(guān)心網(wǎng)絡(luò)信息產(chǎn)業(yè)的發(fā)展,希望了解美國的大學(xué)生是如何創(chuàng)業(yè)和致富的。

    看到這么多雙渴求知識、充滿希望的眼睛,我突然產(chǎn)生了一種沖動,那就是給中國的學(xué)生們寫一封信,將我與同學(xué)們在交流過程中產(chǎn)生的一些想法以及我要對中國學(xué)生的一些忠告寫出來,幫助他們在未來的留學(xué)、工作或者創(chuàng)業(yè)的過程中能夠人格更完美、生活更順利,事業(yè)更成功。



    堅守誠信、正直的原則


    我在蘋果公司工作時,曾有一位剛被我提拔的經(jīng)理,由于受到下屬的批評,非常沮喪地要我再找一個人來接替他。我問他:“你認(rèn)為你的長處是什么?”他說,“我自信自己是一個非常正直的人。”我告訴他:“當(dāng)初我提拔你做經(jīng)理,就是因?yàn)槟闶且粋€公正無私的人。管理經(jīng)驗(yàn)和溝通能力是可以在日后工作中學(xué)習(xí)的,但一顆正直的心是無價的。”我支持他繼續(xù)干下去,并在管理和溝通技巧方面給予他很多指點(diǎn)和幫助。最終,他不負(fù)眾望,成為一個出色的管理人才。現(xiàn)在,他已經(jīng)是一個頗為成功的公司的首席技術(shù)官。

    與之相反,我曾面試過一位求職者。他在技術(shù)、管理方面都相當(dāng)?shù)某錾5牵谡務(wù)撝啵硎荆绻忆浫∷踔量梢园言谠瓉砉竟ぷ鲿r的一項(xiàng)發(fā)明帶過來。隨后他似乎覺察到這樣說有些不妥,特作聲明:那些工作是他在下班之后做的,他的老板并不知道。這一番談話之后,對于我而言,不論他的能力和工作水平怎樣,我都肯定不會錄用他。原因是他缺乏最基本的處世準(zhǔn)則和最起碼的職業(yè)道德“誠實(shí)”和“講信用”。如果雇用這樣的人,誰能保證他不會在這里工作一段時間后,把在這里的成果也當(dāng)作所謂“業(yè)余之作”而變成向其它公司討好的“貢品”呢?這說明:一個人品不完善的人是不可能成為一個真正有所作為的人的。

    在美國,中國學(xué)生的勤奮和優(yōu)秀是出了名的,曾經(jīng)一度是美國各名校最歡迎的留學(xué)生群體。而最近,卻有一些學(xué)校和教授聲稱,他們再也不想招收中國學(xué)生了。理由很簡單,某些中國學(xué)生拿著讀博士的獎學(xué)金到了美國,可是,一旦找到工作機(jī)會,他們就會馬上申請離開學(xué)校,將自己曾經(jīng)承諾要完成的學(xué)位和研究拋在一邊。這種言行不一的做法已經(jīng)使得美國相當(dāng)一部分教授對中國學(xué)生的誠信產(chǎn)生了懷疑。應(yīng)該指出,有這種行為的中國學(xué)生是少數(shù),然而就是這樣的“少數(shù)”,已經(jīng)讓中國學(xué)生的名譽(yù)受到了極大的損害。另外,目前美國有很多教授不理會大多數(shù)中國學(xué)生的推薦信,因?yàn)樗麄冎肋@些推薦信根本就出自學(xué)生自己之手,已無參考性可言。這也是誠信受到損害以后的必然結(jié)果。

    我在微軟研究院也曾碰到過類似的問題。一位來這里實(shí)習(xí)的學(xué)生,有一次出乎意料地報告了一個非常好的研究結(jié)果。但是,他做的研究結(jié)果別人卻無法重復(fù)。后來,他的老板才發(fā)現(xiàn),這個學(xué)生對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行了挑選,只留下了那些合乎最佳結(jié)果的數(shù)據(jù),而舍棄了那些“不太好”的數(shù)據(jù)。我認(rèn)為,這個學(xué)生永遠(yuǎn)不可能實(shí)現(xiàn)真正意義的學(xué)術(shù)突破,也不可能成為一名真正合格的研究人員。

    最后想提的是一些喜歡貪小便宜的人。他們用學(xué)校或公司的電話打私人長途、多報銷出租車票。也許有人認(rèn)為,學(xué)生以成績、事業(yè)為重,其它細(xì)節(jié)只是一些小事,隨心所欲地做了,也沒什么大不了的。然而,就是那些身邊的所謂“小事”,往往成為一個人塑造人格和積累誠信的關(guān)鍵。一些貪小便宜、耍小聰明的行為只會把自己定性為一個貪圖小利、沒有出息的人的形象,最終因小失大。對于這些行為,一言以敝之,就是“勿以惡小而為之”。



    生活在群體之中

    與大多數(shù)美國學(xué)生比較而言,中國學(xué)生的表達(dá)能力、溝通能力和團(tuán)隊(duì)精神要相對欠缺一些。這也許是由于文化背景和教育體制的不同而造成的。今天,當(dāng)我們面對一個正在走向高度全球化的社會時,生活在群體之中,做出更好的表現(xiàn),得到更多的和收獲,是尤為重要的。

    表達(dá)和溝通的能力是非常重要的。不論你做出了怎樣優(yōu)秀的工作,不會表達(dá),無法讓更多的人去理解和分享,那就幾乎等于白做。所以,在學(xué)習(xí)階段,你不可以只生活在一個人的世界中,而應(yīng)當(dāng)盡量學(xué)會與各階層的人交往和溝通,主動表達(dá)自己對各種事物的看法和意見,甚至在公眾集會時發(fā)表演講,鍛煉自己的表達(dá)能力。

    表達(dá)能力絕不只是你的“口才”。哈佛大學(xué)的Ambady教授最近做過一個非常有趣的實(shí)驗(yàn),他讓兩組學(xué)生分別評估幾位教授的授課質(zhì)量。他把這幾位教授的講課錄像帶先無聲地放兩秒鐘給一組學(xué)生看,得出一套評估結(jié)果。然后與那些已經(jīng)聽過這幾位教授幾個月講課的學(xué)生的結(jié)果進(jìn)行對比,兩個小組的結(jié)論竟然驚人的相似。這表明,在表達(dá)自己思想的過程中,非語言表達(dá)方式和語言同樣重要,有時作用甚至更加明顯。這里所講的非語言表達(dá)方式是指人的儀表、舉止、語氣、聲調(diào)和表情等。因?yàn)閺倪@些方面,人們可以更直觀、更形象地判斷你為人、做事的能力,看出你的自信和熱情,從而獲得十分重要的“第一印象”。

    對于一個集體、一個公司、甚至是一個國家,團(tuán)隊(duì)精神都是非常關(guān)鍵性的。微軟公司在美國以特殊的團(tuán)隊(duì)精神著稱。象Windows 2000這樣產(chǎn)品的研發(fā),微軟公司有超過3000名開發(fā)工程師和測試人員參與,寫出了5000萬行代碼。沒有高度統(tǒng)一的團(tuán)隊(duì)精神,沒有全部參與者的默契與分工合作,這項(xiàng)工程是根本不可能完成的。

    相對來說,以前我在別的公司時也曾見到這樣的現(xiàn)象。一項(xiàng)工程布置下來,大家明明知道無法完成,但都心照不宣,不告訴老板。因?yàn)榉凑沧霾煌辏蠹宜餍砸膊慌θプ鍪拢瑓s花更多的時間去算計怎么把這項(xiàng)工程的失敗怪罪到別人身上去。就是這些人和這樣的工作作風(fēng)幾乎把這家公司拖垮。

    為了培養(yǎng)團(tuán)隊(duì)精神,我建議同學(xué)們在讀書之余積極參加各種社會團(tuán)體的工作。在與他人分工合作、分享成果、互助互惠的過程中,你們可以體會團(tuán)隊(duì)精神的重要性。

    在學(xué)習(xí)過程中,你千萬不要不愿意把好的思路、想法和結(jié)果與別人分享,擔(dān)心別人走到你前面的想法是不健康的,也無助于你的成功。有一句諺語說,“你付出的越多,你得到的越多”。試想,如果你的行為讓人覺得“你的是我的,我的還是我的”,當(dāng)你需要幫忙時,你認(rèn)為別人會來幫助你嗎?反之,如果你時常慷慨地幫助別人,那你是不是會得到更多人的回報?

    在團(tuán)隊(duì)之中,要勇于承認(rèn)他人的貢獻(xiàn)。如果借助了別人的智慧和成果,就應(yīng)該聲明。如果得到了他人的幫助,就應(yīng)該表示感謝。這也是團(tuán)隊(duì)精神的基本體現(xiàn)。


    做一個主動的人

    三十年前,一個工程師夢寐以求的目標(biāo)就是進(jìn)入科技最領(lǐng)先的IBM。那時IBM對人才的定義是一個有專業(yè)知識的、埋頭苦干的人。斗轉(zhuǎn)星移,事物發(fā)展到今天,人們對人才的看法已逐步發(fā)生了變化。現(xiàn)在,很多公司所渴求的人才是積極主動、充滿熱情、靈活自信的人。

    作為當(dāng)代中國的大學(xué)生,你應(yīng)該不再只是被動地等待別人告訴你應(yīng)該做什么,而是應(yīng)該主動去了解自己要做什么,并且規(guī)劃它們,然后全力以赴地去完成。想想今天世界上最成功的那些人,有幾個是唯唯諾諾、等人吩咐的人?對待自己的學(xué)業(yè)和研究項(xiàng)目,你需要以一個母親對孩子那樣的責(zé)任心和愛心全力投入不斷努力。果真如此,便沒有什么目標(biāo)是不能達(dá)到的。

    一個積極主動的人還應(yīng)該虛心聽取他人的批評和意見。其實(shí),這也是一種進(jìn)取心的體現(xiàn)。不能虛心接受別人的批評,并從中汲取教訓(xùn),就不可能有更大的進(jìn)步。比爾·蓋茨曾經(jīng)對公司所有員工說過:“客戶的批評比賺錢更重要。從客戶的批評中,我們可以更好地汲取失敗的教訓(xùn),將它轉(zhuǎn)化為成功的動力。”

    除了虛心接受別人的批評,你還應(yīng)該努力尋找一位你特別尊敬的良師。這位良師應(yīng)該是直接教導(dǎo)你的老師以外的人,這樣的人更能客觀地給你一些忠告。這位良師除了可以在學(xué)識上教導(dǎo)你之外,還可以在其它一些方面對你有所指點(diǎn),包括為人處世,看問題的眼光,應(yīng)對突發(fā)事件的技能等等。我以前在蘋果公司負(fù)責(zé)一個研究部門時,就曾有幸找到這樣一位良師。當(dāng)時,他是負(fù)責(zé)蘋果公司全球運(yùn)作和生產(chǎn)業(yè)務(wù)的高級副總裁,他在事業(yè)發(fā)展方面給我的許多教誨令我終身受益。如果有這樣的人給你幫助,那你成長的速度一定會比別人更快一些。

    中國學(xué)生大多比較含蓄、害羞,不太習(xí)慣做自我推銷。但是,要想把握住轉(zhuǎn)瞬即逝的機(jī)會,就必須學(xué)會說服他人、向別人推銷自己或自己的觀點(diǎn)。在說服他人之前,要先說服自己。你的激情加上才智往往折射出你的潛力,這就是人們常說的化學(xué)反應(yīng)。一般來說,一個好的自我推銷策略可以令事情的發(fā)展錦上添花。

    例如,有一次我收到了一份很特殊的求職申請書。不同于已往大多數(shù)求職者,這位申請人的求職資料中包括了他的自我介紹、他對微軟研究院的向往、以及他為什么認(rèn)為自己是合適的人選,此外還有他已經(jīng)發(fā)表的論文、老師的推薦信和他希望來微軟作的課題等。盡管他畢業(yè)的學(xué)校不是中國最有名的學(xué)校,但他的自我推銷奏效了。我從這些文件中看到了他的熱情和認(rèn)真。在我面試他時,他又遞交了一份更充分的個人資料。最后,當(dāng)我問他有沒有問題要問我時,他反問我,:“你對我還有沒有任何的保留?”當(dāng)時,我的確對他能否進(jìn)入新的研究領(lǐng)域有疑慮,于是就進(jìn)一步問了他一些這方面的問題。他舉出了兩個很有說服力的例子。最后,我們雇用了這名應(yīng)聘者。他現(xiàn)在做得非常出色。



    挑戰(zhàn)自我、開發(fā)自身潛力


    我在蘋果公司工作的時候,有一天,老板突然問我什么時候可以接替他的工作?我非常吃驚,表示自己缺乏象他那樣的管理經(jīng)驗(yàn)和能力。但是他卻說,這些經(jīng)驗(yàn)是可以培養(yǎng)和積累的,而且他希望我在兩年之后就可以做到。有了這樣的提示和鼓勵,我開始有意識地加強(qiáng)自己在這方面的學(xué)習(xí)和實(shí)踐。果然,我真的在兩年之后接替了他的工作。我個人認(rèn)為:一個人的領(lǐng)導(dǎo)素質(zhì)對于他將來的治學(xué)、經(jīng)商或從政都是十分重要的。在任何時候、任何環(huán)境里,我們都應(yīng)該有意識地培養(yǎng)自己的領(lǐng)導(dǎo)才能。同時, 我建議你給自己一些機(jī)會展示這方面的能力,或許象我一樣,你會驚訝自己在這一方面的潛力遠(yuǎn)遠(yuǎn)超過了想象中那樣。

    給自己設(shè)定目標(biāo)是一件十分重要的事情。目標(biāo)設(shè)定過高固然不切實(shí)際,但是目標(biāo)千萬不可定得太低。在二十一世紀(jì),競爭已經(jīng)沒有疆界,你應(yīng)該放開思維,站在一個更高的起點(diǎn),給自己設(shè)定一個更具挑戰(zhàn)性的標(biāo)準(zhǔn),才會有準(zhǔn)確的努力方向和廣闊的前景,切不可做“井底之蛙”。另外,只在一所學(xué)校取得好成績、好名次就認(rèn)為自己已經(jīng)功成名就是可笑的,要知道,山外有山,人上有人,而且,不同地方的衡量標(biāo)準(zhǔn)又不一樣。所以,在訂立目標(biāo)方面,千萬不要有“寧為雞首,不為牛后”的思想。

    一個一流的人與一個一般的人在一般問題上的表現(xiàn)可能一樣,但是在一流問題上的表現(xiàn)則會有天壤之別。美國著名作家威廉·福克納說過:“不要竭盡全力去和你的同僚競爭。你更應(yīng)該在乎的是:你要比現(xiàn)在的你更強(qiáng)。”你應(yīng)該永遠(yuǎn)給自己設(shè)立一些很具挑戰(zhàn)性、但并非不可及的目標(biāo)。

    在確立將來事業(yè)的目標(biāo)時,不要忘了捫心自問:“這是不是我最熱愛的專業(yè)?我是否愿意全力投入?”我希望你們能夠?qū)ψ约哼x擇所從事的工作充滿激情和想象力,對前進(jìn)途中可能出現(xiàn)的各種艱難險阻無所畏懼。談到對工作的熱愛,我認(rèn)識的一位微軟的研究員曾經(jīng)讓我深有感觸。他經(jīng)常周末開車出門說去見“女朋友”,后來,一次偶然機(jī)會我在辦公室里看見他,問他“女朋友在哪里?”他笑著指著電腦說:“就是她呀。”對于工作的熱愛,比爾·蓋茨也曾有過非常精彩的闡述,他說:“每天早晨醒來,一想到所從事的工作和所開發(fā)的技術(shù)將會給人類生活帶來的巨大影響和變化,我就會無比興奮和激動。”

    幾個月前,《北京青年報》上曾有一場探討比爾·蓋茨和保爾·柯察金誰更偉大的討論。由于從小在美國長大,我并不知道保爾和他的那些事跡。但是,我非常贊同保爾的這段名言:“人最寶貴的東西是生命,生命屬于我們只有一次。人的一生應(yīng)當(dāng)這樣度過,當(dāng)他回首往事的時候,不因虛度年華而悔恨,也不因碌碌無為而羞恥……”所以,選擇一個你真心熱愛的事業(yè),不斷地挑戰(zhàn)自我、完善自我,讓自己的一生過得精彩和充實(shí)。


    客觀、直接了當(dāng)?shù)臏贤?/font>


    有一次,一位中國的大學(xué)教授找到我,希望我?guī)退乙晃粐獾膶<以谒M織的會議上去作主題演講,末了還特意加了一句,最好是一個洋人。我很不以為然地對他說:“這個領(lǐng)域最具權(quán)威的人士就是在北京的一個中國人,為什么你一定要找一位洋人呢?”他表面上同意我的說法,但是他仍然請了一個美國人來作這個演講,結(jié)果效果很差。所以,我們不應(yīng)該陷入盲目的崇洋情結(jié)。我們應(yīng)該用客觀的眼光來判斷事物,而不是以他的膚色或他的居住地來決定。

    有一句話說,“真理總是掌握在少數(shù)人手中”。我們理解這句話的意思,應(yīng)該有自己的眼光,有獨(dú)立思考的能力,不一定大多數(shù)人認(rèn)可的,或某個權(quán)威說的,就是對的。不論是作學(xué)問、搞研究還是經(jīng)商,我們都不能盲從,要多想幾個為什么。

    有了客觀的意見,你就應(yīng)該直接了當(dāng)?shù)乇磉_(dá)。如果做任何事情都象“打太極拳”,會讓人不知所云,也會造成很多誤會。有一次,在微軟研究院工作的一位研究人員就自己所選擇的研究方向來征求我的意見,我作了一番分析,認(rèn)為這個方向有不少問題,我個人認(rèn)為對學(xué)術(shù)界的貢獻(xiàn)不大,但如果他堅持,我愿意支持他試著去做。結(jié)果他認(rèn)為我這句話的意思實(shí)際上就是不允許他去做,所以他就選擇了其它的方向。后來他要出差時,負(fù)責(zé)行政事務(wù)的人告訴他,你可以選擇坐火車或者坐飛機(jī)。他認(rèn)為行政人員實(shí)際上是在暗示他坐火車,因?yàn)樽w機(jī)太貴。其實(shí),他的猜測都是錯誤的。因?yàn)槲覀兊臏贤ǚ绞绞侵苯恿水?dāng),而他卻在“打太極拳”。這之后,我們通過一系列的公司文化講座,讓員工們了解到:心里想什么就講什么,不要把簡單的問題復(fù)雜化。現(xiàn)在,研究院里這類的誤會少了很多。

    拐彎抹角,言不由衷,結(jié)果浪費(fèi)了大家的寶貴時間。瞻前顧后,生怕說錯話,結(jié)果是變成謹(jǐn)小慎微的懦夫。更糟糕的是還有些人,當(dāng)面不說,背后亂講,這樣對他人和自己都毫無益處,最后只能是破壞了集體的團(tuán)結(jié)。這樣的人和作風(fēng)既不能面對社會,也不可能在科學(xué)研究中走出新路,更不可能在激烈的商戰(zhàn)中脫穎而出。

    希望同學(xué)們能夠做到開誠布公,敢于說“不”,這才是尊重自己思想意愿的表現(xiàn)。當(dāng)然,在表達(dá)你的意見時,無論反對和批評都應(yīng)是建設(shè)性的,有高度誠意的,而不是為批評而批評,為辯論而批評。我贊成的方式是提供建設(shè)性的正面的意見。在開始討論問題時,任何人先不要拒人千里之外,大家把想法都擺在桌面上,充分體現(xiàn)個人的觀點(diǎn),這樣才會有一個容納大部分人意見的結(jié)論。當(dāng)然,你也要學(xué)習(xí)用適當(dāng)?shù)姆椒ê涂跉獗磉_(dá)你的意見,比如說不要在很多人面前讓別人難堪。這樣,你的批評才會奏效。


    珍惜校園學(xué)習(xí)生活


    幾天前,報紙上登出一條消息,說有中學(xué)生輟學(xué)去開網(wǎng)絡(luò)公司。我認(rèn)為這并不值得提倡。對絕大多數(shù)學(xué)生來講,在校生活是系統(tǒng)地學(xué)習(xí)基礎(chǔ)理論知識,學(xué)習(xí)思考和解決問題方式的好機(jī)會。這些知識將成為你未來發(fā)展過程中所需要的最基本的知識和技能。就象建一棟高樓,如果不打好基礎(chǔ)是經(jīng)不起風(fēng)吹雨打的。

    在全球范圍內(nèi),美國的研究水平無疑是世界一流的。而除了美國之外,你會發(fā)現(xiàn)英國的研究水平也是相當(dāng)突出的。究其原因,其實(shí)就是語言問題。英國人可以毫無阻礙地閱讀美國乃至全球各種最新的英文研究報告和資料。這對于他們把握研究方向,跟蹤最新進(jìn)展,發(fā)表研究成果都有很大的幫助。因此,英語學(xué)習(xí)對于我們作研究的人來說,也是相當(dāng)重要的。只有加強(qiáng)這方面素質(zhì)的培養(yǎng),才能適應(yīng)將來的發(fā)展。我建議:學(xué)英語先學(xué)聽說,再學(xué)讀寫,而且務(wù)必在大學(xué)階段完全解決英語學(xué)習(xí)的問題。等到年齡大了,要付出的代價相比就會大得多。

    除了英語之外,數(shù)學(xué)、統(tǒng)計學(xué)對理工科學(xué)生也是很重要的基礎(chǔ)課程,是不可忽視的。數(shù)學(xué)是人類幾千年的智慧結(jié)晶,你們一定要用心把它學(xué)好,不能敷衍了事。我今天就很后悔自己當(dāng)初沒有花更多功夫把數(shù)學(xué)學(xué)得更好些。另外,計算機(jī)應(yīng)用、算法和編程也都是每一個工科學(xué)生應(yīng)該熟悉和掌握的,它們是將來人人必須會用的工具。

    科技的發(fā)展可謂日新月異。在校學(xué)習(xí)的目的,其實(shí)就是掌握最基本的學(xué)習(xí)工具和方法。將來利用這些工具和方法,再去學(xué)習(xí)新的東西。比如:上課學(xué)會了C++, 能否自己學(xué)會Java? 上課學(xué)會了HTML, 能否自己學(xué)會XML? 與其說上大學(xué)是為了學(xué)一門專業(yè),不如說是為了學(xué)會如何學(xué)習(xí),讓自己能夠“無師自通”。

    大學(xué)畢業(yè)后的前兩年,同學(xué)們聚到一起,發(fā)現(xiàn)變化都還不算大。五年后再聚到一起,變化就大多了。一些人落伍了,因?yàn)樗麄儾辉賹W(xué)習(xí),不再能夠掌握新的東西,自然而然地落在了社會發(fā)展的后面。如果我們要在這個競爭激烈的社會中永不落伍,那就得永遠(yuǎn)學(xué)習(xí)。

    我的老板 - Rick Rashid博士是目前微軟公司主管研究的高級副總裁,他已經(jīng)功成名就,卻始終保持著一顆學(xué)習(xí)和進(jìn)取的心。現(xiàn)在,他每年仍然編寫大約50,000行程序。他認(rèn)為:用最新的技術(shù)編程可以使他保持對計算機(jī)最前沿技術(shù)的敏感,使自己能夠不斷進(jìn)步。今天,有些博士生帶著低年級的本科生和碩士生做項(xiàng)目,就自滿地認(rèn)為自己已經(jīng)沒有必要再編程了。其實(shí),這樣的做法是很不明智的。

    每次到清華和其它學(xué)校訪問,被問到最多的就是學(xué)生打工的問題。我認(rèn)為,打工從總體來說對學(xué)生是一件好事,是拓寬視野的一種方式。例如:在研究機(jī)構(gòu)打工,可以學(xué)到最新的科技;在產(chǎn)品部門打工,可以學(xué)到開發(fā)的技術(shù)和技能;在市場部門打工,可以理解商業(yè)的運(yùn)作。我認(rèn)為每一個學(xué)生都應(yīng)該有打工的經(jīng)驗(yàn),但不要打一些“沒用的工”。首先要明白打工只是學(xué)生生活中的一種補(bǔ)充,學(xué)習(xí)才是最重要的。打工的目的是開闊眼界,不是提前上班。如果你把翻譯書本、錄入數(shù)據(jù)庫所花的時間投入學(xué)習(xí),將來可以賺更多的錢。那些錢將遠(yuǎn)遠(yuǎn)超出目前打工的收入。


    此外,還有一些學(xué)生受到目前退學(xué)創(chuàng)業(yè)的鼓勵,為成為中國的比爾·蓋茨和邁克爾·戴爾而中途輟學(xué)。以我的觀點(diǎn),除了十分特殊的情況,我不建議在校學(xué)生退學(xué)創(chuàng)業(yè)。你所看到的那些退學(xué)創(chuàng)業(yè)的成功者實(shí)際上少之又少。目前,大部分學(xué)生雖有創(chuàng)業(yè)的想法,但缺少創(chuàng)業(yè)的經(jīng)驗(yàn),所以失敗的可能性非常大。如果要成功,我建議你們先把書讀好。如果是要學(xué)習(xí)創(chuàng)業(yè)的經(jīng)驗(yàn),你完全可以利用假期的時間先去一間公司邊打工邊學(xué)。比爾·蓋茨也曾說過,“如果你正在考慮自己成立一家新公司,你應(yīng)該首先明確地知道:創(chuàng)辦公司需要巨大的精力投入,要冒巨大的風(fēng)險。我覺得你們不必象我,一開始就創(chuàng)辦一家公司。你應(yīng)該考慮加盟其他公司并在這家公司中學(xué)習(xí)他們的工作、創(chuàng)業(yè)方法。”


    你想戴一頂什么樣的博士帽

    在我進(jìn)入卡內(nèi)基梅隆大學(xué)攻讀計算機(jī)博士學(xué)位時,系主任曾對我講,當(dāng)你拿到你的博士學(xué)位時,你應(yīng)該成為你所從事的研究領(lǐng)域里世界第一的專家。這句話對于初出茅廬的我來說簡直高不可攀,但也讓我躊躇滿志、躍躍欲試。就這樣,在經(jīng)過五年寒窗、夜以繼日的努力工作后,他所期待的結(jié)果就那么自然而然地出現(xiàn)了。一個打算攻讀博士學(xué)位的人,就應(yīng)該給自己樹立一個很高的目標(biāo)。如果沒有雄心壯志,就千萬不要自欺欺人,也許經(jīng)商或從事其它工作,會有更大的成績。

    在目標(biāo)確立之后,我建議你為自己設(shè)計一個三年的學(xué)習(xí)和科研計劃。首先,你需要徹底地了解在相關(guān)領(lǐng)域他人已有的工作和成績。然后再提出自己的想法和見解,做腳踏實(shí)地的工作。另外,還要不斷跟蹤這個領(lǐng)域的最新研究進(jìn)展。只有這樣,才可以把握好方向,避免重復(fù)性工作,把精力集中在最有價值的研究方向上。

    在學(xué)術(shù)界,人們普遍認(rèn)為“名師出高徒”。可見導(dǎo)師在你的成長道路中作用是多么的大。所以,你應(yīng)該主動去尋找自己所研究的領(lǐng)域里最好的老師。除了你的老師之外,你還應(yīng)該去求教于周圍所有的專家。更不要忘了常去求教“最博學(xué)的老師”- Internet!現(xiàn)在,幾乎所有的論文、研究結(jié)果、先進(jìn)想法都可以在網(wǎng)上找到。我還鼓勵你直接發(fā)電子郵件去咨詢一些世界公認(rèn)的專家和教授。以我的經(jīng)驗(yàn),對于這樣的郵件,他們中的大部分都會很快給你回復(fù)。

    我在攻讀博士學(xué)位時,每周工作七天,每天工作16個小時,大量的統(tǒng)計結(jié)果和分析報告幾乎讓我崩潰。那時,同領(lǐng)域其他研究人員采用的是與我不同的傳統(tǒng)方法。我的老師雖然支持我,但并不認(rèn)可我的研究方向。我也曾不止一次地懷疑自己的所作所為是否真的能夠成功。但終于有一天,在半夜三點(diǎn)時做出的一個結(jié)果讓我感受到了成功的滋味。后來,研究有了突飛猛進(jìn)的進(jìn)展,導(dǎo)師也開始采用我的研究方法。我的博士論文使我的研究成為自然語言研究方面當(dāng)時最有影響力的工作之一。讀博士不是一件輕松的事,切忌浮躁的情緒,而要一步一個腳印,扎扎實(shí)實(shí)地工作。也不可受一些稍縱即逝的名利的誘惑,而要200%的投入。也許你會疲勞,會懊悔,會迷失方向,但是要記住,你所期待的成功和突破也正孕育其中。那種一切都很順利,誰都可以得到的工作和結(jié)果,我相信研究價值一定不高。

    從一定意義上講,一個人如果打算一輩子從事研究工作,那么從他在讀博士學(xué)位期間所形成的做事習(xí)慣、研究方法和思維方式基本上就可以判斷出他未來工作的輪廓。所以,你一定要做一個“有心人”,充分利用在校的時間,為自己的將來打好基礎(chǔ)。

    上述一些觀點(diǎn),是我在與同學(xué)們交往過程中的一些感受。我希望這些建議和想法能對正在未來之路上跋涉的你們有所啟發(fā),能對你們目前的學(xué)習(xí)有所幫助。或許因?yàn)橛^點(diǎn)不同、人各有志,或許因?yàn)橹已阅娑@封信可能無法為每一位同學(xué)所接受。但是只要一百位閱讀這封信的同學(xué)中有一位從中受益,這封信就已經(jīng)比我所作的任何研究都更有價值。我真誠地希望,在新的世紀(jì),中國學(xué)生無論是在國內(nèi),還是國外;無論是做研究,還是經(jīng)商,都顯得更成熟一些,成功的機(jī)率更大一些。

    posted @ 2006-12-14 14:14 重歸本壘(Bing) 閱讀(205) | 評論 (0)編輯 收藏
     
    1.RequestDispatcher.forward()
    是在服務(wù)器端起作用,當(dāng)使用forward()時,Servlet engine傳遞HTTP請求從當(dāng)前的Servlet or JSP到另外一個Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此時form提交的所有信息在b.jsp都可以獲得,參數(shù)自動傳遞.
    但forward()無法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同時forward()無法在后面帶參數(shù)傳遞,比如servlet?name=frank,這樣不行,可以程序內(nèi)通過response.setAttribute("name",name)來傳至下一個頁面.

    ? 重定向后瀏覽器地址欄URL不變.

    例:在servlet中進(jìn)行重定向
    public void doPost(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException
    {

    ? ? response.setContentType("text/html; charset=gb2312");

    ? ? ServletContext sc = getServletContext();

    ? ? RequestDispatcher rd = null;

    ? ? rd = sc.getRequestDispatcher("/index.jsp"); ? //定向的頁面

    ? ? rd.forward(request, response);

    }
    通常在servlet中使用,不在jsp中使用。

    2.response.sendRedirect()
    ? 是在用戶的瀏覽器端工作,sendRedirect()可以帶參數(shù)傳遞,比如servlet?name=frank傳至下個頁面,同時它可以重定向至不同的主機(jī)上,sendRedirect()可以重定向有frame.的jsp文件.
    ? 重定向后在瀏覽器地址欄上會出現(xiàn)重定向頁面的URL。

    sendRedirect()實(shí)際上是reponse.setStatus(302)的快捷方式,后者用于設(shè)置Http響應(yīng)的狀態(tài)代碼。


    例:在servlet中重定向
    public void doPost(HttpServletRequest request,HttpServletResponse response)

    ? ? throws ServletException,IOException

    {

    ? ? response.setContentType("text/html; charset=gb2312");

    ? ? response.sendRedirect("/index.jsp");

    }
    由于response是jsp頁面中的隱含對象,故在jsp頁面中可以用response.sendRedirect()直接實(shí)現(xiàn)重定位。
    注意:
    (1).使用response.sendRedirect時,前面不能有HTML輸出。
    這并不是絕對的,不能有HTML輸出其實(shí)是指不能有HTML被送到了瀏覽器。事實(shí)上現(xiàn)在的server都有cache機(jī)制,一般在8K(我是說JSP SERVER),這就意味著,除非你關(guān)閉了cache,或者你使用了out.flush()強(qiáng)制刷新,那么在使用sendRedirect之前,有少量的HTML輸出也是允許的。
    (2).response.sendRedirect之后,應(yīng)該緊跟一句return;
    我們已經(jīng)知道response.sendRedirect是通過瀏覽器來做轉(zhuǎn)向的,所以只有在頁面處理完成后,才會有實(shí)際的動作。既然你已經(jīng)要做轉(zhuǎn)向了,那么后的輸出還有什么意義呢?而且有可能會因?yàn)楹竺娴妮敵鰧?dǎo)致轉(zhuǎn)向失敗。
    比較:
    (1).Request Dispatcher.forward()是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;
    (2).response.sendRedirect()則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。
    前者更加高效,在前者可以滿足需要時,盡量使用RequestDispatcher.forward()方法.

    注:在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務(wù)器上的資源,則必須使用HttpServletResponse.sendRequest()方法。

    3.<jsp:forward page="" />

    它的底層部分是由RequestDispatcher來實(shí)現(xiàn)的,因此它帶有RequestDispatcher.forward()方法的印記。


    如果在<jsp:forward>之前有很多輸出,前面的輸出已使緩沖區(qū)滿,將自動輸出到客戶端,那么該語句將不起作用,這一點(diǎn)應(yīng)該特別注意。
    另外要注意:它不能改變?yōu)g覽器地址,刷新的話會導(dǎo)致重復(fù)提交

    4.JSP中實(shí)現(xiàn)在某頁面停留若干秒后,自動重定向到另一頁面
    在html文件中,下面的代碼:
    ? <meta http-equiv="refresh" content="300; url=target.jsp">
    ? 它的含義:在5分鐘之后正在瀏覽的頁面將會自動變?yōu)閠arget.html這一頁。代碼中300為刷新的延遲時間,以秒為單位。targer.html為你想轉(zhuǎn)向的目標(biāo)頁,若為本頁則為自動刷新本頁。
    ? 由上可知,可以通過setHeader來實(shí)現(xiàn)某頁面停留若干秒后,自動重定向到另一頁面。
    ? 關(guān)鍵代碼:
    ? ? ? String content=stayTime+";URL="+URL;
    ? ? ? response.setHeader("REFRESH",content);
    ?

    posted @ 2006-12-14 09:44 重歸本壘(Bing) 閱讀(285) | 評論 (0)編輯 收藏
     
    一 熱誠的態(tài)度 我們的態(tài)度決定了我們的未來一個人能否成功,取決了他的態(tài)度!
      成功人士與失敗之間的判別是:
      成功人士始終有最熱誠的態(tài)度最積極的思考,最樂觀的精神和最輝煌的以經(jīng)驗(yàn)支配和控制自己的人生,失敗者則相反,他們的人生是受過人生的種種失敗懷疑慮所引導(dǎo)和支配。 我們的態(tài)度決定了我們?nèi)松某晒?

      1,我們怎樣對待生活,生活就怎樣對待我們。
      2,我們怎樣對待別人,別人怎樣對待我們。
      3,我們在一項(xiàng)任務(wù)剛開始時的態(tài)度就決定了最后的多大成功。

      我們的環(huán)境---心里的\感情的\精神的\----完全由我們自己的態(tài)度來創(chuàng)造。

    二 目標(biāo)明確\目標(biāo)管理

      1目標(biāo)明確

      沒有線路圖什么地方也去不了。
      目標(biāo)就是構(gòu)筑成功的磚石。
      目標(biāo)使我們產(chǎn)生積極性,你給自己定了目標(biāo),有兩個方面的作用:一是你努力的依據(jù)二是你的鞭策。目標(biāo)給你一個看得著的射擊靶,隨著你努力去實(shí)現(xiàn)這些目標(biāo),你就會有成就感。有9 8%的人對心目中的世界沒有一幅清晰的圖畫。如果計劃不具體,無法衡量是否實(shí)現(xiàn)了----那會降低了你的積極性。

      2目標(biāo)管理

      把整體目標(biāo)分解成一個個易記的目標(biāo)把你的目標(biāo)象成一金字塔,塔頂就是你的人生目標(biāo),你定的目標(biāo)和為達(dá)目標(biāo)而做的每一件事都必須指向你的人生目標(biāo)。
      金字塔由五層組成,最上的一層最小,最核心的。這一層包含著你的人生總目標(biāo)。
      下面每層是為實(shí)現(xiàn)上一層較大目標(biāo)而要達(dá)到的較小目標(biāo)。

    三 一勤天下無難事

      一心向著自己目標(biāo)前進(jìn)的人,整個世界都給他讓路。

    四 擅于理財、預(yù)算時間和金錢

    五 喜歡運(yùn)動

      健康的體魄是成就事業(yè)的資本。成功人士幾乎都有自己喜歡的體育項(xiàng)目。

    六 自律

      自控能力的強(qiáng)弱對人生的成功也有很大的影響。

      1 當(dāng)你生氣時,你能沉默不語嗎?
      2 你習(xí)慣于三思而行嗎?
      3 你的性情一般是平和的嗎?
      4 你習(xí)慣讓你的情緒控制你的理智。

    七 謙虛好學(xué)

      1 你是否把不斷的學(xué)習(xí)更多的知識作為你的職責(zé)?
      2 你是否有一種習(xí)慣:對你所不熟悉的問題發(fā)表"意見"?
      3 當(dāng)你需要知識時,你知道如何尋找嗎?

      越是成功的人,他們越會抓住一切可以學(xué)習(xí)的機(jī)會。

    八 良好的人際關(guān)系

      成功意味著別人的參與

    九 信念

    十 立即行動
      有了價值連城的目標(biāo)計劃,成功已向你展示。有位先生幾年以來一直暗戀著某位小姐,可是,連續(xù)幾年過去了,他一直沒有采取任何行動,他一直在等待,直到那位小姐成為他人之妻,他緊張起來,但是為時已晚! 別再猶豫,請立即行動吧!

    posted @ 2006-12-14 09:26 重歸本壘(Bing) 閱讀(236) | 評論 (0)編輯 收藏
     
    李開復(fù)
    2004年5月
    此前,我和中國學(xué)生的多次交流都是圍繞如何達(dá)到優(yōu)秀和卓越、如何成為領(lǐng)導(dǎo)人才而展開的。最近,在新浪網(wǎng)的聊天室和我收到的許多電子郵件中,我發(fā)現(xiàn)更多的中國學(xué)生需要知道的不是如何從優(yōu)秀到卓越,而是如何從迷茫到積極、從失敗到成功、從自卑到自信、從惆悵到快樂、從恐懼到樂觀。

    一個極端的例子是2004年2月發(fā)生在云南大學(xué)的馬加爵事件。馬加爵殘忍地殺害了自己的4名同學(xué)。但從馬家爵被捕后與心理學(xué)家的對話內(nèi)容看來,他應(yīng)該不是一個邪惡的人,而是一個迷失方向、缺乏自信、性格封閉的孩子。他和很多大學(xué)生一樣,迫切希望知道如何才能獲得成功、自信和快樂。

    我這一封信是寫給那些渴望成功但又覺得成功遙不可及,渴望自信卻又總是自怨自艾,渴望快樂但又不知快樂為何物的學(xué)生看的。希望這封信能夠帶給讀者一個關(guān)于成功的嶄新定義,鼓勵讀者認(rèn)識和肯定自己,做一個快樂的人。也希望這封信能夠幫助讀者理解成功、自信、快樂是一個良性循環(huán):從成功里可以得到自信和快樂,從自信里可以得到快樂和成功,從快樂里可以得到成功和自信。

    成功就是成為最好的你自己
    美國作家威廉·福克納說過:“不要竭盡全力去和你的同僚競爭。你應(yīng)該在乎的是,你要比現(xiàn)在的你強(qiáng)。”

    中國社會有個通病,就是希望每個人都照一個模式發(fā)展,衡量每個人是否“成功”采用的也是一元化的標(biāo)準(zhǔn):在學(xué)校看成績,進(jìn)入社會看名利。尤其是在今天的中國,人們對財富的追求首當(dāng)其沖,各行各業(yè),對一個人的成功的評價,更多地以個人財富為指標(biāo)。但是,有了最好的成績就能對社會有所貢獻(xiàn)嗎?有名利就一定能快樂嗎?

    真正的成功應(yīng)是多元化的。成功可能是你創(chuàng)造了新的財富或技術(shù),可能是你為他人帶來了快樂,可能是你在工作崗位上得到了別人的信任,也可能是你找到了回歸自我、與世無爭的生活方式。每個人的成功都是獨(dú)一無二的。所以,凌志軍在其《成長》一書中得出的重要結(jié)論是“成為最好的你自己”。也就是說,成功不是要和別人相比,而是要了解自己,發(fā)掘自己的目標(biāo)和興趣,努力不懈地追求進(jìn)步,讓自己的每一天都比昨天更好。

    成功的第一步:把握人生目標(biāo),做一個主動的人
    在新浪聊天室里,當(dāng)網(wǎng)友問我的人生目標(biāo)是什么時,我是這么回答的:“人生只有一次,我認(rèn)為最重要的就是要有最大的影響力(impact),能夠幫助自己、幫助家庭、幫助國家、幫助世界、幫助后人,能夠讓他們的日子過得更好、更有效率,能夠?yàn)樗麄儙硇腋:涂鞓贰!蔽一卮疬@個問題時絲毫不需要思考,因?yàn)槲覐拇髮W(xué)二年級起就把“影響力”當(dāng)作自己的人生目標(biāo)。

    對我來說,人生目標(biāo)不是一個口號,而是我最好的智囊,它曾多次幫我解決工作和生活中的難題。我當(dāng)初放棄在美國的工作,只身來到中國創(chuàng)立微軟中國研究院,就是因?yàn)槲矣X得后一項(xiàng)工作有更大的影響力,和我的人生目標(biāo)更加吻合。此外,當(dāng)我收到一封封迷茫學(xué)生的來信,給他們寫回信時,我也會想:“如何讓回信有更大的影響力?”我先后公開的三封“給中國學(xué)生的信”都是如此誕生的。

    馬加爵也悟出了他的人生目標(biāo),只可惜他是在案發(fā)被捕后才悟出的。他說:“姐,現(xiàn)在我對你講一次真心話,我這個人最大的問題就是出在我覺得人生的意義到底是為了什么?……在這次事情以后,此時此刻我明白了,我錯了。其實(shí)人生的意義在于人間有真情。”如果馬加爵能早幾個月悟出人生目標(biāo),他在做傻事前就會問問自己,充滿真情的父母、姐姐會怎么看待這件事?這樣,他可能就不會走上歧途了。

    所以,無論是為了真情,為了影響力,還是為了快樂、家人、道德、寧靜、求知、創(chuàng)新……一旦確定了人生目標(biāo),你就可以像我一樣在人生目標(biāo)的指引下,果斷地做出人生中的重大決定。每個人的人生目標(biāo)都是獨(dú)特的。最重要的是,你要主動把握自己的人生目標(biāo)。但你千萬不能操之過急,更不要為了追求所謂的“崇高”,或?yàn)榱四7滤硕S便確定自己的目標(biāo)。

    那么,該怎么去發(fā)現(xiàn)自己的目標(biāo)呢?許多同學(xué)問我他們的目標(biāo)該是什么?我無法回答,因?yàn)橹挥幸粋€人能告訴你人生的目標(biāo)是什么,那個人就是你自己。只有一個地方你能找到你的目標(biāo),那就是你心里。

    我建議你閉上眼睛,把第一個浮現(xiàn)在你腦海里的理想記錄下來,因?yàn)椴唤?jīng)過思考的答案是最真誠的。或者,你也可以回顧過去,在你最快樂、最有成就感的時光里,是否存在某些共同點(diǎn)?它們很可能就是最能激勵你的人生目標(biāo)了。再者,你也可以想象一下,十五年后,當(dāng)你達(dá)到完美的人生狀態(tài)時,你將會處在何種環(huán)境下?從事什么工作?其中最快樂的事情是什么?當(dāng)然,你也不妨多和親友談?wù)劊犅犓麄兊囊庖姟?br />
    成功的第二步:嘗試新的領(lǐng)域、發(fā)掘你的興趣
    為了成為最好的你自己,最重要的是要發(fā)揮自己所有的潛力,追逐最感興趣和最有激情的事情。當(dāng)你對某個領(lǐng)域感興趣時,你會在走路、上課或洗澡時都對它念念不忘,你在該領(lǐng)域內(nèi)就更容易取得成功。更進(jìn)一步,如果你對該領(lǐng)域有激情,你就可能為它廢寢忘食,連睡覺時想起一個主意,都會跳起來。這時候,你已經(jīng)不是為了成功而工作,而是為了“享受”而工作了。毫無疑問的,你將會從此得到成功。

    相對來說,做自己沒有興趣的事情只會事倍功半,有可能一事無成。即便你靠著資質(zhì)或才華可以把它做好,你也絕對沒有釋放出所有的潛力。因此,我不贊同每個學(xué)生都追逐最熱門的專業(yè),我認(rèn)為,每個人都應(yīng)了解自己的興趣、激情和能力(也就是情商中所說的“自覺”),并在自己熱愛的領(lǐng)域里充分發(fā)揮自己的潛力。

    比爾·蓋茨曾說:“每天清晨當(dāng)你醒來的時候,都會為技術(shù)進(jìn)步給人類生活帶來的發(fā)展和改進(jìn)而激動不已。”從這句話中,我們可看出他對軟件技術(shù)的興趣和激情。1977年,因?yàn)閷浖臒釔郏葼枴どw茨放棄了數(shù)學(xué)專業(yè)。如果他留在哈佛繼續(xù)讀數(shù)學(xué),并成為數(shù)學(xué)教授,你能想象他的潛力將被壓抑到什么程度嗎?2002年,比爾·蓋茨在領(lǐng)導(dǎo)微軟25年后,卻又毅然把首席執(zhí)行官的工作交給了鮑爾默,因?yàn)橹挥羞@樣他才能投身于他最喜愛的工作——擔(dān)任首席軟件架構(gòu)師,專注于軟件技術(shù)的創(chuàng)新。雖然比爾·蓋茨曾是一個出色的首席執(zhí)行官,但當(dāng)他改任首席軟件架構(gòu)師后,他對公司的技術(shù)方向做出了重大貢獻(xiàn),更重要的是,他更有激情、更快樂了,這也鼓舞了所有員工的士氣。

    比爾·蓋茨的好朋友,世界第二富人華倫·巴菲特也同樣認(rèn)可激情的重要性。當(dāng)學(xué)生請他指示方向時,他總這么回答:“我和你沒有什么差別。如果你一定要找一個差別,那可能就是我每天有機(jī)會做我最愛的工作。如果你要我給你忠告,這這是我能給你的最好忠告了。”

    比爾·蓋茨和華倫·巴菲特給我們的另一個啟示是,他們熱愛的并不是庸俗的、一元化的名利,他們的名利是他們的理想和激情帶來的。美國一所著名的經(jīng)管學(xué)院曾做過一個調(diào)查,結(jié)果發(fā)現(xiàn),雖然大多數(shù)學(xué)生在入學(xué)時都想追逐名利,但在擁有最多名利的校友中,有90%是入學(xué)時追逐理想、而非追逐名利的人。

    我剛進(jìn)入大學(xué)時,想從事法律或政治工作。一年多后我才發(fā)現(xiàn)自己對它沒有興趣,學(xué)習(xí)成績也只在中游。但我愛上了計算機(jī),每天瘋狂地編程,很快就引起了老師、同學(xué)的重視。終于,大二的一天,我做了一個重大的決定:放棄此前一年多在全美前三名的哥倫比亞大學(xué)法律系已經(jīng)修成的學(xué)分,轉(zhuǎn)入哥倫比亞大學(xué)默默無名的計算機(jī)系。我告訴自己,人生只有一次,不應(yīng)浪費(fèi)在沒有快樂、沒有成就感的領(lǐng)域。當(dāng)時也有朋友對我說,改變專業(yè)會付出很多代價,但我對他們說,做一個沒有激情的工作將付出更大的代價。那一天,我心花怒放、精神振奮,我對自己承諾,大學(xué)后三年每一門功課都要拿A。若不是那天的決定,今天我就不會擁有在計算機(jī)領(lǐng)域所取得的成就,而我很可能只是在美國某個小鎮(zhèn)上做一個既不成功又不快樂的律師。

    即便如此,我對職業(yè)的激情還遠(yuǎn)不能和我父親相比。我從小一直以為父親是個不茍言笑的人,直到去年見到父親最喜愛的兩個學(xué)生(他們現(xiàn)在都是教授),我才知道父親是多么熱愛他的工作。他的學(xué)生告訴我:“李老師見到我們總是眉開眼笑,他為了讓我們更喜歡我們的學(xué)科,常在我們最喜歡的餐館討論。他在我們身上花的時間和金錢,遠(yuǎn)遠(yuǎn)超過了他微薄的收入。”我父親是在70歲高齡,經(jīng)過從軍、從政、寫作等職業(yè)后才找到了他的最愛——教學(xué)。他過世后,學(xué)生在他抽屜里找到他勉勵自己的兩句話:“老牛明知夕陽短,不用揚(yáng)鞭自奮蹄。”最令人欣慰的是,他在人生的最后一段路上,找到了自己的最愛。

    那么,如何尋找興趣和激情呢?首先,你要把興趣和才華分開。做自己有才華的事容易出成果,但不要因?yàn)樽约鹤龅煤镁驼J(rèn)為那是你的興趣所在。為了找到真正的興趣和激情,你可以問自己:對于某件事,你是否十分渴望重復(fù)它,是否能愉快地、成功地完成它?你過去是不是一直向往它?是否總能很快地學(xué)習(xí)它?它是否總能讓你滿足?你是否由衷地從心里(而不只是從腦海里)喜愛它?你的人生中最快樂的事情是不是和它有關(guān)?當(dāng)你這樣問自己時,注意不要把你父母的期望、社會的價值觀和朋友的影響融入你的答案。

    如果你能明確回答上述問題,那你就是幸運(yùn)的,因?yàn)榇蠖鄶?shù)學(xué)生在大學(xué)四年里都在摸索或悔恨。如果你仍未找到這些問題的答案,那我只有一個建議:給自己最多的機(jī)會去接觸最多的選擇。記得我剛進(jìn)卡內(nèi)基·梅隆的博士班時,學(xué)校有一個機(jī)制,允許學(xué)生挑老師。在第一個月里,每個老師都使盡全身解數(shù)吸引學(xué)生。正因?yàn)橛辛诉@個機(jī)制,我才幸運(yùn)地碰到了我的恩師瑞迪教授,選擇了我的博士題目“語音識別”。雖然并不是所有學(xué)校都有這樣的機(jī)制,但你完全可以自己去了解不同的學(xué)校、專業(yè)、課題和老師,然后從中挑選你的興趣。你也可以通過圖書館、網(wǎng)絡(luò)、講座、社團(tuán)活動、朋友交流、電子郵件等方式尋找興趣愛好。唯有接觸你才能嘗試,唯有嘗試你才能找到你的最愛。

    我的同事張亞勤曾經(jīng)說:“那些敢于去嘗試的人一定是聰明人。他們不會輸,因?yàn)樗麄兗词共怀晒Γ材軓闹袑W(xué)到教訓(xùn)。所以,只有那些不敢嘗試的人,才是絕對的失敗者。”希望各位同學(xué)盡力開拓自己的視野,不但能從中得到教益,而且也能找到自己的興趣所在。

    成功的第三步:針對興趣,定階段性目標(biāo),一步步邁進(jìn)
    找到了你的興趣,下一步該做的就是制定具體的階段性目標(biāo),一步步向自己的理想邁進(jìn)。

    首先,你應(yīng)客觀地評估距離自己的興趣和理想還差些什么?是需要學(xué)習(xí)一門課、讀一本書、做一個更合群的人、控制自己的脾氣還是成為更好的演講者?十五年后達(dá)到的完美的自己和今天的自己會有什么差別?。。。你應(yīng)盡力彌補(bǔ)這些差距。例如,當(dāng)我決定我一生的目的是要讓我的影響力最大化時,我發(fā)現(xiàn)我最欠缺的是演講和溝通能力。我以前是一個和人交談都會臉紅,上臺演講就會恐懼的學(xué)生。我做助教時表現(xiàn)特別差,學(xué)生甚至給我取了個“開復(fù)劇場”的綽號。因此,為了實(shí)現(xiàn)我的理想,我給自己設(shè)定了多個提高演講和溝通技巧的具體目標(biāo)。

    其次,你應(yīng)定階段性的、具體的目標(biāo),再充分發(fā)揮中國人的傳統(tǒng)美德——勤奮、向上和毅力,努力完成目標(biāo)。比如,我要求自己每個月做兩次演講,而且每次都要我的同學(xué)或朋友去旁聽,給我反饋意見。我對自己承諾,不排練三次,決不上臺演講。我要求自己每個月去聽演講,并向優(yōu)秀的演講者求教。有一個演講者教了我克服恐懼的幾種方法,他說,如果你看著觀眾的眼睛會緊張,那你可以看觀眾的頭頂,而觀眾會依然認(rèn)為你在看他們的臉,此外,手中最好不要拿紙而要握起拳來,那樣,顫抖的手就不會引起觀眾的注意。當(dāng)我反復(fù)練習(xí)演講技巧后,我自己又發(fā)現(xiàn)了許多秘訣,比如:不用講稿,通過講故事的方式來表達(dá)時,我會表現(xiàn)得更好,于是,我仍準(zhǔn)備講稿但只在排練時使用;我發(fā)現(xiàn)我回答問題的能力超過了我演講的能力,于是,我一般要求多留時間回答問題;我發(fā)現(xiàn)自己不感興趣的東西就無法講好,于是,我就不再答應(yīng)講那些我沒有興趣的題目。幾年后,我周圍的人都夸我演講得好,甚至有人認(rèn)為我是個天生的好演說家,其實(shí),我只是實(shí)踐了中國人勤奮、向上和毅力等傳統(tǒng)美德而已。

    任何目標(biāo)都必須是實(shí)際的、可衡量的目標(biāo),不能只是停留在思想上的口號或空話。制定目標(biāo)的目的是為了進(jìn)步,不去衡量你就無法知道自己是否取得了進(jìn)步。所以,你必須把抽象的、無法實(shí)施的、不可衡量的大目標(biāo)簡化成為實(shí)際的、可衡量的小目標(biāo)。舉例來說,幾年前,我有一個目標(biāo)是擴(kuò)大我在公司里的人際關(guān)系網(wǎng),但“多認(rèn)識人”或“增加影響力”的目標(biāo)是無法衡量和實(shí)施的,我需要找一個實(shí)際的、可衡量的目標(biāo)。于是,我要求自己“每周和一位有影響力的人吃飯,在吃飯的過程,要這個人再介紹一個有影響的人給我”。衡量這個目標(biāo)的標(biāo)準(zhǔn)是“每周與一人一餐、餐后再認(rèn)識一人”。當(dāng)然,我不會滿足于這些基本的“指標(biāo)”。擴(kuò)大人際關(guān)系網(wǎng)的目的是使工作更成功,所以,我還會衡量“每周一餐”中得到了多少信息,有多少我的部門雇用的人是在這樣的人際網(wǎng)中認(rèn)識的。一年后,我的確從這些衡量標(biāo)準(zhǔn)中,看到了自己的關(guān)系網(wǎng)有了顯著的擴(kuò)大。

    制定具體目標(biāo)時必須了解自己的能力。目標(biāo)設(shè)定過高固然不切實(shí)際,但目標(biāo)也不可定得太低。對目標(biāo)還要做及時的調(diào)整:如果超出自己的期望,可以把期望提高;如果未達(dá)到自己的期望,可以把期望調(diào)低。達(dá)成了一個目標(biāo)后,可以再制定更有挑戰(zhàn)性的目標(biāo);失敗時要坦然接受,認(rèn)真總結(jié)教訓(xùn)。

    最后,再一次提醒同學(xué)們,目標(biāo)都是屬于你的,只有你知道自己需要什么。制定最合適的目標(biāo),主動提升自己,并在提升過程中客觀地衡量進(jìn)度,這樣才能獲得成功,才能成為更好的你自己。

    自信是自覺而非自傲
    自信的人敢于嘗試新的領(lǐng)域,能更快地發(fā)展自己的興趣和才華,更容易獲得成功。自信的人也更快樂,因?yàn)樗粫r刻擔(dān)心和提防失敗。

    很多人認(rèn)為自信就是成功。一個學(xué)生老得第一名,他有了自信。一個員工總是被提升,他也有了自信。但這只是一元化的成功和一元化的自信。

    其實(shí),自信不一定都是好事。沒有自覺的自信會成為自傲,反而會失去了別人的尊重和信賴。好的自信是自覺的,即很清楚自己能做什么,不能做什么。自覺的人自信時,他成功的概率非常大;自覺的人不自信時,他仍可努力嘗試,但會將風(fēng)險坦誠地告訴別人。自覺的人不需要靠成功來增強(qiáng)自信,也不會因失敗而喪失自信。

    自信的第一步:不要小看自己,多給自己打氣
    “自”信的關(guān)鍵在于自己。如果你自己總認(rèn)為自己不行,你是無法得到自信的。例如,馬加爵曾說:“我覺得我太失敗的,同學(xué)都看不起我……很多人比我老練,讓我很自卑。”雖然馬加爵很聰明也很優(yōu)秀,但他從沒有真正自信過。

    自信的秘密是相信自己有能力。中國古諺:“天生我才必有用”,“一枝草,一點(diǎn)露”,每個人都有自己的特性和長處,值得看重和發(fā)揮。我記得我11歲剛到美國時,課堂上一句英語都聽不懂,有一次老師問“1/7換算成小數(shù)等于幾?”我雖然不懂英文,但認(rèn)得黑板上的“1/7”,這是我以前“背”過的。我立刻舉手并正確回答了這個問題。不會“背書”的美國老師詫異地認(rèn)為我是個“數(shù)學(xué)天才”,并送我去參加數(shù)學(xué)競賽,鼓勵我加入數(shù)學(xué)夏令營,幫助同學(xué)學(xué)習(xí)數(shù)學(xué)。她的鼓勵和同學(xué)的認(rèn)可給了我自信。我開始告訴自己,我有數(shù)學(xué)的天分。這時,我特別想把英文學(xué)好,因?yàn)橹挥羞@樣才能學(xué)習(xí)更多的數(shù)學(xué)知識。這種教育方式不但提高了我的自信,也幫助我在各方面取得了長足的進(jìn)步。

    中國式教育認(rèn)為人的成長是不斷克服缺點(diǎn)的過程,所以老師更多是在批評學(xué)生,讓學(xué)生彌補(bǔ)最差的學(xué)科。雖然應(yīng)把每科都學(xué)得“足夠好”,但人才的價值在于充分發(fā)揮個人最大的優(yōu)點(diǎn)。美國蓋洛普公司最近出了一本暢銷書《現(xiàn)在,發(fā)掘你的優(yōu)勢》。蓋洛普的研究人員發(fā)現(xiàn):大部分人在成長過程中都試著“改變自己的缺點(diǎn),希望把缺點(diǎn)變?yōu)閮?yōu)點(diǎn)”,但他們卻碰到了更多的困難和痛苦;而少數(shù)最快樂、最成功的人的秘訣是“加強(qiáng)自己的優(yōu)點(diǎn),并管理自己的缺點(diǎn)”。“管理自己的缺點(diǎn)”就是在不足的地方做得足夠好,“加強(qiáng)自己的優(yōu)點(diǎn)”就是把大部分精力花在自己有興趣的事情上,從而獲得無比的自信。

    凌志軍的《成長》一書里還有很多得到自信的例子:微軟亞洲工程院院長張宏江說他從小就“相信我是最聰明的。即使再后來的日子里我常常不如別人,但我還是對自己說:我能比別人做得好”;微軟亞洲研究院的主任研究員周明小時候在“學(xué)生勞動”中刷了108個瓶子,打破了紀(jì)錄,從而獲得自信。他說:“我原來一直是沒有自信心的,但是這件事給了我自信。這是我一生中最快樂的經(jīng)驗(yàn),散發(fā)著一種迷人的力量,一直持續(xù)到今天。我發(fā)現(xiàn)了天才的全部秘密,其實(shí)只有6個字:不要小看自己。”

    自信是一種感覺,你沒有辦法用背書的方法“學(xué)習(xí)”自信,而唯一靠“學(xué)習(xí)”提升自信的方法是以實(shí)例“訓(xùn)練”你的大腦。要得到自信,你必須成為自己最好的拉拉隊(duì),每晚入睡前不妨想想,今天發(fā)生了什么值得你自豪的事情?你得到了好的成績嗎?你幫助了別人嗎?有什么超出了你的期望嗎?有誰夸獎了你嗎?我相信每個人每天都可以找到一件成功的事情,你會慢慢發(fā)現(xiàn),這些“小成功”可能會越來越有意義。

    有個著名教練在每次球賽前,總會要求隊(duì)員回憶自己最得意的一次比賽。他甚至讓隊(duì)員把最得意的比賽和一個動作(如緊握拳頭)聯(lián)系起來,以便使自己每次做這個動作時,就會下意識地想到得意的事,然后在每次比賽前反復(fù)做這個動作以“訓(xùn)練”大腦,提升自信。

    希望同學(xué)們都能成為自己最好的拉拉隊(duì),同時多結(jié)交為你打氣的朋友,多回味過去的成功,千萬不要小看自己。

    自信的第二步:用毅力、勇氣,從成功里獲得自信,從失敗里增加自覺
    當(dāng)你感覺到自信時,無論多么小的成功,你都會特別期望再一次得到自己或別人的肯定,這時,你需要有足夠的毅力。只要你有毅力,就會像周明所說的那樣,“什么事情只要我肯干,就一定可以干好。你能學(xué)會你想學(xué)會的任何東西,這不是你能不能學(xué)會的問題,而是你想不想學(xué)的問題。如果你對自己手里的東西有強(qiáng)烈的欲望,你就會有一種堅韌不拔的精神,尤其當(dāng)你是普通人的時候。”

    有時,你可能沒做過某一件事,不知道能不能做成。這時,除了毅力外,你還需要勇氣。我以前在工作中,一般的溝通沒有問題,但到了總裁面前,總是不敢講話,怕說錯話。直到有一天,公司要做改組,總裁召集十多個人開會,他要求每個人輪流發(fā)言。我當(dāng)時想,既然一定要講,那不如把心里話講出來。于是,我鼓足勇氣說:“我們這個公司,員工的智商比誰都高,但是我們的效率比誰都差,因?yàn)槲覀冋旄慕M,不顧到員工的感受和想法……”我說完后,整個會議室鴉雀無聲。會后,很多同事給我發(fā)電子郵件說:“你說得真好,真希望我也有你的膽子這么說。”結(jié)果,總裁不但接受了我的建議,改變了公司在改組方面的政策,而且還經(jīng)常引用我的話。從此,我充滿了自信,不懼怕在任何人面前發(fā)言。這個例子充分印證了“你沒有試過,你怎么知道你不能”這句話。

    有勇氣嘗試新事物的同時,也必須有勇氣面對失敗。大家不能只憑匹夫之勇去做注定要失敗的事。但當(dāng)你畏懼失敗時,不妨想一想,你怕失去什么?最壞的下場是什么?你不能接受嗎?在上面的例子中,如果總裁否定了我的看法,他會不尊重我嗎?不但不會,別人很可能還會認(rèn)為我勇氣可嘉。而且,自覺的人會從失敗中學(xué)習(xí),認(rèn)識到自己不適合做什么事情,再提升自己的自覺。因此,不要畏懼失敗,只要你盡了力,愿意向自己的極限挑戰(zhàn),你就應(yīng)為自己的勇氣而自豪。

    一個自信和自覺的人,如果能勇敢地嘗試新的事物,并有毅力把它做好,他就會從成功里獲得自信,從失敗里增加自覺。

    自信的第三步:自覺地定具體的目標(biāo),虛心地聽他人的評估
    培養(yǎng)自信也要設(shè)定具體的目標(biāo),一步步地邁進(jìn)。這些目標(biāo)也必須是可衡量的。我曾把我在總裁面前發(fā)言的例子講給我女兒聽,因?yàn)樗睦蠋熣J(rèn)為她很害羞,在學(xué)校不舉手發(fā)言,我希望鼓勵她勇于發(fā)言。她同意試一試,但她認(rèn)為只有在適當(dāng)?shù)臅r候,有最好的意見時才愿意發(fā)言。但是,我認(rèn)為有了“最好的意見”這個主觀的評估,目標(biāo)就很難衡量。于是,我和她制定了一個可衡量的、實(shí)際的目標(biāo):她每天舉一次手,如果堅持一個月就有獎勵。然后,我們慢慢增加舉手的次數(shù)。一年后,老師注意到,她對課堂發(fā)言有了足夠的自信。

    自信絕非自我偏執(zhí)、不容許自己犯錯,或過度自我中心,失去客觀的立場。我有個絕頂聰明的同事,他一生認(rèn)準(zhǔn)了“我永遠(yuǎn)不會錯”這句“真理”。他表現(xiàn)得無比自信,一旦證明他某句話是對的,他就會提醒所有人幾個月前他早就說過了。但因?yàn)樗麕缀跏菫榱俗孕哦钪坏┳C明他某句話是錯的,他就會顧左右而言他,或根本否認(rèn)此事。雖然他的正確率高達(dá)95%,但5%的錯誤讓他失去了自己的信譽(yù)和他人的尊敬。這個例子告訴我們,自傲的自信或不自覺的自信甚至比不自信更加危險。

    情商中的自覺有兩個層面:對自己和環(huán)境皆能俱到,掌握主客觀的情勢。有自覺的人不會過度地自我批評,也不會天真地樂觀,他們能客觀地評估自己。所以,他們會坦誠地面對自己的能力極限,不會輕易地接受自己能力范圍外的工作。當(dāng)然,他們?nèi)詷酚诮邮芴魬?zhàn),但會在接受挑戰(zhàn)時做客觀的風(fēng)險評估。這樣的人不但對自己坦誠,對他人也坦誠。坦誠地面對失敗會得到別人的信賴,因?yàn)樗麄冎滥憬邮芰私逃?xùn)。坦誠地面對自己的缺點(diǎn)也會得到別人的尊敬,因?yàn)樗麄冎滥悴粫圆涣苛ΑK裕杂X的人容易成功,也容易自信。

    自覺的人不但公平地評價自己,還主動要求周圍的人給自己批評和反饋。他們明白,雖然自己很自覺,但別人眼中的自己是更為重要的。一方面,別人眼中的自己更為客觀,另一方面,別人眼中的自己才是真正存在的自己(“Perception is reality”),也就是說,如果別人都認(rèn)為你錯了,只有你自認(rèn)為沒有錯,那么在社會、學(xué)校或公司眼中,你就是錯了。所以,你必須虛心地理解和接受別人的想法,而且以別人的想法作為最終的目標(biāo)。比如,我女兒可以每天評估自己的發(fā)言,但最終,只有當(dāng)老師和同學(xué)們認(rèn)為她是個開朗的、有想法的學(xué)生時,她才達(dá)到了最終的目標(biāo)。

    獲得坦誠的反饋特別是負(fù)面的回饋并不容易。所以,你最好能有一些勇敢坦誠的知心好友,他們愿意在私下對你說真心話。當(dāng)然,你不能對負(fù)面的反饋有任何不滿,否則你以后就聽不到真心話了。除了私下的反饋外,在美國的公司里,還有一種“360度”意見調(diào)查,可以對員工的上司、下屬同時做多方面的調(diào)查。因?yàn)檫@種調(diào)查是匿名的,它往往能獲得真實(shí)的意見,如果很多人都說你在某方面仍須改進(jìn),這樣的說法就比自己的或老板的看法更有說服力。雖然在學(xué)校里沒有這種正式的調(diào)查,但是你仍然可以盡力地去理解他人對你的想法。我的父親常教誨我們凡事謀之于眾,就是指開放心胸,切勿以井觀天,局限了自己的視野。

    馬加爵說:“同學(xué)都看不起我。”其實(shí),如果他有勇氣向他信任的同學(xué)求證,他也許會發(fā)現(xiàn)自己錯怪了同學(xué),也許會發(fā)現(xiàn)交錯了朋友,也許會證實(shí)同學(xué)確實(shí)看不起他并了解其中的原因,然后自我改進(jìn)。坦誠的交流和真心的朋友或許都可以幫助馬加爵避免悲劇的發(fā)生。

    有自覺的人會為自己制定現(xiàn)實(shí)的目標(biāo),客觀地衡量自己,并會請他人幫助評估。這樣的人能持續(xù)提升自己的自信,并能避免自信發(fā)展為自傲。

    快樂比成功更重要
    科學(xué)研究證明:心情好的人最能發(fā)揮潛力;快樂能提高效率、創(chuàng)造力和正確決策的概率;快樂的人有開明的思想,愿意幫助別人。但與其說快樂帶來成功,還不如說成功的目的是帶來快樂。我曾建議同學(xué)們追逐自己的理想和興趣,其實(shí)做自己理想的、有興趣的事情就是一種快樂。所以,快樂比成功更應(yīng)成為我們的最終目標(biāo)。

    快樂的第一步:接受你的父母、環(huán)境、自己
    不快樂的人總對一些無奈的事生悶氣,不喜歡自己、父母和老師,不愿意讀枯燥的書、不愿意應(yīng)付考試。對于這些無奈的事,我希望同學(xué)們能學(xué)會坦然地接受它們。

    在所有“不能改變的事情” 中,最不能改變的是父母,最應(yīng)接受的也是父母。有不少學(xué)生說:“父母不理解我,不接受我,不體會我的想法,總要求我用他們的價值觀和理念來做事、讀書、求學(xué)。所以我總是避開他們,越來越孤獨(dú)。”對這些同學(xué),我的回答包括以下兩個方面:

    第一,你應(yīng)該接受你的父母,千萬不要因?yàn)楦杏X父母不理解你而自我封閉。父母的成長環(huán)境不同,思維方式不同,他們對成功的定義可能也不同,對你的期望與你對自己的期望就有較大的差異。但他們?nèi)松穆纷叩帽饶汩L,經(jīng)驗(yàn)比你豐富,你不能先入為主地排斥他們。另外,你必須理解,父母是世界上最愛你的人,他們也是唯一可以無條件為你付出的人,你應(yīng)該無條件地接受你的父母。作子女的經(jīng)常把父母親過度理想化,而疏忽了絕大多數(shù)的父母,在他們生長的環(huán)境中,比我們更為匱乏、不足,他們可能沒有機(jī)會學(xué)習(xí)如何當(dāng)一個稱職的父母,但以他們的條件,也盡力了。如果我們鄙視、排斥父母,無異是對自己生命的來源不敬,那如何能快樂?

    第二,你可以試著去改變父母的想法,但你首先應(yīng)反問,你理解和接受你的父母嗎?你能體會父母的想法嗎?當(dāng)你抱怨父母總是期望你完美時,難道你不也是在期望父母完美嗎?凌志軍建議說:“父母對你們的期望沒有錯,只是你們應(yīng)該讓父母了解,你們對他們的期望。”所以,在要求他們理解你之前,你應(yīng)先去理解他們,這樣才能更成功地和他們溝通。相互了解后,也許你們?nèi)杂胁煌庖姷鼙舜苏徑猓苍S你或他們會改變原來的看法而達(dá)到共識。為此,你首先應(yīng)和父母建立一個坦誠的溝通關(guān)系。也許起初你們會覺得別扭,但我相信你們很快就會體會到親情與溫馨。

    除了接受父母,你還應(yīng)接受環(huán)境中不能改變的事情。有些同學(xué)期望著不必考他們認(rèn)為沒用的題目,不必上他們認(rèn)為沒用的課,不必聽他們不信任的老師講課。但在社會中生存,我們必須學(xué)會接受那些不能改變的事。凌志軍說:“如果我遇到‘應(yīng)該做的事情’和‘喜歡做的事情’之間的沖突,我會給自己安排一個時間表,每天在規(guī)定的時間里完成‘應(yīng)該做的事情’——時間表能激勵你集中精力并提高效率。然后去做‘喜歡做的事情’。”人生是有限的,大家應(yīng)把有限的時間用在“喜歡做的事情”上,但必須先把“應(yīng)該做的事情”做得足夠好。

    最無謂的“發(fā)愁”就是對自己不滿意。這不但浪費(fèi)了時間,而且會造成事倍功半。所以,同學(xué)們一方面要培養(yǎng)自己的自信,以每一個小的成功來激勵自己,另一方面也必須能接受自己,理解你們是為自己而生活的。為自己而生活就是要為了自己的快樂、興趣和人生目標(biāo)而努力,不要活在別人的價值觀里。微軟亞洲研究院院長沈向洋小時候一直活在別人的價值觀里,為了“第一名”拼命,但是有一天,“我忽然意識到原來的想法錯了。打敗別人,得第一名,不是最重要的。最重要的是,你能不能學(xué)會尊重你自己,能不能發(fā)現(xiàn)自己的價值在哪里。”

    當(dāng)你開始為自己而生活,接受并喜歡你自己,接受并接近你的父母,接受環(huán)境中不能改變的事情,你就會發(fā)現(xiàn)你開始快樂了。

    快樂的第二步:宣泄你的情感,控制你的脾氣
    心理學(xué)家認(rèn)為,馬加爵“在精神上一直是孤獨(dú)的,因?yàn)樗偛辉概c人交流,不愿說出自己真實(shí)的感受……是一個情緒反應(yīng)相當(dāng)激烈的人,但是他外表上又是一個相當(dāng)壓抑的人。”馬加爵給親人的信上也寫道:“我這個人動情的話歷來就講不出口。”如果馬加爵能直接地宣泄自己的感情,他也許可以防止悲劇發(fā)生。事后馬加爵也想到:“逃亡的時候覺得自己傻,可以選擇吵架就算了,沒有必要?dú)⑷恕!?br />
    中國人總認(rèn)為矜持、含蓄是美德。但我認(rèn)為,在今天的時代里,直截了當(dāng)?shù)臏贤ǜ鼮橹匾9諒澞ń恰⒀圆挥芍浴⒄扒邦櫤蟆?dāng)面不說、背后亂講都是壞習(xí)慣。有一位中國老板和他的下屬吵架,他問我是不是該請第三者調(diào)解,我給他的建議是:因?yàn)檫@是情感的事情,你應(yīng)該直接去和下屬溝通;第三者為了做和事佬,可能會說出違背你或你的下屬意愿的話(例如謊稱你已經(jīng)認(rèn)錯,但其實(shí)你沒有),這反而會造成更多的麻煩。

    當(dāng)然,在情感問題上,直接溝通也需要技巧。例如,那位老板如果第一句話就對下屬說:“你錯了,但是我不和你計較。”那么下屬肯定會反感。如果老板說:“你在那么多人面前罵我,很顯然是你想搶我的工作。”結(jié)果就更不堪設(shè)想。顯然,當(dāng)你直接溝通時,不要論對錯,不要猜測別人的動機(jī),更不要再趁機(jī)補(bǔ)一句。最有效的溝通就是直接談到你的感情,比如那位老板可以說:“當(dāng)你在那么多人面前罵我時,我感到失去尊嚴(yán),非常為難。”這樣一句話是不能反駁的,甚至可能會引發(fā)理解和同情。

    當(dāng)你怒火中燒時,把憤怒的話轉(zhuǎn)變成感性的話并不容易。要做到這一點(diǎn),我們又需要依靠“自覺”和 “自控”。自覺不只是認(rèn)識自己的能力,更是認(rèn)識自己的感情。自覺的人知道自己何時會喜怒哀樂,也理解喜怒哀樂的宣泄會造成何種后果。如果他感到氣憤,他不會瞬間爆炸,因?yàn)樗辣ǖ暮蠊膊粫阂肿约旱母星椋驗(yàn)槟菚π撵`造成很大的傷害,他通常會盡量自控地用最有建設(shè)性的方式處理。正面、感性的溝通可以降低火爆的氣氛。感情和溝通都是最有感染性的,你完全可以用有建設(shè)性的、寬容的態(tài)度來與他人溝通并影響他人。

    自控是一種內(nèi)心的自我對話,可以提醒自己不要落入惡劣態(tài)度的陷阱。除了上溯的理智分析外,深呼吸是最快、最簡單的情緒調(diào)節(jié)方法,中國人說:“心浮氣躁”、“心神不寧”、“心亂如麻”、“心焦如焚”,指的都是心情紊亂和情緒及精神狀態(tài)的關(guān)系,而“氣定神閑”、“心安理得”最方便的作法就是深呼吸,也就藉由調(diào)氣調(diào)息,把氣調(diào)順了,比較能擺脫情緒的牽扯,回到理性思考。美國對有暴力行為的加害人,都會施以團(tuán)體教育,而教導(dǎo)他們認(rèn)清暴力的毀滅性,學(xué)習(xí)控制自己的沖動,也就是懂得“叫停”或“離開現(xiàn)場”,以保護(hù)自己和對方的安全,避免鑄成大錯。

    如果認(rèn)為自控不容易,那么,你可以請你的知心好友隨時提醒你。我過去的一個老板常常一生氣就一發(fā)不可收拾,而且他生氣都有前兆:他會先用刁鉆的問題考倒你,然后他開始戰(zhàn)抖,最后他才發(fā)脾氣。但他想改掉這個毛病,于是他要求我在每次看到前兆時,用一句“密語”(如“讓我們言歸正傳吧”)來提醒他。幾次“密語”提醒之后,他就有了自覺和自控的能力,再也不需要別人提醒了。

    快樂的第三步:有人分享快樂加倍,有人分擔(dān)痛苦減半
    科學(xué)研究告訴我們,調(diào)節(jié)自己的心情最好的方法就是找到知心的人傾訴和溝通。科學(xué)的根據(jù)是,感情源于人腦的lymbic系統(tǒng),而該系統(tǒng)主要靠與他人的接觸調(diào)節(jié)。科學(xué)證明,在一起交談的兩個人會慢慢達(dá)到同樣的心理狀態(tài)(喜怒哀樂)和生理狀態(tài)(體溫、心跳等)。因此,若想達(dá)到感情的平衡,我們必須懂得依靠別人。與人溝通是提升你的情商和快樂的唯一方法。與世隔絕的人只會越來越苦悶。西方有一古諺:“有人分享快樂加倍,有人分擔(dān)痛苦減半。”馬加爵所謂的真情,應(yīng)該就是指能分享心情、內(nèi)心的人吧!

    所以,如果你情緒不好,或受了委屈時,應(yīng)多向父母、朋友傾訴,不要像馬加爵那樣總把話悶在心里,只對日記傾訴。馬加爵很苦悶,卻沒有傾訴苦悶的渠道。他說:“我在學(xué)校一個朋友也沒有,我在學(xué)校那么落魄……在各種孤獨(dú)中間,人最怕精神上的孤獨(dú)。”馬加爵在人際交往中碰到很多障礙,這些障礙帶給他苦悶,而這些苦悶又沒有渠道宣泄,進(jìn)而造成更大的苦悶。這個惡性循環(huán)最終導(dǎo)致了悲劇的發(fā)生。其實(shí),馬加爵的內(nèi)心獨(dú)白,證明他是一個有自覺的人,他能看清自己的困境,可惜他將自己鎖在自我封閉的牢籠里,讓仇恨把他帶向毀滅。記得去年,非典風(fēng)波,最恐怖的威脅就是被隔離,可是平日里我們卻常忽略了心里的孤立,使我們和快樂絕緣。

    要得到快樂,你需要幽默、樂觀的想法和溝通。在所有的溝通中,“笑”的感染力是最大的。耶魯大學(xué)的研究發(fā)現(xiàn),“笑”的感染力超過了所有其他感情,人們總會反射式地以微笑來回報你的微笑,而開懷的大笑更能迅速創(chuàng)造一個輕松的氣氛,此外,幽默的笑也能促進(jìn)相互信任,激發(fā)靈感。樂觀、正面思考的力量是無窮的。近年來憂郁癥已成為全世界來勢洶洶的心理疾病,而其和負(fù)面思考有極大的關(guān)系,有些人習(xí)慣鉆牛角尖,往悲觀無助的方向想,困在死胡同中。如果能換個角度,半杯水有一半滿的而非一半空的!現(xiàn)在的不如意,代表有無限成長進(jìn)步的空間。學(xué)習(xí)檢查自己,常保正念。

    無論是驅(qū)逐悲傷或是獲取快樂,我們都需要從傾訴和溝通中得到正面的激勵。最自然的溝通對象可能是你的親人,特別是你的父母。我相信,所有的父母都愿意聽孩子的傾訴。

    但是,“在家靠父母,出外靠朋友”,所以我們也需要和知心朋友溝通、傾訴。交朋友時不要只看朋友的嗜好和個性,更重要的是,你需要一些會鼓勵人的、樂觀的、幽默的、誠懇的、有同理心的、樂于助人的、愿意聽人訴說的朋友。也許你會說:“我沒有這樣的朋友,也不敢去亂找朋友,如果別人拒絕怎么辦?”如果別人拒絕你,你沒有失去任何東西,但如果別人接受你,你可能因此找到你自己。

    我希望你也會在尋找好友的過程中,也讓自己成為這樣一個會鼓勵人的、樂觀的、幽默的、誠懇的、有同理心的、樂于助人的、愿意聽人訴說的人,并盡力去幫助你周圍的親人和朋友。唯有更多人愿意付出,快樂才能更迅速地通過人際網(wǎng)擴(kuò)散。

    給中國學(xué)生的祝福
    我一直信奉以下做事的三原則:有勇氣來改變可以改變的事情,有度量接受不可改變的事情,有智慧來分辨兩者的不同。

    祝福中國的學(xué)生,當(dāng)你碰到挫折時,能用這三個原則,以度量、勇氣、智慧來幫助你渡過難關(guān)。

    祝福中國的學(xué)生,當(dāng)你追求成功、自信、快樂時,不要忘了成功是多元化的,不要忘了自信是自覺而非自傲,不要忘了快樂的人總能理解、接受和喜歡自己。

    祝福中國的學(xué)生,當(dāng)你逐步獲得成功、自信、快樂時,會發(fā)現(xiàn)一個良性循環(huán):從成功里得到自信和快樂,從自信里得到快樂和成功,從快樂里得到成功和自信。

    祝福中國的學(xué)生,當(dāng)你擁有成功、自信、快樂后,不要忘了幫助他人獲得成功、自信和快樂。
    posted @ 2006-12-14 09:24 重歸本壘(Bing) 閱讀(226) | 評論 (0)編輯 收藏
     
    在我們不斷塑造自我的過程中,影響最大的莫過于是選擇樂觀的態(tài)度還是悲觀的態(tài)度。我們思想上的這種抉擇可能給我們帶來激勵,也有可能阻滯我們前進(jìn)。

      清晰地規(guī)劃目標(biāo)是人生走向成功的第一步,但塑造自我卻不僅限于規(guī)劃目標(biāo)。要真正塑造自我和自己想要的生活,我們必須奮起行動。莎士比亞說得好:"行動勝過雄辯。"

      一旦掌握自我激勵,自我塑造的過程也就隨即開始。以下方法可以幫你塑造自我,塑造那個你一直夢寐以求的自我。

      樹立遠(yuǎn)景 邁向自我塑造的第一步,要有一個你每天早晨醒來為之奮斗的目標(biāo),它應(yīng)是你人生的目標(biāo)。遠(yuǎn)景必須即刻著手建立,而不要往后拖。你隨時可以按自己的想法做些改變,但不能一刻沒有遠(yuǎn)景。

      離開舒適區(qū) 不斷尋求挑戰(zhàn)激勵自己。提防自己,不要躺倒在舒適區(qū)。舒適區(qū)只是避風(fēng)港,不是安樂窩。它只是你心中準(zhǔn)備迎接下次挑戰(zhàn)之前刻意放松自己和恢復(fù)元?dú)獾牡胤健?/p>

      把握好情緒 人開心的時候,體內(nèi)就會發(fā)生奇妙的變化,從而獲得陣陣新的動力和力量。但是,不要總想在自身之外尋開心。令你開心的事不在別處,就在你身上。因此,找出自身的情緒高漲期用來不斷激勵自己。

      調(diào)高目標(biāo) 許多人驚奇地發(fā)現(xiàn),他們之所以達(dá)不到自己孜孜以求的目標(biāo),是因?yàn)樗麄兊闹饕繕?biāo)太小、而且太模糊不清,使自己失去動力。如果你的主要目標(biāo)不能激發(fā)你的想象力,目標(biāo)的實(shí)現(xiàn)就會遙遙無期。因此,真正能激勵你奮發(fā)向上的是,確立一個既宏偉又具體的遠(yuǎn)大目標(biāo)。

      加強(qiáng)緊迫感 20世紀(jì)作者Anais Nin(阿耐斯)曾寫道:"沉溺生活的人沒有死的恐懼"。自以為長命百歲無益于你享受人生。然而,大多數(shù)人對此視而不見,假裝自己的生命會綿延無絕。惟有心血來潮的那天,我們才會籌劃大事業(yè),將我們的目標(biāo)和夢想寄托在enis Waitley(丹尼斯)稱之為 "虛幻島" 的汪洋大海之中。其實(shí),直面死亡未必要等到生命耗盡時的臨終一刻。事實(shí)上,如果能逼真地想象我們的彌留之際,會物極必反產(chǎn)生一種再生的感覺,這是塑造自我的第一步。

      撇開朋友 對于那些不支持你目標(biāo)的 "朋友" ,要敬而遠(yuǎn)之。你所交往的人會改變你的生活。與憤世嫉俗的人為伍,他們就會拉你沉淪。結(jié)交那些希望你快樂和成功的人,你就在追求快樂和成功的路上邁出最重要的一步。對生活的熱情具有感染力。因此同樂觀的人為伴能讓我們看到更多的人生希望。

      迎接恐懼 世上最秘而不宣的秘密是,戰(zhàn)勝恐懼后迎來的是某種安全有益的東西。哪怕克服的是小小的恐懼,也會增強(qiáng)你對創(chuàng)造自己生活能力的信心。如果一味想避開恐懼,它們會象瘋狗一樣對我們窮追不舍。此時,最可怕的莫過于雙眼一閉假裝它們不存在。

      做好調(diào)整計劃 實(shí)現(xiàn)目標(biāo)的道路絕不是坦途。它總是呈現(xiàn)出一條波浪線,有起也有落。但你可以安排自己的休整點(diǎn)。事先看看你的時間表,框出你放松、調(diào)整、恢復(fù)元?dú)獾臅r間。即使你現(xiàn)在感覺不錯,也要做好調(diào)整計劃。這才是明智之舉。在自己的事業(yè)波峰時,要給自己安排休整點(diǎn)。安排出一大段時間讓自己隱退一下,即使是離開自己愛的工作也要如此。只有這樣,在你重新投入工作時才能更富激情。

      直面困難 每一個解決方案都是針對一個問題的。二者缺一不可。困難對于腦力運(yùn)動者來說,不過是一場場艱辛的比賽。真正的運(yùn)動者總是盼望比賽。如果把困難看作對自己的詛咒,就很難在生活中找到動力。如果學(xué)會了把握困難帶來的機(jī)遇,你自然會動力陡生。

      首先要感覺好 多數(shù)人認(rèn)為,一旦達(dá)到某個目標(biāo),人們就會感到身心舒暢。但問題是你可能永遠(yuǎn)達(dá)不到目標(biāo)。把快樂建立在還不曾擁有的事情上,無異于剝奪自己創(chuàng)造快樂的權(quán)力。記住,快樂是天賦權(quán)利。首先就要有良好的感覺,讓它使自己在塑造自我的整個旅途中充滿快樂,而不要再等到成功的最后一刻才去感受屬于自己的歡樂。

      加強(qiáng)排練 先"排演"一場比你要面對的琿要復(fù)雜的戰(zhàn)斗。如果手上有棘手活而自己又猶豫不決,不妨挑件更難的事先做。生活挑戰(zhàn)你的事情,你定可以用來挑戰(zhàn)自己。這樣,你就可以自己開辟一條成功之路。成功的真諦是:對自己越苛刻,生活對你越寬容;對自己越寬容,生活對你越苛刻。

      立足現(xiàn)在 鍛煉自己即刻行動的能力。充分利用對現(xiàn)時的認(rèn)知力。不要沉浸在過去,也不要耽溺于未來,要著眼于今天。當(dāng)然要有夢想、籌劃和制訂創(chuàng)造目標(biāo)的時間。不過,這一切就緒后,一定要學(xué)會腳踏實(shí)地、注重眼前的行動。要把整個生命凝聚在此時此刻。

      敢于競爭 競爭給了我們寶貴的經(jīng)驗(yàn),無論你多么出色,總會人外有人。所以你需要學(xué)會謙虛。努力勝過別人,能使自己更深地認(rèn)識自己;努力勝過別人,便在生活中加入了競爭 "游戲 " 。不管在哪里,都要參與競爭,而且總要滿懷快樂的心情。要明白最終超越別人遠(yuǎn)沒有超越自己更重要。

      內(nèi)省 大多數(shù)人通過別人對自己的印象和看法來看自己。獲得別人對自己的反映很不錯,尤其正面反饋。但是,僅憑別人的一面之辭,把自己的個人形象建立在別人身上,就會面臨嚴(yán)重束縛自己的危險。因此,只把這些溢美之詞當(dāng)作自己生活中的點(diǎn)綴。人生的棋局該由自己來擺。不要從別人身上找尋自己,應(yīng)該經(jīng)常自省并塑造自我。

      走向危機(jī) 危機(jī)能激發(fā)我們竭盡全力。無視這種現(xiàn)象,我們往往會愚蠢地創(chuàng)造一種追求舒適的生活,努力設(shè)計各種越來越輕松的生活方式,使自己生活得風(fēng)平浪靜。當(dāng)然,我們不必坐等危機(jī)或悲劇的到來,從內(nèi)心挑戰(zhàn)自我是我們生命力量的源泉。圣女貞德(Joan of Arc)說過:"所有戰(zhàn)斗的勝負(fù)首先在自我的心里見分曉。"

      精工細(xì)筆 創(chuàng)造自我,如繪巨幅畫一樣,不要怕精工細(xì)筆。如果把自己當(dāng)作一幅正在描繪中杰作,你就會樂于從細(xì)微處做改變。一件小事做得與眾不同,也會令你興奮不已。總之,無論你有多么小的變化,點(diǎn)點(diǎn)都于你很重要。

      敢于犯錯 有時候我們不做一件事,是因?yàn)槲覀儧]有把握做好。我們感到自己"狀態(tài)不佳"或精力不足時,往往會把必須做的事放在一邊,或靜等靈感的降臨。你可不要這樣。如果有些事你知道需要做卻又提不起勁,盡管去做,不要怕犯錯。給自己一點(diǎn)自嘲式幽默。抱一種打趣的心情來對待自己做不好的事情,一旦做起來了盡管樂在其中。

      不要害怕拒絕 不要消極接受別人的拒絕,而要積極面對。你的要求卻落空時,把這種拒絕當(dāng)作一個問題: "自己能不能更多一點(diǎn)創(chuàng)意呢?"不要聽見不字就打退堂鼓。應(yīng)該讓這種拒絕激勵你更大的創(chuàng)造力。

      盡量放松 接受挑戰(zhàn)后,要盡量放松。在腦電波開始平和你的中樞神經(jīng)系統(tǒng)時,你可感受到自己的內(nèi)在動力在不斷增加。你很快會知道自己有何收獲。自己能做的事,不必祈求上天賜予你勇氣,放松可以產(chǎn)生迎接挑戰(zhàn)的勇氣。

      一生的縮影 塑造自我的關(guān)鍵是甘做小事,但必須即刻就做。塑造自我不能一蹴而就,而是一個循序漸進(jìn)的過程。這兒做一點(diǎn),那兒改一下,將使你的一天(也就是你的一生)有滋有味。今天是你整個生命的一個小原子,是你一生的縮影。

      大多數(shù)人希望自己的生活富有意義。但是生活不在未來。我們越是認(rèn)為自己有充分的時間去做自己想做的事,就越會在這種沉醉中讓人生中的絕妙機(jī)會悄然流逝。只有重視今天,自我激勵的力量才能汩汩不絕。

    posted @ 2006-12-14 09:22 重歸本壘(Bing) 閱讀(197) | 評論 (0)編輯 收藏
     
         摘要: ---servlet文件 import ?java.io. * ; import ?java.util.Date; import ?javax.servlet. * ; import ?javax.servlet.http. * ;...  閱讀全文
    posted @ 2006-12-12 10:43 重歸本壘(Bing) 閱讀(414) | 評論 (0)編輯 收藏
     
    1.文件打包

    ??????jar cf myname.jar *.class

    2.證書位置

    自簽名的數(shù)字證書要放在一個文件中(通常稱為“密鑰鏈”(keychain)),如果輸入
    ??????keytool -list
    那么訪問缺省文件,如果沒有這個文件,那么就要創(chuàng)建一個,或指定一個已存在的文件。一般為“cacerts”,運(yùn)行:
    ??????keytool -list -file <path/filename>
    缺省位置一般為:
    ??????{java.home}/lib/security/cacerts

    3.創(chuàng)建簽名

    運(yùn)行:
    ??????keytool -genkey -alias <keyname> -keystore <url>
    這里keyname就是為你的密鑰取一個別名,url就放密鑰的位置,通常為"cacerts".按提示輸入密碼等信息。
    keytool有很多的運(yùn)行參數(shù),如-valid就是可以指定密鑰的有效天數(shù)。

    4.查看新建的密鑰

    運(yùn)行:
    ??????keytool -list -keystore <url>

    5.給自己的jar文件簽名

    運(yùn)行:
    ???jarsigner -keystore <url> <jarfile> <keyname>
    url表示cacerts文件的位置,jarfile是自己的jar文件的名稱,keyname是密鑰的名稱。

    6.在網(wǎng)頁用使用

    現(xiàn)在就有一個jar文件,它標(biāo)識成是采用自己提供的密鑰進(jìn)行簽名的,這樣子就能保證在簽名之后,這個jar文件沒有被篡改過。
    不過要確保html文件中的applet標(biāo)記包含了“archive”屬性,來指定jar文件的名稱。

    ????<applet code=ifpre.io.FileAccessApplet
    ?????achive=ifpreFileAccessApplet?
    ?????width=200?
    ?????heigt =100>?
    ????</applet>?
    posted @ 2006-12-12 09:51 重歸本壘(Bing) 閱讀(1030) | 評論 (2)編輯 收藏
     

    ?

    ?  ???????

    ========

    Chap11??? 對象的集合

    ?

    ?????? 1.數(shù)組

    ?????? 數(shù)組與其它容器的區(qū)別體現(xiàn)在三個方面:效率,類型識別,以及可以持有primitives。

    ?????? 數(shù)組是Java提供的,能隨機(jī)存儲和訪問reference序列的諸多方法中,最高效的一種。速度的代價是,當(dāng)一個數(shù)組創(chuàng)建后,容量就固定了。

    ?????? 創(chuàng)建數(shù)組的時候,同時指明了數(shù)組元素的類型。而泛型容器類如List,Set和Map等,所持有的對象均被上傳為Object。

    ??????

    ?????? 2.數(shù)組是第一流的對象

    ?????? 數(shù)組的標(biāo)識符實(shí)際上是一個“創(chuàng)建在堆(heap)里的實(shí)實(shí)在在的對象的”reference。這個對象持有其它對象的reference,或直接持有primitive類型的值。

    ??????

    ?????? 3.Arrays類

    ?????? java.util.Arrays類,包括了一組可用于數(shù)組的static方法。其中asList()方法,可把數(shù)組轉(zhuǎn)成一個List。

    ?????? Arrays.fill()方法,把一個值或?qū)ο蟮膔eference拷貝到數(shù)組的各個位置,或指定的范圍。

    ??????

    ?????? 4.復(fù)制一個數(shù)組

    ?????? 相比for循環(huán),System.arrayCopy()能以更快的速度拷貝數(shù)組。如果是對象數(shù)組,拷貝的是數(shù)組中對象的reference,對象本身不會被拷貝。這被稱為淺拷貝(Shallow copy)。

    ??????

    ?????? 5.數(shù)組的比較

    ?????? Arrays提供了equals()方法。數(shù)組是否相等是基于其內(nèi)容的。

    ?????? 數(shù)組要想完全相等,它們必須有相同數(shù)量的元素,且數(shù)組的每個元素必須與另一個數(shù)組的對應(yīng)位置上的元素相等。

    ?????? 元素的相等性,用equals()判斷。對于primitive,會使用其wrapper類的equals()。

    ??????

    ?????? 6.數(shù)組元素的比較

    ?????? 實(shí)現(xiàn)比較功能的一個方法是實(shí)現(xiàn)java.lang.Comparable接口。這個接口只有一個compareTo()方法。

    ?????? Arrays.sort()會把傳給它的數(shù)組的元素轉(zhuǎn)換成Comparable。如果數(shù)組元素沒有實(shí)現(xiàn)Comparable接口,就會引發(fā)一個ClassCastException。

    ?????? 實(shí)現(xiàn)比較功能的另一個方法使用策略模式(strategy design pattern),即實(shí)現(xiàn)Comparator接口。

    ?????? Arrays.sort()可接受一個數(shù)組和一個Comparator,根據(jù)Comparator的compare()方法對數(shù)組元素排序。

    ?????? Java標(biāo)準(zhǔn)類庫所用的排序算法已經(jīng)作了優(yōu)化--對于primitive,它用的是快速排序(Quicksort),對于對象,它用的是穩(wěn)定合并排序(stable merge sort)。

    ??????

    ?????? 7.查詢有序數(shù)組

    ?????? 一旦對數(shù)組進(jìn)行了排序,就能用Arrays.binarySearch()進(jìn)行快速查詢了。但切忌對一個尚未排序的數(shù)組使用binarySearch()。

    ?????? 如果Arrays.binarySearch()查找到了,就返回一個大于或等于0的值。否則返回負(fù)值。這個負(fù)值的意思是,如果手動維護(hù)這個數(shù)組,這個值應(yīng)該插在哪個位置。這個值是:

    ?????? -(插入點(diǎn))-1

    ?????? “插入點(diǎn)”就是,在所有比要找的值更大的值中,最小的那個值的下標(biāo)。如果數(shù)組中所有值都比要查找的值小,它就是a.size()。

    ?????? 如果數(shù)組里有重復(fù)元素,binarySearch()不能保證返回哪一個,但也不報錯。

    ?????? 如果排序的時候用到了Comparator,那么調(diào)用binarySearch()的時候,也必須使用同一個Comparator。

    ??????

    ?????? 8.數(shù)組部分的總結(jié)

    ?????? 如果要持有一組對象,首選,同時效率最高的,應(yīng)該是數(shù)組。如果是要持有一組primitive,也只能用數(shù)組。

    ??????

    ?????? 9.容器簡介

    ?????? Java2的容器類要解決“怎樣持有對象”,它把這個問題分成兩類:

    ?????? (1).Collection:通常是一組有一定規(guī)律的獨(dú)立元素。List必須按特定的順序持有這些元素,而Set不能保存重復(fù)的元素。

    ?????? (2).Map:一組以“鍵-值”(key-value)形式出現(xiàn)的pair。Map可以返回鍵(Key)的Set,值的Collection,或者pair的Set。

    ??????

    ?????? 10.填充容器

    ?????? Collection也有一個輔助類Collections,它包含了一些靜態(tài)的使用工具方法,其中有fill()。fill()只是把同一個對象的reference負(fù)值到整個容器,而且只能為List,不能為Set和Map工作。并且這個fill()只能替換容器中的值,而不是往List加新元素。如:

    ?????? List list = new ArrayList();

    ?????? for(int i = 0; i<10; i++)

    ????????????? list.add("");

    ?????? Collections.fill(list, "Hello");

    ??????

    ?????? 11.容器的缺點(diǎn):不知道對象的類型

    ?????? Java的容器只持有Object。容器對“能往里面加什么類型的對象”沒有限制。在使用容器中的對象之前,還必須進(jìn)行類型轉(zhuǎn)換

    ??????

    ?????? 12.迭代器

    ?????? 迭代器(iterator),又是一個設(shè)計模式。iterator能讓程序員在不知道或不關(guān)心他所處理的是什么樣的底層序列結(jié)構(gòu)的情況下,在一個對象序列中前后移動,并選取其中的對象。iterator是“輕量級”的對象,即創(chuàng)建代價很小的對象。

    ?????? 不經(jīng)意的遞歸(Unintended recursion)

    ?????? public class A{

    ????????????? public String toString(){

    ???????????????????? return "A address:" + this +"\n";//

    ????????????? }

    ????????????? public static void main(String[] args){

    ???????????????????? System.out.println(new A());

    ????????????? }

    ?????? }

    ?????? 上面的程序會出現(xiàn)無窮無盡的異常。

    ?????? "A address:" + this???????? ,編譯器會試著將this轉(zhuǎn)換成String,要用大toString(),于是就變成遞歸調(diào)用了。

    ?????? 如果想打印對象的地址,應(yīng)該調(diào)用Object的toString()方法。而不要用this,應(yīng)該寫super.toString()。

    ??????

    ?????? 13.List的功能

    ?????? ArrayList,一個用數(shù)組實(shí)現(xiàn)的List。能進(jìn)行快速的隨機(jī)訪問,但是往列表中插入和刪除元素比較慢。

    ?????? LinkedList,對順序訪問進(jìn)行了優(yōu)化。在List中插入和刪除元素代價也不高。但是隨機(jī)訪問的速度相對較慢。可以把它當(dāng)成棧(Stack),隊(duì)列(queue)或雙向隊(duì)列(deque)來用。

    ??????

    ?????? 14.Set的功能

    ?????? 加入Set的每個元素必須是唯一的。要想加進(jìn)Set,Object必須定義equals(),才能標(biāo)明對象的唯一性。

    ?????? HashSet,為優(yōu)化查詢速度而設(shè)計的Set。要放進(jìn)HashSet的Object還要定義hashCode()。

    ?????? TreeSet,一個有序的Set,能從中提取一個有序序列。用了紅黑樹(red-black tree)數(shù)據(jù)結(jié)構(gòu)。

    ?????? LinkedHashSet,使用鏈表的Set,既有HashSet的查詢速度,又能保存元素的插入順序。用Iterator遍歷Set的時候,它是按插入順序進(jìn)行訪問的。

    ?????? Set要有一個判斷以什么順序來存儲元素的標(biāo)準(zhǔn),也就是說必須實(shí)現(xiàn)Comparable接口,并且定義compareTo()方法。

    ??????

    ?????? 15.SortedSet

    ?????? SortedSet(只有TreeSet這一個實(shí)現(xiàn)可用)中的元素一定是有序的。SortedSet的意思是“根據(jù)對象的比較順序”,而不是“插入順序”進(jìn)行排序。

    ??????

    ?????? 16.Map的功能

    ?????? 如果知道get()是怎么工作的,就會發(fā)覺在ArrayList里面找對象是相當(dāng)慢的。而這正是HashMap的強(qiáng)項(xiàng)。HashMap利用對象的hashCode()來進(jìn)行快速查找。

    ?????? Map的keySet()方法返回一個由Map的鍵組成的Set。values()返回的是由Map的值所組成的Collection。由于這些Collection的后臺都是map,因此對這些Collection的任何修改都會反映到Map上。

    ??????

    ?????? 17.SortedMap

    ?????? SortedMap(只有TreeMap這一個實(shí)現(xiàn))的鍵肯定是有序的。

    ??????

    ?????? 18.LinkedHashMap

    ?????? 為提高速度,LinkedHashMap對所有東西都作了hash,而且遍歷的時候,還會按插入順序返回pair。此外,還可通過構(gòu)造函數(shù)進(jìn)行配置,讓它使用基于訪問的LRU(least-recently-used)算法,這樣沒被訪問過的元素(通常也是要刪除的候選對象)就會出現(xiàn)在隊(duì)列的最前面。

    ??????

    ?????? 19.散列算法與Hash數(shù)

    ?????? 要想用自己的類作HashMap的鍵,必須覆寫equals()和hashCode()。HashMap用equals()來判斷查詢用的鍵是否與表里其它鍵相等。

    ?????? Object的hashCode(),在缺省情況下就是返回對象的內(nèi)存地址。

    ??????

    ?????? 一個合適的equals()必須做到以下五點(diǎn):

    ?????? (1).反身性:對任何x,x.equals(x)必須是true。

    ?????? (2).對稱性:對任何x和y,如果y.equals(x)是true的,那么x.equals(y)也必須是true。

    ?????? (3).傳遞性:對任何x,y和z,如果x.equals(y)是true,且y.equals(z)也是true,那么x.equals(z)也必須是true。

    ?????? (4).一致性:對任何x和y,如果對象里面用來判斷相等性的信息沒有修改過,那么無論調(diào)用多少次x.equals(y),它都必須一致地返回true或false。

    ?????? (5).對于任何非空的x,x.equals(null)必須返回false。

    ??????

    ?????? 默認(rèn)的Object.equals()只是簡單地比較兩個對象的地址,所以一個Dog("A")會不等于另一個Dog("A")。

    ?????? 下面是覆寫equals()和hashCode()的例子。

    ?????? public class Dog{

    ????????????? public int id;

    ????????????? public Dog(int x){ id = x; }

    ????????????? public int hashCode(){ return id; }

    ????????????? public boolean equals(Object o){

    ???????????????????? return (o instanceof Dog) && (id == ((Dog)o).id)

    ????????????? }

    ?????? }

    ?????? equals()在利用instanceof檢查參數(shù)是不是Dog類型的同時,還檢查了對象是不是null,如果是null,instanceof會返回false。

    ??????

    ?????? 20.理解hashCode()

    ?????? 數(shù)組是最快的數(shù)據(jù)結(jié)構(gòu),所以很容易想到用數(shù)組存儲Map的鍵的信息(而不是鍵本身)。Map要能存儲任意數(shù)量的pair,而鍵的數(shù)量又被數(shù)組的固定大小限制了,所以不能用數(shù)組存儲鍵本身。

    ?????? 要解決定長數(shù)組的問題,就得允許多個鍵生成同一個hash數(shù),也就是會有沖突,每個鍵對象都會對應(yīng)數(shù)組的某個位置。

    ?????? 查找過程從計算hash數(shù)開始,算完后用這個數(shù)在數(shù)組里定位。如果散列函數(shù)能確保不產(chǎn)生沖突(如果對象數(shù)量是固定的,這是可能的),那么它就被稱為“完全散列函數(shù)”,這是特例。通常,沖突是由“外部鏈(external chaining)”處理的:數(shù)組并不直接指向?qū)ο螅侵赶蛞粋€對象的列表。然后再用equals()在這個列表中一個個找。如果散列函數(shù)定義得好,每個hash數(shù)只對應(yīng)很少的對象,這樣,與搜索整個序列相比,能很快跳到這個子序列,比較少量對象,會快許多。

    ?????? hash表的“槽位”常被稱為bucket。

    ??????

    ?????? 21.影響HashMap性能的因素

    ?????? Capacity:hash表里bucket的數(shù)量。

    ?????? Initial capacity:創(chuàng)建hash表時,bucket的數(shù)量。

    ?????? Size:當(dāng)前hash表的記錄的數(shù)量。

    ?????? Load factor:size/capacity。一個負(fù)載較輕的表會有較少的沖突,因此插入和查找的速度會比較快,但在用迭代器遍歷的時候會比較慢。

    ?????? HashMap和HashSet都提供了能指定load factor的構(gòu)造函數(shù),當(dāng)load factor達(dá)到這個閥值的時候,容器會自動將capacity(bucket的數(shù)量)增加大約一倍,然后將現(xiàn)有的對象分配到新的bucket里面(這就是所謂的rehash)。缺省情況下HashMap會使用0.75的load factor。

    ??????

    ?????? 22.選擇實(shí)現(xiàn)

    ?????? HashTable,Vector和Stack屬于老版本遺留下來的類,應(yīng)該避免使用。

    ?????? 如何挑選List

    ?????? 數(shù)組的隨機(jī)訪問和順序訪問比任何容器都快。ArrayList的隨機(jī)訪問比LinkedList快,奇怪的時LinkedList的順序訪問居然比ArrayList略快。LinkedList的插入和刪除,特別時刪除,比ArrayList快很多。Vector各方面速度都比ArrayList慢,應(yīng)避免使用。

    ?????? 如何挑選Set

    ?????? HashSet各項(xiàng)性能都比TreeSet好,只有在需要有序的Set時,才應(yīng)該用TreeSet。

    ?????? LinkedHashSet的插入比HashSet稍慢一些,因?yàn)橐袚?dān)維護(hù)鏈表和hash容器的雙重代價,但是它的遍歷速度比較快。

    ?????? 如何挑選Map

    ?????? 首選HashMap,只有在需要有序map時,才選TreeMap。LinkedHashMap比Hashmap稍慢一些。

    ??????

    ?????? 23.把Collection和Map設(shè)成不可修改的

    ?????? Collections.unmodifiableCollection()方法,會把傳給它的容器變成只讀版返回。這個方法有四種變形,unmodifiableCollection(),unmodifiableList(),unmodifiableSet(),unmodifiableMap()。

    ??????

    ?????? 24.Collection和Map的同步

    ?????? Collections里有一個自動對容器做同步的方法,它的語法與“unmodifiable”方法有些相似。synchronizedCollection(),synchronizedList(),synchronizedSet(),synchronizedMap()。

    ??????

    ?????? 25.Fail fast

    ?????? Java容器類庫繼承了fail-fast(及早報告錯誤)機(jī)制,它能防止多個進(jìn)程同時修改容器的內(nèi)容。當(dāng)它發(fā)現(xiàn)有其它進(jìn)程在修改容器,就會立即返回一個ConcurrentModificationException。

    ??????

    ?????? 26.可以不支持的操作

    ?????? 可以用Arrays.asList()把數(shù)組改造成List,但它只是部分的實(shí)現(xiàn)了Collection和List接口。它支持的都是那些不改變數(shù)組容量的操作,不支持add(),addAll(),clear(),retainAll(),remove(),removeAll()等。調(diào)用不支持的方法會引發(fā)一個UnsupportedOperationException異常。

    ?????? 要想創(chuàng)建普通容器,可以把Arrays.asList()的結(jié)果做為構(gòu)造函數(shù)參數(shù)傳給List或Set,這樣就能使用它的完整接口了。

    ??????

    ??????

    ??????

    ??????

    =============

    Chap12?? Java I/O系統(tǒng)

    ?

    ?????? 1.File類

    ?????? File類有一個極具欺騙性的名字,可以用來表示某個文件的名字,也可以用來表示目錄里一組文件的名字。

    ?????? File類的功能不僅限于顯示文件或目錄。它能創(chuàng)建新的目錄,甚至是目錄路徑。此外還能檢查文件的屬性,判斷File對象表示的是文件還是目錄,以及刪除文件等。

    ??????

    ?????? 2.輸入與輸入

    ?????? 流(Stream)是一種能生成或接受數(shù)據(jù)的,代表數(shù)據(jù)的源和目標(biāo)的對象。流把I/O設(shè)備內(nèi)部的具體操作給隱藏起來了。

    ?????? Java的I/O類庫分成輸入和輸出兩大部分。

    ??????

    ?????? 3.添加屬性與適用的接口

    ?????? 使用“分層對象(layered objects)”,為單個對象動態(tài)地,透明地添加功能的做法,被稱為Decorator Pattern。Decorator模式要求所有包覆在原始對象之外的對象,都必須具有與之完全相同的接口。無論對象是否被decorate過,傳給它的消息總是相同的。

    ?????? 為InputStream和OutputStream定義decorator類接口的類,分別是FilterInputStream和FilterOutputStream,它們都繼承自I/O類庫的基類InputStream和OutputStream,這是decorator模式的關(guān)鍵(惟有這樣,decorator類的接口才能與它要服務(wù)的對象的完全相同)。

    ?????? 對于I/O類庫來說,比較明智的做法是,普遍都做緩沖,把不緩沖當(dāng)特例。

    ??????

    ?????? Reader和Writer類系

    ?????? InputStream和OutputStream的某些功能已經(jīng)淘汰,但仍然提供了很多有價值的,面向byte的I/O功能。而Java 1.1引進(jìn)的Reader和Writer則提供了Unicode兼容的,面向字符的I/O功能。Java 1.1還提供了兩個適配器(adapter)類,InputStreamReader和OutputStreamWriter負(fù)載將InputStream和OutputStream轉(zhuǎn)化成Reader和Writer。

    ?????? Reader和Writer要解決的,最主要是國際化。原先的I/O類庫只支持8位的字節(jié)流,因此不可能很好地處理16位的Unicode字符流。此外新類庫的性能也比舊的好。

    ??????

    ?????? 4.數(shù)據(jù)源和目的

    ?????? 幾乎所有的Java I/O流都有與之對應(yīng)的,專門用來處理Unicode的Reader和Writer。但有時,面向byte的InputStream和OutputStream才是正確的選擇,特別是java.util.zip,它的類都是面向byte的。

    ?????? 明智的做法是,先用Reader和Writer,等到必須要用面向byte的類庫時,你自然會知道,因?yàn)槌绦蚓幾g不過去了。

    ??????

    ?????? 5.常見的I/O流的使用方法

    ?????? (1).對輸入文件做緩沖

    ?????? BufferedReader in = new BufferedReader( new FileReader("IOStreamDemo.java"));

    ?????? String s, s2 = new String();

    ?????? while((s = in.readLine())!= null)

    ????????????? s2 += s + "\n";//readLine()會把換行符剝掉,所以在這里加上。

    ?????? in.close();

    ?????? //讀取標(biāo)準(zhǔn)輸入

    ?????? BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in));

    ?????? System.out.print("Enter a line:");

    ?????? System.out.println(stdin.readLine());

    ??????

    ?????? (2).讀取內(nèi)存

    ?????? StringReader in2 = new StringReader(s2);

    ?????? int c;

    ?????? while((c = in2.read())!=-1)//read()會把讀出來的byte當(dāng)做int

    ????????????? System.out.print((char)c);

    ??????

    ?????? (3).讀取格式化內(nèi)存

    ?????? try{

    ????????????? DataInputStream in3 = new DataInputStream(new ByteArrayInputStream(s2.getBytes()));

    ????????????? while(true)

    ???????????????????? System.out.print((char)in3.readByte());//無法根據(jù)readByte()返回值判斷是否結(jié)束

    ?????? } catch(EOFException e){

    ????????????? System.err.println("End of stream");

    ?????? }

    ?????? //使用available()來判斷還有多少字符

    ?????? DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("TestEOF.java")));

    ?????? while(in.available() != 0)

    ????????????? System.out.print((char)in.readByte());

    ??????

    ?????? (4).讀取文件

    ?????? try{

    ????????????? BfferedReader in4 = new BufferedReader(new StringReader(s2));

    ????????????? PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter(IODemo.out)));

    ????????????? int lineCount = 1;

    ????????????? while((s = in4.readLine())!= null)

    ???????????????????? out1.println(lineCount++ +": "+ s);

    ????????????? out1.close();

    ?????? } catch(EOFException e){

    ????????????? System.err.println(End of stream);

    ?????? }

    ?????? 使用PrintWriter去排版,就能得出能夠讀得懂的,普通的文本文件。

    ??????

    ?????? 6.標(biāo)準(zhǔn)I/O

    ?????? 標(biāo)準(zhǔn)I/O是Unix的概念,意思是,一個程序只使用一個信息流。所有輸入都是從“標(biāo)準(zhǔn)輸入”進(jìn)來的,輸出都從“標(biāo)準(zhǔn)輸出”出去,錯誤消息都送到“標(biāo)準(zhǔn)錯誤”里。

    ?????? Java遵循標(biāo)準(zhǔn)I/O的模型,提供了Syetem.in,System.out,以及System.err。

    ??????

    ?????? 將System.out轉(zhuǎn)換成PrintWriter

    ?????? System.out是PrintStream,也就是說它是OutputStream。不過可通過PrintWriter的構(gòu)造函數(shù)把它改造成PrintWriter。

    ?????? PrintWriter out = new PrintWriter(System.out, true);

    ?????? out.println("Hello, world");

    ?????? 為了啟動自動清空緩沖區(qū)的功能,一定要使用雙參數(shù)版的構(gòu)造函數(shù),并把第二個參數(shù)設(shè)成true。這點(diǎn)非常重要,否則就有可能會看不到輸出。

    ??????

    ?????? 標(biāo)準(zhǔn)I/O的重定向

    ?????? Java的System類提供了幾個能重定向標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤的靜態(tài)方法:

    ?????? setIn(InputStream),setOut(PrintStream),setErr(PrintStream)。

    ?????? I/O重定向處理的不是character流,而是byte流,因此不能用Reader和Writer,要用InputStream和OutputStream。

    ??????

    ?????? 7.New I/O

    ?????? Java 1.4的java.nio.*引入了一個新的I/O類庫,其目的就是提高速度。實(shí)際上,舊的I/O類庫已經(jīng)用nio重寫。

    ?????? 性能的提高源于它用了更貼近操作系統(tǒng)的結(jié)構(gòu):channel和buffer。

    ?????? java.nio.ByteBuffer是唯一一個能直接同channel打交道的buffer。它是一個相當(dāng)?shù)讓拥念悾鎯吞崛?shù)據(jù)的時候,可以選擇是以byte形式還是以primitive形式,但它不能存儲對象。這是為了有效地映射到絕大多數(shù)操作系統(tǒng)上。

    ?????? 新I/O修改了舊I/O的三個類,即FileInputStream,F(xiàn)ileOutputStream,以及RandomAccessFile,以獲取FileChannel。

    ?????? // Write a file:

    ??? FileChannel fc = new FileOutputStream("data.txt").getChannel();

    ??? fc.write(ByteBuffer.wrap("Some text ".getBytes()));

    ??? fc.close();

    ??? // Add to the end of the file:

    ??? fc = new RandomAccessFile("data.txt", "rw").getChannel();

    ??? fc.position(fc.size()); // Move to the end

    ??? fc.write(ByteBuffer.wrap("Some more".getBytes()));

    ??? fc.close();

    ??? // Read the file:

    ??? fc = new FileInputStream("data.txt").getChannel();

    ??? ByteBuffer buff = ByteBuffer.allocate(4096);

    ??? fc.read(buff);

    ??? buff.flip();

    ??? while(buff.hasRemaining())

    ????? System.out.print((char)buff.get());?

    ?????? 用wrap( )方法把一個已經(jīng)拿到手的byte數(shù)組"包"到ByteBuffer。如果是用這種方法,新創(chuàng)建的ByteBuffer是不會去拷貝底層的(byte)數(shù)組的,相反它直接用那個byte數(shù)組來當(dāng)自己的存儲空間。所以我們說ByteBuffer的"后臺"是數(shù)組。

    ?????? 從buffer中取數(shù)據(jù)前,要調(diào)用buffer的flip()。往buffer中裝數(shù)據(jù)前,要調(diào)用buffer的clear()。

    ?????? FileChannel

    ????? in = new FileInputStream(args[0]).getChannel(),

    ????? out = new FileOutputStream(args[1]).getChannel();

    ??? ByteBuffer buffer = ByteBuffer.allocate(BSIZE);

    ??? while(in.read(buffer) != -1) {

    ????? buffer.flip(); // Prepare for writing

    ????? out.write(buffer);

    ????? buffer.clear();? // Prepare for reading

    ??? }

    ?

    ?????? View Buffers

    ??????

    ?????? View Buffer能讓你從特殊的視角,來觀察其底層的ByteBuffer。對view的任何操作都會作用到ByteBuffer上。同一個ByteBuffer,能讀出不同的數(shù)據(jù)。ByteBuffer以1字節(jié)區(qū)分?jǐn)?shù)據(jù),CharBuffer是2字節(jié),IntBuffer,F(xiàn)loatBuffer是4字節(jié),LongBuffer和DoubleBuffer是8字節(jié)。

    ?????? ByteBuffer bb = ByteBuffer.wrap(new byte[]{ 0, 0, 0, 0, 0, 0, 0, 'a' });

    ??? bb.rewind();

    ??? System.out.println("Byte Buffer");

    ??? while(bb.hasRemaining())

    ????? System.out.println(bb.position()+ " -> " + bb.get());

    ??? CharBuffer cb = ((ByteBuffer)bb.rewind()).asCharBuffer();

    ??? System.out.println("Char Buffer");

    ??? while(cb.hasRemaining())

    ????? System.out.println(cb.position()+ " -> " + cb.get());

    ??? FloatBuffer fb = ((ByteBuffer)bb.rewind()).asFloatBuffer();

    ??? System.out.println("Float Buffer");

    ??? while(fb.hasRemaining())

    ????? System.out.println(fb.position()+ " -> " + fb.get());

    ??? IntBuffer ib = ((ByteBuffer)bb.rewind()).asIntBuffer();

    ??? System.out.println("Int Buffer");

    ??? while(ib.hasRemaining())

    ????? System.out.println(ib.position()+ " -> " + ib.get());

    ?????

    ??? Buffer的細(xì)節(jié)

    ??? 如果使用相對定位的get()和put()方法,buffer的position會跟著變化。也可以用下標(biāo)參數(shù)調(diào)用絕對定位的get()和put()方法,這時它不會改動buffer的position。

    ??? mark()方法會記錄當(dāng)前position,reset()會把position設(shè)置到mark的位置。rewind()把position設(shè)置到buffer的開頭,mark被擦掉了。flip()把limit設(shè)為position,把position設(shè)為零。當(dāng)你將數(shù)據(jù)寫入buffer,準(zhǔn)備讀取的時候,必須先調(diào)用這個方法。

    ???

    ?????? 內(nèi)存映射文件

    ?????? memory-mapped file能讓你創(chuàng)建和修改那些大到無法讀入內(nèi)存的文件(最大2GB)。

    ?????? int length = 0x8FFFFFF; // 128 Mb

    ?????? MappedByteBuffer out = new RandomAccessFile("test.dat","rw").getChannel().map(FileChannel.MapMode.READ_WRITE,0,length);

    ?????? for(int i = 0; i < length; i++)

    ????????????? out.put((byte)'x');

    ?????? for(int i = length/2;i<length/2+6;i++)

    ????????????? System.out.print((char)out.get(i));

    ?????? MappedByteBuffer是ByteBuffer的派生類。例程創(chuàng)建了一個128MB的文件,文件的訪問好像只是一瞬間的事,這是因?yàn)椋嬲{(diào)入內(nèi)存的只是其中的一小部分,其余部分則被放在交換文件上。Java是調(diào)用操作系統(tǒng)的"文件映射機(jī)制(file-mapping facility)"來提升性能的。只有RandomAccessFile才能寫映射文件。

    ??????

    ?????? 文件鎖

    ?????? Java的文件鎖是直接映射操作系統(tǒng)的鎖機(jī)制的,因此其它進(jìn)程也能看到文件鎖。

    ?????? FileOutputStream fos= new FileOutputStream("file.txt");

    ??? FileLock fl = fos.getChannel().tryLock();

    ??? if(fl != null) {

    ????? System.out.println("Locked File");

    ????? Thread.sleep(100);

    ????? fl.release();

    ????? System.out.println("Released Lock");

    ??? }

    ??? fos.close();

    ??? tryLock( ) 是非阻塞的。它會試著去獲取這個鎖,但是如果得不到(其它進(jìn)程已經(jīng)以獨(dú)占方式得到這個鎖了),那它就直接返回。而lock( )是阻塞的。如果得不到鎖,它會在一直處于阻塞狀態(tài),除非它得到了鎖,或者你打斷了調(diào)用它(即lock( )方法)的線程,或者關(guān)閉了它要lock( )的channel,否則它是不會返回的。最后用FileLock.release( )釋放鎖。

    ??? 還可以像這樣鎖住文件的某一部分,

    tryLock(long position, long size, boolean shared)

    ?????? 或者

    lock(long position, long size, boolean shared)

    這個方法能鎖住文件的某個區(qū)域(size - position)。其中第三個參數(shù)表示鎖能不能共享。

    ?????? 對于帶參數(shù)的lock( )和tryLock( )方法,如果你鎖住了position到position+size這段范圍,而文件的長度又增加了,那么position+size后面是不加鎖的。而無參數(shù)的lock方法則會鎖定整個文件,不管它變不變長。

    ?

    ?????? 8.壓縮

    ?????? Java I/O類庫還收錄了一些能讀寫壓縮格式流的類,它們是InputStream和OutputStream的派生類。這是因?yàn)閴嚎s算法是針對byte而不是字符的。

    ?????? GZIP的接口比較簡單,因此如果你只有一個流要壓縮的話,用它會比較合適。

    ?????? BufferedReader in = new BufferedReader(new FileReader(args[0]));

    ??? BufferedOutputStream out = new BufferedOutputStream(

    ????? new GZIPOutputStream(new FileOutputStream("test.gz")));

    ??? System.out.println("Writing file");

    ??? int c;

    ??? while((c = in.read()) != -1)

    ????? out.write(c);

    ??? in.close();

    ??? out.close();

    ??? System.out.println("Reading file");

    ??? BufferedReader in2 = new BufferedReader(

    ????? new InputStreamReader(new GZIPInputStream(new FileInputStream("test.gz"))));

    ??? String s;

    ??? while((s = in2.readLine()) != null)

    ????? System.out.println(s);

    ?????? 只要用GZIPOutputStream 或ZipOutputStream把輸出流包起來,再用GZIPInputStream 或ZipInputStream把輸入流包起來就行了。

    ??????

    ?????? 用Zip存儲多個文件

    ?????? FileOutputStream f = new FileOutputStream("test.zip");

    ??? CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());

    ??? ZipOutputStream zos = new ZipOutputStream(csum);

    ??? BufferedOutputStream out = new BufferedOutputStream(zos);

    ??? zos.setComment("A test of Java Zipping");

    ??? // No corresponding getComment(), though.

    ??? for(int i = 0; i < args.length; i++) {

    ????? System.out.println("Writing file " + args[i]);

    ????? BufferedReader in = new BufferedReader(new FileReader(args[i]));

    ????? zos.putNextEntry(new ZipEntry(args[i]));

    ????? int c;

    ????? while((c = in.read()) != -1)

    ??????? out.write(c);

    ????? in.close();

    ??? }

    ??? out.close();

    ??? // Checksum valid only after the file has been closed!

    ??? System.out.println("Checksum: " + csum.getChecksum().getValue());

    ??? // Now extract the files:

    ??? System.out.println("Reading file");

    ??? FileInputStream fi = new FileInputStream("test.zip");

    ??? CheckedInputStream csumi = new CheckedInputStream(fi, new Adler32());

    ??? ZipInputStream in2 = new ZipInputStream(csumi);

    ??? BufferedInputStream bis = new BufferedInputStream(in2);

    ??? ZipEntry ze;

    ??? while((ze = in2.getNextEntry()) != null) {

    ????? System.out.println("Reading file " + ze);

    ????? int x;

    ????? while((x = bis.read()) != -1)

    ??????? System.out.write(x);

    ??? }

    ??? System.out.println("Checksum: " + csumi.getChecksum().getValue());

    ??? bis.close();

    ??? // Alternative way to open and read zip files:

    ??? ZipFile zf = new ZipFile("test.zip");

    ??? Enumeration e = zf.entries();

    ??? while(e.hasMoreElements()) {

    ????? ZipEntry ze2 = (ZipEntry)e.nextElement();

    ????? System.out.println("File: " + ze2);

    ????? // ... and extract the data as before

    ??? }

    ?????? 雖然標(biāo)準(zhǔn)的Zip格式是支持口令的,但是Java的Zip類庫卻不支持。

    ??????

    ?????? Java ARchives (JARs)

    ?????? 一個JAR只有一個文件,包含兩個文件,一個是Zip文件,另一個是描述Zip文件所包含的文件的"manifest(清單)"。

    ?????? 如果JAR是用0(零)選項(xiàng)創(chuàng)建的,不會進(jìn)行壓縮,那么它就能被列入CLASSPATH了。

    ?????? 不能往已經(jīng)做好的JAR里添加新文件或修改文件。不能在往JAR里移文件的同時把原來的文件給刪了。不過JAR格式是跨平臺的,無論JAR是在哪個平臺上創(chuàng)建的,jar程序都能將它讀出來(zip格式有時就會有問題了)。

    ?

    ?????? 9.對象的序列化

    ?????? Java的"對象序列化"能讓你將一個實(shí)現(xiàn)了Serializable接口的對象轉(zhuǎn)換成一組byte,需要的時候,根據(jù)byte數(shù)據(jù)重新構(gòu)建那個對象。這一點(diǎn)甚至在跨網(wǎng)絡(luò)的環(huán)境下也是如此,序列化機(jī)制能自動補(bǔ)償操作系統(tǒng)方面的差異。

    ?????? 對象序列化不僅能保存對象的副本,而且還會跟著對象里面的reference,把它所引用的對象也保存起來,然后再繼續(xù)跟蹤那些對象的reference,以此類推。這種情形常被稱為"單個對象所聯(lián)結(jié)的'對象網(wǎng)'"。這個機(jī)制所涵蓋的范圍不僅包括對象的成員數(shù)據(jù),而且還包含數(shù)組里面的reference。

    ?????? Worm w = new Worm(6, 'a');

    ??? ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("worm.out"));

    ??? out.writeObject("Worm storage\n");

    ??? out.writeObject(w);

    ??? out.close(); // Also flushes output

    ??? ObjectInputStream in = new ObjectInputStream(new FileInputStream("worm.out"));

    ??? String s = (String)in.readObject();

    ??? Worm w2 = (Worm)in.readObject();

    ?

    ?????? 把對象從序列化狀態(tài)中恢復(fù)出來的必要條件是,一定要讓JVM找到.class文件。

    ??????

    ?????? 控制序列化

    ?????? 可以讓對象去實(shí)現(xiàn)Externalizable而不是Serializable接口,并以此來控制序列化的過程。

    ?????? 對于Externalizable對象,readExternal( )要在默認(rèn)的構(gòu)造行為會發(fā)生之后(包括在定義數(shù)據(jù)成員時進(jìn)行的初始化)才啟動。

    ?????? 不但要在writeExternal( )的時候把重要的數(shù)據(jù)保存起來(默認(rèn)情況下,Externalizable對象不會保存任何成員對象),還得在readExternal( )的時候把它們恢復(fù)出來。為了能正確地存取其父類的組件,你還得調(diào)用其父類的writeExternal( )和readExternal( )。

    ??????

    ?????? transient關(guān)鍵詞

    ?????? 要想禁止敏感信息的序列化,除了可以實(shí)現(xiàn)Externalizable外。還可以使用transient關(guān)鍵詞修飾Serializable對象中不想序列化的成員。

    ?????? 默認(rèn)情況下,Externalizable對象不保存任何字段,因此transient只能用于Serializable對象。

    ??????

    ?????? Externalizable的替代方案

    ?????? 如果你不喜歡Externalizable,還可以選擇Serializable接口,然后再加入(注意,我沒說"覆寫"或"實(shí)現(xiàn)")序列化和恢復(fù)的時候會自動調(diào)用的writeObject( )和readObject( )方法。也就是說,如果你寫了這兩個方法,Java就會避開默認(rèn)的序列化機(jī)制而去調(diào)用這兩個方法了。

    ?????? 兩個方法的特征簽名如下,(它們都是private的,怪異):

    private void writeObject(ObjectOutputStream stream) throws IOException;

    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException

    ?????? 如果你決定用默認(rèn)的序列化機(jī)制來存儲非transient的數(shù)據(jù),你就得在writeObject( )里面調(diào)用defaultWriteObject( ),不帶參數(shù),而且得第一個做。恢復(fù)的時候,也要在readObject( )的開頭部分調(diào)用defaultReadObject( )。

    ?????? 如果你要序列化static數(shù)據(jù),就必須親自動手。

    ??????

    ?????? Preferences

    ?????? JDK 1.4所引入的Preferences API能自動存儲和恢復(fù)信息。但是,它只能存取很少幾種數(shù)據(jù)——primitive和String,而且每個String的長度都不能超過8K。

    ?????? Preferences是一組存儲在"由節(jié)點(diǎn)所組成的層次體系(a hierarchy of nodes)"里的鍵值集(很像Map)。Preferences API是借用操作系統(tǒng)的資源來實(shí)現(xiàn)功能的。對于Windows,它就放在注冊表里。

    ?????? //也可以用systemNodeForPackage( )

    ?????? //"user"指的是單個用戶的preference,而"system"指整個系統(tǒng)的共用配置

    ?????? //一般用XXX.class做節(jié)點(diǎn)的標(biāo)識符

    ?????? Preferences prefs = Preferences.userNodeForPackage(PreferencesDemo.class);

    ??? prefs.put("Location", "Oz");

    ??? prefs.putInt("Companions", 4);

    ??? prefs.putBoolean("Are there witches?", true);

    ???

    ??? 10.正則表達(dá)式

    ??? 正則表達(dá)式是JDK 1.4的新功能。由java.util.regex的Pattern和Matcher類實(shí)現(xiàn)的。

    ??? Pattern p = Pattern.compile(("\\w+");

    ?????? Matcher m = p.matcher(args[0]);

    ?????? while(m.find()) {

    ???????? System.out.println("Match \"" + m.group() +

    ?????????? "\" at positions " +

    ?????????? m.start() + "-" + (m.end() - 1));

    ?????? }

    ??? 只要字符串里有這個模式,find( )就能把它給找出來,但是matches( )成功的前提是正則表達(dá)式與字符串完全匹配,而lookingAt( )成功的前提是,字符串的開始部分與正則表達(dá)式相匹配。

    ??????

    ?????? split()

    ?????? 所謂分割是指將以正則表達(dá)式為界,將字符串分割成String數(shù)組。

    ?????? String[] split(CharSequence charseq)

    ?????? String[] split(CharSequence charseq, int limit)//限定分割的次數(shù)

    ?????? String input = "This!!unusual use!!of exclamation!!points";

    ??? System.out.println(Arrays.asList(Pattern.compile("!!").split(input)));

    ?

    ?

    ===========

    Chap13?? 并發(fā)編程

    ?

    ?????? 1.基本線程

    ?????? 要想創(chuàng)建線程,最簡單的辦法就是繼承java.lang.Thread。run( )是Thread最重要的方法,什么時候run( )返回了,線程也就中止了。

    ?????? Thread的start( )方法會先對線程做一些初始化,再調(diào)用run( )。

    ?????? 整個步驟應(yīng)該是:調(diào)用構(gòu)造函數(shù)創(chuàng)建一個Thread對象,并且在構(gòu)造函數(shù)里面調(diào)用start( )來配置這個線程,然后讓線程的執(zhí)行機(jī)制去調(diào)用run( )。如果你不調(diào)用start( ),那么線程永遠(yuǎn)也不會啟動。

    ?????? 有時我們創(chuàng)建了Thread,但是卻沒去拿它的reference。如果是普通對象,這一點(diǎn)就足以讓它成為垃圾,但Thread不會。Thread都會為它自己"注冊",所以實(shí)際上reference還保留在某個地方。除非run( )退出,線程中止,否則垃圾回收器不能動它。

    ?????? 線程的調(diào)度機(jī)制是非決定性,即多個線程的執(zhí)行順序是不確定的。

    ??????

    ?????? yielding

    ?????? 如果知道run()已經(jīng)告一段落了,你就可以用yield( )形式給線程調(diào)度機(jī)制作一個暗示。Java的線程調(diào)度機(jī)制是搶占式的(preemptive),只要它認(rèn)為有必要,它會隨時中斷當(dāng)前線程(運(yùn)行到y(tǒng)ield之前),并且切換到其它線程。總之,yield( )只會在很少的情況下起作用。

    ??????

    ?????? Sleeping

    ?????? sleep( )一定要放在try域里,這是因?yàn)橛锌赡軙霈F(xiàn)時間沒到sleep( )就被中斷的情況。如果有人拿到了線程的reference,并且調(diào)用了它的interrupt( ),這種事就發(fā)生了。(interrupt( )也會影響處于wait( )或join( )狀態(tài)的線程,所以這兩個方法也要放在try域里。)如果你準(zhǔn)備用interrupt( )喚醒線程,那最好是用wait( )而不是sleep( ),因?yàn)檫@兩者的catch語句是不一樣的。

    ??????

    ?????? 優(yōu)先級

    ?????? 線程往控制臺打印的時候是不會被中斷的,否則控制臺的顯示就亂了。

    ??????

    ?????? 守護(hù)線程

    ?????? 所謂"守護(hù)線程(daemon thread)"是指,只要程序還在運(yùn)行,它就應(yīng)該在后臺提供某種公共服務(wù)的線程,但是守護(hù)線程不屬于程序的核心部分。因此,當(dāng)所有非守護(hù)線程都運(yùn)行結(jié)束的時候,程序也結(jié)束了。

    ?????? 要想創(chuàng)建守護(hù)線程,必須在它啟動之前就setDaemon(true)。守護(hù)線程所創(chuàng)建的線程也自動是守護(hù)線程。

    ??????

    ?????? 連接線程

    ?????? 線程還能調(diào)用另一個線程的join( ),等那個線程結(jié)束之后再繼續(xù)運(yùn)行。如果線程調(diào)用了另一個線程t的t.join( ),那么在線程t結(jié)束之前(判斷標(biāo)準(zhǔn)是,t.isAlive( )等于false),主叫線程會被掛起。

    ??????

    ?????? 另一種方式:Runable

    ?????? 類可能已經(jīng)繼承了別的類,這時就需要實(shí)現(xiàn)Runable接口了。

    ?????? 如果要在這個實(shí)現(xiàn)了Runable的類里做Thread對象才有的操作,必須用Thread.currentThread()獲取其reference。

    ?????? 除非迫不得已只能用Runnable,否則選Thread。

    ??????

    ?????? 2.共享有限的資源

    ?????? 多線程環(huán)境的最本質(zhì)的問題:永遠(yuǎn)也不會知道線程會在什么時候啟動。

    ?????? 我們不能從線程內(nèi)部往外面拋異常,因?yàn)檫@只會中止線程而不是程序。

    ??????

    ?????? 資源訪問的沖突

    ?????? Semaphore是一種用于線程間通信的標(biāo)志對象。如果semaphore的值是零,則線程可以獲得它所監(jiān)視的資源,如果不是零,那么線程就必須等待。如果申請到了資源,線程會先對semaphore作遞增,再使用這個資源。遞增和遞減是原子操作(atomic operation,也就是說不會被打斷的操作),由此semaphore就防止兩個線程同時使用同一項(xiàng)資源。

    ??????

    ?????? 解決共享資源的沖突

    ?????? 一個特定的對象中的所有的synchronized方法都會共享一個鎖,而這個鎖能防止兩個或兩個以上線程同時讀寫一塊共用內(nèi)存。當(dāng)你調(diào)用synchronized方法時,這個對象就被鎖住了。在方法返回并且解鎖之前,誰也不能調(diào)用同一個對象的其它synchronized方法。

    ?????? 一定要記住:所有訪問共享資源的方法都必須是synchronized的,否則程序肯定會出錯。

    ?????? 一個線程能多次獲得對象的鎖。比如,一個synchronized方法調(diào)用了另一個synchronized方法,而后者又調(diào)用了另一synchronized方法。線程每獲一次對象的鎖,計數(shù)器就加一。當(dāng)然,只有第一次獲得對象鎖的線程才能多次獲得鎖。線程每退出一個synchronized方法,計數(shù)器就減一。等減到零了,對象也就解鎖了。

    ?????? 此外每個類還有一個鎖(它屬于類的Class對象),這樣當(dāng)類的synchronized static方法讀取static數(shù)據(jù)的時候,就不會相互干擾了。

    ??????

    ?????? 原子操作

    ?????? 通常所說的原子操作包括對非long和double型的primitive進(jìn)行賦值,以及返回這兩者之外的primitive。不過如果你在long或double前面加了volatile,那么它就肯定是原子操作了。最安全的原子操作只有讀取和對primitive賦值這兩種。

    ?????? 如果你要用synchronized修飾類的一個方法,索性把所有的方法全都synchronize了。要判斷,哪個方法該不該synchronize,通常是很難的,而且也沒什么把握。

    ?????? 并發(fā)編程的最高法則:絕對不能想當(dāng)然。

    ??????

    ?????? 關(guān)鍵段

    ?????? 有時你只需要防止多個線程同時訪問方法中的某一部分,而不是整個方法。這種需要隔離的代碼就被稱為關(guān)鍵段(critical section)。創(chuàng)建關(guān)鍵段需要用到synchronized關(guān)鍵詞,指明執(zhí)行下列代碼需獲得哪個對象的鎖。

    synchronized(syncObject) {

    ? // This code can be accessed by only one thread at a time

    }

    ?????? 關(guān)鍵段又被稱為"同步塊(synchronized block)"。相比同步整個方法,同步一段代碼能顯著增加其它線程獲得這個對象的機(jī)會。

    ??????

    ?????? 3.線程的狀態(tài)

    ?????? 線程的狀態(tài)可歸納為以下四種:

    ?????? (1).new: 線程對象已經(jīng)創(chuàng)建完畢,但尚未啟動(start),因此還不能運(yùn)行。

    ?????? (2).Runnable: 處在這種狀態(tài)下的線程,只要分時機(jī)制分配給它CPU周期,它就能運(yùn)行。

    ?????? (3).Dead: 要想中止線程,正常的做法是退出run( )。

    ?????? (4).Blocked: 就線程本身而言,它是可以運(yùn)行的,但是有什么別的原因在阻止它運(yùn)行。線程調(diào)度機(jī)制會直接跳過blocked的線程,根本不給它分配CPU的時間。除非它重新進(jìn)入runnable狀態(tài),否則什么都干不了。

    ?????? 如果線程被阻塞了,那肯定是出了什么問題。問題可能有以下幾種:

    ?????? (1).你用sleep(milliseconds)方法叫線程休眠。在此期間,線程是不能運(yùn)行的。

    ?????? (2).你用wait( )方法把線程掛了起來。除非收到notify( )或notifyAll( )消息,否則線程無法重新進(jìn)入runnable狀態(tài)。

    ?????? (3).線程在等I/O結(jié)束。

    ?????? (4).線程要調(diào)用另一個對象的synchronized方法,但是還沒有得到對象的鎖。

    ??????

    ?????? 4.線程間的協(xié)作

    ?????? wait與notify

    ?????? 線程sleep( )的時候并不釋放對象的鎖,但是wait( )的時候卻會釋放對象的鎖。也就是說在線程wait( )期間,別的線程可以調(diào)用它的synchronized方法。??? 此外,sleep( )屬于Thread。wait( ), notify( ), 和notifyAll( )是根Object的方法。

    ?????? 只能在synchronized方法里或synchronized段里調(diào)用wait( ),notify( )或notifyAll( )。

    ?????? wait( )能讓你在等待條件改變的同時讓線程休眠,當(dāng)其他線程調(diào)用了對象的notify( )或notifyAll( )的時候,線程自會醒來,然后檢查條件是不是改變了。

    ?????? 安全的做法就是套用下面這個wait( )定式:

    ?????? while(conditionIsNotMet)

    ????????????? wait( );

    ?????????????

    ?????? 用管道進(jìn)行線程間的I/O操作

    ?????? 在很多情況下,線程也可以利用I/O來進(jìn)行通信。對Java I/O類庫而言,就是PipedWriter(可以讓線程往管道里寫數(shù)據(jù))和PipedReader(讓另一個線程從這個管道里讀數(shù)據(jù))。

    ??????

    ?????? 5.死鎖

    ?????? Dijkstra發(fā)現(xiàn)的經(jīng)典的死鎖場景:哲學(xué)家吃飯問題。

    ?????? 只有在下述四個條件同時滿足的情況下,死鎖才會發(fā)生:

    ?????? (1).互斥:也許線程會用到很多資源,但其中至少要有一項(xiàng)是不能共享的(同一時刻只能被一個線程訪問)。

    ?????? (2).至少要有一個進(jìn)程會在占用一項(xiàng)資源的同時還在等另一項(xiàng)正被其它進(jìn)程所占用的資源。也就是說,要想讓死鎖發(fā)生,哲學(xué)家必須攥著一根筷子等另一根。

    ?????? (3).(調(diào)度系統(tǒng)或其他進(jìn)程)不能從進(jìn)程里搶資源。所有進(jìn)程都必須正常的釋放資源。我們的哲學(xué)家都彬彬有禮,不會從他的鄰座手里搶筷子。

    ?????? (4).需要有等待的環(huán)。一個進(jìn)程在等一個已經(jīng)被另一進(jìn)程搶占了的資源,而那個進(jìn)程又在等另一個被第三個進(jìn)程搶占了的資源,以此類推,直到有個進(jìn)程正在等被第一個進(jìn)程搶占了的資源,這樣就形成了癱瘓性的阻塞了。這里,由于每個哲學(xué)家都是先左后右的拿筷子,所以有可能會造成等待的環(huán)。在例程中,我們修改了最后一位哲學(xué)家的構(gòu)造函數(shù),讓他先右后左地拿筷子,從而破解了死鎖。

    ?????? Java語言沒有提供任何能預(yù)防死鎖的機(jī)制。

    ??????

    ?????? 6.停止線程的正確的方法

    ?????? 為了降低死鎖的發(fā)生幾率,Java 2放棄了Thread類stop( ),suspend( )和resume( )方法。

    ?????? 應(yīng)該設(shè)置一個旗標(biāo)(flag)來告訴線程什么時候該停止。

    ?

    ?????? 7.打斷受阻的線程

    ?????? 有時線程受阻之后就不能再做輪詢了,比如在等輸入,這時你就不能像前面那樣去查詢旗標(biāo)了。碰到這種情況,你可以用Thread.interrupt( )方法打斷受阻的線程。最后要把受阻線程的 reference設(shè)成null。

    ??????

    ?????? 8.總結(jié)

    ?????? 諾貝爾經(jīng)濟(jì)學(xué)獎得主Joseph Stiglitz有一條人生哲學(xué),就是所謂的承諾升級理論:

    "延續(xù)錯誤的代價是別人付的,但是承認(rèn)錯誤的代價是由你付的。"

    ?????? 多線程的主要缺點(diǎn)包括:

    ?????? (1).等待共享資源的時候,運(yùn)行速度會慢下來。

    ?????? (2).線程管理需要額外的CPU開銷。

    ?????? (3).如果設(shè)計得不不合理,程序會變得異常復(fù)雜。

    ?????? (4).會引發(fā)一些不正常的狀態(tài),像饑餓(starving),競爭(racing),死鎖(deadlock),活鎖(livelock)。

    ?????? (5).不同平臺上會有一些不一致。

    ?????? 通常你可以在run( )的主循環(huán)里插上yield( ),然后讓線程調(diào)度機(jī)制幫你加快程序的運(yùn)行。

    ?

    ?

    ==============

    Chap14 創(chuàng)建Windows與Applet程序

    ??????

    ?????? 設(shè)計中一條基本原則:讓簡單的事情變得容易,讓困難的事情變得可行。

    ?????? 軟件工業(yè)界的“三次修訂”規(guī)則:產(chǎn)品在修訂三次后才會成熟。

    ??????

    ?????? 1.控制布局

    ?????? 在Java中,組件放置在窗體上的方式可能與其他GUI系統(tǒng)都不相同。首先,它完全基于代碼,沒有用來控制組件布局的“資源”。第二,組件的位置不是通過絕對坐標(biāo)控制,二十由“布局管理器”(layout manager)根據(jù)組件加入的順序決定其位置。使用不同的布局管理器,組件的大小、形狀和位置將大不相同。此外,布局管理器還可以適應(yīng)applet或視窗的大小,調(diào)整組件的布局。

    ?????? JApplet,JFrame,JWindow和JDialog都可以通過getContentPane()得到一個容器(Container),用來包含和顯示組件。容器有setLayout()方法,用來設(shè)置布局管理器。

    ??????

    ?????? 2.Swing事件模型

    ?????? 在Swing的事件模型中,組件可以觸發(fā)一個事件。每種事件的類型由單獨(dú)的類表示。當(dāng)事件被觸發(fā)時,它將被一個或多個監(jiān)聽器接收,監(jiān)聽器負(fù)責(zé)處理事件。

    ?????? 所謂事件監(jiān)聽器,就是一個“實(shí)現(xiàn)了某種類型的監(jiān)聽器接口的”類的對象。程序員要做的就是,先創(chuàng)建一個監(jiān)聽器對象,然后把它注冊給觸發(fā)事件的組件。注冊動作是通過該組件的addXXXListener()方法完成的。

    ?????? 所有Swing組件都具有addXXXListener()和removeXXXListener()方法。

    ?

    ?????? 3.Swing組件一覽

    ??????

    ?????? 工具提示ToolTip

    ?????? 任何JComponent子類對象都可以調(diào)用setToolTipText(String)。

    ??????

    ?????? Swing組件上的HTML

    ?????? 任何能接受文本的組件都可以接受HTML文本,且能根據(jù)HTML格式化文本。例如,

    ?????? JButton b = new JButton("<html><b><font size=+2>Hello<br>Press me");

    ?????? 必須以"<html>"標(biāo)記開始,但不會強(qiáng)制添加結(jié)束標(biāo)記。

    ?????? 對于JApplet,在除init()之外的地方添加新組件后,必須調(diào)用容器的validate()來強(qiáng)制對組件進(jìn)行重新布局,才能顯示新添加的組件。

    ??????

    ?????? 4.選擇外觀(Look & Feel)

    ?????? “可插拔外觀”(Pluggable Look & Feel)使你的程序能夠模仿不同操作系統(tǒng)的外觀。

    ?????? 設(shè)置外觀的代碼要在創(chuàng)建任何可視組件之前調(diào)用。Swing的跨平臺的金屬外觀是默認(rèn)外觀。

    ?????? try{

    ????????????? UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

    ?????? } catch(Exception e){

    ?????? }

    ?????? catch子句中什么也不用做,因?yàn)槿笔∏闆r下,如果設(shè)置外觀失敗,UIManager將設(shè)置成跨平臺的外觀。

    ??????

    ?????? 動態(tài)綁定事件

    ?????? 不能保證事件監(jiān)聽器被調(diào)用的順序與它們被添加的順序相同。

    ??????

    ?????? 5.Swing與并發(fā)

    ?????? 始終存在著一個Swing事件調(diào)度線程,它用來依次對Swing的所有事件進(jìn)行調(diào)度。

    ??????

    ?????? 管理并發(fā)

    ?????? 當(dāng)你在類的main()方法中,或在一個獨(dú)立線程中,準(zhǔn)備修改任何Swing組件屬性的時候,要注意,Swing的事件調(diào)度線程可能會與你競爭同一資源。

    ?????? 要解決這個問題,必須確保在任何情況下,只能在事件調(diào)度線程里修改Swing組件的屬性。Swing提供了兩種機(jī)制:SwingUtilities.invokeLater(Runnable)和SwingUtilities.invokeAndWait(Runnable)。它們都接受runnable對象作參數(shù),并且在Swing的事件處理線程中,只有當(dāng)事件隊(duì)列中的任何未處理的事件都被處理完畢之后,它們才會調(diào)用runnable對象的run()方法。

    ?????? SwingUtilities.invokeLater(new Runnable(){

    ????????????? public void run(){

    ???????????????????? txt.setText("ready");

    ????????????? }

    ?????? });

    ?????? invokeLater()是異步方法,會立即返回。invokeAndWait()是同步方法,會一直阻塞,直到事件處理完畢才會放回。

    ??????

    ?????? 6.JavaBean與同步

    ?????? 當(dāng)你創(chuàng)建Bean的時候,你必須要假設(shè)它可能會在多線程環(huán)境下運(yùn)行。也就是說:

    ?????? (1).盡可能讓Beand中的所有公共方法都是synchronized。這將導(dǎo)致synchronized的運(yùn)行時開銷。

    ?????? (2).當(dāng)一個多路事件觸發(fā)了一組對該事件感興趣的監(jiān)聽器時,必須假定,在遍歷列表進(jìn)行通知的同時,監(jiān)聽器可能會被添加或移除。

    ?????? public void notifyListeners(){

    ????????????? ActionEvent a = new ActionEvent(BangBean2.this, ActionEvent.ACTION_PERFORMED, null);

    ????????????? ArrayList lv = null;

    ????????????? //Make a shallow copy of the List in case someone adds a listener while we're

    ????????????? //calling listeners

    ????????????? synchronized(this){

    ???????????????????? lv = (ArrayList)actinListeners.clone();

    ????????????? }

    ????????????? for(int i = 0; i < lv.size(); i++){

    ???????????????????? ((ActionListener)lv.get(i)).actionPerformed(a);

    ????????????? }

    ?????? }

    ??????

    ??????

    ??????

    ??????

    ?

    ==============

    Chap15 發(fā)現(xiàn)問題

    ?

    ?????? 1.單元測試

    ?????? //Discover the name of the class this object was created within:

    ?????? className = new Throwable().getStackTrace()[1].getClassName();

    ??????

    ?????? JUnit

    ?????? JUnit在輸出消息中使用"."表示每個測試的開始。

    ?????? JUnit為每個測試創(chuàng)建一個測試對象(繼承自TestCase),以確保在測試運(yùn)行之間沒有不利的影響。所有的測試對象都是同時被創(chuàng)建的,而不是正好在測試方法執(zhí)行之前才創(chuàng)建。

    ?????? setUp是在每個測試方法運(yùn)行之前被調(diào)用的。

    ??????

    ?????? 2.利用斷言提高可靠性

    ?????? 斷言語法

    ?????? assert boolean-expression;

    ?????? assert boolean-expression: information-expression;

    ??????

    ?????? 在JDK 1.4中,缺省情況下斷言是關(guān)閉的。為了防止編譯時的錯誤,必須帶下面的標(biāo)志進(jìn)行編譯:

    ?????? -source 1.4

    ?????? 如:javac -source 1.4 Assert1.java

    ??????

    ?????? 運(yùn)行程序也必須加上標(biāo)志-ea,全拼是-enableassertions。這樣才會執(zhí)行所有的斷言語句。

    ??????

    ?????? 我們也可以基于類名或包名來決定打開或關(guān)閉斷言。

    ?????? 還有另一種動態(tài)控制斷言的方法:通過ClassLoader對象的方法setDefaultAssertionStatus(),它為所有隨后載入的類設(shè)置斷言的狀態(tài)。

    ?????? public static void main(String[] args){

    ????????????? ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);

    ????????????? //other statements

    ?????? }

    ?????? 這樣可以在運(yùn)行時,不必使用-ea標(biāo)志,但是仍然必須使用-source 1.4標(biāo)志編譯。

    ??????

    ?????? 為DBC使用斷言

    ??????

    ?????? DBC(Design by Contract)是由Bertrand Meyer(Eiffel編程語言的創(chuàng)建者)所闡明的一個概念,它通過確保對象遵循特定的、不能被編譯時的類型檢查所驗(yàn)證的規(guī)則,來幫助建立健壯的程序。

    ??????

    ?????? 3.剖析和優(yōu)化

    ?????? “我們應(yīng)該忽略較小的效率,在97%的時間里我們都應(yīng)該說:不成熟的優(yōu)化是萬惡之源。”--Donald Knuth

    ??????

    ?????? 最優(yōu)化指南

    ?????? 避免為性能而犧牲代碼的可讀性。

    ?????? 不能孤立地考慮性能。要權(quán)衡所需付出的努力與能得到的利益之間的關(guān)系。

    ?????? 性能是大型工程要關(guān)心的問題,但通常不是小型工程要考慮的。

    ?????? 使程序可運(yùn)轉(zhuǎn)比鉆研程序的性能有更高的優(yōu)先權(quán)。僅當(dāng)性能被確定是一個關(guān)鍵因素的時候,在初始設(shè)計開發(fā)過程期間才應(yīng)該予以考慮。

    ?????? 不要假設(shè)瓶頸在什么地方,而應(yīng)該運(yùn)行剖析器來獲得數(shù)據(jù)。

    ?????? 在任何可能的情況下,盡量通過將對象設(shè)置為null,從而顯式地將其銷毀。有時這可能是對垃圾回收器的一種很有幫助的提示。

    ?????? 程序大小的問題。僅當(dāng)程序是大型的、運(yùn)行時間長而且速度也是一個問題時,性能優(yōu)化才有價值。

    ?????? static final變量可以通過JVM進(jìn)行優(yōu)化以提高程序的速度。

    ??????

    ?????? 做可以運(yùn)轉(zhuǎn)的最簡單的事物。(極限編程)

    ??????

    ?

    ?

    ================

    附錄A:對象的傳遞與返回

    ?

    ?????? 確切地說,Java有指針。Java中(除了基本類型)每個對象的標(biāo)識符就是一個指針。但是它們受到了限制,有編譯器和運(yùn)行期系統(tǒng)監(jiān)視著它們。Java有指針,但沒有指針的相關(guān)算法。可以將它們看作“安全的指針”。

    ?????? “別名效應(yīng)”是指,多個引用指向同一個對象。將引用作為方法的參數(shù)傳遞時,它會自動被別名化。

    ??????

    ?????? 制作局部拷貝

    ?????? Java中所有的參數(shù)傳遞,執(zhí)行的都是引用傳遞。當(dāng)你傳遞對象時,真正傳遞的只是一個引用,指向存活于方法外的“對象”。對此引用做的任何修改,都是在修改方法外的對象。此外:

    ?????? (1).別名效應(yīng)在參數(shù)傳遞時自動發(fā)生。

    ?????? (2).方法內(nèi)沒有局部對象,只有局部引用。

    ?????? (3).引用有作用域,對象則沒有。

    ?????? (4).在Java中,不需要為對象的生命周期操心。

    ?????? (5).沒有提供語言級別的支持(例如“常量”)以阻止對象被修改,或者消除別名效應(yīng)的負(fù)面影響。不能簡單地使用final關(guān)鍵字來修飾參數(shù),它只能阻止你將當(dāng)前引用指向其他對象。

    ??????

    ?????? 克隆對象

    ?????? 如果確實(shí)要在方法調(diào)用中修改參數(shù),但又不希望修改外部參數(shù),那么就應(yīng)該在方法內(nèi)部制作一份參數(shù)的副本,以保護(hù)原參數(shù)。

    ?????? Object類提供了protected方法clone(),要使用它,必須在子類中以public方式重載此方法。例如,ArrayList就重載了clone()。ArrayList的clone()方法,并不自動克隆容器中包含的每個對象,只是將原ArrayList中的對象別名化,即只復(fù)制了ArrayList中對象的引用。這稱為淺拷貝(shallow copy)。

    ??????

    ?????? 使類具有克隆能力

    ?????? 雖然在所有類的基類Object中定義了克隆方法,但也不是每個類都自動具有克隆能力。

    ?????? 克隆對象時有兩個關(guān)鍵問題:

    ?????? (1).調(diào)用super.clone()

    ?????? (2).將子類的clone()方法聲明為public

    ?????? 基類的clone()方法,能“逐位復(fù)制(bitwise copy)”對象。

    ??????

    ?????? 實(shí)現(xiàn)Cloneable接口

    ?????? interface Cloneable{}

    ?????? 這樣的空接口稱為“標(biāo)記接口(tagging interface)”。

    ?????? Cloneable接口的存在有兩個理由。第一,如果某個引用上傳為基類后,就不知道它是否能克隆。此時,可以用instanceof檢查該引用是否指向一個可克隆的對象。

    ?????? if(myref instanceof Cloneable)//...

    ?????? 第二,與克隆能力的設(shè)計有關(guān),考慮到也許你不愿意所有類型的對象都是可克隆的。所以O(shè)bject.clone()會檢查當(dāng)前類是否實(shí)現(xiàn)了Cloneable接口,如果沒有,就拋出CloneNotSupportedException異常。所以,作為實(shí)現(xiàn)克隆能力的一部分,通常必須實(shí)現(xiàn)Cloneable接口。

    ??????

    ?????? ==與!=

    ?????? Java比較對象相等的等價測試并未深入對象的內(nèi)部。==和!=只是簡單地比較引用。如果引用代表的內(nèi)存地址相同,則它們指向同一個對象,因此視為相等。所以,該操作符測試的是:不同的引用是否是同一個對象的別名。

    ??????

    ?????? Object.clone()的效果

    ?????? 克隆過程的第一步通常都是調(diào)用super.clone()。它制作出完全相同的副本,為克隆操作建立了基礎(chǔ)。在此基礎(chǔ)上,你可以執(zhí)行對完成克隆必要的其他操作。

    ?????? 這里的其他操作是指,對對象中的每個引用,都明確地調(diào)用clone()。否則,那些引用會被別名化,仍指向原本的對象。

    ?????? 只要沒有向子類中添加需要克隆的引用,那么無論clone()定義于繼承層次中多深的位置,只需要調(diào)用Object.clone()一次,就能完成所有必要的復(fù)制。

    ?????? 對ArrayList深層拷貝而言,以下操作是必須的:克隆ArrayList之后,必須遍歷ArrayList中的每個對象,逐一克隆。對HashMap做深層拷貝,也必須做類似的操作。

    ??????

    ?????? 向繼承體系的更下層增加克隆能力

    ?????? 可以向任意層次的子類添加克隆能力,從那層以下的子類,也就都具備了克隆能力。

    ??????

    ?????? 克隆小結(jié)

    ?????? 如果希望一個類可以被克隆:

    ?????? (1).實(shí)現(xiàn)Cloneable接口。

    ?????? (2).重載clone(),聲明為public。

    ?????? (3).在clone()中調(diào)用Super.clone()。

    ?????? (4).在clone()中捕獲異常。

    ??????

    ?????? 只讀類

    ?????? 在只讀類中所有數(shù)據(jù)都是private的,并且沒有定義會修改對象內(nèi)部狀態(tài)的方法。只讀類的對象可以有很多別名,也不會造成傷害。例如,Java標(biāo)準(zhǔn)類庫中所有基本類型的包裝類。

    ??????

    ?????? 恒常性(immutability)的缺點(diǎn)

    ?????? 當(dāng)你需要一個被修改過的此類的對象的時候,必須承受創(chuàng)建新對象的開銷,也會更頻繁地引發(fā)垃圾回收。對于有些類(如String),其代價讓人不得不禁止這么做。

    ?????? 解決之道是創(chuàng)建一個可被修改的伴隨類(companion class)。

    ??????

    ?

    =============

    附錄B:Java編程指南

    ?

    ?????? 設(shè)計

    ?????? 1.優(yōu)雅設(shè)計終將得到回報。精心設(shè)計程序的時候生產(chǎn)率不會很高,但欲速則不達(dá)。

    ?????? 2.先能運(yùn)行,再求快速。

    ?????? 3.分而治之。

    ?????? 4.盡量讓所有東西自動化。(如測試和構(gòu)建,先寫測試,再編寫類)

    ?????? 5.盡可能使類原子化。

    ?????? 建議重新設(shè)計類的線索有:

    ?????? (1).復(fù)雜的switch語句,請考慮使用多態(tài)。

    ?????? (2).有許多方法,處理類型極為不同的操作:請考慮劃分成不同的類。

    ?????? (3).有許多成員變量,表示類型極為不同的屬性:請考慮劃分成不同的類。

    ?????? (4).參考《Refactoring:Improving the Design of Existing Code》,Martin Fowler著,(Addison-Wesley 1999)。

    ?????? 6.將變動的和不變的因素分離。

    ?????? 7.在判斷應(yīng)該使用繼承還是組合的時候,考慮是否需要上傳為基類。

    ??????

    ?????? 實(shí)現(xiàn)

    ?????? 1.編寫通用性的類時,請遵守標(biāo)準(zhǔn)形式。包括定義equals()、hashCode()、toString()、clone()(實(shí)現(xiàn)Cloneable接口,或者選擇其它對象復(fù)制策略),并實(shí)現(xiàn)Comparable和Serialiable接口。

    ?????? 2.在構(gòu)造器中只做必要的動作:將對象設(shè)定為正確的狀態(tài)。避免在構(gòu)造器內(nèi)調(diào)用其它方法(final方法除外),因?yàn)檫@些方法可能會被其他人重載,這就可能在構(gòu)造期間得到意外的結(jié)果。

    ?????? 3.優(yōu)先選擇接口而不是抽象類。只有在必須放進(jìn)方法定義或成員變量時,才把它改為抽象類。接口只和客戶希望的動作有關(guān),而類則傾向于實(shí)現(xiàn)細(xì)節(jié)。
    ?

    posted @ 2006-12-11 16:29 重歸本壘(Bing) 閱讀(886) | 評論 (0)編輯 收藏
     
    安裝orcale9i客戶端時出問題:加載數(shù)據(jù)庫時出錯!
    原來是在安裝文件的路徑有中文名,改了,就通過了。
    posted @ 2006-12-01 11:28 重歸本壘(Bing) 閱讀(422) | 評論 (0)編輯 收藏
    僅列出標(biāo)題
    共12頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 
     
    Web Page Rank Icon
    主站蜘蛛池模板: 国产亚洲色视频在线| 免费A级毛片无码视频| 成年美女黄网站18禁免费| 久久亚洲精品国产精品| 国产一精品一av一免费爽爽| 国产亚洲美日韩AV中文字幕无码成人 | 久久久久免费看成人影片| 久久青青草原亚洲av无码| 一级特黄特色的免费大片视频| 国产免费拔擦拔擦8x| 亚洲色成人四虎在线观看| 久久久久久久久免费看无码| 中日韩亚洲人成无码网站| 日韩成全视频观看免费观看高清| 亚洲成a∨人片在无码2023 | 91情国产l精品国产亚洲区| 最近中文字幕高清免费中文字幕mv| 亚洲va久久久噜噜噜久久| 日韩电影免费观看| 亚洲成年人电影在线观看| 最新猫咪www免费人成| 日韩色日韩视频亚洲网站| 亚洲色婷婷综合开心网| 国产一区二区免费| 亚洲国产成人资源在线软件| 色视频色露露永久免费观看| 免费在线观看自拍性爱视频| 亚洲综合av永久无码精品一区二区| 久章草在线精品视频免费观看| 亚洲专区一路线二| 亚洲阿v天堂在线2017免费| 18禁在线无遮挡免费观看网站| 亚洲欧洲国产视频| 亚洲国产成人久久精品99| 亚洲视频在线观看免费| 成年男女免费视频网站| 国产亚洲欧美在线观看| 亚洲女同成人AⅤ人片在线观看| 拍拍拍无挡视频免费观看1000 | 久久精品免费观看| 亚洲一区二区三区国产精品无码|