隨筆 - 50  文章 - 0  trackbacks - 0
          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          編者按:2008年8月4日,StackOverflow 網(wǎng)友 Bert F 發(fā)帖提問(wèn):哪本最具影響力的書(shū),是每個(gè)程序員都應(yīng)該讀的?

          “如果能時(shí)光倒流,回到過(guò)去,作為一個(gè)開(kāi)發(fā)人員,你可以告訴自己在職業(yè)生涯初期應(yīng)該讀一本, 你會(huì)選擇哪本書(shū)呢?我希望這個(gè)書(shū)單列表內(nèi)容豐富,可以涵蓋很多東西。”

          很多程序員響應(yīng),他們?cè)谕扑]時(shí)也寫(xiě)下自己的評(píng)語(yǔ)。 以前就有國(guó)內(nèi)網(wǎng)友介紹這個(gè)程序員書(shū)單,不過(guò)都是推薦數(shù) Top 10的書(shū)。

          其實(shí)除了前10本之外,推薦數(shù)前30左右的書(shū)籍都算經(jīng)典,筆者整理編譯這個(gè)問(wèn)答貼,同時(shí)摘譯部分推薦人的評(píng)語(yǔ)。

          下面就按照各本書(shū)的推薦數(shù)排列。

          1、《代碼大全》 史蒂夫·邁克康奈爾

          推薦數(shù):1684

          “優(yōu)秀的編程實(shí)踐的百科全書(shū),《代碼大全》注重個(gè)人技術(shù),其中所有東西加起來(lái), 就是我們本能所說(shuō)的“編寫(xiě)整潔的代碼”。這本書(shū)有50頁(yè)在談?wù)摯a布局。” —— Joel Spolsky

          對(duì)于新手來(lái)說(shuō),這本書(shū)中的觀念有點(diǎn)高階了。到你準(zhǔn)備閱讀此書(shū)時(shí),你應(yīng)該已經(jīng)知道并實(shí)踐過(guò)書(shū)中99%的觀念。– esac

          Steve McConnell的原作《代碼大全》(第1版)是公認(rèn)的關(guān)于編程的最佳實(shí)踐指南之一, 在過(guò)去的十多年間,本書(shū)一直在幫助開(kāi)發(fā)人員編寫(xiě)更好的軟件。

          現(xiàn)在,作者將這本經(jīng)典著作全新演繹,融入了最前沿的實(shí)踐技術(shù),加入了上百個(gè)嶄新的代碼示例, 充分展示了軟件構(gòu)建的藝術(shù)性和科學(xué)性。 McConnell匯集了來(lái)自研究機(jī)構(gòu)、學(xué)術(shù)界以及業(yè)界日常實(shí)踐的主要知識(shí), 把最高效的技術(shù)和最重要的原理交織融會(huì)為這本既清晰又實(shí)用的指南。

          無(wú)論您的經(jīng)驗(yàn)水平如何,也不管您在怎樣的開(kāi)發(fā)環(huán)境中工作,也無(wú)論項(xiàng)目是大是小, 本書(shū)都將激發(fā)您的思維并幫助您構(gòu)建高品質(zhì)的代碼。

          代碼大全(第2版))》做了全面的更新,增加了很多與時(shí)俱進(jìn)的內(nèi)容,包括對(duì)新語(yǔ)言、新的開(kāi)發(fā)過(guò)程與方法論的討論等等。

          2、《程序員修煉之道

          推薦數(shù):1504

          對(duì)于那些已經(jīng)學(xué)習(xí)過(guò)編程機(jī)制的程序員來(lái)說(shuō),這是一本卓越的書(shū)。 或許他們還是在校生,但對(duì)要自己做什么,還感覺(jué)不是很安全。

          就像草圖和架構(gòu)之間的差別。雖然你在學(xué)校課堂上學(xué)到的是畫(huà)圖,你也可以畫(huà)的很漂亮, 但如果你覺(jué)得你不太知道從哪兒下手,如果某人要你獨(dú)自畫(huà)一個(gè)P2P的音樂(lè)交換網(wǎng)絡(luò)圖,那這本書(shū)就適合你了。—— Joel

          《程序員修煉之道:從小工到專家》內(nèi)容簡(jiǎn)介:《程序員修煉之道》由一系列獨(dú)立的部分組成, 涵蓋的主題從個(gè)人責(zé)任、職業(yè)發(fā)展,知道用于使代碼保持靈活、并且易于改編和復(fù)用的各種架構(gòu)技術(shù), 利用許多富有娛樂(lè)性的奇聞?shì)W事、有思想性的例子及有趣的類比, 全面闡釋了軟件開(kāi)發(fā)的許多不同方面的最佳實(shí)踐和重大陷阱。

          無(wú)論你是初學(xué)者,是有經(jīng)驗(yàn)的程序員,還是軟件項(xiàng)目經(jīng)理,《程序員修煉之道:從小工到專家》都適合你閱讀。

          3、《計(jì)算機(jī)程序的構(gòu)造和解釋

          推薦數(shù):916

          就個(gè)人而言,這本書(shū)目前為止對(duì)我影響醉倒的一本編程書(shū)。

          《代碼大全》、《重構(gòu)》和《設(shè)計(jì)模式》這些經(jīng)典書(shū)會(huì)教給你高效的工作習(xí)慣和交易細(xì)節(jié)。 其他像《人件集》、《計(jì)算機(jī)編程心理學(xué)》和《人月神話》這些書(shū)會(huì)深入軟件開(kāi)發(fā)的心理層面。 其他書(shū)籍則處理算法。這些書(shū)都有自己所屬的位置。

          然而《計(jì)算機(jī)程序的構(gòu)造和解釋》與這些不同。 這是一本會(huì)啟發(fā)你的書(shū),它會(huì)燃起你編寫(xiě)出色程序的熱情; 它還將教會(huì)你認(rèn)識(shí)并欣賞美; 它會(huì)讓你有種敬畏,讓你難以抑制地渴望學(xué)習(xí)更多的東西。

          其他書(shū)或許會(huì)讓你成為一位更出色的程序員,但此書(shū)將一定會(huì)讓你成為一名程序員。

          同時(shí),你將會(huì)學(xué)到其他東西,函數(shù)式編程(第三章)、惰性計(jì)算、元編程、虛擬機(jī)、解釋器和編譯器。

          一些人認(rèn)為此書(shū)不適合新手。 個(gè)人認(rèn)為,雖然我并不完全認(rèn)同要有一些編程經(jīng)驗(yàn)才能讀此書(shū),但我還是一定推薦給初學(xué)者。 畢竟這本書(shū)是寫(xiě)給著名的6.001,是麻省理工學(xué)院的入門(mén)編程課程。 此書(shū)或許需要多做努力(尤其你在做練習(xí)的時(shí)候,你也應(yīng)當(dāng)如此),但這個(gè)價(jià)是對(duì)得起這本書(shū)的。

          4、《C程序設(shè)計(jì)語(yǔ)言

          推薦數(shù):774

          這本書(shū)簡(jiǎn)潔易讀,會(huì)教給你三件事:C 編程語(yǔ)言;如何像程序員一樣思考;底層計(jì)算模型。 (這對(duì)理解“底層”非常重要)—— Nathan

          《C程序設(shè)計(jì)語(yǔ)言》(第2版新版)講述深入淺出,配合典型例證,通俗易懂,實(shí)用性強(qiáng), 適合作為大專院校計(jì)算機(jī)專業(yè)或非計(jì)算機(jī)專業(yè)的C語(yǔ)言教材,也可以作為從事計(jì)算機(jī)相關(guān)軟硬件開(kāi)發(fā)的技術(shù)人員的參考書(shū)。

          《C程序設(shè)計(jì)語(yǔ)言》(第2版新版)原著即為C語(yǔ)言的設(shè)計(jì)者之一Dennis M.Ritchie和著名的計(jì)算機(jī)科學(xué)家Brian W.Kernighan合著的 一本介紹C語(yǔ)言的權(quán)威經(jīng)典著作。 我們現(xiàn)在見(jiàn)到的大量論述C語(yǔ)言程序設(shè)計(jì)的教材和專著均以此書(shū)為藍(lán)本。 原著第1版中介紹的C語(yǔ)言成為后來(lái)廣泛使用的C語(yǔ)言版本——標(biāo)準(zhǔn)C的基礎(chǔ)。

          人們熟知的“hello,world”程序就是由本書(shū)首次引入的,現(xiàn)在,這一程序已經(jīng)成為所有程序設(shè)計(jì)語(yǔ)言入門(mén)的第一課。

          5、《算法導(dǎo)論

          推薦數(shù):671

          《代碼大全》教你如何正確編程; 《人月神話》教你如何正確管理; 《設(shè)計(jì)模式》教你如何正確設(shè)計(jì)……

          在我看來(lái),代碼只是一個(gè)工具,并非精髓。 開(kāi)發(fā)軟件的主要部分是創(chuàng)建新算法或重新實(shí)現(xiàn)現(xiàn)有算法。 其他部分則像重新組裝樂(lè)高磚塊或創(chuàng)建“管理”層。

          我依然夢(mèng)想這樣的工作,我的大部分時(shí)間(>50%)是在寫(xiě)算法,其他“管理”細(xì)節(jié)則留給其他人…… —— Ran Biron

          • 經(jīng)典的算法書(shū),被亞馬遜網(wǎng),《程序員》等評(píng)選為2006年最受讀者喜愛(ài)的十大IT圖書(shū)之一。
          • 算法領(lǐng)域的標(biāo)準(zhǔn)教材,全球多所知名大學(xué)選用
          • MIT名師聯(lián)手鑄就,被譽(yù)為“計(jì)算機(jī)算法的圣經(jīng)”
          • 編寫(xiě)上采用了“五個(gè)一”,即一章介紹一個(gè)算法、一種設(shè)計(jì)技術(shù)、一個(gè)應(yīng)用領(lǐng)域和一個(gè)相關(guān)話題。

          6、《重構(gòu):改善既有代碼的設(shè)計(jì)

          推薦數(shù):617

          《重構(gòu):改善既有代碼的設(shè)計(jì)》清晰地揭示了重構(gòu)的過(guò)程,解釋了重構(gòu)的原理和最佳實(shí)踐方式, 并給出了何時(shí)以及何地應(yīng)該開(kāi)始挖掘代碼以求改善。 書(shū)中給出了70多個(gè)可行的重構(gòu),每個(gè)重構(gòu)都介紹了一種經(jīng)過(guò)驗(yàn)證的代碼變換手法的動(dòng)機(jī)和技術(shù)。

          《重構(gòu):改善既有代碼的設(shè)計(jì)》提出的重構(gòu)準(zhǔn)則將幫助你一次一小步地修改你的代碼,從而減少了開(kāi)發(fā)過(guò)程中的風(fēng)險(xiǎn)。

          《重構(gòu):改善既有代碼的設(shè)計(jì)》適合軟件開(kāi)發(fā)人員、項(xiàng)目管理人員等閱讀, 也可作為高等院校計(jì)算機(jī)及相關(guān)專業(yè)師生的參考讀物。

          我想我不得不推薦《重構(gòu)》:改進(jìn)現(xiàn)有代碼的設(shè)計(jì)。—— Martin

          我必須承認(rèn),我最喜歡的編程語(yǔ)錄是出自這本書(shū):任何一個(gè)傻瓜都能寫(xiě)出計(jì)算機(jī)能理解的程序, 而優(yōu)秀的程序員卻能寫(xiě)出別人能讀得懂的程序。—— Martin Fowler

          7、《設(shè)計(jì)模式

          推薦數(shù):617

          自1995年出版以來(lái),本書(shū)一直名列Amazon和各大書(shū)店銷售榜前列。 近10年后,本書(shū)仍是Addison-Wesley公司2003年最暢銷的圖書(shū)之一。 中文版銷售逾4萬(wàn)冊(cè)。

          就我而言,我認(rèn)為四人幫編著的《設(shè)計(jì)模式》是一本極為有用的書(shū)。 雖然此書(shū)并不像其他建議一樣有關(guān)“元”編程,但它強(qiáng)調(diào)封裝諸如模式一類的優(yōu)秀編程技術(shù), 因而鼓勵(lì)其他人提出新模式和反模式(antipatterns),并運(yùn)用于編程對(duì)話中。—— Chris Jester-Young

          8、《人月神話

          推薦數(shù):588

          在軟件領(lǐng)域,很少能有像《人月神話》一樣具有深遠(yuǎn)影響力并且暢銷不衰的著作。

          Brooks博士為人們管理復(fù)雜項(xiàng)目提供了最具洞察力的見(jiàn)解。 既有很多發(fā)人深省的觀點(diǎn),又有大量軟件工程的實(shí)踐。 本書(shū)內(nèi)容來(lái)自Brooks博士在IBM公司System/360家族和OS/360中的項(xiàng)目管理經(jīng)驗(yàn)。

          該書(shū)英文原版一經(jīng)面世,即引起業(yè)內(nèi)人士的強(qiáng)烈反響,后又譯為德、法、日、俄中等多種語(yǔ)言,全球銷量數(shù)百萬(wàn)冊(cè)。 確立了其在行業(yè)內(nèi)的經(jīng)典地位。

          9、《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)

          推薦數(shù):542

          《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》系列著作對(duì)計(jì)算機(jī)領(lǐng)域產(chǎn)生了深遠(yuǎn)的影響。 這一系列堪稱一項(xiàng)浩大的工程,自1962年開(kāi)始編寫(xiě),計(jì)劃出版7卷,目前已經(jīng)出版了4卷。

          《美國(guó)科學(xué)家》雜志曾將這套書(shū)與愛(ài)因斯坦的《相對(duì)論》等書(shū)并列稱為20世紀(jì)最重要的12本物理學(xué)著作。 目前Knuth正將畢生精力投入到這部史詩(shī)性著作的撰寫(xiě)中。

          這是高德納傾注心血寫(xiě)的一本書(shū)。—— Peter Coulton

          10、《編譯原理》(龍書(shū))

          推薦數(shù):462

          我很奇怪,居然沒(méi)人提到龍書(shū)。(或許已有推薦,我沒(méi)有看到)。 我從沒(méi)忘過(guò)此書(shū)的第一版封面。 此書(shū)讓我知道了編譯器是多么地神奇絕妙。- DB

          11、《深入淺出設(shè)計(jì)模式

          推薦數(shù):445

          強(qiáng)大的寫(xiě)作陣容。

          • 《Head First設(shè)計(jì)模式》(中文版) 作者Eric Freeman;
          • ElElisabeth Freeman是作家、講師和技術(shù)顧問(wèn)。
          • Eric擁有耶魯大學(xué)的計(jì)算機(jī)科學(xué)博士學(xué)位,E1isabath擁有耶魯大學(xué)的計(jì)算機(jī)科學(xué)碩士學(xué)位。
          • Kathy Sierra(javaranch.com的創(chuàng)始人)FHBert Bates是暢銷的HeadFirst系列書(shū)籍的創(chuàng)立者,也是Sun公司Java開(kāi)發(fā)員認(rèn)證考試的開(kāi)發(fā)者。

          本書(shū)的產(chǎn)品設(shè)計(jì)應(yīng)用神經(jīng)生物學(xué)、認(rèn)知科學(xué),以及學(xué)習(xí)理論,這使得這本書(shū)能夠?qū)⑦@些知識(shí)深深地印在你的腦海里, 不容易被遺忘。

          本書(shū)的編寫(xiě)方式采用引導(dǎo)式教學(xué),不直接告訴你該怎么做,而是利用故事當(dāng)作引子,帶領(lǐng)讀者思考并想辦法解決問(wèn)題。 解決問(wèn)題的過(guò)程中又會(huì)產(chǎn)生一些新的問(wèn)題,再繼續(xù)思考、繼續(xù)解決問(wèn)題,這樣可以加深體會(huì)。

          作者以大量的生活化故事當(dāng)背景,例如第1章是鴨子,第2章是氣象站,第3章是咖啡店, 書(shū)中搭配大量的插圖(幾乎每一頁(yè)都有圖),所以閱讀起來(lái)生動(dòng)有趣,不會(huì)感覺(jué)到昏昏欲睡。

          作者還利用歪歪斜斜的手寫(xiě)字體,增加“現(xiàn)場(chǎng)感”。 精心設(shè)計(jì)許多爆笑的對(duì)白,讓學(xué)習(xí)過(guò)程不會(huì)太枯燥。 還有模式告白節(jié)目,將設(shè)計(jì)模式擬人化成節(jié)目來(lái)賓,暢談其內(nèi)在的一切。 每一章都有數(shù)目不等的測(cè)驗(yàn)題。 每章最后有一頁(yè)要點(diǎn)整理,這也是精華所在,我都是利用這一頁(yè)做復(fù)習(xí)。

          我知道四人幫的《設(shè)計(jì)模式》是一本標(biāo)準(zhǔn)書(shū),但倒不如先看看這部大部頭,此書(shū)更為簡(jiǎn)易。 一旦你了解了解了基本原則,可以去看四人幫的那本圣經(jīng)了。- Calanus

          12、《哥德?tīng)枴釥枴秃諘?shū):集異璧之大成

          推薦數(shù):437

          如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(dá)(Douglas Hofstadter)的《哥德?tīng)枴釥枴秃諘?shū)》。 他極為深入研究了程序員每日都要面對(duì)的問(wèn)題:遞歸、驗(yàn)證、證明和布爾代數(shù)。 這是一本很出色的讀物,難度不大,偶爾有挑戰(zhàn),一旦你要鏖戰(zhàn)到底,將是非常值得的。 – Jonik

          13、《代碼整潔之道

          推薦數(shù):329

          細(xì)節(jié)之中自有天地,整潔成就卓越代碼

          盡管糟糕的代碼也能運(yùn)行,但如果代碼不整潔,會(huì)使整個(gè)開(kāi)發(fā)團(tuán)隊(duì)泥足深陷, 寫(xiě)得不好的代碼每年都要耗費(fèi)難以計(jì)數(shù)的時(shí)間和資源。 然而這種情況并非無(wú)法避免。

          著名軟件專家RoberfC.Marlin在《代碼整潔之道》中為你呈現(xiàn)出了革命性的視野。 Martin攜同ObjectMetltor公司的同事,從他們有關(guān)整潔代碼的最佳敏捷實(shí)踐中提煉出軟件技藝的價(jià)值觀, 以饗讀者,讓你成為更優(yōu)秀的程序員——只要你著手研讀《代碼整潔之道》。

          閱讀《代碼整潔之道》需要你做些什么呢?你將閱讀代碼——大量代碼。 《代碼整潔之道》促使你思考代碼中何謂正確,何謂錯(cuò)誤。 更重要的是,《代碼整潔之道》將促使你重新評(píng)估自己的專業(yè)價(jià)值觀,以及對(duì)自己技藝的承諾。

          從《代碼整潔之道》中可以學(xué)到:

          • 好代碼和糟糕的代碼之間的區(qū)別;
          • 如何編寫(xiě)好代碼,如何將糟糕的代碼轉(zhuǎn)化為好代碼;
          • 如何創(chuàng)建好名稱、好函數(shù)、好對(duì)象和好類;
          • 如何格式化代碼以實(shí)現(xiàn)其可讀性的最大化;
          • 如何在不妨礙代碼邏輯的前提下充分實(shí)現(xiàn)錯(cuò)誤處理;
          • 如何進(jìn)行單元測(cè)試和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。

          雖然《代碼整潔之道》和《代碼大全》有很多共同之處,但它有更為簡(jiǎn)潔更為實(shí)際的清晰例子。 – Craig P. Motlin

          14、《Effective C++》和《More Effective C++

          推薦數(shù):297

          在我職業(yè)生涯早期,Scott Meyer的《Effective C++》和后續(xù)的《More Effective C++》都對(duì)我的編程能力有著直接影響。 正如當(dāng)時(shí)的一位朋友所說(shuō),這些書(shū)縮短你培養(yǎng)編程技能的過(guò)程,而其他人可能要花費(fèi)數(shù)年。

          去年對(duì)我影響最大的一本書(shū)是《大教堂與市集》,該書(shū)教會(huì)我很有關(guān)開(kāi)源開(kāi)發(fā)過(guò)程如何運(yùn)作,和如何處理我代碼中的Bug。 – John Channing

          15、《編程珠璣

          推薦數(shù):282

          多年以來(lái),當(dāng)程序員們推選出最心愛(ài)的計(jì)算機(jī)圖書(shū)時(shí),《編程珠璣》總是位列前列。 正如自然界里珍珠出自細(xì)沙對(duì)牡蠣的磨礪,計(jì)算機(jī)科學(xué)大師Jon Bentley以其獨(dú)有的洞察力和創(chuàng)造力, 從磨礪程序員的實(shí)際問(wèn)題中凝結(jié)出一篇篇不朽的編程“珠璣”, 成為世界計(jì)算機(jī)界名刊《ACM通訊》歷史上最受歡迎的專欄, 最終結(jié)集為兩部不朽的計(jì)算機(jī)科學(xué)經(jīng)典名著,影響和激勵(lì)著一代又一代程序員和計(jì)算機(jī)科學(xué)工作者。

          本書(shū)為第一卷,主要討論計(jì)算機(jī)科學(xué)中最本質(zhì)的問(wèn)題:如何正確選擇和高效地實(shí)現(xiàn)算法。

          盡管我不得不羞愧地承認(rèn),書(shū)中一半的東西我都沒(méi)有理解,但我真的推薦《編程珠璣》,書(shū)中有些令人驚奇的東西。 – Matt Warren

          16、《修改代碼的藝術(shù)》by Michael Feathers

          本書(shū)是繼《重構(gòu)》和《重構(gòu)與模式》之后探討修改代碼技術(shù)的又一里程碑式的著作, 而且從涵蓋面和深度上都超過(guò)了前兩部經(jīng)典。 書(shū)中不僅講述面向?qū)ο笳Z(yǔ)言(Java、C#和C++)代碼,也有專章討論C這樣的過(guò)程式語(yǔ)言。

          作者將理解、測(cè)試和修改代碼的原理、技術(shù)和最新工具(自動(dòng)化重構(gòu)工具、單元測(cè)試框架、仿對(duì)象、集成測(cè)試框架等), 與解依賴技術(shù)和大量開(kāi)發(fā)和設(shè)計(jì)優(yōu)秀代碼的原則、最佳實(shí)踐相結(jié)合,許多內(nèi)容非常深入,而且常常發(fā)前人所未發(fā)。

          書(shū)中處處體現(xiàn)出作者獨(dú)到的洞察力,以及多年開(kāi)發(fā)和指導(dǎo)軟件項(xiàng)目所積累的豐富經(jīng)驗(yàn)和深厚功力。 通過(guò)這部集大成之作,你不僅能掌握最頂尖的修改代碼技術(shù),還可以大大提高對(duì)代碼和軟件開(kāi)發(fā)的領(lǐng)悟力。

          我認(rèn)為沒(méi)有任何一本書(shū)能向這本書(shū)一樣影響了我的編程觀點(diǎn)。 它明確地告訴你如何處理其他人的代碼,含蓄地教會(huì)你避免哪些(以及為什么要避免)。- Wolfbyte

          同意。很多開(kāi)發(fā)人員討論用干凈的石板來(lái)編寫(xiě)軟件。 但我想幾乎所有開(kāi)發(fā)人員的某些時(shí)候是在吃其他開(kāi)發(fā)人員的狗食。– Bernard Dy

          17、《編碼:隱匿在計(jì)算機(jī)軟硬件背后的語(yǔ)言

          這是一本講述計(jì)算機(jī)工作原理的書(shū)。

          不過(guò),你千萬(wàn)不要因?yàn)?#8220;工作原理”之類的字眼就武斷地認(rèn)為,它是晦澀而難懂的。 作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會(huì)感到枯燥和生硬。 更重要的是,你會(huì)因此而獲得對(duì)計(jì)算機(jī)工作原理較深刻的理解。 這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜于“電氣工程師”和“程序員”的理解。

          不管你是計(jì)算機(jī)高手,還是對(duì)這個(gè)神奇的機(jī)器充滿敬畏之心的菜鳥(niǎo), 都不妨翻閱一下《編碼:隱匿在計(jì)算機(jī)軟硬件背后的語(yǔ)言》,讀一讀大師的經(jīng)典作品,必然會(huì)有收獲。

          我推薦Charles Petzold的《編碼》。 在這個(gè)充滿工具和IDE的年代,很多復(fù)雜度已經(jīng)從程序員那“抽取”走了,這本書(shū)一本開(kāi)眼之作。 – hemil

          18、《禪與摩托車(chē)維修藝術(shù) / Zen and the Art of Motorcycle Maintenance

          對(duì)我影響最大的那本書(shū)是 Robert Pirsig 的《禪與摩托車(chē)維修藝術(shù)》。 不管你做什么事,總是要力求完美,徹底了解你手中的工具和任務(wù),更為重要的是, 要有樂(lè)趣(因?yàn)槿绻阕鍪掠袠?lè)趣,一切將自發(fā)引向更好的結(jié)果)。 – akr

          19、《Peopleware / 人件集:人性化的軟件開(kāi)發(fā)

          Demarco 和 Lister 表明,軟件開(kāi)發(fā)中的首要問(wèn)題是人,并非技術(shù)。 他們的答案并不簡(jiǎn)單,只是令人難以置信的成功。 第二版新增加了八章內(nèi)容。 – Eduardo Molteni

          20、《Coders at Work / 編程人生

          這是一本訪談筆錄,記錄了當(dāng)今最具個(gè)人魅力的15位軟件先驅(qū)的編程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在內(nèi)的業(yè)界傳奇人物,為我們講述了 他們是怎么學(xué)習(xí)編程的,在編程過(guò)程中發(fā)現(xiàn)了什么以及他們對(duì)未來(lái)的看法, 并對(duì)諸如應(yīng)該如何設(shè)計(jì)軟件等長(zhǎng)久以來(lái)一直困擾很多程序員的問(wèn)題談了自己的觀點(diǎn)。

          一本非常有影響力的書(shū),可以從中學(xué)到一些業(yè)界頂級(jí)人士的經(jīng)驗(yàn),了解他們?nèi)绾嗡伎疾⒐ぷ鳌?– Jahanzeb Farooq

          21、《Surely You’re Joking, Mr. Feynman! / 別鬧了,費(fèi)曼先生!》

          雖然這本書(shū)可能有點(diǎn)偏題,但不管你信不信,這本書(shū)曾在計(jì)算機(jī)科學(xué)專業(yè)課程的閱讀列表之上。 一個(gè)優(yōu)秀的角色模型,一本有關(guān)好奇心的優(yōu)秀書(shū)籍。 – mike511

          22、《Effective Java 中文版

          此書(shū)第二版教你如何編寫(xiě)漂亮并高效的代碼,雖然這是一本Java書(shū),但其中有很多跨語(yǔ)言的理念。 – Marcio Aguiar

          23、《Patterns of Enterprise Application Architecture / 企業(yè)應(yīng)用架構(gòu)模式

          很奇怪,還沒(méi)人推薦 Martin Fowler 的《企業(yè)應(yīng)用架構(gòu)模式》- levi rosol

          24、《The Little Schemer》和《The Seasoned Schemer》 nmiranda

          這兩本是LISP的英文書(shū),尚無(wú)中文版。 美國(guó)東北大學(xué)網(wǎng)站上也有電子版。

          25、《交互設(shè)計(jì)之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》該書(shū)作者:Alan Cooper,人稱Visual Basic之父,交互設(shè)計(jì)之父。

          本書(shū)是基于眾多商務(wù)案例,講述如何創(chuàng)建更好的、高客戶忠誠(chéng)度的軟件產(chǎn)品和基于軟件的高科技產(chǎn)品的書(shū)。 本書(shū)列舉了很多真實(shí)可信的實(shí)際例子,說(shuō)明目前在軟件產(chǎn)品和基于軟件的高科技產(chǎn)品中,普遍存在著“難用”的問(wèn)題。

          作者認(rèn)為,“難用”問(wèn)題是由這些產(chǎn)品中存在著的高度“認(rèn)知摩擦”引起的, 而產(chǎn)生這個(gè)問(wèn)題的根源在于現(xiàn)今軟件開(kāi)發(fā)過(guò)程中欠缺了一個(gè)為用戶利益著想的前期“交互設(shè)計(jì)”階段。 “難用”的產(chǎn)品不僅損害了用戶的利益,最終也將導(dǎo)致企業(yè)的失敗。

          本書(shū)通過(guò)一些生動(dòng)的實(shí)例,讓人信服地講述了由作者倡導(dǎo)的“目標(biāo)導(dǎo)向”交互設(shè)計(jì)方法在解決“難用”問(wèn)題方面的有效性, 證實(shí)了只有改變現(xiàn)有觀念,才能有效地在開(kāi)發(fā)過(guò)程中引入交互設(shè)計(jì),將產(chǎn)品的設(shè)計(jì)引向成功。

          本書(shū)雖然是一本面向商務(wù)人員而編寫(xiě)的書(shū),但也適合于所有參與軟件產(chǎn)品和基于軟件的高科技產(chǎn)品開(kāi)發(fā)的專業(yè)人士, 以及關(guān)心軟件行業(yè)和高科技行業(yè)現(xiàn)狀與發(fā)展的人士閱讀。

          他還有另一本中文版著作:《About Face 3 交互設(shè)計(jì)精髓》

          26、《Why’s (Poignant) Guide to Ruby 》

          如果你不是程序員,閱讀此書(shū)可能會(huì)很有趣,但如果你已經(jīng)是個(gè)程序員,可能會(huì)有點(diǎn)乏味。

          27、《Unix編程藝術(shù)》

          It is useful regardless operating system you use. – J.F. Sebastian

          不管你使用什么操作系統(tǒng),這本書(shū)都很有用。 – J.F. Sebastian

          28、《高效程序員的45個(gè)習(xí)慣:敏捷開(kāi)發(fā)修煉之道

          45個(gè)習(xí)慣,分為7個(gè)方面:工作態(tài)度、學(xué)習(xí)、軟件交付、反饋、編碼、調(diào)試和協(xié)作。

          每一個(gè)具體的習(xí)慣里,一開(kāi)始提出一個(gè)謬論,然后展開(kāi)分析,之后有正隊(duì)性地提出正確的做法,并設(shè)身處地地講出了正確做法給你個(gè)人的“切身感受”,最后列出幾條注意事項(xiàng),幫助你修正自己的做法(“平衡的藝術(shù)”)。

          29、《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

          前面已經(jīng)提到的很多書(shū)都啟發(fā)了我,并影響了我,但這本書(shū)每位程序員都應(yīng)該讀。 它向我展示了單元測(cè)試和TDD的重要性,并讓我很快上手。 – Curro

          我不關(guān)心你的代碼有多好或優(yōu)雅。 如果你沒(méi)有測(cè)試,你或許就如同沒(méi)有編寫(xiě)代碼。 這本書(shū)得到的推薦數(shù)應(yīng)該更高些。 人們討論編寫(xiě)用戶喜歡的軟件,或既設(shè)計(jì)出色并健壯的高效代碼,但如果你的軟件有一堆bug,談?wù)撃切〇|西毫無(wú)意義。– Adam Gent

          30、《點(diǎn)石成金:訪客至上的網(wǎng)頁(yè)設(shè)計(jì)秘笈

          可用性設(shè)計(jì)是Web設(shè)計(jì)中最重要也是難度最大的一項(xiàng)任務(wù)。 《點(diǎn)石成金-訪客至上的網(wǎng)頁(yè)設(shè)計(jì)秘笈(原書(shū)第二版)》作者根據(jù)多年從業(yè)的經(jīng)驗(yàn),剖析用戶的心理, 在用戶使用的模式、為掃描進(jìn)行設(shè)計(jì)、導(dǎo)航設(shè)計(jì)、主頁(yè)布局、可用性測(cè)試等方面提出了許多獨(dú)特的觀點(diǎn), 并給出了大量簡(jiǎn)單、易行的可用性設(shè)計(jì)的建議。

          本書(shū)短小精煉,語(yǔ)言輕松詼諧,書(shū)中穿插大量色彩豐富的屏幕截圖、趣味叢生的卡通插圖以及包含大量信息的圖表, 使枯燥的設(shè)計(jì)原理變得平易近人。

          本書(shū)適合從事Web設(shè)計(jì)和Web開(kāi)發(fā)的技術(shù)人員閱讀,特別適合為如何留住訪問(wèn)者而苦惱的網(wǎng)站/網(wǎng)頁(yè)設(shè)計(jì)人員閱讀。 這是一本關(guān)于Web設(shè)計(jì)原則而不是Web設(shè)計(jì)技術(shù)的書(shū)。

          本書(shū)作者是Web設(shè)計(jì)專家,具有豐富的實(shí)踐經(jīng)驗(yàn)。 他用幽默的語(yǔ)言為你揭示W(wǎng)eb設(shè)計(jì)中重要但卻容易被忽視的問(wèn)題,只需幾個(gè)小時(shí), 你便能對(duì)照書(shū)中講授的設(shè)計(jì)原則找到網(wǎng)站設(shè)計(jì)的癥結(jié)所在,令你的網(wǎng)站煥然一新。

          取決于你所追求的目標(biāo)。 我喜歡《代碼大全》是因純編程,《點(diǎn)石成金》是一本有關(guān)UI設(shè)計(jì)的卓越書(shū)籍。 – Justin Standard

          posted @ 2012-08-14 17:46 justjavac(迷渡) 閱讀(210) | 評(píng)論 (0)編輯 收藏
          php新手開(kāi)發(fā)的作品通常都有以下不足:

          1、網(wǎng)站目錄不合理,無(wú)法分辨各個(gè)功能的文件夾及文件,沒(méi)有系統(tǒng)內(nèi)核。

          2、網(wǎng)站未經(jīng)過(guò)初始化,沒(méi)有安全過(guò)濾,沒(méi)有統(tǒng)一入口。

          3、基本沒(méi)有class,甚至連function都很難找到,冗余代碼多,并有大量的重復(fù)文件。

          4、PHP代碼混編,非MVC模式。

          發(fā)現(xiàn)了自己的不足,就要針對(duì)不足之處加強(qiáng)技術(shù)學(xué)習(xí),多從成熟的系統(tǒng)作品中學(xué)習(xí),

          解決以上幾個(gè)方面的問(wèn)題,再多了解最新的php安全漏洞,以及編程技巧,你就會(huì)

          逐漸成為開(kāi)發(fā)高手!

          最后一點(diǎn),php上手雖快,但沒(méi)有系統(tǒng)學(xué)習(xí)過(guò)軟件專業(yè)的課程和知識(shí)是肯定不夠的,

          無(wú) 論你是哪一種語(yǔ)言工具的開(kāi)發(fā)者,算法設(shè)計(jì)與分析是你一定要精通的,認(rèn)真

          扎實(shí)地學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)、算法、編繹原理這些專業(yè)課程后,你會(huì)發(fā)現(xiàn):

          你 不論學(xué)什么開(kāi)發(fā),都會(huì)感到的自己的悟性非凡!
          posted @ 2010-07-02 11:54 justjavac(迷渡) 閱讀(152) | 評(píng)論 (0)編輯 收藏

          1. CI中的controller都應(yīng)當(dāng)小寫(xiě)。剛開(kāi)始為了區(qū)分單詞,把第二個(gè)單詞大寫(xiě)了,結(jié)果就是不認(rèn)default_controller。事實(shí)證明這是錯(cuò)誤的。放到linux下面就不靈了,應(yīng)該全部小寫(xiě),如果你大寫(xiě)了,CI會(huì)認(rèn)為這是libraries里面的東西。不管怎樣都應(yīng)該全部小寫(xiě),至少可以避免linux下區(qū)分大小寫(xiě)的問(wèn)題。

           

          2. 分頁(yè)的問(wèn)題。CI的官方論壇下提供了一些源代碼,怎樣寫(xiě)分頁(yè)函數(shù)我就不多說(shuō)了,可以直接看高手的。關(guān)鍵是傳遞頁(yè)面參數(shù)的時(shí)候,不要忘了修改segment。一開(kāi)始怎么傳都不對(duì),后來(lái)才想起來(lái)我的網(wǎng)址已經(jīng)是localhost/codeigniter/aaa/bbb/3/10了,這樣segment也要相應(yīng)改變。分頁(yè)參數(shù)在第幾個(gè)/后,他就是uri->segment(幾)。如果是搜索之后的分頁(yè),那么$config['total_rows']就不是count_all了,而是加入where之后的query的記錄數(shù)。想起來(lái)倒是有一個(gè)問(wèn)題還沒(méi)解決,就是在你點(diǎn)search之后,一般需要用JS把網(wǎng)址轉(zhuǎn)換成CI固有的模式,但是怎樣使這個(gè)js生成的網(wǎng)址包含到site_url中,我沒(méi)有解決,只能手工了(仔細(xì)想想還是挺簡(jiǎn)單的呵呵,自己造網(wǎng)址不用site_url)。

           

          3. MVC模式我已經(jīng)比較適應(yīng)了。將頁(yè)面都放在view中,控制語(yǔ)句放在controller中,而函數(shù)放在model中。剛開(kāi)始有很多人和我一樣想要在view或者control中加一些語(yǔ)句,只能說(shuō),不行,也不規(guī)范。最好的辦法是寫(xiě)成helper,如果是數(shù)據(jù)庫(kù)的二次調(diào)用的話,可以用inner join合并。

           

          4. htaccess的問(wèn)題。很多人肯定和我一樣,一開(kāi)始接觸的時(shí)候就是感興趣怎樣可以去掉index.php。雖然網(wǎng)上已經(jīng)泛濫了,但是我再寫(xiě)一次吧。其實(shí)就兩個(gè)工作,第一,在根目錄寫(xiě)一個(gè).htaccess的文檔,第二,開(kāi)啟apache中的rewrite模塊。

          1)htaccess的寫(xiě)法很多。這是基于你對(duì)CI各層目錄的安排決定的。我的安排:除了application中的內(nèi)容外。將其他所有東西放在根目錄下的www目錄下,其中圖片放在www/images/下,flash放在www/flash/下,xml放在www/xml下,js放在www/js下。。。。總之全堆在www里面。所有views在title下面加上<base href="<?=base_url()?>" />這句話,系統(tǒng)就能識(shí)別你的根目錄了,所有鏈接改成site_url()就可以保證路徑不會(huì)出錯(cuò)了。于是,我的htaccess是這樣的:

          RewriteEngine on  

          RewriteCond $1 !^(index\.php|www|uploadfiles|robots\.txt)  

          RewriteRule ^(.*)$ /index.php/$1 [L] [L]

          第一行是將rewrite打開(kāi),第二行是不rewrite的例外,包括index.php本身,www目錄,uploadfiles(這個(gè)參見(jiàn)5),還有robots搜索,第三行自然就是將index.php隱藏的rewrite規(guī)則了,即剩下的網(wǎng)址由于原來(lái)都是localhost/codeigniter/index.php/aaa/bbb的模式,現(xiàn)在可以去掉index.php了。而www下的網(wǎng)址不涉及index.php,用不到這個(gè)規(guī)則,所以要排除。

          2)首先找到apache下面的http.conf,路徑是apache的conf目錄下。找到這一行:LoadModule rewrite_module modules/mod_rewrite.so,將前面的#去掉,也就是說(shuō)開(kāi)啟這個(gè)module。另外需要找到rewrite的目錄行,將AllowOverride設(shè)置為All,其實(shí)就是roadmodule下面的那個(gè)directory.

              # AllowOverride controls what directives may be placed in .htaccess files.
              # It can be "All", "None", or any combination of the keywords:
              #   Options FileInfo AuthConfig Limit
              #
              AllowOverride All

          3)在CI的config目錄下的config.php中,將$config['index_page'] = "index.php"改為$config['index_page'] = “”,這樣就大功告成啦!!不用輸入index.php也可以訪問(wèn)了。其實(shí)更關(guān)鍵的是你的各個(gè)目錄的路徑安排。

          5.FCKEditor的問(wèn)題。應(yīng)該說(shuō)我在應(yīng)用的時(shí)候沒(méi)有遇到任何麻煩,除了上傳時(shí)候的路徑讓我一頓好找。我覺(jué)得設(shè)置成根目錄下的/uploadfiles是不錯(cuò)的選擇,當(dāng)然別忘了在htaccess中把uploadfiles也放在不rewrite的隊(duì)伍中。因?yàn)槲椰F(xiàn)在的習(xí)慣是所有的文件編碼都設(shè)置成utf-8,所以網(wǎng)上經(jīng)常說(shuō)的亂碼的現(xiàn)象沒(méi)有遇到。

          基本上就是這些基本的問(wèn)題了,我做的其實(shí)就是簡(jiǎn)單的企業(yè)網(wǎng)站,沒(méi)有高級(jí)應(yīng)用,所以也沒(méi)有遇到更復(fù)雜的問(wèn)題。等考完GT可以嘗試做一個(gè)更復(fù)雜的網(wǎng)站,和AJAX結(jié)合后再寫(xiě)一些心得。下次要再做這樣的CMS,后臺(tái)直接搞定,省了不少時(shí)間。而且對(duì)于我這樣的PHP爛人來(lái)說(shuō),CI幫我解決了很多安全問(wèn)題,同時(shí)也提高了效率。

          有點(diǎn)過(guò)度興奮了,寫(xiě)得超級(jí)亂,我自己都不愿意回過(guò)頭去細(xì)細(xì)檢查了,具體問(wèn)題可以再聯(lián)系我,只要我能解答。最后上傳一個(gè)驗(yàn)證碼的helper吧,版權(quán)歸CI論壇上的同學(xué)所有,我只是轉(zhuǎn)一下,順便寫(xiě)一下用法。。。

          點(diǎn)擊下載此文件

          1)首先在controller中引用getcode_helper.php, $this->load->helper('getcode');

          建立一個(gè)function比如

          Php代碼 
          1. function createcode()  
          2. {  
          3.     code();  
          4. }  

           

          2)驗(yàn)證碼圖片鏈接地址:<img id="codeimage" src="<?=site_url('controller路徑/createcode')?>

          3)表單提交時(shí)驗(yàn)證函數(shù):

          Php代碼 
          1. function seccode_check($str)  
          2. {  
          3.     if(chk_code($str))  
          4.     {  
          5.         return TRUE;  
          6.     }  
          7.     else  
          8.     {   
          9.         return FALSE;  
          10.     }  
          11. }  

           


          posted @ 2010-07-02 11:53 justjavac(迷渡) 閱讀(233) | 評(píng)論 (0)編輯 收藏

          在與許多客戶的接觸中,我發(fā)現(xiàn)有必要建立一套SOA的基本原則。下面的部分將介紹SOA中應(yīng)有的基本原則。這些并非絕對(duì)真理,它們更像一個(gè)用于SOA相關(guān)討論的參考框架。你會(huì)發(fā)現(xiàn):前四項(xiàng)衍生自Don Box提出的四項(xiàng)原則,盡管隨著時(shí)間的流逝,這四項(xiàng)原則的描述可能已經(jīng)有了些變化。
          相關(guān)廠商內(nèi)容

          1. 明確邊界:服務(wù)被調(diào)用時(shí),與實(shí)現(xiàn)其功能相關(guān)的內(nèi)容都應(yīng)被傳遞過(guò)來(lái)。對(duì)服務(wù)的所有訪問(wèn)都應(yīng)該通過(guò)公共接口進(jìn)行。調(diào)用服務(wù)時(shí),非隱含的假設(shè)是必須的。“服務(wù)與消息緊密聯(lián)系,因?yàn)閰?shù)進(jìn)出服務(wù)的唯一方式是通過(guò)消息進(jìn)行的”。作為通用的模式,服務(wù)調(diào)用不應(yīng)依賴于共享的上下文,而應(yīng)被作為無(wú)狀態(tài)的模塊。契約描述了服務(wù)的功能性與非功能性的能力和特點(diǎn),管理著服務(wù)提供的接口。服務(wù)調(diào)用是一個(gè)具有業(yè)務(wù)邏輯效果的行為,可能有大量的資源開(kāi)銷,并且導(dǎo)致一系列不同于本地方法調(diào)用和遠(yuǎn)程過(guò)程調(diào)用的錯(cuò)誤。服務(wù)的調(diào)用絕非遠(yuǎn)程過(guò)程調(diào)用。

          服務(wù)的使用和提供應(yīng)該盡可能地簡(jiǎn)單,因此與服務(wù)間的交互沒(méi)必要被隱藏得太多。在SOA中,服務(wù)發(fā)送和接收的消息、服務(wù)契約以及服務(wù)本身都應(yīng)當(dāng)是最好的構(gòu)件。這就意味著,例如,被用到的編程模型和工具至少應(yīng)該提供一個(gè)API,這個(gè)API會(huì)幫助服務(wù)的編程人員了解上述概念。總的來(lái)說(shuō),一個(gè)明確的接口會(huì)封裝服務(wù)的內(nèi)在實(shí)現(xiàn),而服務(wù)通過(guò)該接口發(fā)布自己的功能;與服務(wù)交互是一個(gè)具體的行為,它依賴于服務(wù)使用者和提供者之間消息的傳遞。

          2. 共享契約和架構(gòu),而不是類:基于一份服務(wù)描述(一份契約),服務(wù)使用者和服務(wù)提供者都可以獲得使用或提供服務(wù)的全部所需。根據(jù)松耦合原則,服務(wù)提供者不能依靠服務(wù)使用者來(lái)重用那些依賴于使用者環(huán)境的代碼。畢竟,服務(wù)使用者可能使用不同的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境。這條原則給SOA體系中所能交換的數(shù)據(jù)加上了嚴(yán)格的限制。理想的情況是,數(shù)據(jù)以符合一種或多種模式的XML文檔形式被交換,因?yàn)檫@種方式可應(yīng)用于任何你能想到的編程環(huán)境。因此,因?yàn)檫@條原則在基于DCOM和基于RMI的環(huán)境中是不可能被遵守的,所以這兩種環(huán)境基本上無(wú)法成為SOA的可用選項(xiàng)。

          3. 策略驅(qū)動(dòng):為了與服務(wù)交互,必須滿足以下兩組不同的要求:

          • 提供者提供的功能、語(yǔ)法和語(yǔ)義必須適應(yīng)使用者的需求;
          • 技術(shù)能力與需要必須匹配。
          例如,一個(gè)服務(wù)提供者提供了能夠精確滿足用戶需求的服務(wù),但該服務(wù)是基于JMS的,可使用者只能使用HTTP方式(比如,服務(wù)被應(yīng)用于.NET平臺(tái))。服務(wù)提供者可能要求消息級(jí)別的加密采用XML加密標(biāo)準(zhǔn),而使用者只支持采用SSL技術(shù)來(lái)保障傳輸層上的安全。即使在那些交互雙方都擁有足夠能力的案例中,它們的這些能力仍舊需要被“啟用”。例如,提供者可能根據(jù)不同的使用者需求,對(duì)響應(yīng)的消息使用不同的算法進(jìn)行加密。

          為了使盡可能多的形形色色的使用者能對(duì)服務(wù)進(jìn)行訪問(wèn),一種策略機(jī)制已經(jīng)被作為SOA工具集的一部分引入了。在服務(wù)接口對(duì)功能進(jìn)行描述的同時(shí),策略對(duì)不同的,非功能性的能力和需求進(jìn)行了指定。(譯者注:策略指定的是服務(wù)之外的補(bǔ)充信息,是對(duì)服務(wù)使用者提出的特征要求)。

          4. 自治:與明確邊界原則相關(guān),服務(wù)自治意味著,接口成為服務(wù)與外界聯(lián)系的唯一方式,至少?gòu)腟OA的角度來(lái)看是這樣的。需要注意的是,服務(wù)的運(yùn)行環(huán)境一定是可變的。例如,在絲毫不影響使用者的情況下,就可以從輕量級(jí)的原型實(shí)現(xiàn)轉(zhuǎn)換到成熟的、基于應(yīng)用服務(wù)器的協(xié)同組件集。服務(wù)能夠被彼此獨(dú)立的修改、部署、發(fā)布新版本和管理。服務(wù)提供者不能寄希望于服務(wù)使用者,期望它們依靠自己的能力迅速適應(yīng)新版本的服務(wù),有的使用者可能甚至沒(méi)這個(gè)能力或者根本不愿去適應(yīng)新版本的服務(wù)接口(尤其是當(dāng)這些服務(wù)接口超出了服務(wù)提供者控制范圍的時(shí)候)。

          5. 采用可傳輸?shù)膮f(xié)議格式,而非API:服務(wù)通常采用協(xié)議格式來(lái)發(fā)布,協(xié)議格式應(yīng)該是明確的、可傳輸?shù)牟⑶冶环?wù)所支持的。這一點(diǎn)與前兩條原則非常相關(guān),但卻帶來(lái)了新的見(jiàn)解:為保證一個(gè)服務(wù)最大程度的可訪問(wèn)性(及長(zhǎng)期的可用性),只要交互過(guò)程遵守為該服務(wù)定義的策略,那么由任何依照服務(wù)接口進(jìn)行消息交換的平臺(tái)都可以訪問(wèn)該服務(wù)。例如,通過(guò)以這一原則來(lái)測(cè)試主流的動(dòng)態(tài)編程語(yǔ)言(如Perl、Python或Ruby),我們可以去考慮該語(yǔ)言能否使用或提供一個(gè)特定的服務(wù)。雖然,在現(xiàn)有的技術(shù)實(shí)現(xiàn)里,這條原則可能還沒(méi)有發(fā)揮作用,但這個(gè)思路可以作為下列準(zhǔn)則的試金石:
          • 使用開(kāi)放的標(biāo)準(zhǔn)或者可閱讀的描述來(lái)描述所有消息格式。
          • 不需要特定的資源就可以創(chuàng)造出符合這些合理的模式的消息。
          • 成功通信所必需的附加信息,例如包含安全性或可靠性約束的頭信息,它們的語(yǔ)義和語(yǔ)法要遵循公開(kāi)的規(guī)范和標(biāo)準(zhǔn)。
          • 服務(wù)交互時(shí)所使用的傳輸(或傳遞)協(xié)議中至少有一個(gè)是標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議,或它可以通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議來(lái)訪問(wèn)。

          6. 面向文檔:服務(wù)交互時(shí),數(shù)據(jù)是以文檔的形式來(lái)傳遞的。文檔是一個(gè)被明確模塊化的,有層次結(jié)構(gòu)的數(shù)據(jù)容器。面向文檔的一個(gè)重要特征就是自描述。最理想的情況下,文檔是對(duì)現(xiàn)實(shí)世界中的文件(如訂單、發(fā)票或帳單)的建模。文檔應(yīng)該被設(shè)計(jì)來(lái)確保它在問(wèn)題域的上下文中發(fā)揮作用,這意味著它們可能應(yīng)用于一個(gè)或更多的服務(wù)。

          與現(xiàn)實(shí)世界的紙制文檔相似,和服務(wù)交換信息的文檔將包含冗余的信息。例如,文檔中可能同時(shí)包含了客戶ID和客戶地址信息(盡管客戶ID可能已經(jīng)足夠了)。這種冗余是可以接受的,因?yàn)樗鼘⒎?wù)使用者和提供者雙方的服務(wù)接口和隱含數(shù)據(jù)模型隔離開(kāi)來(lái)。應(yīng)用面向文檔的模式的同時(shí),服務(wù)調(diào)用成為有意義的業(yè)務(wù)邏輯消息的交換,而非上下文無(wú)關(guān)的RPC調(diào)用。雖然通常可以認(rèn)為XML將被作為服務(wù)文檔的格式和語(yǔ)法,但它還沒(méi)有成為標(biāo)準(zhǔn)。

          在一個(gè)SOA連接中,參與者之間的消息流轉(zhuǎn)于不同的系統(tǒng),使得各個(gè)系統(tǒng)之間彼此獨(dú)立。松耦合原則要求參與者對(duì)共知的依賴越少越好。當(dāng)消息在分布式對(duì)象或RPC基礎(chǔ)架構(gòu)中發(fā)送時(shí),客戶端和服務(wù)器端使用由同一個(gè)接口描述文檔生成的代理類(stub和skeleton)。如果不是這種情況的話,當(dāng)契約不支持雙方的交互時(shí),通訊就會(huì)停止。因?yàn)檫@個(gè)原因,RPC風(fēng)格的基礎(chǔ)架構(gòu)要求客戶端和服務(wù)器端程序代碼的同步運(yùn)行。

          7. 松耦合:多數(shù)SOA的倡導(dǎo)者都認(rèn)為松耦合是一個(gè)很重要的概念。不幸的是,對(duì)于究竟哪些特征造成一個(gè)系統(tǒng)松耦合,有許多不同的看法。一個(gè)系統(tǒng)可以在多個(gè)維度表現(xiàn)為松耦合或緊耦合,它依賴于具體的要求和上下文,系統(tǒng)可能會(huì)在一些維度是松耦合的,在另一些維度是緊耦合的。這些維度包括:

          • 時(shí)間:當(dāng)參與者在時(shí)間上是松耦合時(shí),它們不需要在同一時(shí)間啟動(dòng)并進(jìn)行通訊。這要求兩者之間采用某種緩沖或隊(duì)列機(jī)制,盡管這種機(jī)制與松耦合無(wú)關(guān)。當(dāng)參與的一方向另一方發(fā)送消息時(shí),交互的繼續(xù)不依賴于邏輯上或物理上能否立即返回應(yīng)答消息。
          • 位置:如果一方參與者查詢與之通信的另一方參與者的地址,另一方的地址可以透明地進(jìn)行變更,不需要重新編程、重新配置或者甚至不需要通信伙伴的重新啟動(dòng)。這意味著查找(lookup)過(guò)程采用某種目錄或地址來(lái)存儲(chǔ)服務(wù)終端的地址。(對(duì)應(yīng)SOA提供的目錄服務(wù))
          • 類型:同靜態(tài)與動(dòng)態(tài),弱類型與強(qiáng)類型這些編程的概念類似,參與者既可以全部依賴也可以部分依賴文檔結(jié)構(gòu)來(lái)實(shí)現(xiàn)它的功能。
          • 版本:參與者可以依賴服務(wù)接口的特定版本,也可以兼容某個(gè)范圍內(nèi)的版本。所需匹配的版本越確切,參與者在這個(gè)方面上的松耦合性就越差。一個(gè)好的原則是遵循Postel法則(譯者注:Postel’s Law——“Be liberal in what you accept, and conservative in what you send.”):服務(wù)提供者應(yīng)盡可能兼容許多不同的版本,這將使它更加健壯(可能甚至需要容錯(cuò)),服務(wù)使用者應(yīng)盡可能遵循精確的語(yǔ)法和文檔類型。這將增加整個(gè)系統(tǒng)的穩(wěn)定性和靈活性。
          • 基數(shù):服務(wù)消費(fèi)者和提供者可能是1對(duì)1的關(guān)系,尤其是在請(qǐng)求或響應(yīng)交互發(fā)生時(shí),或隊(duì)列被明確使用的情況下。在別的情況下,服務(wù)使用者(在這種情況下,稱作“消息發(fā)送者”或“事件源”更為合理)可能既不知道也不關(guān)心有多少人接受了消息。
          • 查找(Lookup):參與者打算調(diào)用服務(wù)時(shí),既可以依賴服務(wù)提供者的物理名或邏輯名,也可以先通過(guò)一組功能描述來(lái)執(zhí)行查找(lookup)操作。這意味著存在一個(gè)注冊(cè)表和(或)倉(cāng)庫(kù),對(duì)存儲(chǔ)其中的使用者需求和提供者能力進(jìn)行直接或間接的匹配。
          • 接口:參與者可能要綁定到一個(gè)特定的服務(wù)接口或是支持一個(gè)通用的接口。如果使用通用接口,所有該接口的使用者都能與所有該接口的提供者進(jìn)行交互。盡管可能乍看起來(lái)這有些笨拙,但單一通用(統(tǒng)一)接口的原則就是WWW架構(gòu)的核心。
          創(chuàng)造一個(gè)滿足以上所有維度的松耦合系統(tǒng),既不可行,也沒(méi)必要。不同類型的服務(wù)要做不同的取舍。Carlos Perez的經(jīng)典之作中(如這里和這里)有更多的關(guān)于松耦合各個(gè)維度的討論。

          8. 遵循標(biāo)準(zhǔn):一個(gè)SOA應(yīng)用中應(yīng)遵循的一個(gè)關(guān)鍵原則是,信賴標(biāo)準(zhǔn)而非專有的API和格式。標(biāo)準(zhǔn)存在于技術(shù)方面,如數(shù)據(jù)格式、元數(shù)據(jù)、傳輸協(xié)議;也存在于業(yè)務(wù)層面,如文檔的類型。(例如,UBL中所提到的那些)(譯者注:UBL定義了業(yè)務(wù)文檔的通用XML庫(kù),UBL的文檔類型包括訂單、發(fā)票等)

          很顯然,一些人認(rèn)為專有的解決方案,如一些EAI或消息服務(wù)提供商提供的方案,都遵循SOA原則。這個(gè)原則不遺余力地強(qiáng)調(diào)標(biāo)準(zhǔn)的重要性。當(dāng)然,由于有太多可供選擇的標(biāo)準(zhǔn),什么情況用何種標(biāo)準(zhǔn)成了頗具爭(zhēng)議的問(wèn)題。標(biāo)準(zhǔn)的一個(gè)重要方面是它的可接受性(在Web服務(wù)的標(biāo)準(zhǔn)中,基本上可以認(rèn)為“Microsoft肯定要插上一腳”)。

          9. 獨(dú)立于軟件供應(yīng)商:任何架構(gòu)性的原則都不應(yīng)依賴特定供應(yīng)商的產(chǎn)品。將抽象的概念轉(zhuǎn)化為具體的,可運(yùn)行的系統(tǒng)的過(guò)程中,不可避免的要決定使用何種具體的產(chǎn)品,包括商業(yè)的或者免費(fèi)開(kāi)源的軟件。這些決定都不應(yīng)影響架構(gòu)層。這就意味著要盡可能的依賴互操作性和可移植性的標(biāo)準(zhǔn)。因此,要應(yīng)用支持適當(dāng)標(biāo)準(zhǔn)的技術(shù)來(lái)構(gòu)建服務(wù)提供者和使用者,不要受限于任何軟件供應(yīng)商的技術(shù)路線。

          10. 元數(shù)據(jù)驅(qū)動(dòng):SOA中所有的元數(shù)據(jù)對(duì)象都需要被按照一種方式儲(chǔ)存起來(lái),這種方式將確保元數(shù)據(jù)對(duì)象能夠在設(shè)計(jì)和運(yùn)行時(shí)被發(fā)現(xiàn)、檢索和解釋。元數(shù)據(jù)對(duì)象包括對(duì)服務(wù)接口、參與者、端點(diǎn)和綁定信息、組織單元和職責(zé)、文檔類型或模式、使用者或提供者關(guān)系等的描述。這些對(duì)象的用途應(yīng)當(dāng)是被代碼自動(dòng)生成或者解釋,成為服務(wù)和參與者生命周期的一部分。

          以上是我的原則列表。 即使你不完全同意——而坦率地講,我也不希望你完全同意, 至少不是全部都同意——我希望你能帶著它們來(lái)引發(fā)一些討論!
          posted @ 2010-07-02 11:53 justjavac(迷渡) 閱讀(190) | 評(píng)論 (0)編輯 收藏

          引領(lǐng)科技為您講解配置 codeigniter,codeigniter 基本配置信息在 application/config/config.php 文件,本文詳細(xì)講解每一個(gè)基本配置選項(xiàng),從而快速掌握 codeigniter 進(jìn)行開(kāi)發(fā)。

          $config['base_url'] = "http://www.example.com/"

          您網(wǎng)站的網(wǎng)址,codeigniter 會(huì)根據(jù)這個(gè)網(wǎng)址來(lái)生成鏈接、表單地址等。

          $config['index_page'] = "index.php"

          codeigniter 根目錄下的 index.php 文件名,codeigniter 會(huì)使用它來(lái)生成鏈接地址。如果使用隱藏 index.php 的 URL,將其設(shè)置為空字符串:$config['index_page'] = ""。

          $config['uri_protocol'] = "AUTO"

          codeigniter 生成 URL 使用的格式,設(shè)置為“AUTO”自動(dòng)探測(cè)。如果鏈接不能正常工作,可以嘗試以下值:
          PATH_INFO、QUERY_STRING、REQUEST_URI、ORIG_PATH_INFO。

          $config['url_suffix'] = ""

          codeigniter 產(chǎn)生鏈接時(shí)使用的 URL 后綴,如果要實(shí)現(xiàn)偽靜態(tài),可以設(shè)置 $config['url_suffix'] = ".html"。

          $config['language'] = "english"

          codeigniter 程序默認(rèn)使用的語(yǔ)言

          $config['charset'] = "UTF-8"

          codeigniter 程序默認(rèn)使用的字符集

          $config['enable_hooks'] = FALSE

          是否啟用鉤子,鉤子功能使得您可以在不修改系統(tǒng)核心文件的基礎(chǔ)上來(lái)改變或增加系統(tǒng)的核心運(yùn)行功能。

          $config['subclass_prefix'] = 'MY_'

          設(shè)置擴(kuò)展 codeigniter 類庫(kù)時(shí)使用的類名前綴

          $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'

          設(shè)置 codeigniter URL 中允許使用的字符,這是一個(gè)正則表達(dá)式。當(dāng)訪問(wèn)者試圖訪問(wèn)的 codeigniter URL 包含其它字符時(shí),會(huì)得到一個(gè)警告。應(yīng)該盡量限制 codeigniter URL 使用的字符來(lái)提高安全性,可以有效的過(guò)濾注入攻擊。如果設(shè)置為空,允許使用所有字符,強(qiáng)烈建議不要這么做。

          $config['enable_query_strings'] = FALSE

          codeigniter URL 默認(rèn)使用分段的 URL,此選項(xiàng)也允許 codeigniter 開(kāi)啟查詢字符串形式 URL。您可以使用查詢字符串來(lái)傳遞要訪問(wèn)的控制器和函數(shù)。例如: index.php?c=controller&m=method。codeigniter 默認(rèn)使用分段的 URL,查詢字符串的 URL 很多特性不被支持。

          $config['controller_trigger'] = 'c'

          codeigniter 將查詢字符串中此選項(xiàng)對(duì)應(yīng)的值當(dāng)做 codeigniter 控制器的名字。

          $config['function_trigger'] = 'm'

          codeigniter 將查詢字符串中此選項(xiàng)對(duì)應(yīng)的值當(dāng)做 codeigniter 控制器方法的名字

          $config['log_threshold'] = 0

          啟用錯(cuò)誤日志,設(shè)置記錄哪些類型的錯(cuò)誤。

          0 = 關(guān)閉錯(cuò)誤日志記錄
          1 = 記錄錯(cuò)誤信息
          2 = 記錄調(diào)試信息
          3 = 記錄通知信息
          4 = 記錄所有信息

          $config['log_path'] = ''

          如果您不想使用默認(rèn)的錯(cuò)誤日志記錄目錄配置(system/logs/),可以設(shè)置完整的服務(wù)器目錄。

          $config['log_date_format'] = 'Y-m-d H:i:s'

          codeigniter 錯(cuò)誤日志時(shí)間格式

          $config['cache_path'] = ''

          如果您不想使用默認(rèn)的緩存目錄(system/cache/)來(lái)存儲(chǔ)緩存,可以設(shè)置完整的服務(wù)器目錄

          $config['encryption_key'] = ""

          codeigniter 使用的密鑰

          $config['global_xss_filtering'] = FALSE

          是否對(duì)輸入數(shù)據(jù)(GET、POST)自動(dòng)過(guò)濾跨腳本攻擊

          $config['compress_output'] = FALSE

          啟用Gzip壓縮達(dá)到最快的頁(yè)面加載速度

          $config['time_reference'] = 'local'

          設(shè)置時(shí)間格式:"local"、"GMT"

          $config['rewrite_short_tags'] = FALSE

          如果您想要使用短標(biāo)記,但 PHP 服務(wù)器不支持,codeigniter 可以通過(guò)重寫(xiě)短標(biāo)記來(lái)支持這一功能。

          $config['proxy_ips'] = ''

          如果訪問(wèn)者通過(guò)代理服務(wù)器來(lái)訪問(wèn)您的網(wǎng)站,您必須設(shè)置代理服務(wù)器 IP 列表,以識(shí)別出訪問(wèn)者真正的 IP

          posted @ 2010-07-02 11:49 justjavac(迷渡) 閱讀(1340) | 評(píng)論 (0)編輯 收藏

          EL表達(dá)式
          1、EL簡(jiǎn)介
          1)語(yǔ)法結(jié)構(gòu)
                 ${expression}
          2)[]與.運(yùn)算符
               EL 提供.和[]兩種運(yùn)算符來(lái)存取數(shù)據(jù)。
               當(dāng)要存取的屬性名稱中包含一些特殊字符,如.或?等并非字母或數(shù)字的符號(hào),就一定要使用 []。
          例如:
                   ${user.My-Name}應(yīng)當(dāng)改為${user["My-Name"] }
               如果要?jiǎng)討B(tài)取值時(shí),就可以用[]來(lái)做,而.無(wú)法做到動(dòng)態(tài)取值。例如:
                   ${sessionScope.user[data]}中data 是一個(gè)變量
          3)變量
               EL存取變量數(shù)據(jù)的方法很簡(jiǎn)單,例如:${username}。它的意思是取出某一范圍中名稱為
          username的變量。
               因?yàn)槲覀儾](méi)有指定哪一個(gè)范圍的username,所以它會(huì)依序從Page、Request、Session、
          Application范圍查找。
               假如途中找到username,就直接回傳,不再繼續(xù)找下去,但是假如全部的范圍都沒(méi)有找到時(shí),
          就回傳null。
               屬性范圍在EL中的名稱
                   Page         PageScope
                   Request         RequestScope
                   Session         SessionScope
                   Application     ApplicationScope
          4) 1--EL表達(dá)式用${}表示,可用在所有的HTML和JSP標(biāo)簽中作用是代替JSP頁(yè)面中復(fù)雜的JAVA代碼.
          2--EL表達(dá)式可操作常量 變量 和隱式對(duì)象. 最常用的 隱式對(duì)象有${param}和${paramValues}.
          ${param}表示返回請(qǐng)求參數(shù)中單個(gè)字符串的值. ${paramValues}表示返回請(qǐng)求參數(shù)的一組
          值.pageScope表示頁(yè)面范圍的變量.requestScope表示請(qǐng)求對(duì)象的變量. sessionScope表示會(huì)話
          范圍內(nèi)的變量.applicationScope表示應(yīng)用范圍的變量.
          3 --<%@ page isELIgnored="true"%> 表示是否禁用EL語(yǔ)言,TRUE表示禁止.FALSE表示不禁
          止.JSP2.0中默認(rèn)的啟用EL語(yǔ)言.
                       4-- EL語(yǔ)言可顯示 邏輯表達(dá)式如${true and false}結(jié)果是false     關(guān)系表達(dá)式如${5>6} 結(jié)
          果是false     算術(shù)表達(dá)式如 ${5+5} 結(jié)果是10
                       5--EL中的變量搜索范圍是:page request session application   點(diǎn)運(yùn)算符(.)和"[ ]"都是
          表示獲取變量的值.區(qū)別是[ ]可以顯示非詞類的變量

          2、EL隱含對(duì)象
          1)與范圍有關(guān)的隱含對(duì)象
          與范圍有關(guān)的EL 隱含對(duì)象包含以下四個(gè):pageScope、requestScope、sessionScope 和
          applicationScope;
          它們基本上就和JSP的pageContext、request、session和application一樣;
          在EL中,這四個(gè)隱含對(duì)象只能用來(lái)取得范圍屬性值,即getAttribute(String name),卻不能取得
          其他相關(guān)信息。
          例如:我們要取得session中儲(chǔ)存一個(gè)屬性u(píng)sername的值,可以利用下列方法:
               session.getAttribute("username") 取得username的值,
          在EL中則使用下列方法
               ${sessionScope.username}
          2)與輸入有關(guān)的隱含對(duì)象
          與輸入有關(guān)的隱含對(duì)象有兩個(gè):param和paramValues,它們是EL中比較特別的隱含對(duì)象。
          例如我們要取得用戶的請(qǐng)求參數(shù)時(shí),可以利用下列方法:
               request.getParameter(String name)
               request.getParameterValues(String name)
          在EL中則可以使用param和paramValues兩者來(lái)取得數(shù)據(jù)。
               ${param.name}
               ${paramValues.name}

          3.其他隱含對(duì)象
          1)cookie
          JSTL并沒(méi)有提供設(shè)定cookie的動(dòng)作,
          例:要取得cookie中有一個(gè)設(shè)定名稱為userCountry的值,可以使用${cookie.userCountry}     來(lái)
          取得它。
          2)header和headerValues
          header 儲(chǔ)存用戶瀏覽器和服務(wù)端用來(lái)溝通的數(shù)據(jù)
          例:要取得用戶瀏覽器的版本,可以使用${header["User-Agent"]}。
          另外在鮮少機(jī)會(huì)下,有可能同一標(biāo)頭名稱擁有不同的值,此時(shí)必須改為使用headerValues 來(lái)取得
          這些值。
          3)initParam
          initParam取得設(shè)定web站點(diǎn)的環(huán)境參數(shù)(Context)
          例:一般的方法String userid = (String)application.getInitParameter("userid");
               可以使用 ${initParam.userid}來(lái)取得名稱為userid
          4)pageContext
          pageContext取得其他有關(guān)用戶要求或頁(yè)面的詳細(xì)信息。
               ${pageContext.request.queryString}         取得請(qǐng)求的參數(shù)字符串
               ${pageContext.request.requestURL}         取得請(qǐng)求的URL,但不包括請(qǐng)求之參數(shù)字符串
               ${pageContext.request.contextPath}         服務(wù)的web application 的名稱
               ${pageContext.request.method}           取得HTTP 的方法(GET、POST)
               ${pageContext.request.protocol}         取得使用的協(xié)議(HTTP/1.1、HTTP/1.0)
               ${pageContext.request.remoteUser}         取得用戶名稱
               ${pageContext.request.remoteAddr }         取得用戶的IP 地址
               ${pageContext.session.new}             判斷session 是否為新的
               ${pageContext.session.id}               取得session 的ID
               ${pageContext.servletContext.serverInfo}   取得主機(jī)端的服務(wù)信息
             4) 條件標(biāo)簽>
          1.算術(shù)運(yùn)算符有五個(gè):+、-、*或$、/或div、%或mod
          2.關(guān)系運(yùn)算符有六個(gè):==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
          3.邏輯運(yùn)算符有三個(gè):&&或and、||或or、!或not
          4.其它運(yùn)算符有三個(gè):Empty運(yùn)算符、條件運(yùn)算符、()運(yùn)算符
               例:${empty param.name}、${A?B:C}、${A*(B+C)}
          5) EL函數(shù)(functions)
          語(yǔ)法:ns:function( arg1, arg2, arg3 …. argN)
          其中ns為前置名稱(prefix),它必須和taglib 指令的前置名稱一置
                 6) 補(bǔ)充:
          <%@ taglib prefix="c" http://java.sun.com/jstl/core_rt">http://java.sun.com/jstl/core_rt" %>
          FOREACH:
          <c:forEach items="${messages}"
          var="item"
          begin="0"
          end="9"
          step="1"
          varStatus="var">
          ……
          </c:forEach>
          OUT:
          <c:out value="/${logininfo.username}"/>
          c:out>將value 中的內(nèi)容輸出到當(dāng)前位置,這里也就是把logininfo 對(duì)象的
          username屬性值輸出到頁(yè)面當(dāng)前位置。
          ${……}是JSP2.0 中的Expression Language(EL)的語(yǔ)法。它定義了一個(gè)表達(dá)式,
          其中的表達(dá)式可以是一個(gè)常量(如上),也可以是一個(gè)具體的表達(dá)語(yǔ)句(如forEach循環(huán)體中
          的情況)。典型案例如下:
          ? ${logininfo.username}
          這表明引用logininfo 對(duì)象的username 屬性。我們可以通過(guò)“.”操作符引
          用對(duì)象的屬性,也可以用“[]”引用對(duì)象屬性,如${logininfo[username]}
          與${logininfo.username}達(dá)到了同樣的效果。
          “[]”引用方式的意義在于,如果屬性名中出現(xiàn)了特殊字符,如“.”或者“-”,
          此時(shí)就必須使用“[]”獲取屬性值以避免語(yǔ)法上的沖突(系統(tǒng)開(kāi)發(fā)時(shí)應(yīng)盡量避免
          這一現(xiàn)象的出現(xiàn))。
          與之等同的JSP Script大致如下:
          LoginInfo logininfo =
          (LoginInfo)session.getAttribute(“l(fā)ogininfo”);
          String username = logininfo.getUsername();
          可以看到,EL大大節(jié)省了編碼量。
          這里引出的另外一個(gè)問(wèn)題就是,EL 將從哪里找到logininfo 對(duì)象,對(duì)于
          ${logininfo.username}這樣的表達(dá)式而言,首先會(huì)從當(dāng)前頁(yè)面中尋找之前是
          否定義了變量logininfo,如果沒(méi)有找到則依次到Request、Session、
          Application 范圍內(nèi)尋找,直到找到為止。如果直到最后依然沒(méi)有找到匹配的
          變量,則返回null.
          如果我們需要指定變量的尋找范圍,可以在EL表達(dá)式中指定搜尋范圍:
          ${pageScope.logininfo.username}
          ${requestScope.logininfo.username}
          ${sessionScope.logininfo.username}
          ${applicationScope.logininfo.username}
          在Spring 中,所有邏輯處理單元返回的結(jié)果數(shù)據(jù),都將作為Attribute 被放
          置到HttpServletRequest 對(duì)象中返回(具體實(shí)現(xiàn)可參見(jiàn)Spring 源碼中
          org.springframework.web.servlet.view.InternalResourceView.
          exposeModelAsRequestAttributes方法的實(shí)現(xiàn)代碼),也就是說(shuō)Spring
          MVC 中,結(jié)果數(shù)據(jù)對(duì)象默認(rèn)都是requestScope。因此,在Spring MVC 中,
          以下尋址方法應(yīng)慎用:
          ${sessionScope.logininfo.username}
          ${applicationScope.logininfo.username}
          ? ${1+2}
          結(jié)果為表達(dá)式計(jì)算結(jié)果,即整數(shù)值3。
          ? ${i>1}
          如果變量值i>1的話,將返回bool類型true。與上例比較,可以發(fā)現(xiàn)EL會(huì)自
          動(dòng)根據(jù)表達(dá)式計(jì)算結(jié)果返回不同的數(shù)據(jù)類型。
          表達(dá)式的寫(xiě)法與java代碼中的表達(dá)式編寫(xiě)方式大致相同。
          IF / CHOOSE:
          <c:if test="${var.index % 2 == 0}">
          *
          </c:if>
          判定條件一般為一個(gè)EL表達(dá)式。
          <c:if>并沒(méi)有提供else子句,使用的時(shí)候可能有些不便,此時(shí)我們可以通過(guò)<c:choose>
          tag來(lái)達(dá)到類似的目的:
          <c:choose>
          <c:when test="${var.index % 2 == 0}">
          *
          </c:when>
          <c:otherwise>
          !
          </c:otherwise>
          </c:choose>
          類似Java 中的switch 語(yǔ)句,<c:choose>提供了復(fù)雜判定條件下的簡(jiǎn)化處理手法。其
          中<c:when>子句類似case子句,可以出現(xiàn)多次。上面的代碼,在奇數(shù)行時(shí)輸出“*”號(hào),
          而偶數(shù)行時(shí)輸出“!”。
          經(jīng)驗(yàn):1、如果EL表達(dá)式無(wú)法解析:– <%@ page isELIgnored="false" %>

          一、           JSTL

          1、EL運(yùn)算符>;
                 2)var指定變量,并把EL運(yùn)算結(jié)果賦值給該變量值為true/false;
                 3)scope:指定 var變量的范圍;


          6、迭代標(biāo)簽
          語(yǔ)法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“
          end=”int” step=“int” >
                     //循環(huán)體
                     </c:forEach>
               說(shuō)明:1)items:是集合,用EL表達(dá)式;
                 2)var:變量名,存放items
                 3)varStatus: 顯示循環(huán)狀態(tài)的變量
          ①index:從0開(kāi)始;
                               ②count:元素位置,從1開(kāi)始;
                               ③first:如果是第一個(gè)元素則顯示true;
                               ④last:如果是最后一個(gè)元素則顯示true;
                 4)begin:循環(huán)的初始值(整型);
                 5)end: 循環(huán)結(jié)束 ;
                 6)step:步長(zhǎng),循環(huán)間隔的數(shù)值;
          7、<c:otherwise>標(biāo)簽
               例:
          如果user.wealthy值true,則顯示user.wealthy is true.
          <c:choose>
          <c:when test="">
          user.generous is true.
          </c:when>
          <c:when test="">
          user.stingy is true.
          </c:when>
          <c:otherwise>
          user.generous and user.stingy are false.
          </c:otherwise>
          </c:choose>
          說(shuō)明:只有當(dāng)條件user.generous返回值是true時(shí),才顯示user.generous is true.
          只有當(dāng)條件user.stingy返回值是true時(shí),才顯示user.stingy is true.
          其它所有的情況(即user.generous和user.stingy的值都不為true)全部顯示user.generous and
          user.stingy are false.
          由于JSTL沒(méi)有形如if (){…} else {…}的條件語(yǔ)句,所以這種形式的語(yǔ)句只能用<c:choose>、
          <c:when>和<c:otherwise>標(biāo)簽共同來(lái)完成了。
          8、c:forTokens>標(biāo)簽
          說(shuō)明:  
          items 進(jìn)行循環(huán)的項(xiàng)目 是 無(wú)
          delims 分割符 是 無(wú)
          begin 開(kāi)始條件 否 0
          end 結(jié)束條件 否 集合中的最后一個(gè)項(xiàng)目
          step 步長(zhǎng) 否 1
          var 代表當(dāng)前項(xiàng)目的變量名 否 無(wú)
          varStatus 顯示循環(huán)狀態(tài)的變量 否 無(wú)
          例子:
          <c:forTokens items="a:b:c:d" delims=":" var="token">
          <c:out value=""/>
          </c:forTokens>
          這個(gè)標(biāo)簽的使用相當(dāng)于java.util.StringTokenizer類。在這里將字符串a(chǎn):b:c:d以:分開(kāi)循環(huán)四次,
          token是循環(huán)到當(dāng)前分割到的字符串。
          9、<c:redirect>標(biāo)簽
               說(shuō)明:標(biāo)簽將請(qǐng)求重新定向到另外一個(gè)頁(yè)面,它有以下屬性 屬性 描 述 是否必須 缺省值
          url url地址 是 無(wú)
          context /后跟本地web應(yīng)用程序的名字 否 當(dāng)前應(yīng)用程序
          例子:
          <c:redirect /'>http://www.yourname.com/login.jsp"/>
          將請(qǐng)求重新定向到http://www.yourname.com/login.jsp頁(yè),相當(dāng)于response.setRedirect
          ("http://www.yourname.com/login.jsp");
          10、<c:param>標(biāo)簽
               說(shuō)明:<c:param>標(biāo)簽用來(lái)傳遞參數(shù)給一個(gè)重定向或包含頁(yè)面,它有以下屬性屬 性 描 述 是否
          必須 缺省值
          name 在request參數(shù)中設(shè)置的變量名 是 無(wú)
          value 在request參數(shù)中設(shè)置的變量值 否 無(wú)
          例子:
          <c:redirect url="login.jsp">
          <c:param name="id" value="888"/>
          </c:redirect>
          將參數(shù)888以id為名字傳遞到login.jsp頁(yè)面,相當(dāng)于login.jsp?id=888
          11、<fmt:>格式化標(biāo)簽
               說(shuō)明:需要導(dǎo)入   <%@ taglib prefix="fmt" http://java.sun.com/jsp/jstl/fmt">http://java.sun.com/jsp/jstl/fmt" %>
                1)格式化日期<fmt:formatDate value=“” pattern=“yyyy-MM-dd HH:mm:ss”/>
                         Value:通過(guò)EL表達(dá)式或<%new Date() %> 取的日期值;
                         Pattern:輸出的日期格式;                      

              2) 格式化數(shù)字<fmt:formatNumber
          value="${n}" pattern="###,###.##" />

          posted @ 2010-07-02 11:41 justjavac(迷渡) 閱讀(904) | 評(píng)論 (0)編輯 收藏
          <!-- --> 這樣是行注釋的。也可以用作多行。。但是 可能有些瀏覽器 不支持CSS的 則跳過(guò) <!-- --> 里面的內(nèi)容繼續(xù)執(zhí)行。。
          /* */ 是 塊注釋的

          jsp 注釋 // <!-- --> 已測(cè)試

          HTML 注釋 <!-- -->    已測(cè)試,有的說(shuō)這個(gè)/* */也能,但我試了好幾次它還是顯示

          asp 注釋 '   已測(cè)試

          css 注釋 <!-- -->   /* */

          java 注釋 //     /* */     /**   */     已測(cè)試
          posted @ 2010-07-02 11:38 justjavac(迷渡) 閱讀(139) | 評(píng)論 (0)編輯 收藏

          1.你可以打開(kāi)一個(gè)窗口然后點(diǎn)擊,工具—文件夾選項(xiàng)—查看—顯示所有文件夾
          選擇所要文件,右鍵屬性,將“隱藏”前面的勾去掉就可以。
          還有另外一種方法,就是在開(kāi)始-程序-附件-命令提示符下用dir -a 查看就可以看見(jiàn)隱藏的文件,
          然后你再用Attrib -s -h -r “路徑和文件名”其中-s 表示減去系統(tǒng)屬性 -h 表示減去隱藏屬性 -r 表示減去只讀屬性。
          另外你如果愿意的話還可以為文件加上以上的屬性,把-號(hào)變成+號(hào)就可以了。

          2.選擇“工具→文件夾選項(xiàng)→查看→顯示所有文件和文件夾”,點(diǎn)確定。本來(lái)應(yīng)該就把隱藏的文件顯示出來(lái)的,但是隱藏的文件并沒(méi)有顯示出來(lái),重復(fù)上次操作發(fā)現(xiàn)“查看”中“隱藏文件和文件夾”一欄中它自動(dòng)又跳為“不顯示隱藏文件和文件夾”這讓我很苦惱,因?yàn)槲乙虼苏也坏轿宜幸呀?jīng)設(shè)置為隱藏的文件……

          解決方法有三:
          a.
             運(yùn)行regedit,找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL],將CheckedValue的值改為1

          b.
             將下面的內(nèi)容復(fù)制到記事本,保存為reg的注冊(cè)表信息文件,然后雙擊導(dǎo)入:

          Windows Registry Editor Version 5.00

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]
          "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
          "Text"="@shell32.dll,-30500"
          "Type"="radio"
          "CheckedValue"=dword:00000001

          c.
             如果操作后還是無(wú)法顯示隱藏文件,可以復(fù)制下列內(nèi)容到記事本中,另存為一個(gè)reg文件,然后雙擊運(yùn)行即可。

          Windows Registry Editor Version 5.00

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN]
          "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
          "Text"="@shell32.dll,-30501"
          "Type"="radio"
          "CheckedValue"=dword:00000002
          "ValueName"="Hidden"
          "DefaultValue"=dword:00000002
          "HKeyRoot"=dword:80000001
          "HelpID"="shell.hlp#51104"

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]
          "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
          "Text"="@shell32.dll,-30500"
          "Type"="radio"
          "CheckedValue"=dword:00000001
          "ValueName"="Hidden"
          "DefaultValue"=dword:00000002
          "HKeyRoot"=dword:80000001
          "HelpID"="shell.hlp#51105"

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden]
          "Type"="checkbox"
          "Text"="@shell32.dll,-30508"
          "WarningIfNotDefault"="@shell32.dll,-28964"
          "HKeyRoot"=dword:80000001
          "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"
          "ValueName"="ShowSuperHidden"
          "CheckedValue"=dword:00000000
          "UncheckedValue"=dword:00000001
          "DefaultValue"=dword:00000000
          "HelpID"="shell.hlp#51103"

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden\Policy]

          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden\Policy\DontShowSuperHidden]
          @=""


          說(shuō)明:
                 將選項(xiàng) CheckedValue 的值改成 0 然后再將系統(tǒng)屬性設(shè)置成不顯示隱藏文件,這樣,你隱藏的文件就徹底隱藏了,即使顯示全部文件,你隱藏的文件也不會(huì)顯示的。不僅如此,電腦里面所有隱藏文件將全部不被顯示。如果需要顯示,只要將選項(xiàng) CheckedValue 的值改成 1 ,再將系統(tǒng)屬性設(shè)置成顯示全部文件即可。

          3.問(wèn)題:
                    我使用的是Windows2000系統(tǒng),我把"文件夾選項(xiàng)"中的"查看"設(shè)為"不顯示隱藏的文件和文件夾"時(shí),電腦上隱藏的文件反而能看見(jiàn),設(shè)為"顯示所有文件和文件夾"時(shí),這些文件反而隱藏了,這是怎么回事?

          解決:
               在運(yùn)行中輸入regedit,打開(kāi)注冊(cè)表編輯器.定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDORSYS,將CheckedValue設(shè)置為0;再定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL,將CheckedValue設(shè)置為1即可。

          posted @ 2010-07-02 11:36 justjavac(迷渡) 閱讀(143) | 評(píng)論 (0)編輯 收藏
            <一>
          你不會(huì)有那美麗的相逢,除非之前,你能忍受等待的孤獨(dú).
          你不會(huì)有那明朗的清晨,除非之前,你的睡夢(mèng)能忍受黑夜的迷霧。
          你也不會(huì)贏得任何東西,除非你敢于投下賭注.
          賭注,生命的賭注,就是你的腳步!
          但是你不會(huì)找到路,除非你敢于迷路.
          因?yàn)椋挥凶屇忝月返牡胤剑攀悄阏嬲某雎?


          <二>
          有多少次此刻的離別,就有多少次彼時(shí)的相逢.
          有多少次此刻的酒醉,就有多少次彼時(shí)的痛醒.
          所以你應(yīng)該理解一個(gè)人的沉默,就是一個(gè)人最多的話語(yǔ).
          你也應(yīng)該理解一個(gè)人的憂傷,之所以憂傷,一定是因?yàn)樗豢仙釛壞承┛鞓?lè).


          <三>
          暖一壺茶,在寒冷的冬季里,讓溫氣升騰,但朋友,別忘了,除了爐火,還有那寒風(fēng)賜予了這壺茶以溫度.
          我相信,最溫暖來(lái)自寒冷.我相信,最溫暖,其實(shí)是對(duì)寒冷的一種諒解.


          <四>
          生命確實(shí)有兩層-----
          一個(gè)浪打礁石,海鳥(niǎo)驚逃,以為是一次謀殺,
          一個(gè)浪撲上海灘,孩子歡喜,以為是大海開(kāi)出了鮮花.
          同樣的事物,有不同樣的感受.
          所以世界是什么樣的,并不重要,重要的是生命的心靈。
          世界往往是什么樣子,往往取決于你的心靈是什么樣子.
          莫要過(guò)分誤解這個(gè)世界,請(qǐng)先看看自己的心靈的模樣.


          <五>
          愛(ài)的方式有許多種,
          而愛(ài)是一種動(dòng)機(jī),愛(ài)的動(dòng)機(jī)是誠(chéng)實(shí)而純潔的,
          但愛(ài)的方式卻不可靠。
          即使你有愛(ài),你愛(ài)著,可你愛(ài)的方式是否避免著偏執(zhí)---
          朋友,請(qǐng)不要采摘那些花朵,除非你能保證,一起搬走整個(gè)森林的田野   >>>>>>查看
          posted @ 2010-07-02 11:34 justjavac(迷渡) 閱讀(148) | 評(píng)論 (0)編輯 收藏
                  當(dāng)母親帶著疲憊的微笑將你捧給世界,你已經(jīng)是一座高山,是一片大海了。性別交給你一副重?fù)?dān),指給你一條路,對(duì)你說(shuō):走吧,你這男子漢!于是你便要長(zhǎng)一副錚錚鐵骨,把腳下堅(jiān)實(shí)的土地踏得咚咚作響,去完成你的使命、你的光榮、你的答卷。

                  當(dāng)洪水涌來(lái)的時(shí)候,你要退在最后;當(dāng)大火燃燒的時(shí)候,你卻要撲在前邊。因?yàn)槟闶悄腥耍憔蛻?yīng)該有一副俠肝義膽!

                  當(dāng)朋友成功的時(shí)候,你要大碗喝酒;與女友分手時(shí),要真誠(chéng)地說(shuō)聲道歉。因?yàn)槟闶悄腥耍憔蛻?yīng)該如此氣壯心寬。

                  因?yàn)槟闶悄腥耍裕瑢?duì)女兒你應(yīng)是一棵結(jié)滿故事的大樹(shù),對(duì)妻子你應(yīng)是一片金色的沙灘,對(duì)父母更該是一座物產(chǎn)豐富的大山。

                  因?yàn)槟闶悄腥耍簧鸵兴删汀2粦卸瑁粌e幸,不虛榮,不欺騙,不流淚,不妒嫉,不后悔,不自卑,不獻(xiàn)媚,不投機(jī),不唯利是圖,不 抱怨,男人就應(yīng)該堂堂正正、磊磊落落、風(fēng)度翩翩。

                  做個(gè)好男人也是一項(xiàng)事業(yè)啊。一個(gè)民族僅有女人的光榮是不夠的,陰盛陽(yáng)衰對(duì)每個(gè)男人來(lái)說(shuō)都應(yīng)該覺(jué)得行穢自慚。

                  也許你很矮,但好男人博大的胸懷才情會(huì)使你頂天立地;也許你很弱,但好男人堅(jiān)定的意志品格將賦予你狹義鐵肩;也許你惡疾纏身,但好男人的字典里根本沒(méi)有傷殘。

                  男人,光榮的性別。這光榮的全部?jī)?nèi)涵就在于去承擔(dān)責(zé)任和義務(wù)做出犧牲和奉獻(xiàn)。做個(gè)好男人吧!你別無(wú)選擇,因?yàn)槟阋呀?jīng)是個(gè)男人了。   
          >>>>>>>查看
          posted @ 2010-07-02 11:33 justjavac(迷渡) 閱讀(161) | 評(píng)論 (0)編輯 收藏

          廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上 
          二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一 
          廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上 
          二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一 
          廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上 
          二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一 
          廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上 
          二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一 
          廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上 
          二本與半卉一十士廿卞廣下廠下廣卞廿士十一卉半與本二上旦上二本與半卉一十士廿卞廣下廠下廣卞廿士十一

          posted @ 2010-06-30 17:17 justjavac(迷渡) 閱讀(112) | 評(píng)論 (0)編輯 收藏
          這篇草稿是菊子曰為了獲取您的博客模板而準(zhǔn)備的。由于某些未知的狀況,菊子曰無(wú)法自動(dòng)刪除這篇草稿,請(qǐng)您手動(dòng)刪除它。{ADB54AEF4FCF7388}
          posted @ 2010-06-30 14:51 justjavac(迷渡) 閱讀(76) | 評(píng)論 (0)編輯 收藏
          題目:以07洞庭湖鼠災(zāi)為背景,要以田鼠的口吻或者田鼠天敵的口吻給人類寫(xiě)一封信,八百字以上。 嘰嘰和喵喵 田鼠寫(xiě)信—— 嘰嘰嘰嘰嘰 嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰。嘰嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰。嘰嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰嘰。 嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰;嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰;嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰。嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰嘰嘰。嘰嘰嘰嘰嘰嘰,嘰嘰嘰嘰嘰 ... [閱讀全文]

          已有 3 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-05-12 23:22 justjavac(迷渡) 閱讀(57) | 評(píng)論 (0)編輯 收藏
          題目:“細(xì)雨濕衣看不見(jiàn),閑花落地聽(tīng)無(wú)聲”是唐朝詩(shī)人劉長(zhǎng)卿在《別嚴(yán)士元》中的詩(shī)句。曾經(jīng)有人這樣理解這句詩(shī): 1、這是歌頌春天的美好意境。 2、閑花、細(xì)雨表達(dá)了不為人知的寂寞。 3、看不見(jiàn)、聽(tīng)不見(jiàn)不等于無(wú)所作為,是一種恬淡的處世之道。 4、這種意境已經(jīng)不適合當(dāng)今的世界…… 根據(jù)你的看法寫(xiě)一篇作文。題目自擬,體裁不限。字?jǐn)?shù)800以上。 盛夏,夜,深夜。 景山山顛。 山上有人,兩個(gè)人,一男一女。 這兩人就是當(dāng)今武林名聲最響的兩位殺手,男的名秋細(xì)雨,女的叫葉閑花,江湖人稱“細(xì)雨閑花”。 ... [閱讀全文]

          已有 41 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-05-12 23:11 justjavac(迷渡) 閱讀(115) | 評(píng)論 (0)編輯 收藏
          ????? 如果你在一個(gè)平凡的家庭長(zhǎng)大,????   如果你的父母還健在,不管你有沒(méi)有和他們同住——?????   如果有一天,你發(fā)現(xiàn)媽媽的廚房不再像以前那么干凈;?   如果有一天,你發(fā)現(xiàn)家中的碗筷好象沒(méi)洗干凈;??????   如果有一天,你發(fā)現(xiàn)母親的鍋?zhàn)硬辉傺┝粒?????????   如果有一天,你發(fā)現(xiàn)父親的花草樹(shù)木已漸荒廢;??????   如果有一天,你發(fā)現(xiàn)家中的地板衣柜經(jīng)常沾滿灰塵;??   ???????   如果有一天,你發(fā)現(xiàn)母親煮的菜太咸太難吃;?? ... [閱讀全文]

          已有 11 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-05-02 10:48 justjavac(迷渡) 閱讀(56) | 評(píng)論 (0)編輯 收藏
          一、孔子的生年、籍貫、家世 ????孔子名丘,字仲尼。生于周靈王二十一年(魯襄公二十二年),即夏歷庚戌年八月二十七日,西元前551年9月28日。本人主張按照夏歷來(lái)確定孔子誕辰。 ????《公羊傳》說(shuō):“襄公二十一年十有一月,庚子,孔子生。”《谷梁傳》:“襄公二十一年,冬十月,庚子,孔子生。”《世本》:“襄公二十二年,冬十月,庚子,孔子生。”《史記·十二諸侯年表》:“襄公二十二年,孔子生。”孔廣牧《先圣生卒年月日考》:年從《史記》,月從《谷梁》,日從《公羊》《谷梁》。成蓉鏡《經(jīng) ... [閱讀全文]

          已有 1 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-04-02 19:28 justjavac(迷渡) 閱讀(106) | 評(píng)論 (0)編輯 收藏
          寫(xiě)道 一人去買(mǎi)香蕉,1元1斤,他想買(mǎi)100斤。 他問(wèn)老板:“分開(kāi)賣(mài)不賣(mài),就是說(shuō)將香蕉肉和香蕉皮分開(kāi),每斤0.5元,香蕉肉和香蕉皮各按50斤,我全都要,這樣好不好。” 老板想了想,答應(yīng)了。 于是他給了老板50元錢(qián)。 老板說(shuō):“不對(duì)啊,1元1斤,100斤應(yīng)該是100元錢(qián)啊!” 這人回答道:“怎么不對(duì),香蕉肉是50斤,共0.5 X 50 = 25元,香蕉皮共0.5 X 50 = 25元,一共是50元啊。“ 問(wèn)題出在哪里? ? [閱讀全文]

          已有 4 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-03-16 19:55 justjavac(迷渡) 閱讀(55) | 評(píng)論 (0)編輯 收藏
          寫(xiě)道 有三個(gè)人去住旅館,住三間房,每一間房10元,于是他們一共付給老板30元, 第二天,老板覺(jué)得三間房只需要25元就夠了于是叫小弟退回5元給三位客人, 誰(shuí)知小弟貪心,只退回每人1元,自己偷偷拿了2元, 這樣一來(lái)便等于那三位客人每人各花了9元,于是三個(gè)人一共花了27元,再加上小弟獨(dú)吞了不2元,總共是 29元。 可是當(dāng)初他們?nèi)齻€(gè)人一共付出30元,那么還有1元在哪里呢 ? [閱讀全文]

          已有 44 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-03-12 14:42 justjavac(迷渡) 閱讀(70) | 評(píng)論 (0)編輯 收藏
          (本帖改編自《科學(xué)美國(guó)人》雜志中IanStewart的《兇猛海盜的邏輯》)   海盜,大家聽(tīng)說(shuō)過(guò)吧。這是一幫亡命之徒,在海上搶人錢(qián)財(cái),奪人性命,干的是刀頭上舔血的營(yíng)生。在我們的印象中,他們一般都瞎一只眼,用條黑布或者講究點(diǎn)的用個(gè)黑皮眼罩把壞眼遮上。他們還有在地下埋寶的好習(xí)慣,而且總要畫(huà)上一張藏寶圖,以方便后人掘取。不過(guò)大家是否知道,他們是世界上最民主的團(tuán)體。參加海盜的都是桀驁不馴的漢子,是不愿聽(tīng)人命令的,船上平時(shí)一切事都由投票解決。船長(zhǎng)的唯一特權(quán),是有自己的一套餐具——可是在他不用時(shí),其他海盜是可 ... [閱讀全文]

          已有 6 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-03-10 00:07 justjavac(迷渡) 閱讀(194) | 評(píng)論 (0)編輯 收藏
          寫(xiě)道 ?一天有個(gè)年輕人來(lái)到王老板的店里買(mǎi)了一件禮物, 這件禮物成本是18元, 標(biāo)價(jià)是21元。 結(jié)果是這個(gè)年輕人掏出100元要買(mǎi)這件禮物, 王老板當(dāng)時(shí)沒(méi)有零錢(qián), 用那100元向街坊換了100元的零錢(qián),找給年輕人79元. 但是街坊后來(lái)發(fā)現(xiàn)那100元是假鈔, 王老板無(wú)奈還了街坊100元. 現(xiàn)在問(wèn)題是: 王老板在這次交易中到底損失了多少錢(qián) ?? ? ?? 下一題(消失的一元錢(qián)) ? ? ? ? ? ? ? [閱讀全文]

          已有 63 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-03-09 23:20 justjavac(迷渡) 閱讀(53) | 評(píng)論 (0)編輯 收藏
          孔子,名丘,字仲尼,春秋時(shí)魯國(guó)人,圣人也。 南子者,衛(wèi)靈公夫人也,春秋時(shí)衛(wèi)國(guó)最著名的美人。 孔子見(jiàn)南子發(fā)生了什么?不得而知,無(wú)據(jù)可靠。歷代文人對(duì)此事津津樂(lè)道,讓人不由得產(chǎn)生很多遐想,“子見(jiàn)南子”遂成為史上有名的公案。 事情的經(jīng)過(guò)是這樣的,公元前496年,孔子56歲,剛剛辭去魯國(guó)“大司寇”職務(wù),到了衛(wèi)國(guó)做官,但是有人向衛(wèi)靈公打小報(bào)告,說(shuō)孔子的壞話,孔子害怕獲罪,辭官想到陳國(guó)去,在“匡”這個(gè)地方被誤作陽(yáng)虎而被抓,脫險(xiǎn)后在一個(gè)叫“蒲”的地方呆了一個(gè)多月,后又返回了衛(wèi)國(guó)。 ... [閱讀全文]

          已有 1 人發(fā)表留言,猛擊->>這里<<-參與討論


          JavaEye推薦



          posted @ 2009-03-09 23:03 justjavac(迷渡) 閱讀(50) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 丰台区| 大化| 通海县| 永修县| 芜湖县| 贵港市| 时尚| 宁都县| 雅江县| 南充市| 榆林市| 永寿县| 清镇市| 玛纳斯县| 襄汾县| 大同县| 都安| 仁寿县| 饶河县| 额济纳旗| 普兰县| 宣恩县| 宣化县| 翁源县| 翁牛特旗| 台北市| 南丰县| 河东区| 田阳县| 山东| 五常市| 莆田市| 会泽县| 易门县| 遵化市| 武邑县| 抚顺市| 滨海县| 长海县| 宝坻区| 西乌|