posts - 195, comments - 34, trackbacks - 0, articles - 1

          Eclipse下的重構(gòu):

          什么是重構(gòu)
          重構(gòu)是指在保持程序的全部功能的基礎(chǔ)上改變程序結(jié)構(gòu)的過(guò)程。重構(gòu)的類(lèi)型有很多,如更改類(lèi)名,改變方法名,或者提取代碼到方法中。每一次重構(gòu),都要執(zhí)行一系列的步驟,這些步驟要保證代碼和原代碼相一致。


          重構(gòu)的理由:為整理,為擴(kuò)展,為優(yōu)雅。

          在Eclipse下的重構(gòu):

          重構(gòu)會(huì)關(guān)聯(lián)多個(gè)文件,在一次重構(gòu)時(shí),不可再修改并保存文件,重構(gòu)無(wú)法撤銷(xiāo)或重做。

          Eclipse中的重構(gòu)類(lèi)型
                 如果你看一下Eclipse的重構(gòu)菜單,可以看到四部分。第一部分是撤銷(xiāo)和重做。其他的三部分包含Eclipse提供的三種類(lèi)型的重構(gòu)。
          第一種類(lèi)型的重構(gòu)改變代碼的物理結(jié)構(gòu),像Rename和Move。第二種是在類(lèi)層次上改變代碼結(jié)構(gòu),例如Pull Up和Push Down。第三種是改變類(lèi)內(nèi)部的代碼,像Extract Method和Encapsulate Field。這三部分的重構(gòu)列表如下。
           
          類(lèi)型1 物理結(jié)構(gòu)
          l         Rename
          l         Move
          l         Change Method signature
          l         Convert Anonymous Class to Nested
          l         Convert Member Type to New File:內(nèi)部類(lèi)提出一個(gè)單獨(dú)類(lèi)。
           
          類(lèi)型2 類(lèi)層次結(jié)構(gòu)
          l         Push Down:將父類(lèi)中方法或成員移到子類(lèi)。
          l         Push Up
          l         Extract Interface
          l         Generalize Type (Eclipse 3)
          l         User Supertype Where Possible
          類(lèi)型3 類(lèi)內(nèi)部結(jié)構(gòu)
          l         Inline
          l         Extract Method
          l         Extract Local Variable
          l         Extract Constant
          l         Introduce Parameter:引進(jìn)參數(shù)替換local var
          l         Introduce Factory
          l         Encapsulate Field


          表從Eclipse幫助中提取,列出了各種重構(gòu)支持的Java資源類(lèi)型,對(duì)應(yīng)的快捷鍵。

           

           

          名字
          可應(yīng)用的Java元素
          快捷鍵
          Undo
          在一次重構(gòu)后可執(zhí)行
          Alt + Shift + Z
          Redo
          在一次撤銷(xiāo)重構(gòu)后可執(zhí)行
          Alt + Shift + Y
          Rename
          對(duì)方法,成員變量,局部變量,方法參數(shù),對(duì)象,類(lèi),包,源代碼目錄,工程可用。
          Alt + Shift + R
          Move
          對(duì)方法,成員變量,局部變量,方法參數(shù),對(duì)象,類(lèi),包,源代碼目錄,工程可用。
          Alt + Shift + V
          Change Method Signature
          對(duì)方法可用。
          Alt + Shift + C
          Convert Anonymous Class to Nested
          對(duì)匿名內(nèi)部類(lèi)可用。
           
          Move Member Type to New File
          對(duì)嵌套類(lèi)可用。
           
          Push Down
          對(duì)同一個(gè)類(lèi)中成員變量和方法可用。
           
          Pull Up
          對(duì)同一個(gè)類(lèi)中成員變量和方法,嵌套類(lèi)可用。
           
          Extract Interface
          對(duì)類(lèi)可用。
           
          Generalize Type
          對(duì)對(duì)象的聲明可用。
           
          Use Supertype Where Possible
          對(duì)類(lèi)可用。
           
          Inline
          對(duì)方法,靜態(tài)final類(lèi),局部變量可用。
          Alt + Shift + I
           
          Extract Method
          對(duì)方法中的一段代碼可用。
          Alt + Shift + M
           
          Extract Local Variable
          對(duì)選中的與局部變量相關(guān)的代碼可用。
          Alt + Shift + L
           
          Extract Constant
          對(duì)靜態(tài)final類(lèi)變量,選中的與靜態(tài)final類(lèi)變量相關(guān)的代碼可用。
           
          Introduce Parameter
          對(duì)方法中對(duì)成員變量和局部變量的引用可用。
           
          Introduce Factory
          對(duì)構(gòu)造方法可用。
           
          Convert Local Variable to Field
          對(duì)局部變量可用。
          Alt + Shift +

          posted @ 2009-08-13 23:32 小強(qiáng)摩羯座 閱讀(1052) | 評(píng)論 (0)編輯 收藏



          學(xué)習(xí)一項(xiàng)知識(shí),必須問(wèn)自己三個(gè)重要問(wèn)題:1. 它的本質(zhì)是什么。2. 它的第一原則是什么。3. 它的知識(shí)結(jié)構(gòu)是怎樣的。




          pongba的知其所以然地學(xué)習(xí)(以算法學(xué)習(xí)為例)
          中他提出了現(xiàn)有算法類(lèi)書(shū)的講授者是自頂向下思維,理論和知道點(diǎn)都擺出來(lái),再做個(gè)細(xì)的推理與低階的知道做個(gè)銜接。但是都沒(méi)有講算法的思想是怎么發(fā)展而來(lái)的,數(shù)據(jù)思維的過(guò)程是怎樣的。“如果問(wèn)題求解是一部偵探小說(shuō),那么算法只是結(jié)局而已,而思考過(guò)程才是情節(jié)。”

                

          那到底什么樣的才算是授人以漁的呢?波利亞的《如何解題》絕對(duì)算是一本,他的《數(shù)學(xué)的發(fā)現(xiàn)》也值得一看。具體到算法書(shū),那就不是光看text book就足夠的了,為了深入理解一個(gè)算法的來(lái)龍去脈前因后果,從一個(gè)算法中領(lǐng)悟盡量深刻的東西,則需要做到三件事情:

          尋找該算法的原始出處:TAOCP作為一個(gè)資料庫(kù)是絕對(duì)優(yōu)秀的,基礎(chǔ)的算法只要你能想到的,幾乎都可以在上面找到原始出處。查到原始出處之后(譬如一篇paper),就可以去網(wǎng)上搜來(lái)看了。因?yàn)樽畛醯淖髡咄鶎?duì)一個(gè)方案的誕生過(guò)程最為了解。比如經(jīng)典數(shù)據(jù)結(jié)構(gòu)中的紅黑樹(shù)是出了名的令人費(fèi)解的結(jié)構(gòu)之一,但它的作者Sedgewick一張PPT,給你講得通通透透,比算法導(dǎo)論上的講法強(qiáng)上數(shù)倍。
          原始的出處其實(shí)也未必就都推心置腹地和你講得那么到位:前面說(shuō)過(guò),算法設(shè)計(jì)出來(lái)了之后人們幾乎是不會(huì)去回顧整個(gè)的思維過(guò)程細(xì)節(jié)的,只把直指目標(biāo)的那些東西寫(xiě)出來(lái)。結(jié)果就又是一篇?dú)W幾里德式的文章了。于是你就迷失在一大堆“定義”、“引理”、“定理”之中了。這種文章看上去整個(gè)寫(xiě)得井井有條,其實(shí)是把發(fā)明的過(guò)程整個(gè)給顛倒過(guò)來(lái)了,我一直就想,如果作者們能夠?qū)⒄麄€(gè)的思路過(guò)程寫(xiě)出來(lái),哪怕文字多上十倍,我也絕對(duì)會(huì)比看那一堆定義定理要容易理解得多。話說(shuō)回來(lái),怎么辦?可以再去網(wǎng)上找找,牛人講得未必比經(jīng)典教材上的差。那倘若實(shí)在找不出好的介紹呢,就只能自己揣摩了。揣摩的重要性,是怎么說(shuō)都不為過(guò)的。揣摩的一些指導(dǎo)性的問(wèn)題有:為什么要這樣(為什么這是好的)?為什么不是那樣(有其它做法嗎?有更好的做法嗎?)?這樣做是最好的嗎?(為什么?能證明嗎?)這個(gè)做法跟其它的什么做法有本質(zhì)聯(lián)系嗎?這個(gè)跟這個(gè)的區(qū)別是什么?問(wèn)題的本質(zhì)是什么?這個(gè)做法的本質(zhì)又是什么?到底本質(zhì)上是什么東西導(dǎo)致了這個(gè)做法如此..?與這個(gè)問(wèn)題類(lèi)似的還有其它問(wèn)題嗎?(同樣或類(lèi)似的做法也適用嗎?)等等。
          不僅學(xué)習(xí)別人的思路,整理自己的思路也是極其重要的:詳見(jiàn)《跟波利亞學(xué)解題》的“4. 一個(gè)好習(xí)慣”和“7. 總結(jié)的意義”。


          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/pongba/archive/2008/07/07/2622713.aspx

          posted @ 2009-08-02 23:54 小強(qiáng)摩羯座 閱讀(174) | 評(píng)論 (0)編輯 收藏

          什么是你的不可替代性和核心競(jìng)爭(zhēng)力

          By 劉未鵬(pongba) | http://blog.csdn.net/pongba

          我雖不是經(jīng)濟(jì)學(xué)專(zhuān)業(yè),但是翻開(kāi)任何一本經(jīng)濟(jì)學(xué)的教材,或者直接翻開(kāi) wikipedia 的 economics 條目,都會(huì)看到物以稀為貴這條鐵律。人才作為資源的一種,也是同樣的道理。而稀缺性,換種說(shuō)法也可以叫做不可替代性。一種資源越是稀缺,不可替代性就越強(qiáng)。再加上如果這種資源是一種具有實(shí)實(shí)在在使用價(jià)值的東西(而不是荷蘭的郁金香泡沫),那么其價(jià)格就會(huì)越高。

          問(wèn)題是,如何構(gòu)筑你的個(gè)人知識(shí)體系,使得你的知識(shí)技能集盡可能成為不可替代的呢?

          CSDN 的孟巖先生前段時(shí)間發(fā)表了一篇博客“技術(shù)路線的選擇重要但不具有決定性”,用有說(shuō)服力的數(shù)據(jù)闡述了技術(shù)路線的選擇對(duì)于個(gè)人知識(shí)體系的不可替代性并非一個(gè)關(guān)鍵因素,文中也提到了這樣一段話:

          那么核心競(jìng)爭(zhēng)力是什么?我觀察圈子里很多成功和不成功的技術(shù)人,提出一個(gè)觀點(diǎn),那就是個(gè)人的核心競(jìng)爭(zhēng)力是是他獨(dú)特的個(gè)性知識(shí)經(jīng)驗(yàn)組合。這個(gè)行業(yè)里擁擠著上百萬(wàn)聰明人,彼此之間真正的不同在哪里?不在于你學(xué)的是什么技術(shù),學(xué)得多深,IQ多少,而在于你身上有別人沒(méi)有的獨(dú)特的個(gè)性、背景、知識(shí)和經(jīng)驗(yàn)的組合。如果這種組合,1,絕無(wú)僅有;2,在實(shí)踐中有價(jià)值,3,具有可持續(xù)發(fā)展性,那你就具備核心競(jìng)爭(zhēng)力。因此,當(dāng)設(shè)計(jì)自己的發(fā)展路線時(shí),應(yīng)當(dāng)最大限度地加強(qiáng)和發(fā)揮自己獨(dú)特的組合,而不是尋求單項(xiàng)的超越。而構(gòu)建自己獨(dú)特組合的方式,主要是通過(guò)實(shí)踐,其次是要有意識(shí)地構(gòu)造。關(guān)于這個(gè)觀點(diǎn),話題太大,我不打算贅述。

          孟巖先生在文中沒(méi)有對(duì)這個(gè)問(wèn)題展開(kāi)敘述。但我一直也在尋思這個(gè)問(wèn)題,后來(lái)在 TopLanguage 上一次討論的時(shí)候,把一些想法整理成形。

          長(zhǎng)話短說(shuō),我相信以下的知識(shí)技能組合是具有相當(dāng)程度的不可替代性的:

          專(zhuān)業(yè)領(lǐng)域技能:成為一個(gè)專(zhuān)業(yè)領(lǐng)域的專(zhuān)家,你的專(zhuān)業(yè)技能越強(qiáng),在這個(gè)領(lǐng)域的不可替代性就越高。這個(gè)自是不用多說(shuō)的。
          跨領(lǐng)域的技能:解決問(wèn)題的能力,創(chuàng)新思維,判斷與決策能力,Critical-Thinking,表達(dá)溝通能力,Open Mind 等等。
          學(xué)習(xí)能力:嚴(yán)格來(lái)說(shuō)學(xué)習(xí)能力也屬于跨領(lǐng)域的技能,但由于實(shí)在太重要,并且跨任何領(lǐng)域,所以獨(dú)立出來(lái)。如何培養(yǎng)學(xué)習(xí)能力,到目前為止我所知道的最有效的辦法就是持續(xù)學(xué)習(xí)和思考新知識(shí)。
          性格要素:嚴(yán)格來(lái)說(shuō)這也屬于跨領(lǐng)域技能,理由同上。一些我相信很重要的性格要素包括:專(zhuān)注、持之以恒、自省(意識(shí)到自己的問(wèn)題所在的能力,這是改進(jìn)自身的大前提)、好奇心、自信、謙卑(自信和謙卑是不悖的,前者是相信別人能夠做到的自己也能夠做到,后者是不要總認(rèn)為自己確信正確的就一定是正確的,Keep an open mind)等等。
          關(guān)于如何培養(yǎng)這些方面的能力,呃.. 需要學(xué)習(xí)的東西太多,對(duì)于第2項(xiàng)中列出的一些子項(xiàng),可以參考我上次列的一些資料(《如何清晰地思考》),我自己也在學(xué)習(xí)之中。另外我在《一直以來(lái)伴隨我的一些學(xué)習(xí)習(xí)慣》(一,二,三,四)中也提到了一些相關(guān)的方法。

          注:

          以上將個(gè)人的核心競(jìng)爭(zhēng)力分為4個(gè)部分,其中每個(gè)部分的羅列并不一定詳盡,也有可能我忽略了重要的東西或羅列了不重要的東西,所以歡迎補(bǔ)充和糾正。
          以上只是我個(gè)人所認(rèn)為的具有相當(dāng)程度不可替代性的知識(shí)技能集,至于是否有更具不可替代性的“裝備”,不妨思考。

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/pongba/archive/2009/01/14/3776586.aspx

          posted @ 2009-08-02 22:31 小強(qiáng)摩羯座 閱讀(164) | 評(píng)論 (0)編輯 收藏

          Eclipse中常用的快捷鍵(最經(jīng)典的快捷鍵,就不用多說(shuō)了)

          Ctrl+D: 刪除當(dāng)前行    

          Ctrl+Alt+↓ 復(fù)制當(dāng)前行到下一行(復(fù)制增加)

          Ctrl+Alt+↑ 復(fù)制當(dāng)前行到上一行(復(fù)制增加)

          Alt+↓ 當(dāng)前行和下面一行交互位置(特別實(shí)用,可以省去先剪切,再粘貼了)

          Alt+↑    當(dāng)前行和上面一行交互位置(同上)

          Alt+← 前一個(gè)編輯的頁(yè)面

          Alt+→ 下一個(gè)編輯的頁(yè)面(當(dāng)然是針對(duì)上面那條來(lái)說(shuō)了)

          Alt+Enter 顯示當(dāng)前選擇資源(工程,or 文件 or文件)的屬性

          Shift+Enter 在當(dāng)前行的下一行插入空行(這時(shí)鼠標(biāo)可以在當(dāng)前行的任一位置,不一定是最后)

          Shift+Ctrl+Enter 在當(dāng)前行插入空行(原理同上條)

          Ctrl+Q    定位到最后編輯的地方

          Ctrl+L 定位在某行 (對(duì)于程序超過(guò)100的人就有福音了)

          Ctrl+M 最大化當(dāng)前的Edit或View (再按則反之)

          Ctrl+/    注釋當(dāng)前行,再按則取消注釋

          Ctrl+O    快速顯示 OutLine

          Ctrl+T    快速顯示當(dāng)前類(lèi)的繼承結(jié)構(gòu)

          Ctrl+W 關(guān)閉當(dāng)前Editer

          Ctrl+K    參照選中的Word快速定位到下一個(gè)

          Ctrl+E 快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁(yè)面沒(méi)有顯示的用黑體表示)

          Ctrl+/(小鍵盤(pán)) 折疊當(dāng)前類(lèi)中的所有代碼

          Ctrl+×(小鍵盤(pán)) 展開(kāi)當(dāng)前類(lèi)中的所有代碼

          Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來(lái)代替)

          Ctrl+Shift+E 顯示管理當(dāng)前打開(kāi)的所有的View的管理器(可以選擇關(guān)閉,激活等操作)

          Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個(gè)字母編輯器都提供快速匹配定位到某個(gè)單詞,如果沒(méi)有,則在stutes line中顯示沒(méi)有找到了,查一個(gè)單詞時(shí),特別實(shí)用,這個(gè)功能Idea兩年前就有了)

          Ctrl+Shift+J 反向增量查找(和上條相同,只不過(guò)是從后往前查)

          Ctrl+Shift+F4 關(guān)閉所有打開(kāi)的Editer

          Ctrl+Shift+X    把當(dāng)前選中的文本全部變?yōu)榇髮?xiě)

          Ctrl+Shift+Y    把當(dāng)前選中的文本全部變?yōu)樾?xiě)

          Ctrl+Shift+F 格式化當(dāng)前代碼

          Ctrl+Shift+P 定位到對(duì)于的匹配符(譬如{}) (從前面定位后面時(shí),光標(biāo)要在匹配符里面,后面到前面,則反之)

          下面的快捷鍵是重構(gòu)里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構(gòu)的快捷鍵都是Alt+Shift開(kāi)頭的了)

          Alt+Shift+R 重命名 (是我自己最?lèi)?ài)用的一個(gè)了,尤其是變量和類(lèi)的Rename,比手工方法能節(jié)省很多勞動(dòng)力)

          Alt+Shift+M 抽取方法 (這是重構(gòu)里面最常用的方法之一了,尤其是對(duì)一大堆泥團(tuán)代碼有用)

          Alt+Shift+C 修改函數(shù)結(jié)構(gòu)(比較實(shí)用,有N個(gè)函數(shù)調(diào)用了這個(gè)方法,修改一次搞定)

          Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數(shù)字和字符串抽取成一個(gè)變量,尤其是多處調(diào)用的時(shí)候)

          Alt+Shift+F 把Class中的local變量變?yōu)閒ield變量 (比較實(shí)用的功能)

          Alt+Shift+I 合并變量(可能這樣說(shuō)有點(diǎn)不妥Inline)

          Alt+Shift+V 移動(dòng)函數(shù)和變量(不怎么常用)

          Alt+Shift+Z 重構(gòu)的后悔藥(Undo)

          Ctrl+Shift+U 選擇選中的文字后非常類(lèi)似于UE的列表查詢(xún)

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/f128690011/archive/2007/06/24/1664354.aspx

          posted @ 2009-07-30 22:45 小強(qiáng)摩羯座 閱讀(179) | 評(píng)論 (0)編輯 收藏

          1:改變數(shù)據(jù)庫(kù)的默認(rèn)編碼配置,在MYSQL的安裝目錄中,找到my.ini,修改默認(rèn)編碼為:default-character-set=utf8

          2:建立數(shù)據(jù)庫(kù)時(shí),CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;

          3:執(zhí)行腳本:指定編碼格式set names utf8(注意,不是UTF-8

          4:如果你采用的是外部接入的方式,在連接中確定請(qǐng)求的編碼格式如:jdbc:mysql://localhost:3306 /ms_db?useUnicode=true&characterEncoding=UTF-8(不要出現(xiàn)任何空格,否則出錯(cuò))

          5:set character_set_results=gbk;(解決命令行亂碼問(wèn)題);

          --------------------------------------------------------------------------------

          問(wèn)題的關(guān)鍵在于數(shù)據(jù)導(dǎo)出、導(dǎo)入時(shí)要做到所使用的字符集相一致:
          1、mysqldump 的 default-character-set變量;
          2、mysql 的--default-character-set變量;
          3、mysqld的 Db characterset變量。
          例如:備份使用latin1字符集則恢復(fù)時(shí)也要使用該字符集并且數(shù)據(jù)庫(kù)的缺省字符集也要是該字符集,即latin1. 換成gbk也應(yīng)該一樣.

          亂碼的根源在于字符集的不一致:操作系統(tǒng)(Windows為gbk,Linux是UTF-8),數(shù)據(jù)庫(kù)(CREATE DATABASE db_name DEFAULT CHARACTER SET gbk 或者CREATE DATABASE db_name DEFAULT CHARACTER SET latin1)使用圖形界面是就更要注意其缺省配置。

          --------------------------------------------------------------------------------

          在這里我把自己知道的東東貼出來(lái),還望大家多多提意見(jiàn),補(bǔ)充,謝謝~~

          show variables like 'character%';查看字符編碼

          --更改字符集
          SET character_set_client = utf-8 ;
          SET character_set_connection = utf-8 ;
          SET character_set_database = utf-8 ;
          SET character_set_results = utf-8 ;
          SET character_set_server = utf-8 ;


          SET collation_connection = utf8 ;
          SET collation_database = utf8 ;
          SET collation_server = utf8 ;


          MySQL的字符集支持(Character Set Support)有兩個(gè)方面:字符集(Character set)和排序方式(Collation)。對(duì)于字符集的支持細(xì)化到四個(gè)層次:
                服務(wù)器(server),數(shù)據(jù)庫(kù)(database),數(shù)據(jù)表(table)和連接(connection)。

                1.MySQL默認(rèn)字符集:MySQL對(duì)于字符集的指定可以細(xì)化到一個(gè)數(shù)據(jù)庫(kù),一張表,一列.傳統(tǒng)的程序在創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表時(shí)并沒(méi)有使用那么復(fù)雜的配置,它們用的是默認(rèn)的配置.    (1)編譯MySQL 時(shí),指定了一個(gè)默認(rèn)的字符集,這個(gè)字符集是 latin1;(2)安裝MySQL 時(shí),可以在配置文件 (my.ini) 中指定一個(gè)默認(rèn)的的字符集,如果沒(méi)指定,這個(gè)值繼承自編譯時(shí)指定的;(3)啟動(dòng)mysqld 時(shí),可以在命令行參數(shù)中指定一個(gè)默認(rèn)的的字符集,如果沒(méi)指定,這個(gè)值繼承自配置文件中的配置,此時(shí) character_set_server 被設(shè)定為這個(gè)默認(rèn)的字符集;(4)當(dāng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)時(shí),除非明確指定,這個(gè)數(shù)據(jù)庫(kù)的字符集被缺省設(shè)定為character_set_server; (5)當(dāng)選定了一個(gè)數(shù)據(jù)庫(kù)時(shí),character_set_database 被設(shè)定為這個(gè)數(shù)據(jù)庫(kù)默認(rèn)的字符集;(6)在這個(gè)數(shù)據(jù)庫(kù)里創(chuàng)建一張表時(shí),表默認(rèn)的字符集被設(shè)定為 character_set_database,也就是這個(gè)數(shù)據(jù)庫(kù)默認(rèn)的字符集;(7)當(dāng)在表內(nèi)設(shè)置一欄時(shí),除非明確指定,否則此欄缺省的字符集就是表默認(rèn)的字符集;如果什么地方都不修改,那么所有的數(shù)據(jù)庫(kù)的所有表的所有欄位的都用 latin1 存儲(chǔ),不過(guò)我們?nèi)绻惭b MySQL,一般都會(huì)選擇多語(yǔ)言支持,也就是說(shuō),安裝程序會(huì)自動(dòng)在配置文件中把 default_character_set 設(shè)置為 UTF-8,這保證了缺省情況下,所有的數(shù)據(jù)庫(kù)的所有表的所有欄位的都用 UTF-8 存儲(chǔ)。


                 2.查看默認(rèn)字符集(默認(rèn)情況下,mysql的字符集是latin1(ISO_8859_1)通常,查看系統(tǒng)的字符集和排序方式的設(shè)定可以通過(guò)下面的兩條命令:
               mysql> SHOW VARIABLES LIKE 'character%';
          +--------------------------+---------------------------------+
          | Variable_name            | Value                           |
          +--------------------------+---------------------------------+
          | character_set_client     | latin1                          |
          | character_set_connection | latin1                          |
          | character_set_database   | latin1                          |
          | character_set_filesystem | binary                          |
          | character_set_results    | latin1                          |
          | character_set_server     | latin1                          |
          | character_set_system     | utf8                            |
          | character_sets_dir       | D:"mysql-5.0.37"share"charsets" |
          +--------------------------+---------------------------------+

          mysql> SHOW VARIABLES LIKE 'collation_%';
          +----------------------+-----------------+
          | Variable_name        | Value           |
          +----------------------+-----------------+
          | collation_connection | utf8_general_ci |
          | collation_database   | utf8_general_ci |
          | collation_server     | utf8_general_ci |
          +----------------------+-----------------+

          3.修改默認(rèn)字符集
          (1) 最簡(jiǎn)單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值,
          如    default-character-set = utf8
                character_set_server = utf8
             修改完后,重啟mysql的服務(wù),service mysql restart
             使用 mysql> SHOW VARIABLES LIKE 'character%';查看,發(fā)現(xiàn)數(shù)據(jù)庫(kù)編碼均已改成utf8
          +--------------------------+---------------------------------+
          | Variable_name            | Value                           |
          +--------------------------+---------------------------------+
          | character_set_client     | utf8                            |
          | character_set_connection | utf8                            |
          | character_set_database   | utf8                            |
          | character_set_filesystem | binary                          |
          | character_set_results    | utf8                            |
          | character_set_server     | utf8                            |
          | character_set_system     | utf8                            |
          | character_sets_dir       | D:"mysql-5.0.37"share"charsets" |
          +--------------------------+---------------------------------+

             (2) 還有一種修改字符集的方法,就是使用mysql的命令
               SET character_set_client = utf8 ;
               SET character_set_connection = utf8 ;
               SET character_set_database = utf8 ;
               SET character_set_results = utf8 ;
               SET character_set_server = utf8 ;

               mysql> SET collation_connection = utf8 ;
               mysql> SET collation_database = utf8 ;
               mysql> SET collation_server = utf8 ;

          一般就算設(shè)置了表的默認(rèn)字符集為utf8并且通過(guò)UTF-8編碼發(fā)送查詢(xún),你會(huì)發(fā)現(xiàn)存入數(shù)據(jù)庫(kù)的仍然是亂碼。問(wèn)題就出在這個(gè)connection連接層上。解決方法是在發(fā)送查詢(xún)前執(zhí)行一下下面這句:
          SET NAMES 'utf8';

          它相當(dāng)于下面的三句指令:
          SET character_set_client = utf8;
          SET character_set_results = utf8;
          SET character_set_connection = utf8;

          不知道什么原因,我在自己機(jī)器上把上述三個(gè)字符集都設(shè)置成utf8后,查詢(xún)中文結(jié)果還是亂碼,只有把character_set_results設(shè)置成GBK之后才能從命令行正常顯示中文.
          set character_set_results=GBK;

          ---------------------------------------------------------------

          如果用eclipse :
             點(diǎn)擊Window-->Preferences,展開(kāi)General-->WorkSpace,看到左邊的Text file encoding沒(méi)有,默認(rèn)的設(shè)定是簡(jiǎn)體中文編碼(gbk,gb2312這樣),而linux下面呢,是UTF-8。

          當(dāng)你新建一個(gè)項(xiàng)目,希望使用和WorkSpace不同編碼,請(qǐng)右擊你的項(xiàng)目,選擇Properties,點(diǎn)擊Resource,看到Text file encoding了吧,點(diǎn)擊Other,選擇UTF-8


          最后,將my.ini中的兩處default 的字符集改為gbk不要使用utf8

          posted @ 2009-07-26 23:08 小強(qiáng)摩羯座 閱讀(259) | 評(píng)論 (0)編輯 收藏

                  JUnit 設(shè)計(jì)的目的就是有效地抓住編程人員寫(xiě)代碼的意圖,然后快速檢查他們的代碼是否與他們的意圖相匹配。 JUnit 發(fā)展至今,版本不停的翻新,但是所有版本都一致致力于解決一個(gè)問(wèn)題,那就是如何發(fā)現(xiàn)編程人員的代碼意圖,并且如何使得編程人員更加容易地表達(dá)他們的代碼意圖。JUnit 4.4 也是為了如何能夠更好的達(dá)到這個(gè)目的而出現(xiàn)的。

              JUnit 4.4 主要提供了以下三個(gè)大方面的新特性來(lái)更好的抓住編程人員的代碼意圖:

              1)提供了新的斷言語(yǔ)法(Assertion syntax)——assertThat 。
          *新的斷言語(yǔ)法主要提供了assertThat,其操作示例:

          // 聯(lián)合匹配符not和equalTo表示“不等于”
          assertThat( something, not( equalTo( "developer" ) ) );
          // 聯(lián)合匹配符not和containsString表示“不包含子字符串”
          assertThat( something, not( containsString( "Works" ) ) );
          // 聯(lián)合匹配符anyOf和containsString表示“包含任何一個(gè)子字符串”
          assertThat(something, anyOf(containsString("developer"), containsString("Works")));

          JUnit 4.4 默認(rèn)提供一些可讀的描述性錯(cuò)誤信息

          String s = "hello world!";
          assertThat( s, anyOf( containsString("developer"), containsString("Works") ) );
          // 如果出錯(cuò)后,系統(tǒng)會(huì)自動(dòng)拋出以下提示信息:
          java.lang.AssertionError:
          Expected: (a string containing "developer" or a string containing "Works")
          got: "hello world!"

              2)提供了假設(shè)機(jī)制(Assumption)。
             提供語(yǔ)句assumeThat, assumeTrue,assumeNotNull 和 assumeNoException。
           *assumeThat作用:語(yǔ)法同assertThat,語(yǔ)義當(dāng)假設(shè)成立時(shí)執(zhí)行其后語(yǔ)句。
            應(yīng)用:1、改變條件,可對(duì)某些測(cè)試用例選擇性執(zhí)行。2、
           *使用: assume* 假設(shè)語(yǔ)句,必須得 import static org.junit.Assume.*;。 如果引用了第三方 hamcrest 的匹配符庫(kù),必須得 import static org.hamcrest.Matchers.*;,如果引用 JUnit 4.4 自帶的匹配符庫(kù),需要 import static org.hamcrest.CoreMatchers.*;。 
              3)提供了理論機(jī)制(Theory)

             Theory機(jī)制比較復(fù)雜,一般也用不到。
              
             

           


           


           

          posted @ 2009-07-25 21:27 小強(qiáng)摩羯座 閱讀(327) | 評(píng)論 (0)編輯 收藏

          豐田模式,如果我的理解沒(méi)有錯(cuò),其最核心最基本的概念是“集體思考”,強(qiáng)調(diào)可視性和持續(xù)改進(jìn)。展開(kāi)來(lái)說(shuō),比較有趣的幾點(diǎn):
          1- 問(wèn)題是大家共同的,有問(wèn)題大家一起解決。
          2- 在出現(xiàn)問(wèn)題的現(xiàn)場(chǎng)解決問(wèn)題而不是在辦公桌。
          3- 任何人都可以指手畫(huà)腳,發(fā)現(xiàn)質(zhì)量問(wèn)題,工人有權(quán)直接停掉生產(chǎn)線。
          4- 持續(xù)發(fā)現(xiàn)問(wèn)題并解決。
          5- 建立共識(shí)。
          6- 對(duì)人,尤其是一線工人的尊重。
          7- 危機(jī)意識(shí)。

          posted @ 2009-07-20 14:53 小強(qiáng)摩羯座 閱讀(194) | 評(píng)論 (0)編輯 收藏

          《談話的力量》  by Alan Garner

          一、          
          通過(guò)問(wèn)題促進(jìn)交談

          1.      提出開(kāi)放式問(wèn)題而非封閉式

          2.      避免問(wèn)題過(guò)于寬泛

          3.      一開(kāi)始的問(wèn)題要簡(jiǎn)單、對(duì)方易于回答、感興趣回答,不要過(guò)于難

          4.      事先做好準(zhǔn)備

          5.      提問(wèn)時(shí)不要在別人回答之前就包含個(gè)人的觀點(diǎn)和立場(chǎng)

          二、           表達(dá)誠(chéng)實(shí)的稱(chēng)贊

          1.      鼓勵(lì)喜歡的行為比懲罰不喜歡的行為更有效

          2.      將稱(chēng)贊說(shuō)得更具體一些

          3.      在稱(chēng)贊中加入對(duì)方名字,讓他覺(jué)得是針對(duì)他說(shuō)的而不是敷衍

          4.      可以在稱(chēng)贊后加上一個(gè)相關(guān)問(wèn)題,幫對(duì)方接受稱(chēng)贊

          5.      稱(chēng)贊別人時(shí)不要有任何索取

          6.      切忌一味稱(chēng)贊,否則顯得太假

          7.      不要用對(duì)方稱(chēng)贊自己的話回答對(duì)方

          8.      適當(dāng)向第三方稱(chēng)贊另一個(gè)人(間接稱(chēng)贊)

          9.      積極接受別人對(duì)自己的稱(chēng)贊

          三、           傾聽(tīng)別人的話語(yǔ)

          1.      積極傾聽(tīng),就是告訴別人你對(duì)他發(fā)出的信息的理解(“你是說(shuō)……,是么?”),尤其是不太確定對(duì)方意思的時(shí)候,以及對(duì)方傳遞重要信息或者感情上的信息時(shí)。

          四、           利用自由信息

          1.      學(xué)會(huì)利用自由信息(即你沒(méi)有主動(dòng)要求也沒(méi)有預(yù)料到的信息)去展開(kāi)話題

          五、           讓別人知道你

          1.      學(xué)會(huì)自我透露。通常的交流經(jīng)歷四個(gè)階段:套話、事實(shí)、意見(jiàn)、感受,自我透露的程度逐漸提高

          2.      自我透露時(shí)內(nèi)容要具體,也可以適當(dāng)展示自己的缺點(diǎn)和反面

          3.      自我透露切忌觀點(diǎn)不明確,如不用“我”而說(shuō)“你”,不用陳述句而用問(wèn)句,等

          六、           開(kāi)始一段談話

          1.      通過(guò)談?wù)摥h(huán)境、對(duì)方、自己來(lái)開(kāi)始一段談話,通常談?wù)摥h(huán)境和對(duì)方比談?wù)撟约焊菀组_(kāi)始

          七、           發(fā)出可能被接受的邀請(qǐng)

          1.      要學(xué)會(huì)用雙重視角,發(fā)出對(duì)方可能感興趣的邀請(qǐng)

          2.      一開(kāi)始的邀請(qǐng)要隨意一些,從小處著手,不要讓對(duì)方覺(jué)得邀請(qǐng)參加的活動(dòng)意義太大太重要而不敢隨意參加

          八、           積極地接受批評(píng)

          1.      當(dāng)別人批評(píng)自己時(shí),不要急于逃避、反擊

          2.      當(dāng)別人批評(píng)自己時(shí),首先要詢(xún)問(wèn)具體內(nèi)容,對(duì)時(shí)間、地點(diǎn)、原因、人物、什么、怎么樣提問(wèn),搞清楚別人到底為啥批評(píng)自己

          3.      第二步要同意對(duì)方的批評(píng),可以同意對(duì)方批評(píng)的事實(shí),如果不同意,則要同意對(duì)方有表達(dá)意見(jiàn)的權(quán)利

          4.      第三步可以通過(guò)自我透露表明自己的立場(chǎng)

          九、           拒絕別人的操縱

          1.      “破唱片”的方法:不管你別人說(shuō)什么,都可以同意他們的意見(jiàn)或給予他們表達(dá)意見(jiàn)的權(quán)利,但是自始至終保持一貫的態(tài)度,重復(fù)同樣的話表達(dá)拒絕

          十、           要求改變

          1.      希望別人做出改變時(shí),可以利用如下公式:“我不太滿(mǎn)意,你【說(shuō)明其行為】,(使得)【指出后果】,所以我覺(jué)得【描述自己的感受】。

          2.      說(shuō)明其行為的時(shí)候,盡量采取客觀的態(tài)度,說(shuō)得具體一些,讓對(duì)方明確領(lǐng)會(huì)你的意思,一次只需提一種行為,不要說(shuō)太多,最好只專(zhuān)注現(xiàn)在發(fā)生或剛剛發(fā)生不久的行為,不要翻出“陳芝麻爛谷子”的事,不要抱怨對(duì)方“總是……”,不要妄加揣測(cè)和推斷對(duì)方的意圖

          3.      指出后果時(shí),要用積極的態(tài)度

          4.      描述感受時(shí),要注意用簡(jiǎn)潔的語(yǔ)言,不要用粗俗的語(yǔ)言

          5.      作完以上陳述后要暫停一下,給對(duì)方以回想的時(shí)間,從而可能提出令人滿(mǎn)意的解決方案

          6.      如果沒(méi)有成功,要進(jìn)行直接要求,要具體要求對(duì)方改變某一個(gè)做法,一次只提一件事

          7.      如果還沒(méi)有成功,則采用“破唱片”做法,不斷重復(fù)要求,直到成功

          8.      可能對(duì)方無(wú)法完全按照你的要求去做,這時(shí)會(huì)進(jìn)行商談,商談過(guò)程中要始終牢記你最初的目的——希望某種需要得到滿(mǎn)足或者某種權(quán)利受到尊重,解決辦法可以根據(jù)雙方反饋進(jìn)行調(diào)整,但一定要滿(mǎn)足最初的目的

          十一、   通過(guò)動(dòng)作表情達(dá)意

          1.      注意保持合適的個(gè)人空間

          2.      表達(dá)喜歡的感情可以采用SOFTEN方法:Smile微笑、Open posture開(kāi)放的姿態(tài)(同時(shí)和兩個(gè)人說(shuō)話時(shí)可以上半身對(duì)一個(gè)人小半身正對(duì)另一個(gè)人)、Forward lean身體前傾、Touch身體接觸、Eye contact眼神交流(對(duì)方瞳孔放大表明喜歡你)、Nod點(diǎn)頭

          十二、   減少社交場(chǎng)合中的緊張心理

          1.      緊張的原因是因?yàn)橛腥缦聨追N信念:逃避、恐懼、以偏概全、要求過(guò)高。

          2.      挑戰(zhàn)逃避意識(shí)——追問(wèn)自己有什么證據(jù)表明是這件事情讓自己緊張;自己對(duì)自己叫“停”,從而驅(qū)逐頭腦中存在的逃避想法

          3.      挑戰(zhàn)恐懼心理——想想自己頭腦中的“可怕”事件發(fā)生的可能性有多大(通常會(huì)很小);想到最壞的結(jié)果,并用感情色彩較弱的詞語(yǔ)去描述它(最壞也就是……,頂多只是稱(chēng)得上倒霉……)

          4.      挑戰(zhàn)以偏概全的習(xí)慣——不僅不要對(duì)自己“貼標(biāo)簽”也不要對(duì)別人“貼標(biāo)簽”,問(wèn)問(wèn)自己“貼標(biāo)簽”的證據(jù)在哪里,往往發(fā)現(xiàn)沒(méi)有合理的證據(jù);過(guò)去發(fā)生的事情不代表將來(lái)一定發(fā)生,失敗過(guò)并不代表將來(lái)不能成功

          5.      挑戰(zhàn)要求過(guò)高的心理——不要要求完美,也不要堅(jiān)持遵循對(duì)自己不利的準(zhǔn)則(過(guò)去一直以某種方式做事并不意味著必須一直這樣做);不要要求別人遵循你自己的準(zhǔn)則,別人是你不可控的

          十三、   有計(jì)劃地去努力

          1.      設(shè)定明確的目標(biāo)——目標(biāo)要明確(描述的行為不會(huì)與其他行為混淆);要可證實(shí)(即使旁觀者也可以確定你是否實(shí)現(xiàn)了目標(biāo));要肯定(“我要……”而不是“我不能/要……”);要可計(jì)量;要明白目標(biāo)的實(shí)現(xiàn)完全取決與你自己的行動(dòng)(不要根據(jù)別人的回應(yīng)來(lái)判斷是否成功)

          2.      劃分目標(biāo)的等級(jí)——多個(gè)目標(biāo)需要實(shí)現(xiàn)時(shí),分難易,先做最容易的

          3.      增加步驟——當(dāng)一個(gè)目標(biāo)較難時(shí),可以細(xì)分為多個(gè)步驟,一步一步去實(shí)現(xiàn)

          4.      預(yù)先演練——可以在付諸行動(dòng)前自己演習(xí)

          5.      獎(jiǎng)勵(lì)自己——設(shè)定目標(biāo)時(shí)同時(shí)設(shè)定實(shí)現(xiàn)目標(biāo)后對(duì)自己的獎(jiǎng)勵(lì),并切實(shí)兌現(xiàn)獎(jiǎng)勵(lì)(獎(jiǎng)勵(lì)要是自己真正想要的),不要吝惜達(dá)成目標(biāo)后對(duì)自己的表?yè)P(yáng)

          Learning from "Apprentice"

           

          Tips learned:

          1.       If you are a leader, do be decisive.

          2.       Never underestimate the enemy.

          3.       As a leader, you should be able to manage your team members.

           

          Suggestions from Mr. Trump

          1.       Deal good with boss.

          2.       People needed: can handle pressure, creative.

          3.       Respect from winning.

          4.       領(lǐng)導(dǎo)常常需要力排眾議。Lead with authority.

          5.       A leader should be decisive.

          6.       有時(shí)候做生意靠直覺(jué)。Business comes from instinct.

          7.       Always listen to others, though you may not do as they say.

          8.       Go big or go home. Think it big.

          9.       Sell your ideas.

          10.   Know when to fold.如果一個(gè)想法不切實(shí)際或效果不理想,即使它是你一手想起來(lái)的,也要適時(shí)放棄。

          11.   There is no failure, you can never quit.

          12.   I don’t need choker.(怯場(chǎng)的人)

          13.   You should love what you do.

          14.   A leader should be able to control his underlings.

          15.   Always focus in the goal.

          16.   Getting along with people is very important.

          17.   Be flexible; be able to change.

          18.   A leader should know how to inspire his/her staff.

          19.   Good leader knows the strength and weaknesses of his/her employees.

          20.   Good deal is all about money; money is what proves your success.

          21.   Members in the best team push each other. You should push your team members to perform their best.

          22.   Get to the point, don’t waste time.

          23.   Loyalty is very important.

          24.   Great business man knows how to balance creativity and feasibility.

          25.   Always stand up for yourself.

          26.   A deal is a deal. Once you shake hands with others, never break up the “hand-shake” for no reason.

          27.   A god is in the details.

          28.   Never beg when you sell things.

          29.   You should believe what you sell, or else you will sell nothing.

          30.   Energy is very crucial.

          31.   You will not succeed without passion.

          posted @ 2009-07-03 12:21 小強(qiáng)摩羯座 閱讀(119) | 評(píng)論 (0)編輯 收藏

          知識(shí)分子的故園—在復(fù)旦大學(xué)的演講

          【編者注:這是我閱讀復(fù)旦大學(xué)計(jì)算機(jī)系博士生孫賀的主頁(yè)博客時(shí),發(fā)現(xiàn)的其講話稿。閱讀之后,對(duì)其思想的深邃頗為欣賞。另外我對(duì)其文中提到的幾個(gè)哲學(xué)家也都不知道,估計(jì)在小孫的眼里,陳首席基本上屬于文盲的范疇。有興趣的讀者可參閱知識(shí)分子的故園

          非常感謝復(fù)旦大學(xué)本科生資助委員會(huì)給我提供了這樣一個(gè)機(jī)會(huì),使我很榮幸的來(lái)和大家進(jìn)行交流,提出自己的一些想法。

          今天我和大家談的倒不是我個(gè)人的在專(zhuān)業(yè)領(lǐng)域的看法,我主要是想和大家談一談作為當(dāng)代的知識(shí)分子,應(yīng)該扮演著一個(gè)什么樣的角色。為什么要談這樣一個(gè)問(wèn)題呢?因?yàn)槲覀儼l(fā)現(xiàn)今天知識(shí)分子的意義和兩百年前或者三百年前已經(jīng)有了明顯的不同。比如在十七八世紀(jì),許許多多的知識(shí)分子,比如帕斯卡、康德、盧梭,他們把他們的研究和實(shí)踐結(jié)合在一起。我們首先以說(shuō)帕斯卡為例,我在這里提到的帕斯卡,就是所有學(xué)過(guò)初等數(shù)學(xué),都知道“帕斯卡三角形”的那個(gè)帕斯卡。他是一個(gè)法國(guó)科學(xué)家,為了幫助工作繁忙的父親,他設(shè)計(jì)了法國(guó)的第一臺(tái)計(jì)算器。他利用自己發(fā)明的氣壓計(jì)證明了真空的存在。不僅如此,他的《沉思錄》被認(rèn)為是當(dāng)代人和思想的第一次對(duì)話。他還是一個(gè)虔誠(chéng)的天主教徒。

          不幸的是,他在三十六歲時(shí)瘋了,在后面的三十七年里一直住在瘋?cè)嗽豪铩N覀冊(cè)賮?lái)看康德。在三十一歲那一年,康德寫(xiě)下了《自然通史與天體理論,或根據(jù)牛頓定律研究整個(gè)宇宙的結(jié)構(gòu)及其力學(xué)起源》的非凡著作。之后,康德還寫(xiě)過(guò)《將負(fù)數(shù)引入哲學(xué)的嘗試》等論文,從此開(kāi)始了數(shù)學(xué)和物理學(xué)的研究。眾所周知,康德最為重要的著作就是三大批判,即《純粹理論批判》,《實(shí)踐理論批判》和《判斷力批判》。除此以外,康德還有一系列關(guān)于教育學(xué)的著作,例如《論教育學(xué)》、《系科之爭(zhēng)》等。康德的主要著作還包括《使用人類(lèi)學(xué)》。我們很難想象一個(gè)終身生活在哥尼斯堡這樣一個(gè)小鎮(zhèn)的單身漢,在他八十歲的生活中沒(méi)有離開(kāi)過(guò)這個(gè)小鎮(zhèn)一步。在漫長(zhǎng)的八十年的單身寂寞的生活中,他思考了人生中一切的偉大的實(shí)踐。在他的墓碑上有這樣的一句話:“有兩樣?xùn)|西,我們?cè)绞墙?jīng)常不斷地思索他們,他們就越是喚起一種始終新穎和日益增長(zhǎng)的贊嘆和敬畏充溢我們的心靈,那就是我頭頂?shù)男强蘸臀倚闹械牡赖侣伞K麄兿蛭矣∽C:上帝在我頭頂,也在我心中。”我提及的這些事實(shí)意在說(shuō)明:今天的知識(shí)分子和兩百年前傳統(tǒng)意義上的知識(shí)分子在形式上出現(xiàn)了非常顯著的差別。關(guān)于這一點(diǎn),五十年前的德國(guó)哲學(xué)家和精神病學(xué)家卡爾•雅思貝斯在《在時(shí)代的精神生活》這本書(shū)中,就已經(jīng)一針見(jiàn)血地提出了。

          盡管雅氏描繪的是二十世紀(jì)三四十年代的歐洲社會(huì),但在今天看來(lái),他的針砭時(shí)弊、一針見(jiàn)血的分析同樣適用于中國(guó)現(xiàn)實(shí)社會(huì)。一言以蔽之,他所闡述的就是在現(xiàn)代社會(huì)我們的知識(shí)已經(jīng)瓦解,人的生活缺乏精神上的向?qū)АN乃嚪治鰰r(shí)期,一個(gè)人的學(xué)術(shù)研究和生命實(shí)踐始終是結(jié)合在一起的。但是在今天,我們并不這樣來(lái)看代學(xué)術(shù)研究。雅斯貝斯的分析非常精辟,他說(shuō),我們的一種以前從事高尚研究的快樂(lè),被一種從事狹窄技術(shù)領(lǐng)域研究的快感所取代。在這樣的情況下,一種可怕的情況出現(xiàn)了:我們不再認(rèn)為學(xué)術(shù)研究是崇高的。比如今天我問(wèn)大家,大家兒時(shí)的夢(mèng)想是什么,可能對(duì)在場(chǎng)的各位同學(xué)而言,你們會(huì)說(shuō)童年時(shí)代的純真的夢(mèng)想是成為一個(gè)科學(xué)家,因?yàn)樵谀菚r(shí)的我們內(nèi)心深處科學(xué)家代表了一種崇高。但是在今天,當(dāng)各位從事學(xué)術(shù)研究的時(shí)候,你們會(huì)發(fā)現(xiàn):你們現(xiàn)在所走的學(xué)術(shù)道路與你們兒時(shí)的夢(mèng)想相差甚遠(yuǎn)。為什么?我們鉆入到一個(gè)狹窄的領(lǐng)域,我們?cè)谶M(jìn)行研究,但是這種研究并不能給我們帶來(lái)普遍的幸福

          于是在這一點(diǎn)上一個(gè)很關(guān)鍵的問(wèn)題出現(xiàn)了。我們就要問(wèn):這種情況是如何發(fā)生的?對(duì)于二十年前的中國(guó)知識(shí)分子而言,他們的存在首先代表了一種人文情懷。但是這種情況在今天已經(jīng)消失殆盡。今天的中國(guó)社會(huì)在一定程度上、或者說(shuō)今天的中國(guó)人和全世界的許許多多人,沒(méi)有兩三百年前的人更富有想象力,更能耐得住寂寞。今天的人們聽(tīng)任于娛樂(lè)的安排,我們上網(wǎng),聊天,看電視,然后有各種各樣的休閑手段。你如果寂寞的話,你會(huì)有一個(gè)各種各樣的方式去排除寂寞。叔本華說(shuō)過(guò)一句話 “孤獨(dú)是一種偉大的情感”,但是今天的人已經(jīng)甚少有一種真正的孤獨(dú)的感覺(jué)。大家有的是什么,是郁悶,對(duì)吧?我們有的是郁悶。但是對(duì)于今天的人們,更為可怕的是,今天中國(guó)的一部分知識(shí)分子,居然走上了模特在T字臺(tái)上所走的貓步。比如說(shuō)于丹,等等。正是在這一點(diǎn)上,我們看到:今天的知識(shí)分子已經(jīng)與一種作為知識(shí)分子本身的使命感相隔絕了。這種使命感是什么?我作為一個(gè)知識(shí)分子,我要去為國(guó)家而奉獻(xiàn)、犧牲。天下興旺,匹夫有責(zé)的中國(guó)古代人文精神在今天的知識(shí)分子中悄然消失了。所以,每當(dāng)我憶起起俄羅斯文學(xué)的時(shí)候,俄羅斯知識(shí)分子的那種流亡意識(shí)總是給予我深刻的印象和淚如泉涌的感動(dòng)。即一個(gè)知識(shí)分子,他可以拋棄生命中物質(zhì)的一切,也要保守某種精神生活。一旦人們承認(rèn)人的生活不是獸性的,而是文明的,那么他在世界中的生活本質(zhì)上講就應(yīng)該是一種精神生活。

          海德格爾曾經(jīng)說(shuō)過(guò):人是追求生活意義的生物。如果一個(gè)人在他的生活中找不到生命的意義,他寧愿去自殺,哪怕他的身邊全是面包。如果我們?cè)噲D理解這樣一句話,一個(gè)自然的問(wèn)題就會(huì)被立即提出:即這種生命的意義應(yīng)該如何去尋找?其實(shí)在人類(lèi)的啟蒙時(shí)代,就曾經(jīng)提到過(guò)這樣的問(wèn)題。即人類(lèi)在文明開(kāi)始之初,他們就已經(jīng)想到過(guò)一個(gè)人的生活必須有一種深刻的意義在其中。為什么,我們今天來(lái)想一下:如果我們認(rèn)為,我們出生之前的一切,和我們毫無(wú)關(guān)系,在我們死亡之后的一切,和我們也沒(méi)有任何關(guān)系。那么我們的生命是不是沒(méi)有任何意義,我們?cè)谑澜缰械纳罹椭皇O鲁院韧鏄?lè)。但是事實(shí)并不是如此。所以在東西方文明的早期,人們同時(shí)想到了同一個(gè)問(wèn)題:即在終極上,人的生活應(yīng)該是有意義的。從這一點(diǎn)出發(fā),東西方文明對(duì)于這樣一個(gè)絕對(duì)意義,想出了兩個(gè)不同的途徑,即起源于東方、盛行于西方的基督教文明和中國(guó)的儒學(xué)思想。在西方的基督教世界中,西方人認(rèn)為:倘若有一個(gè)絕對(duì)的上帝在我們中間,人生就可以獲得形而上學(xué)的意義。因?yàn)樵谶@刻,人們可以自然地產(chǎn)生一種超驗(yàn)之思。我們可以,把一個(gè)人的生活放到一個(gè)上帝的維度,因此人就有一個(gè)全能的上帝去審視字詞。在這時(shí),他就可以約束著我們。與此同時(shí),中國(guó)的儒家學(xué)派,將人的根本意義,集中到了禮教,倫理這一層面,這是一種脫離了行而上學(xué)的思辨。所以黑格爾在他的《哲學(xué)演講錄》的第一卷中就曾寫(xiě)過(guò):”中國(guó)沒(méi)有真正的哲學(xué),有的只是倫理學(xué)。”可悲的是,今天的中國(guó)人,還在信仰著以倫理為基礎(chǔ)的東西。我們有沒(méi)有深刻地思考過(guò),我們這種倫理,它的合理之處在哪里?也許這是我們需要真正思考的問(wèn)題。今天許多的中國(guó)學(xué)生,缺少一種獨(dú)立思考的精神,我在這里,我稱(chēng)其為一種精神,而不是一種能力,因?yàn)檫@本身非常重要,無(wú)法通過(guò)世俗教育去培養(yǎng)。在中國(guó)的儒家學(xué)派中,我們說(shuō)“不孝有三,無(wú)后為大”,“父母在,不遠(yuǎn)游,游必有方”,等等。我們也都知道,為了紀(jì)念投汨羅江自盡的現(xiàn)實(shí)主義詩(shī)人屈原,中國(guó)傳統(tǒng)中于是又了端午節(jié),并有了吃粽子、賽龍舟的習(xí)俗。我們稱(chēng)屈原是一個(gè)偉大的現(xiàn)實(shí)主義詩(shī)人。原因何在?不妨去讀屈原的《天問(wèn)》,他百思不得其解要問(wèn)的是什么?在我看來(lái),他問(wèn)核心的是在這樣一個(gè)以儒教為統(tǒng)治的國(guó)家中,王權(quán)的合法性在哪里。屈原最早認(rèn)識(shí)到了這一點(diǎn),對(duì)一個(gè)人而言,是一種非常痛苦的事實(shí)。因?yàn)橐粋€(gè)人生活在儒家思想中,卻不能為以這種思想為生活的合理性提供依據(jù)。今天的人們一方面去宣揚(yáng)儒教,一方面我們?nèi)ゼo(jì)念屈原,這不是一個(gè)非常可笑的事實(shí)嗎?我們拿著倫理不放,但我們今天的人們沒(méi)有真正地去思考,這種倫理的合理性在哪里?

          基督教文明從公元五世紀(jì)到十五世紀(jì),經(jīng)歷了漫長(zhǎng)的一千年中世紀(jì)。一千年后,歐洲迎來(lái)了文藝復(fù)興。與此同時(shí),近代的基督教社會(huì)有了一次又一次的改革。直到十九世紀(jì)末尼采“殺死”了上帝。尼采曾經(jīng)寫(xiě)過(guò)《查拉圖斯特拉如是說(shuō)》這本書(shū),有人說(shuō)這本書(shū)的出版把無(wú)數(shù)人的宗教信仰一勞永逸地消除了。尼采是種非常自信的人。他曾經(jīng)在一本書(shū)的前言中寫(xiě)到:我的書(shū)是為這個(gè)社會(huì)極少數(shù)的人寫(xiě)的,但在這極少數(shù)的人當(dāng)中,可能一個(gè)都還沒(méi)有出生。但尼采斷言,我的書(shū)終將名垂千古,載入史冊(cè)。晚年的尼采非常寂寞,在日記中他寫(xiě)道,在大街上,我想擁抱隨便哪一個(gè)人。寂寞之極,一八八九年尼采在都靈大街上抱住了一匹受馬夫虐待而發(fā)瘋的馬,尼采瘋了。二十世紀(jì)的曙光來(lái)臨之時(shí),尼采安靜地離開(kāi)了這個(gè)世界。

          尼采殺死上帝后,西方人的生活突然呈現(xiàn)了一種荒誕性。如果沒(méi)有一個(gè)人,沒(méi)有一種絕對(duì)的規(guī)則存在的話,人是可以胡作非為的,因?yàn)榻^對(duì)意義消失了。一旦絕對(duì)意義消失,那么人在在一個(gè)荒誕世界中的生活,其實(shí)很容易,吃喝玩樂(lè),僅此而已。但是一個(gè)知識(shí)分子,如果在一個(gè)荒誕的世界中,既要去承擔(dān)一種荒誕,并且要從荒誕中尋覓意義的話,這就非常困難。此時(shí),存在主義的興起為二十世紀(jì)人的生活的合理性提供準(zhǔn)則。我們以最著名的存在主義大師薩特為例:當(dāng)我們?nèi)タ此摹端司褪堑鬲z》這本書(shū)的時(shí)候,我們會(huì)發(fā)現(xiàn)一篇著名的文章,即《論五月風(fēng)暴》。在這篇文章中,薩特談?wù)摰氖且痪帕四耆蚍秶鷥?nèi)的學(xué)潮運(yùn)動(dòng)。薩特這樣寫(xiě)道:他們反了,他們要尋找一個(gè)他們自己的世界。而這個(gè)世界,在我們的年輕時(shí)代,也曾經(jīng)尋找過(guò)。但在我們年輕的時(shí)代,我們沒(méi)有去反抗。而今天,他們的反抗和我們年輕時(shí)候沉默的事實(shí),證明了在面對(duì)同一個(gè)制度的時(shí)候,他們的偉大和我們的渺小。通過(guò)這樣的方式人們發(fā)現(xiàn),在一個(gè)虛無(wú)的世界上,人的活動(dòng)就是成了人的意義本身

          而在今天的中國(guó)社會(huì),一個(gè)知識(shí)分子如何去創(chuàng)造他自己的意義?今天人們沒(méi)有,或者說(shuō)今天的中國(guó)人缺乏這樣的反思。有人問(wèn),中國(guó)的知識(shí)分子,中國(guó)的文學(xué)家,為什么沒(méi)有去拿諾貝爾文學(xué)獎(jiǎng)。或者有人問(wèn),中國(guó)的文學(xué)家,離諾貝爾獎(jiǎng)還有多遠(yuǎn)。在我看來(lái),這個(gè)問(wèn)題,我可以從這樣一個(gè)視角給出回答,就是在我們今天中國(guó)的作家——或者說(shuō)從魯迅開(kāi)始——所描寫(xiě)的生活,偏重于人的社會(huì)生活分析而沒(méi)有很深刻地剖析人的生存本質(zhì)。當(dāng)我們?nèi)プx馬爾克斯的《百年孤獨(dú)》,我們有一種人的孤寂和幻滅的感覺(jué)。甚至有人告訴我,他讀過(guò)之后有一種自殺的感覺(jué)。因?yàn)樵谀抢铮覀兛吹搅岁P(guān)于人謂之人的深刻反思。而今天的中國(guó)作家,中國(guó)的知識(shí)分子,缺乏這種反思。

           

          為什么這種反思尤其重要?黑格爾曾經(jīng)說(shuō)過(guò)這樣一句話“一個(gè)民族總要有一些仰望星空的人,這個(gè)民族才有希望。如果這個(gè)民族所有人都仰望腳下的事物,那么這個(gè)民族是沒(méi)有希望可言的。”今天中國(guó)社會(huì)的可怕在于我們太缺乏這樣的知識(shí)分子。這是一個(gè)民族的可悲。如果問(wèn)今天的中國(guó),有什么可以使我們低下頭顱來(lái),我認(rèn)為,在中國(guó)近三百年來(lái),我們沒(méi)有產(chǎn)生一個(gè)可以和西方的知識(shí)分子相抗衡的知識(shí)分子。我們沒(méi)有產(chǎn)生薩特這樣的人物。沒(méi)有產(chǎn)生康德,黑格爾,叔本華這樣的人物。甚至沒(méi)有產(chǎn)生加繆和福柯這樣的人物。這是一個(gè)民族的悲哀。每一個(gè)深刻思考過(guò)時(shí)代精神的知識(shí)分子都能意會(huì):夫物質(zhì)之文明,取諸他國(guó),不數(shù)十年而具矣,獨(dú)至精神上之趣味,非千百年之培養(yǎng),與一二天才之處,不及此。

          讓我們?nèi)徱暤乱庵久褡濉5聡?guó)有一個(gè)非常偉大的教育家——洪堡。他按照自己的教育思想,建立了洪堡大學(xué)。后來(lái),德國(guó)許許多多的大學(xué),都是按照他的模式建立起來(lái)的。在我讀本科的時(shí)候,這種思想,我們?nèi)澜缛匀皇撬氖芤嬲撸鞘鞘裁矗磕蔷褪顷P(guān)于教育之本質(zhì)的深刻理解。所有人你來(lái)德國(guó)學(xué)習(xí),學(xué)費(fèi)是全部免掉的。因?yàn)榻逃且环N事業(yè)。人并不是僅僅生活在現(xiàn)實(shí)生活中,人是一種歷史的被造物。置于一切歷史之下,教育便有了一種根本的意義,教育的目的是去塑造人。今天的中國(guó)之教育,中國(guó)的高等教育,把人淪為了一種工具。我們總是評(píng)論一所大學(xué)的畢業(yè)生中,有多少人去國(guó)企了,有多少人拿了高薪,當(dāng)一個(gè)高等學(xué)府用這個(gè)作為一種炫耀的資本的時(shí)候,我們便不得不承認(rèn):一種恢弘壯麗般教育從根本上墮落了。教育的目的是人,人是目的,不是工具。在洪堡的時(shí)代,洪堡幾乎是把所有的資源平均地用于教育。所以說(shuō)德國(guó)的大學(xué),他們的好與壞,并沒(méi)有中國(guó)的大學(xué)這么懸殊,也沒(méi)有美國(guó)的大學(xué)這樣懸殊。但是德國(guó),按照洪堡的思想,一個(gè)人去接受教育,那么這個(gè)教育的錢(qián)應(yīng)該是國(guó)家來(lái)付。今天的中國(guó)人,教育部部長(zhǎng)揚(yáng)言:教育不能產(chǎn)業(yè)化;但是從國(guó)家到地方,我們實(shí)際做地恰恰是教育的產(chǎn)業(yè)化。但是現(xiàn)在你去德國(guó)留學(xué)也是要學(xué)費(fèi)的,全世界已經(jīng)越來(lái)越美國(guó)化了。全世界已經(jīng)一起朝資本看齊的。

          這世界仍然有一些非常偉大的人。二十世紀(jì)有三個(gè)最偉大的知識(shí)分子:薩特,福柯和喬母斯基。我不知道在座的各位,有多少人知道這者的名字。有人說(shuō),二十世紀(jì)的人不知道福柯,就像十九世紀(jì)的人不知道馬克斯一樣。不能說(shuō)他是文盲,至少不能說(shuō)他是一個(gè)知識(shí)分子。我知道我身邊很多人都不知道福柯。我去年在西班牙。訪問(wèn)期間,我決定去法國(guó)掃福柯的墓。我問(wèn)了一個(gè)在西班牙生活多年的華人,他三歲的時(shí)候到了馬德里。我告訴他,我想去掃福柯的墓,但不知道福柯的墓在巴黎的什么地方。當(dāng)然我沒(méi)有這么直接地問(wèn),我先問(wèn)你知不知道福柯,因?yàn)槲抑乐袊?guó)的許許多多人都不知道福柯。他跟我說(shuō)了一句話,他說(shuō)“我也是讀過(guò)高中的人”。從這個(gè)很小的事情,我們可以看出在歐洲的教育中,仍然沒(méi)有忽略最核心的精神層面的培養(yǎng)。而這一塊,在今天的中國(guó),在我們呼喊素質(zhì)教育的時(shí)候,實(shí)際上已經(jīng)把教育庸俗化。教育的根本目的——人的精神力量的培養(yǎng)——在今天的中國(guó)已經(jīng)被完全忽略了。

          我現(xiàn)在指導(dǎo)四個(gè)本科生進(jìn)行研究工作。他們中的每個(gè)人都在學(xué)術(shù)領(lǐng)域嶄露頭角、甚至取得了令人矚目的成績(jī)。我時(shí)常告訴他們,這還不夠。一個(gè)學(xué)者從專(zhuān)業(yè)研究中獲得快樂(lè),但是一個(gè)思想者應(yīng)該懂得在學(xué)術(shù)中生活。思想者這一稱(chēng)謂的定義不是來(lái)自他的研究,而應(yīng)該首先來(lái)源他的生活。因?yàn)榻逃氖滓康氖桥囵B(yǎng)有思想的人,所以我們經(jīng)常閱讀中西方思想史,試圖理解與我們看似久遠(yuǎn)的西方文明。比如說(shuō),福柯有句話:“學(xué)校是監(jiān)獄和醫(yī)院的混合物”,這句話怎么理解?其實(shí)在福柯看來(lái),現(xiàn)在許許多多的人文科學(xué),諸如教育學(xué)、心理學(xué)、社會(huì)學(xué),它們不但不是真理,反而是一種權(quán)力、一種殺人的工具。比如說(shuō),再讓我們回望精神病學(xué),福柯在《瘋顛與文明》中探討了現(xiàn)代精神病的起源。在十六世紀(jì)之前,我們并不認(rèn)為精神病人是瘋子。我們甚至把他們作為一種可以預(yù)見(jiàn)未來(lái)的先知一樣看待。瘋子可以在大街上游走,并且受到人們的尊敬。這個(gè)可能是今天的人們所無(wú)法想象的。但是在五個(gè)世紀(jì)后,在我們所謂更加文明的社會(huì)當(dāng)中,他們?yōu)槭裁淳捅魂P(guān)進(jìn)了醫(yī)院呢?實(shí)際上,在一六五六年法國(guó)國(guó)王下了一條命令,就說(shuō)建立法國(guó)總醫(yī)院。法國(guó)總醫(yī)院的建立,并不是一個(gè)醫(yī)療機(jī)構(gòu)。它是一個(gè)訓(xùn)誡機(jī)構(gòu)。它要告訴人們:一個(gè)人要勤奮的工作,你如果不勤奮工作,就會(huì)和大街上的所有流浪漢和所謂的瘋子一樣,全部都關(guān)進(jìn)了這樣一個(gè)法國(guó)總醫(yī)院里。當(dāng)時(shí)法國(guó)總醫(yī)院的條件極為惡劣,許許多多的人住在一起,下面就是老鼠亂竄。于是,隨著麻風(fēng)病的消退,精神病人成為了社會(huì)唾棄的新對(duì)象。但是恰恰在于,今天的人們,我們不能說(shuō)我們是正常的,從而說(shuō)你們是非正常的。借福柯之言,現(xiàn)代人需要從他們的角度,去證明精神病人的合法性。但是我們發(fā)現(xiàn),在六百多年的歷史進(jìn)程當(dāng)中,人們文明的若干關(guān)鍵要素、或者說(shuō)現(xiàn)代文明,正是通過(guò)帕斯卡、梵高、尼采,這些所謂的非理性的人來(lái)建立的。但是我們要在他們這些瘋子面前,去證明我們的理性是正常的,這不是一個(gè)很可笑的事實(shí)嗎?

          現(xiàn)代人的精神,遠(yuǎn)遠(yuǎn)沒(méi)有以前人那樣純潔。現(xiàn)在人在精神層面上已經(jīng)墮落了。比如說(shuō),福柯有一句最為尖銳的話:“只要男人和男人的婚姻一天,現(xiàn)代文明就一天無(wú)從談起。”人們無(wú)法理解這樣一句話,因?yàn)榇蠹衣?tīng)到這句話的時(shí)候,大家往往首先想到的不是愛(ài)情,而是性。人們認(rèn)為,兩個(gè)男人和兩個(gè)男人在一起,這是很惡心的。人們首先不會(huì)去想到,兩個(gè)男人,只要兩個(gè)男人他們?cè)诰裆显谝黄穑敲催@種愛(ài)情就是高尚的。而這種愛(ài)情曾經(jīng)在古希臘曾經(jīng)發(fā)生過(guò)。在公元五世紀(jì)以前也曾經(jīng)有過(guò)。只是在今天,人們?cè)絹?lái)越強(qiáng)調(diào)物質(zhì),金錢(qián)和欲望的滿(mǎn)足。當(dāng)代社會(huì)諸如此類(lèi)的怪現(xiàn)狀還有很多。對(duì)于今天的中國(guó)的知識(shí)分子而言,我們應(yīng)該有許多深思,當(dāng)你仔細(xì)去想這個(gè)時(shí)代的時(shí)候,你會(huì)發(fā)現(xiàn)許多反常的現(xiàn)象。如果一代青年人還有一部分人去試圖改變這種現(xiàn)象,這個(gè)國(guó)家就會(huì)有希望;如果我們這一代人都試圖去迎合世俗,這個(gè)國(guó)家的精神風(fēng)貌就會(huì)停滯不前。我們的許多知識(shí)分子——我們姑且稱(chēng)他們?yōu)橹R(shí)分子——不再把教育作為一種神圣的職業(yè)來(lái)看待。他們開(kāi)始炒股,他們開(kāi)始開(kāi)公司。他們把學(xué)生作為一種免費(fèi)的勞動(dòng)力。一種非常神圣的師生關(guān)系,一種新貨相傳的思想之光,在今天墮落得一塌糊涂。他們向國(guó)家騙基金,幾十萬(wàn)或幾百萬(wàn),然后去做一些不痛不癢的學(xué)問(wèn)。更有甚者,少數(shù)知識(shí)分子一旦走上領(lǐng)導(dǎo)崗位,便扮演了政客的角色。管你學(xué)生好壞、是否才華出眾,老子嘴大說(shuō)得算。在復(fù)旦,這是多么大的悲哀。當(dāng)我憶及國(guó)父孫文先生的“天下為公,努力前程”的文字時(shí),我為這些人感到奇恥大辱。

          這就我們一個(gè)時(shí)代的悲哀,也是復(fù)旦的悲哀。但許許多多的人沒(méi)有看到這一點(diǎn)。我希望在復(fù)旦,在這樣一個(gè)很小的優(yōu)秀本科生當(dāng)中,在你們思考這些問(wèn)題的時(shí)候,你們要看到這一點(diǎn)。若干年后你們才會(huì)試圖去改變這一切。

          加謬在《西西弗斯神話》的開(kāi)篇就寫(xiě)道:“真正嚴(yán)肅的哲學(xué)問(wèn)題只有一個(gè),那就是人是否可以自殺。”為什么人他要探討這樣一個(gè)問(wèn)題?劉小楓在《拯救與逍遙》這本書(shū)中寫(xiě)道,與其讓這個(gè)世界以曖昧的方式贏,不如讓自己以肯定的方式輸。但是在今天,唯獨(dú)有意義的,是一種生活的創(chuàng)造。是我們可以把生活賦予一種真實(shí)的意義。這種真實(shí)的意義是通過(guò)知識(shí)分子的精神活動(dòng)來(lái)體現(xiàn)的。這種精神活動(dòng),在一個(gè)很低級(jí)的層面,正是我們所謂的,一日為師,一生為范。在一個(gè)很高級(jí)的層面來(lái)講,就是真真正正的知識(shí)分子的思想,他的精神能夠代代相傳。

          注定有人會(huì)被歷史的足跡所記錄。比如說(shuō)賈植芳先生。知識(shí)分子不能成為一種政府的附庸。知識(shí)分子一詞,本來(lái)就代表了一個(gè)人的精神事實(shí),我們中國(guó)的知識(shí)分子當(dāng)中,有賈植芳這樣的人,也有類(lèi)似郭沫若這樣的作家。一個(gè)人在生活當(dāng)中,他往往會(huì)向某些東西妥協(xié)。但是一個(gè)人的精神,他的視野,應(yīng)該是向這個(gè)天空的方向去了望。這樣一個(gè)民族才有希望。

          回到具體事情上來(lái),我來(lái)談優(yōu)秀本科生的專(zhuān)門(mén)培養(yǎng)。當(dāng)我去指導(dǎo)本科生的時(shí)候,有一次我和一個(gè)本科生聊天。我當(dāng)時(shí)我跟他說(shuō),我寢室里有兩百本書(shū),你隨便看,你看不出我是從事哪一個(gè)領(lǐng)域研究的。然后他告訴我,他寢室中也有兩百本書(shū)。我覺(jué)得這樣的人才是我欣賞的。首先你是一個(gè)有追求的人,其次你是一個(gè)在專(zhuān)業(yè)領(lǐng)域有所成績(jī)的人。但你一個(gè)人僅僅在專(zhuān)業(yè)領(lǐng)域有所成績(jī),你僅僅把發(fā)文章當(dāng)作一種目的的話,那么一個(gè)人,他生活的價(jià)值就會(huì)變得很少。曾經(jīng)有一個(gè)老師對(duì)我說(shuō),我們總是要把一些東西量化,所以我們博士畢業(yè),發(fā)表了多少篇SCI,這種量化就非常重要,因?yàn)樗芸陀^。我說(shuō),錯(cuò)!這種東西很客觀,恰恰是由于我們?nèi)狈α嗽S許多多能夠高瞻遠(yuǎn)矚的教育者,他認(rèn)為你是不是具有一種博士的胸懷,博士的研究能力。所以說(shuō)在今天,我們什么都能量化。一個(gè)學(xué)生的好壞,我們看GPA;一個(gè)國(guó)家的發(fā)展,我們看GDP;那么一個(gè)教授的好壞,我們看發(fā)了多少SCI/EI。這到底是現(xiàn)代人的一種文明呢?還是現(xiàn)代人的愚蠢。有個(gè)偉大的數(shù)學(xué)家叫做黎曼。他一生只發(fā)表了十八篇論文。還包括手稿。但那十八篇論文確是名垂青史。大家如果對(duì)于數(shù)學(xué)有稍微一些多的了解的話,就是說(shuō)當(dāng)代數(shù)學(xué)有個(gè)非常重要的難題——黎曼猜想,就是黎曼提出的。

          二十世紀(jì)之初,年僅三十八歲的希爾伯特在第二屆數(shù)學(xué)家大會(huì)發(fā)表了二十世紀(jì)人類(lèi)需要解決的二十三個(gè)數(shù)學(xué)難題。像希爾伯特這樣偉大的數(shù)學(xué)家,他曾經(jīng)說(shuō)過(guò)這樣一句話——請(qǐng)大家注意希爾伯特的用語(yǔ)——他說(shuō)如果我死后一千年能夠復(fù)活,那么我問(wèn)的第一個(gè)問(wèn)題就是黎曼猜想解決了沒(méi)有。與那個(gè)已逝的時(shí)代相比,現(xiàn)代人比的不是思想的深邃,比的是一個(gè)人在物質(zhì)上的富有,一個(gè)人帥不帥,我們輿論已經(jīng)為這些所左右。這是一個(gè)社會(huì)的悲哀,學(xué)者和大學(xué)的媚俗。但是大學(xué)的使命并不是如此。我曾經(jīng)和我的學(xué)生講過(guò)康德的《論教育》。你們很難想象康德這樣一個(gè)八十歲的單身漢,他的《教育學(xué)》會(huì)寫(xiě)得如此細(xì)膩,初讀起來(lái)仿佛有一種獨(dú)特的父愛(ài)在身邊。康德從嬰兒出生開(kāi)始寫(xiě)起。嬰兒出生的時(shí)候母親的乳房中總會(huì)流出一些透明的液體,我們翻譯成中文叫做初乳。是康德首先發(fā)問(wèn),這種初乳對(duì)于嬰兒是不是有益。因?yàn)樵谥斑@種初乳都是不要的。但康德首先問(wèn)這種東西是不是對(duì)嬰兒有益的。他認(rèn)為人類(lèi)總不會(huì)做無(wú)用功。還有,在嬰兒哭的時(shí)候,家長(zhǎng)總喜歡把嬰兒抱起來(lái),搖一搖,這樣把孩子不哭了。是康德首先發(fā)現(xiàn):嬰兒不哭這一表象的原因是由于成人的行為足以導(dǎo)致嬰兒的眩暈,就像我們看兒童坐木馬轉(zhuǎn)幾圈就暈了一樣,這對(duì)于他大腦的發(fā)展是非常不好的影響。康德從此寫(xiě)起,寫(xiě)到一個(gè)人的兒童教育,行為習(xí)慣的養(yǎng)成。然后,小學(xué)時(shí)的認(rèn)知教育,德育的教育,美育的教育,初中時(shí)的體育教育,青春期時(shí)的性教育,大學(xué)時(shí)的哲學(xué)教育,科學(xué)教育。

          除了康德,我們還可以列舉其他人。比如亞當(dāng)斯密,我們最熟悉他的書(shū)是《國(guó)富論》。但是他還寫(xiě)過(guò)一本道德哲學(xué)的經(jīng)典——《道德情操論》。這是一個(gè)道德倫理學(xué)的經(jīng)典之作。在今天的中國(guó)人,如果能夠產(chǎn)生這樣的知識(shí)分子,就至少代表了一個(gè)民族有一種很高貴的氣質(zhì)在里面。如果今天所有的知識(shí)分子都在作秀,那么這個(gè)民族就沒(méi)有希望。

          最后我要送給大家的是偉大神學(xué)家巴特的一句話。他在論述心愛(ài)的莫扎特的書(shū)中寫(xiě)道

          Das Schwere schwebt und das Leichte uwendlich schwer wieget

          生活是沉重之輕與輕之沉重

          posted @ 2009-06-30 15:17 小強(qiáng)摩羯座 閱讀(282) | 評(píng)論 (0)編輯 收藏

          方法一:在servlet的init()方法中緩存數(shù)據(jù)

            當(dāng)應(yīng)用服務(wù)器初始化servlet實(shí)例之后,為客戶(hù)端請(qǐng)求提供服務(wù)之前,它會(huì)調(diào)用這個(gè)servlet的init()方法。在一個(gè)servlet 的生命周期中,init()方法只會(huì)被調(diào)用一次。通過(guò)在init()方法中緩存一些靜態(tài)的數(shù)據(jù)或完成一些只需要執(zhí)行一次的、耗時(shí)的操作,就可大大地提高系統(tǒng)性能。

            例如,通過(guò)在init()方法中建立一個(gè)JDBC連接池是一個(gè)最佳例子,假設(shè)我們是用jdbc2.0的DataSource接口來(lái)取得數(shù)據(jù)庫(kù)連接,在通常的情況下,我們需要通過(guò)JNDI來(lái)取得具體的數(shù)據(jù)源。我們可以想象在一個(gè)具體的應(yīng)用中,如果每次SQL請(qǐng)求都要執(zhí)行一次JNDI查詢(xún)的話,那系統(tǒng)性能將會(huì)急劇下降。解決方法是如下代碼,它通過(guò)緩存DataSource,使得下一次SQL調(diào)用時(shí)仍然可以繼續(xù)利用它:

          以下是引用片段:
          public class ControllerServlet extends HttpServlet{
          private javax.sql.DataSource testDS = null;  
          public void init(ServletConfig config) throws ServletException {
          super.init(config);   
          Context ctx = null;  
          try{    
          ctx = new InitialContext();   
          testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");
          }catch(NamingException ne){ne.printStackTrace();}
          }catch(Exception e){e.printStackTrace();}
          } 
          public javax.sql.DataSource getTestDS(){ 
           return testDS; 
          } 
          ...
          ... 
          }


            方法 2:禁止servlet和JSP 自動(dòng)重載(auto-reloading)

            Servlet/JSP提供了一個(gè)實(shí)用的技術(shù),即自動(dòng)重載技術(shù),它為開(kāi)發(fā)人員提供了一個(gè)好的開(kāi)發(fā)環(huán)境,當(dāng)你改變servlet和JSP頁(yè)面后而不必重啟應(yīng)用服務(wù)器。然而,這種技術(shù)在產(chǎn)品運(yùn)行階段對(duì)系統(tǒng)的資源是一個(gè)極大的損耗,因?yàn)樗鼤?huì)給JSP引擎的類(lèi)裝載器(classloader)帶來(lái)極大的負(fù)擔(dān)。因此關(guān)閉自動(dòng)重載功能對(duì)系統(tǒng)性能的提升是一個(gè)極大的幫助。

            方法 3: 不要濫用HttpSession

            在很多應(yīng)用中,我們的程序需要保持客戶(hù)端的狀態(tài),以便頁(yè)面之間可以相互聯(lián)系。但不幸的是由于HTTP具有天生無(wú)狀態(tài)性,從而無(wú)法保存客戶(hù)端的狀態(tài)。因此一般的應(yīng)用服務(wù)器都提供了session來(lái)保存客戶(hù)的狀態(tài)。在JSP應(yīng)用服務(wù)器中,是通過(guò)HttpSession對(duì)像來(lái)實(shí)現(xiàn)session的功能的,但在方便的同時(shí),它也給系統(tǒng)帶來(lái)了不小的負(fù)擔(dān)。因?yàn)槊慨?dāng)你獲得或更新session時(shí),系統(tǒng)者要對(duì)它進(jìn)行費(fèi)時(shí)的序列化操作。你可以通過(guò)對(duì) HttpSession的以下幾種處理方式來(lái)提升系統(tǒng)的性能。

            如果沒(méi)有必要,就應(yīng)該關(guān)閉JSP頁(yè)面中對(duì)HttpSession的缺省設(shè)置。 如果你沒(méi)有明確指定的話,每個(gè)JSP頁(yè)面都會(huì)缺省地創(chuàng)建一個(gè)HttpSession。如果你的JSP中不需要使用session的話,那可以通過(guò)如下的JSP頁(yè)面指示符來(lái)禁止它:

          以下是引用片段:
          <%@ page session="false"%>


            不要在HttpSession中存放大的數(shù)據(jù)對(duì)像:如果你在HttpSession中存放大的數(shù)據(jù)對(duì)像的話,每當(dāng)對(duì)它進(jìn)行讀寫(xiě)時(shí),應(yīng)用服務(wù)器都將對(duì)其進(jìn)行序列化,從而增加了系統(tǒng)的額外負(fù)擔(dān)。你在HttpSession中存放的數(shù)據(jù)對(duì)像越大,那系統(tǒng)的性能就下降得越快。

            當(dāng)你不需要HttpSession時(shí),盡快地釋放它:當(dāng)你不再需要session時(shí),你可以通過(guò)調(diào)用 HttpSession.invalidate()方法來(lái)釋放它。盡量將session的超時(shí)時(shí)間設(shè)得短一點(diǎn):在JSP應(yīng)用服務(wù)器中,有一個(gè)缺省的 session的超時(shí)時(shí)間。當(dāng)客戶(hù)在這個(gè)時(shí)間之后沒(méi)有進(jìn)行任何操作的話,系統(tǒng)會(huì)將相關(guān)的session自動(dòng)從內(nèi)存中釋放。超時(shí)時(shí)間設(shè)得越大,系統(tǒng)的性能就會(huì)越低,因此最好的方法就是盡量使得它的值保持在一個(gè)較低的水平。

            方法 4: 將頁(yè)面輸出進(jìn)行壓縮

            壓縮是解決數(shù)據(jù)冗余的一個(gè)好的方法,特別是在網(wǎng)絡(luò)帶寬不夠發(fā)達(dá)的今天。有的瀏覽器支持gzip(GNU zip)進(jìn)行來(lái)對(duì)HTML文件進(jìn)行壓縮,這種方法可以戲劇性地減少HTML文件的下載時(shí)間。因此,如果你將servlet或JSP頁(yè)面生成的HTML頁(yè)面進(jìn)行壓縮的話,那用戶(hù)就會(huì)覺(jué)得頁(yè)面瀏覽速度會(huì)非常快。但不幸的是,不是所有的瀏覽器都支持gzip壓縮,但你可以通過(guò)在你的程序中檢查客戶(hù)的瀏覽器是否支持它。下面就是關(guān)于這種方法實(shí)現(xiàn)的一個(gè)代碼片段:

          以下是引用片段:
          public void doGet(HttpServletRequest request, HttpServletResponse response)
          throws IOException, ServletException {
          OutputStream out = null;
          String encoding = request.getHeader("Accept-Encoding");  
          if (encoding != null && encoding.indexOf("gzip") != -1){
          request.setHeader("Content-Encoding" , "gzip");  
          out = new GZIPOutputStream(request.getOutputStream());
          } 
          else if (encoding != null && encoding.indexOf("comdivss") != -1){
          request.setHeader("Content-Encoding" , "comdivss");  
          out = new ZIPOutputStream(request.getOutputStream());
          }else{  
          out = request.getOutputStream();
          } 
          ... 
          ... 
          }

            方法 5: 使用線程池

            應(yīng)用服務(wù)器缺省地為每個(gè)不同的客戶(hù)端請(qǐng)求創(chuàng)建一個(gè)線程進(jìn)行處理,并為它們分派service()方法,當(dāng)service()方法調(diào)用完成后,與之相應(yīng)的線程也隨之撤消。由于創(chuàng)建和撤消線程會(huì)耗費(fèi)一定的系統(tǒng)資源,這種缺省模式降低了系統(tǒng)的性能。但所幸的是我們可以通過(guò)創(chuàng)建一個(gè)線程池來(lái)改變這種狀況。

            另外,我們還要為這個(gè)線程池設(shè)置一個(gè)最小線程數(shù)和一個(gè)最大線程數(shù)。在應(yīng)用服務(wù)器啟動(dòng)時(shí),它會(huì)創(chuàng)建數(shù)量等于最小線程數(shù)的一個(gè)線程池,當(dāng)客戶(hù)有請(qǐng)求時(shí),相應(yīng)地從池從取出一個(gè)線程來(lái)進(jìn)行處理,當(dāng)處理完成后,再將線程重新放入到池中。如果池中的線程不夠地話,系統(tǒng)會(huì)自動(dòng)地增加池中線程的數(shù)量,但總量不能超過(guò)最大線程數(shù)。通過(guò)使用線程池,當(dāng)客戶(hù)端請(qǐng)求急劇增加時(shí),系統(tǒng)的負(fù)載就會(huì)呈現(xiàn)的平滑的上升曲線,從而提高的系統(tǒng)的可伸縮性。

            方法 6: 選擇正確的頁(yè)面包含機(jī)制

            在JSP中有兩種方法可以用來(lái)包含另一個(gè)頁(yè)面:

            1、使用include指示符

          以下是引用片段:
          <%@ includee file=”test.jsp” %>


            2、使用jsp指示符

          以下是引用片段:
          <jsp:includee page=”test.jsp” flush=”true”/>


            在實(shí)際中發(fā)現(xiàn),如果使用第一種方法的話,可以使得系統(tǒng)性能更高。

            方法 7:正確地確定javabean的生命周期

            JSP的一個(gè)強(qiáng)大的地方就是對(duì)javabean的支持。通過(guò)在JSP頁(yè)面中使用jsp:useBean標(biāo)簽,可以將javabean直接插入到一個(gè)JSP頁(yè)面中。它的使用方法如下:

          以下是引用片段:
          <jsp:useBean id="name" scope="page|request|session|application" 
          class="package.className" type="typeName">
          </jsp:useBean>


            其中scope屬性指出了這個(gè)bean的生命周期。缺省的生命周期為page。如果你沒(méi)有正確地選擇bean的生命周期的話,它將影響系統(tǒng)的性能。

            舉例來(lái)說(shuō),如果你只想在一次請(qǐng)求中使用某個(gè)bean,但你卻將這個(gè)bean的生命周期設(shè)置成了session,那當(dāng)這次請(qǐng)求結(jié)束后,這個(gè) bean將仍然保留在內(nèi)存中,除非session超時(shí)或用戶(hù)關(guān)閉瀏覽器。這樣會(huì)耗費(fèi)一定的內(nèi)存,并無(wú)謂的增加了JVM垃圾收集器的工作量。因此為bean 設(shè)置正確的生命周期,并在bean的使命結(jié)束后盡快地清理它們,會(huì)使用系統(tǒng)性能有一個(gè)提高。

            其它一些有用的方法

            1、在字符串連接操作中盡量不使用“+”操作符:在java編程中,我們常常使用“+”操作符來(lái)將幾個(gè)字符串連接起來(lái),但你或許從來(lái)沒(méi)有想到過(guò)它居然會(huì)對(duì)系統(tǒng)性能造成影響吧?由于字符串是常量,因此JVM會(huì)產(chǎn)生一些臨時(shí)的對(duì)像。你使用的“+”越多,生成的臨時(shí)對(duì)像就越多,這樣也會(huì)給系統(tǒng)性能帶來(lái)一些影響。解決的方法是用StringBuffer對(duì)像來(lái)代替“+”操作符。

            2、避免使用System.out.println()方法:由于System.out.println()是一種同步調(diào)用,即在調(diào)用它時(shí),磁盤(pán)I/O操作必須等待它的完成,因此我們要盡量避免對(duì)它的調(diào)用。但我們?cè)谡{(diào)試程序時(shí)它又是一個(gè)必不可少的方便工具,為了解決這個(gè)矛盾,我建議你最好使用 Log4j工具(http://Jakarta.apache.org ),它既可以方便調(diào)試,而不會(huì)產(chǎn)生System.out.println()這樣的方法。

            3、ServletOutputStream 與 PrintWriter的權(quán)衡:使用PrintWriter可能會(huì)帶來(lái)一些小的開(kāi)銷(xiāo),因?yàn)樗鼘⑺械脑驾敵龆嫁D(zhuǎn)換為字符流來(lái)輸出,因此如果使用它來(lái)作為頁(yè)面輸出的話,系統(tǒng)要負(fù)擔(dān)一個(gè)轉(zhuǎn)換過(guò)程。而使用ServletOutputStream作為頁(yè)面輸出的話就不存在一個(gè)問(wèn)題,但它是以二進(jìn)制進(jìn)行輸出的。因此在實(shí)際應(yīng)用中要權(quán)衡兩者的利弊。

            總結(jié)

            本文的目的是通過(guò)對(duì)servlet和JSP的一些調(diào)優(yōu)技術(shù)來(lái)極大地提高你的應(yīng)用程序的性能,并因此提升整個(gè)J2EE應(yīng)用的性能。通過(guò)這些調(diào)優(yōu)技術(shù),你可以發(fā)現(xiàn)其實(shí)并不是某種技術(shù)平臺(tái)(比如J2EE和.NET之爭(zhēng))決定了你的應(yīng)用程序的性能,重要是你要對(duì)這種平臺(tái)有一個(gè)較為深入的了解,這樣你才能從根本上對(duì)自己的應(yīng)用程序做一個(gè)優(yōu)化。

          posted @ 2009-06-17 21:53 小強(qiáng)摩羯座 閱讀(230) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共20頁(yè): First 上一頁(yè) 3 4 5 6 7 8 9 10 11 下一頁(yè) Last 
          主站蜘蛛池模板: 赤水市| 睢宁县| 蓝田县| 宣威市| 浮梁县| 永仁县| 如皋市| 舟曲县| 赣榆县| 长白| 锦屏县| 昭通市| 清丰县| 河北省| 韶关市| 兰考县| 堆龙德庆县| 同心县| 黔江区| 永登县| 平遥县| 珠海市| 盈江县| 新竹市| 贵港市| 商都县| 会昌县| 白沙| 宣化县| 宜黄县| 章丘市| 荔浦县| 普安县| 景东| 英超| 福海县| 皋兰县| 鹤庆县| 郑州市| 梅河口市| 永春县|