| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |
編者按:2008年8月4日,StackOverflow 網(wǎng)友 Bert F 發(fā)帖提問:哪本最具影響力的書,是每個程序員都應(yīng)該讀的?
“如果能時光倒流,回到過去,作為一個開發(fā)人員,你可以告訴自己在職業(yè)生涯初期應(yīng)該讀一本, 你會選擇哪本書呢?我希望這個書單列表內(nèi)容豐富,可以涵蓋很多東西。”
很多程序員響應(yīng),他們在推薦時也寫下自己的評語。 以前就有國內(nèi)網(wǎng)友介紹這個程序員書單,不過都是推薦數(shù) Top 10的書。
其實除了前10本之外,推薦數(shù)前30左右的書籍都算經(jīng)典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。
下面就按照各本書的推薦數(shù)排列。
推薦數(shù):1684
“優(yōu)秀的編程實踐的百科全書,《代碼大全》注重個人技術(shù),其中所有東西加起來, 就是我們本能所說的“編寫整潔的代碼”。這本書有50頁在談?wù)摯a布局。” —— Joel Spolsky
對于新手來說,這本書中的觀念有點高階了。到你準(zhǔn)備閱讀此書時,你應(yīng)該已經(jīng)知道并實踐過書中99%的觀念。– esac
Steve McConnell的原作《代碼大全》(第1版)是公認(rèn)的關(guān)于編程的最佳實踐指南之一, 在過去的十多年間,本書一直在幫助開發(fā)人員編寫更好的軟件。
現(xiàn)在,作者將這本經(jīng)典著作全新演繹,融入了最前沿的實踐技術(shù),加入了上百個嶄新的代碼示例, 充分展示了軟件構(gòu)建的藝術(shù)性和科學(xué)性。 McConnell匯集了來自研究機構(gòu)、學(xué)術(shù)界以及業(yè)界日常實踐的主要知識, 把最高效的技術(shù)和最重要的原理交織融會為這本既清晰又實用的指南。
無論您的經(jīng)驗水平如何,也不管您在怎樣的開發(fā)環(huán)境中工作,也無論項目是大是小, 本書都將激發(fā)您的思維并幫助您構(gòu)建高品質(zhì)的代碼。
《代碼大全(第2版))》做了全面的更新,增加了很多與時俱進的內(nèi)容,包括對新語言、新的開發(fā)過程與方法論的討論等等。
推薦數(shù):1504
對于那些已經(jīng)學(xué)習(xí)過編程機制的程序員來說,這是一本卓越的書。 或許他們還是在校生,但對要自己做什么,還感覺不是很安全。
就像草圖和架構(gòu)之間的差別。雖然你在學(xué)校課堂上學(xué)到的是畫圖,你也可以畫的很漂亮, 但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個P2P的音樂交換網(wǎng)絡(luò)圖,那這本書就適合你了。—— Joel
《程序員修煉之道:從小工到專家》內(nèi)容簡介:《程序員修煉之道》由一系列獨立的部分組成, 涵蓋的主題從個人責(zé)任、職業(yè)發(fā)展,知道用于使代碼保持靈活、并且易于改編和復(fù)用的各種架構(gòu)技術(shù), 利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比, 全面闡釋了軟件開發(fā)的許多不同方面的最佳實踐和重大陷阱。
無論你是初學(xué)者,是有經(jīng)驗的程序員,還是軟件項目經(jīng)理,《程序員修煉之道:從小工到專家》都適合你閱讀。
推薦數(shù):916
就個人而言,這本書目前為止對我影響醉倒的一本編程書。
《代碼大全》、《重構(gòu)》和《設(shè)計模式》這些經(jīng)典書會教給你高效的工作習(xí)慣和交易細(xì)節(jié)。 其他像《人件集》、《計算機編程心理學(xué)》和《人月神話》這些書會深入軟件開發(fā)的心理層面。 其他書籍則處理算法。這些書都有自己所屬的位置。
然而《計算機程序的構(gòu)造和解釋》與這些不同。 這是一本會啟發(fā)你的書,它會燃起你編寫出色程序的熱情; 它還將教會你認(rèn)識并欣賞美; 它會讓你有種敬畏,讓你難以抑制地渴望學(xué)習(xí)更多的東西。
其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。
同時,你將會學(xué)到其他東西,函數(shù)式編程(第三章)、惰性計算、元編程、虛擬機、解釋器和編譯器。
一些人認(rèn)為此書不適合新手。 個人認(rèn)為,雖然我并不完全認(rèn)同要有一些編程經(jīng)驗才能讀此書,但我還是一定推薦給初學(xué)者。 畢竟這本書是寫給著名的6.001,是麻省理工學(xué)院的入門編程課程。 此書或許需要多做努力(尤其你在做練習(xí)的時候,你也應(yīng)當(dāng)如此),但這個價是對得起這本書的。
推薦數(shù):774
這本書簡潔易讀,會教給你三件事:C 編程語言;如何像程序員一樣思考;底層計算模型。 (這對理解“底層”非常重要)—— Nathan
《C程序設(shè)計語言》(第2版新版)講述深入淺出,配合典型例證,通俗易懂,實用性強, 適合作為大專院校計算機專業(yè)或非計算機專業(yè)的C語言教材,也可以作為從事計算機相關(guān)軟硬件開發(fā)的技術(shù)人員的參考書。
《C程序設(shè)計語言》(第2版新版)原著即為C語言的設(shè)計者之一Dennis M.Ritchie和著名的計算機科學(xué)家Brian W.Kernighan合著的 一本介紹C語言的權(quán)威經(jīng)典著作。 我們現(xiàn)在見到的大量論述C語言程序設(shè)計的教材和專著均以此書為藍本。 原著第1版中介紹的C語言成為后來廣泛使用的C語言版本——標(biāo)準(zhǔn)C的基礎(chǔ)。
人們熟知的“hello,world”程序就是由本書首次引入的,現(xiàn)在,這一程序已經(jīng)成為所有程序設(shè)計語言入門的第一課。
推薦數(shù):671
《代碼大全》教你如何正確編程; 《人月神話》教你如何正確管理; 《設(shè)計模式》教你如何正確設(shè)計……
在我看來,代碼只是一個工具,并非精髓。 開發(fā)軟件的主要部分是創(chuàng)建新算法或重新實現(xiàn)現(xiàn)有算法。 其他部分則像重新組裝樂高磚塊或創(chuàng)建“管理”層。
我依然夢想這樣的工作,我的大部分時間(>50%)是在寫算法,其他“管理”細(xì)節(jié)則留給其他人…… —— Ran Biron
推薦數(shù):617
《重構(gòu):改善既有代碼的設(shè)計》清晰地揭示了重構(gòu)的過程,解釋了重構(gòu)的原理和最佳實踐方式, 并給出了何時以及何地應(yīng)該開始挖掘代碼以求改善。 書中給出了70多個可行的重構(gòu),每個重構(gòu)都介紹了一種經(jīng)過驗證的代碼變換手法的動機和技術(shù)。
《重構(gòu):改善既有代碼的設(shè)計》提出的重構(gòu)準(zhǔn)則將幫助你一次一小步地修改你的代碼,從而減少了開發(fā)過程中的風(fēng)險。
《重構(gòu):改善既有代碼的設(shè)計》適合軟件開發(fā)人員、項目管理人員等閱讀, 也可作為高等院校計算機及相關(guān)專業(yè)師生的參考讀物。
我想我不得不推薦《重構(gòu)》:改進現(xiàn)有代碼的設(shè)計。—— Martin
我必須承認(rèn),我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序, 而優(yōu)秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler
推薦數(shù):617
自1995年出版以來,本書一直名列Amazon和各大書店銷售榜前列。 近10年后,本書仍是Addison-Wesley公司2003年最暢銷的圖書之一。 中文版銷售逾4萬冊。
就我而言,我認(rèn)為四人幫編著的《設(shè)計模式》是一本極為有用的書。 雖然此書并不像其他建議一樣有關(guān)“元”編程,但它強調(diào)封裝諸如模式一類的優(yōu)秀編程技術(shù), 因而鼓勵其他人提出新模式和反模式(antipatterns),并運用于編程對話中。—— Chris Jester-Young
推薦數(shù):588
在軟件領(lǐng)域,很少能有像《人月神話》一樣具有深遠(yuǎn)影響力并且暢銷不衰的著作。
Brooks博士為人們管理復(fù)雜項目提供了最具洞察力的見解。 既有很多發(fā)人深省的觀點,又有大量軟件工程的實踐。 本書內(nèi)容來自Brooks博士在IBM公司System/360家族和OS/360中的項目管理經(jīng)驗。
該書英文原版一經(jīng)面世,即引起業(yè)內(nèi)人士的強烈反響,后又譯為德、法、日、俄中等多種語言,全球銷量數(shù)百萬冊。 確立了其在行業(yè)內(nèi)的經(jīng)典地位。
推薦數(shù):542
《計算機程序設(shè)計藝術(shù)》系列著作對計算機領(lǐng)域產(chǎn)生了深遠(yuǎn)的影響。 這一系列堪稱一項浩大的工程,自1962年開始編寫,計劃出版7卷,目前已經(jīng)出版了4卷。
《美國科學(xué)家》雜志曾將這套書與愛因斯坦的《相對論》等書并列稱為20世紀(jì)最重要的12本物理學(xué)著作。 目前Knuth正將畢生精力投入到這部史詩性著作的撰寫中。
這是高德納傾注心血寫的一本書。—— Peter Coulton
推薦數(shù):462
我很奇怪,居然沒人提到龍書。(或許已有推薦,我沒有看到)。 我從沒忘過此書的第一版封面。 此書讓我知道了編譯器是多么地神奇絕妙。- DB
推薦數(shù):445
強大的寫作陣容。
本書的產(chǎn)品設(shè)計應(yīng)用神經(jīng)生物學(xué)、認(rèn)知科學(xué),以及學(xué)習(xí)理論,這使得這本書能夠?qū)⑦@些知識深深地印在你的腦海里, 不容易被遺忘。
本書的編寫方式采用引導(dǎo)式教學(xué),不直接告訴你該怎么做,而是利用故事當(dāng)作引子,帶領(lǐng)讀者思考并想辦法解決問題。 解決問題的過程中又會產(chǎn)生一些新的問題,再繼續(xù)思考、繼續(xù)解決問題,這樣可以加深體會。
作者以大量的生活化故事當(dāng)背景,例如第1章是鴨子,第2章是氣象站,第3章是咖啡店, 書中搭配大量的插圖(幾乎每一頁都有圖),所以閱讀起來生動有趣,不會感覺到昏昏欲睡。
作者還利用歪歪斜斜的手寫字體,增加“現(xiàn)場感”。 精心設(shè)計許多爆笑的對白,讓學(xué)習(xí)過程不會太枯燥。 還有模式告白節(jié)目,將設(shè)計模式擬人化成節(jié)目來賓,暢談其內(nèi)在的一切。 每一章都有數(shù)目不等的測驗題。 每章最后有一頁要點整理,這也是精華所在,我都是利用這一頁做復(fù)習(xí)。
我知道四人幫的《設(shè)計模式》是一本標(biāo)準(zhǔn)書,但倒不如先看看這部大部頭,此書更為簡易。 一旦你了解了解了基本原則,可以去看四人幫的那本圣經(jīng)了。- Calanus
推薦數(shù):437
如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾、艾舍爾、巴赫書》。 他極為深入研究了程序員每日都要面對的問題:遞歸、驗證、證明和布爾代數(shù)。 這是一本很出色的讀物,難度不大,偶爾有挑戰(zhàn),一旦你要鏖戰(zhàn)到底,將是非常值得的。 – Jonik
推薦數(shù):329
細(xì)節(jié)之中自有天地,整潔成就卓越代碼
盡管糟糕的代碼也能運行,但如果代碼不整潔,會使整個開發(fā)團隊泥足深陷, 寫得不好的代碼每年都要耗費難以計數(shù)的時間和資源。 然而這種情況并非無法避免。
著名軟件專家RoberfC.Marlin在《代碼整潔之道》中為你呈現(xiàn)出了革命性的視野。 Martin攜同ObjectMetltor公司的同事,從他們有關(guān)整潔代碼的最佳敏捷實踐中提煉出軟件技藝的價值觀, 以饗讀者,讓你成為更優(yōu)秀的程序員——只要你著手研讀《代碼整潔之道》。
閱讀《代碼整潔之道》需要你做些什么呢?你將閱讀代碼——大量代碼。 《代碼整潔之道》促使你思考代碼中何謂正確,何謂錯誤。 更重要的是,《代碼整潔之道》將促使你重新評估自己的專業(yè)價值觀,以及對自己技藝的承諾。
從《代碼整潔之道》中可以學(xué)到:
雖然《代碼整潔之道》和《代碼大全》有很多共同之處,但它有更為簡潔更為實際的清晰例子。 – Craig P. Motlin
推薦數(shù):297
在我職業(yè)生涯早期,Scott Meyer的《Effective C++》和后續(xù)的《More Effective C++》都對我的編程能力有著直接影響。 正如當(dāng)時的一位朋友所說,這些書縮短你培養(yǎng)編程技能的過程,而其他人可能要花費數(shù)年。
去年對我影響最大的一本書是《大教堂與市集》,該書教會我很有關(guān)開源開發(fā)過程如何運作,和如何處理我代碼中的Bug。 – John Channing
推薦數(shù):282
多年以來,當(dāng)程序員們推選出最心愛的計算機圖書時,《編程珠璣》總是位列前列。 正如自然界里珍珠出自細(xì)沙對牡蠣的磨礪,計算機科學(xué)大師Jon Bentley以其獨有的洞察力和創(chuàng)造力, 從磨礪程序員的實際問題中凝結(jié)出一篇篇不朽的編程“珠璣”, 成為世界計算機界名刊《ACM通訊》歷史上最受歡迎的專欄, 最終結(jié)集為兩部不朽的計算機科學(xué)經(jīng)典名著,影響和激勵著一代又一代程序員和計算機科學(xué)工作者。
本書為第一卷,主要討論計算機科學(xué)中最本質(zhì)的問題:如何正確選擇和高效地實現(xiàn)算法。
盡管我不得不羞愧地承認(rèn),書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》,書中有些令人驚奇的東西。 – Matt Warren
本書是繼《重構(gòu)》和《重構(gòu)與模式》之后探討修改代碼技術(shù)的又一里程碑式的著作, 而且從涵蓋面和深度上都超過了前兩部經(jīng)典。 書中不僅講述面向?qū)ο笳Z言(Java、C#和C++)代碼,也有專章討論C這樣的過程式語言。
作者將理解、測試和修改代碼的原理、技術(shù)和最新工具(自動化重構(gòu)工具、單元測試框架、仿對象、集成測試框架等), 與解依賴技術(shù)和大量開發(fā)和設(shè)計優(yōu)秀代碼的原則、最佳實踐相結(jié)合,許多內(nèi)容非常深入,而且常常發(fā)前人所未發(fā)。
書中處處體現(xiàn)出作者獨到的洞察力,以及多年開發(fā)和指導(dǎo)軟件項目所積累的豐富經(jīng)驗和深厚功力。 通過這部集大成之作,你不僅能掌握最頂尖的修改代碼技術(shù),還可以大大提高對代碼和軟件開發(fā)的領(lǐng)悟力。
我認(rèn)為沒有任何一本書能向這本書一樣影響了我的編程觀點。 它明確地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什么要避免)。- Wolfbyte
同意。很多開發(fā)人員討論用干凈的石板來編寫軟件。 但我想幾乎所有開發(fā)人員的某些時候是在吃其他開發(fā)人員的狗食。– Bernard Dy
這是一本講述計算機工作原理的書。
不過,你千萬不要因為“工作原理”之類的字眼就武斷地認(rèn)為,它是晦澀而難懂的。 作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。 更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。 這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜于“電氣工程師”和“程序員”的理解。
不管你是計算機高手,還是對這個神奇的機器充滿敬畏之心的菜鳥, 都不妨翻閱一下《編碼:隱匿在計算機軟硬件背后的語言》,讀一讀大師的經(jīng)典作品,必然會有收獲。
我推薦Charles Petzold的《編碼》。 在這個充滿工具和IDE的年代,很多復(fù)雜度已經(jīng)從程序員那“抽取”走了,這本書一本開眼之作。 – hemil
對我影響最大的那本書是 Robert Pirsig 的《禪與摩托車維修藝術(shù)》。 不管你做什么事,總是要力求完美,徹底了解你手中的工具和任務(wù),更為重要的是, 要有樂趣(因為如果你做事有樂趣,一切將自發(fā)引向更好的結(jié)果)。 – akr
Demarco 和 Lister 表明,軟件開發(fā)中的首要問題是人,并非技術(shù)。 他們的答案并不簡單,只是令人難以置信的成功。 第二版新增加了八章內(nèi)容。 – Eduardo Molteni
這是一本訪談筆錄,記錄了當(dāng)今最具個人魅力的15位軟件先驅(qū)的編程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在內(nèi)的業(yè)界傳奇人物,為我們講述了 他們是怎么學(xué)習(xí)編程的,在編程過程中發(fā)現(xiàn)了什么以及他們對未來的看法, 并對諸如應(yīng)該如何設(shè)計軟件等長久以來一直困擾很多程序員的問題談了自己的觀點。
一本非常有影響力的書,可以從中學(xué)到一些業(yè)界頂級人士的經(jīng)驗,了解他們?nèi)绾嗡伎疾⒐ぷ鳌?– Jahanzeb Farooq
雖然這本書可能有點偏題,但不管你信不信,這本書曾在計算機科學(xué)專業(yè)課程的閱讀列表之上。 一個優(yōu)秀的角色模型,一本有關(guān)好奇心的優(yōu)秀書籍。 – mike511
此書第二版教你如何編寫漂亮并高效的代碼,雖然這是一本Java書,但其中有很多跨語言的理念。 – Marcio Aguiar
很奇怪,還沒人推薦 Martin Fowler 的《企業(yè)應(yīng)用架構(gòu)模式》- levi rosol
這兩本是LISP的英文書,尚無中文版。 美國東北大學(xué)網(wǎng)站上也有電子版。
本書是基于眾多商務(wù)案例,講述如何創(chuàng)建更好的、高客戶忠誠度的軟件產(chǎn)品和基于軟件的高科技產(chǎn)品的書。 本書列舉了很多真實可信的實際例子,說明目前在軟件產(chǎn)品和基于軟件的高科技產(chǎn)品中,普遍存在著“難用”的問題。
作者認(rèn)為,“難用”問題是由這些產(chǎn)品中存在著的高度“認(rèn)知摩擦”引起的, 而產(chǎn)生這個問題的根源在于現(xiàn)今軟件開發(fā)過程中欠缺了一個為用戶利益著想的前期“交互設(shè)計”階段。 “難用”的產(chǎn)品不僅損害了用戶的利益,最終也將導(dǎo)致企業(yè)的失敗。
本書通過一些生動的實例,讓人信服地講述了由作者倡導(dǎo)的“目標(biāo)導(dǎo)向”交互設(shè)計方法在解決“難用”問題方面的有效性, 證實了只有改變現(xiàn)有觀念,才能有效地在開發(fā)過程中引入交互設(shè)計,將產(chǎn)品的設(shè)計引向成功。
本書雖然是一本面向商務(wù)人員而編寫的書,但也適合于所有參與軟件產(chǎn)品和基于軟件的高科技產(chǎn)品開發(fā)的專業(yè)人士, 以及關(guān)心軟件行業(yè)和高科技行業(yè)現(xiàn)狀與發(fā)展的人士閱讀。
他還有另一本中文版著作:《About Face 3 交互設(shè)計精髓》
如果你不是程序員,閱讀此書可能會很有趣,但如果你已經(jīng)是個程序員,可能會有點乏味。
It is useful regardless operating system you use. – J.F. Sebastian
不管你使用什么操作系統(tǒng),這本書都很有用。 – J.F. Sebastian
45個習(xí)慣,分為7個方面:工作態(tài)度、學(xué)習(xí)、軟件交付、反饋、編碼、調(diào)試和協(xié)作。
每一個具體的習(xí)慣里,一開始提出一個謬論,然后展開分析,之后有正隊性地提出正確的做法,并設(shè)身處地地講出了正確做法給你個人的“切身感受”,最后列出幾條注意事項,幫助你修正自己的做法(“平衡的藝術(shù)”)。
前面已經(jīng)提到的很多書都啟發(fā)了我,并影響了我,但這本書每位程序員都應(yīng)該讀。 它向我展示了單元測試和TDD的重要性,并讓我很快上手。 – Curro
我不關(guān)心你的代碼有多好或優(yōu)雅。 如果你沒有測試,你或許就如同沒有編寫代碼。 這本書得到的推薦數(shù)應(yīng)該更高些。 人們討論編寫用戶喜歡的軟件,或既設(shè)計出色并健壯的高效代碼,但如果你的軟件有一堆bug,談?wù)撃切〇|西毫無意義。– Adam Gent
可用性設(shè)計是Web設(shè)計中最重要也是難度最大的一項任務(wù)。 《點石成金-訪客至上的網(wǎng)頁設(shè)計秘笈(原書第二版)》作者根據(jù)多年從業(yè)的經(jīng)驗,剖析用戶的心理, 在用戶使用的模式、為掃描進行設(shè)計、導(dǎo)航設(shè)計、主頁布局、可用性測試等方面提出了許多獨特的觀點, 并給出了大量簡單、易行的可用性設(shè)計的建議。
本書短小精煉,語言輕松詼諧,書中穿插大量色彩豐富的屏幕截圖、趣味叢生的卡通插圖以及包含大量信息的圖表, 使枯燥的設(shè)計原理變得平易近人。
本書適合從事Web設(shè)計和Web開發(fā)的技術(shù)人員閱讀,特別適合為如何留住訪問者而苦惱的網(wǎng)站/網(wǎng)頁設(shè)計人員閱讀。 這是一本關(guān)于Web設(shè)計原則而不是Web設(shè)計技術(shù)的書。
本書作者是Web設(shè)計專家,具有豐富的實踐經(jīng)驗。 他用幽默的語言為你揭示W(wǎng)eb設(shè)計中重要但卻容易被忽視的問題,只需幾個小時, 你便能對照書中講授的設(shè)計原則找到網(wǎng)站設(shè)計的癥結(jié)所在,令你的網(wǎng)站煥然一新。
取決于你所追求的目標(biāo)。 我喜歡《代碼大全》是因純編程,《點石成金》是一本有關(guān)UI設(shè)計的卓越書籍。 – Justin Standard
1. CI中的controller都應(yīng)當(dāng)小寫。剛開始為了區(qū)分單詞,把第二個單詞大寫了,結(jié)果就是不認(rèn)default_controller。事實證明這是錯誤的。放到linux下面就不靈了,應(yīng)該全部小寫,如果你大寫了,CI會認(rèn)為這是libraries里面的東西。不管怎樣都應(yīng)該全部小寫,至少可以避免linux下區(qū)分大小寫的問題。
2. 分頁的問題。CI的官方論壇下提供了一些源代碼,怎樣寫分頁函數(shù)我就不多說了,可以直接看高手的。關(guān)鍵是傳遞頁面參數(shù)的時候,不要忘了修改segment。一開始怎么傳都不對,后來才想起來我的網(wǎng)址已經(jīng)是localhost/codeigniter/aaa/bbb/3/10了,這樣segment也要相應(yīng)改變。分頁參數(shù)在第幾個/后,他就是uri->segment(幾)。如果是搜索之后的分頁,那么$config['total_rows']就不是count_all了,而是加入where之后的query的記錄數(shù)。想起來倒是有一個問題還沒解決,就是在你點search之后,一般需要用JS把網(wǎng)址轉(zhuǎn)換成CI固有的模式,但是怎樣使這個js生成的網(wǎng)址包含到site_url中,我沒有解決,只能手工了(仔細(xì)想想還是挺簡單的呵呵,自己造網(wǎng)址不用site_url)。
3. MVC模式我已經(jīng)比較適應(yīng)了。將頁面都放在view中,控制語句放在controller中,而函數(shù)放在model中。剛開始有很多人和我一樣想要在view或者control中加一些語句,只能說,不行,也不規(guī)范。最好的辦法是寫成helper,如果是數(shù)據(jù)庫的二次調(diào)用的話,可以用inner join合并。
4. htaccess的問題。很多人肯定和我一樣,一開始接觸的時候就是感興趣怎樣可以去掉index.php。雖然網(wǎng)上已經(jīng)泛濫了,但是我再寫一次吧。其實就兩個工作,第一,在根目錄寫一個.htaccess的文檔,第二,開啟apache中的rewrite模塊。
1)htaccess的寫法很多。這是基于你對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)就能識別你的根目錄了,所有鏈接改成site_url()就可以保證路徑不會出錯了。于是,我的htaccess是這樣的:
RewriteEngine on
RewriteCond $1 !^(index\.php|www|uploadfiles|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L] [L]
第一行是將rewrite打開,第二行是不rewrite的例外,包括index.php本身,www目錄,uploadfiles(這個參見5),還有robots搜索,第三行自然就是將index.php隱藏的rewrite規(guī)則了,即剩下的網(wǎng)址由于原來都是localhost/codeigniter/index.php/aaa/bbb的模式,現(xiàn)在可以去掉index.php了。而www下的網(wǎng)址不涉及index.php,用不到這個規(guī)則,所以要排除。
2)首先找到apache下面的http.conf,路徑是apache的conf目錄下。找到這一行:LoadModule rewrite_module modules/mod_rewrite.so,將前面的#去掉,也就是說開啟這個module。另外需要找到rewrite的目錄行,將AllowOverride設(shè)置為All,其實就是roadmodule下面的那個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也可以訪問了。其實更關(guān)鍵的是你的各個目錄的路徑安排。
5.FCKEditor的問題。應(yīng)該說我在應(yīng)用的時候沒有遇到任何麻煩,除了上傳時候的路徑讓我一頓好找。我覺得設(shè)置成根目錄下的/uploadfiles是不錯的選擇,當(dāng)然別忘了在htaccess中把uploadfiles也放在不rewrite的隊伍中。因為我現(xiàn)在的習(xí)慣是所有的文件編碼都設(shè)置成utf-8,所以網(wǎng)上經(jīng)常說的亂碼的現(xiàn)象沒有遇到。
基本上就是這些基本的問題了,我做的其實就是簡單的企業(yè)網(wǎng)站,沒有高級應(yīng)用,所以也沒有遇到更復(fù)雜的問題。等考完GT可以嘗試做一個更復(fù)雜的網(wǎng)站,和AJAX結(jié)合后再寫一些心得。下次要再做這樣的CMS,后臺直接搞定,省了不少時間。而且對于我這樣的PHP爛人來說,CI幫我解決了很多安全問題,同時也提高了效率。
有點過度興奮了,寫得超級亂,我自己都不愿意回過頭去細(xì)細(xì)檢查了,具體問題可以再聯(lián)系我,只要我能解答。最后上傳一個驗證碼的helper吧,版權(quán)歸CI論壇上的同學(xué)所有,我只是轉(zhuǎn)一下,順便寫一下用法。。。
1)首先在controller中引用getcode_helper.php, $this->load->helper('getcode');
建立一個function比如
2)驗證碼圖片鏈接地址:<img id="codeimage" src="<?=site_url('controller路徑/createcode')?>
3)表單提交時驗證函數(shù):
在與許多客戶的接觸中,我發(fā)現(xiàn)有必要建立一套SOA的基本原則。下面的部分將介紹SOA中應(yīng)有的基本原則。這些并非絕對真理,它們更像一個用于SOA相關(guān)討論的參考框架。你會發(fā)現(xiàn):前四項衍生自Don Box提出的四項原則,盡管隨著時間的流逝,這四項原則的描述可能已經(jīng)有了些變化。
相關(guān)廠商內(nèi)容
1. 明確邊界:服務(wù)被調(diào)用時,與實現(xiàn)其功能相關(guān)的內(nèi)容都應(yīng)被傳遞過來。對服務(wù)的所有訪問都應(yīng)該通過公共接口進行。調(diào)用服務(wù)時,非隱含的假設(shè)是必須的。“服務(wù)與消息緊密聯(lián)系,因為參數(shù)進出服務(wù)的唯一方式是通過消息進行的”。作為通用的模式,服務(wù)調(diào)用不應(yīng)依賴于共享的上下文,而應(yīng)被作為無狀態(tài)的模塊。契約描述了服務(wù)的功能性與非功能性的能力和特點,管理著服務(wù)提供的接口。服務(wù)調(diào)用是一個具有業(yè)務(wù)邏輯效果的行為,可能有大量的資源開銷,并且導(dǎo)致一系列不同于本地方法調(diào)用和遠(yuǎn)程過程調(diào)用的錯誤。服務(wù)的調(diào)用絕非遠(yuǎn)程過程調(diào)用。
服務(wù)的使用和提供應(yīng)該盡可能地簡單,因此與服務(wù)間的交互沒必要被隱藏得太多。在SOA中,服務(wù)發(fā)送和接收的消息、服務(wù)契約以及服務(wù)本身都應(yīng)當(dāng)是最好的構(gòu)件。這就意味著,例如,被用到的編程模型和工具至少應(yīng)該提供一個API,這個API會幫助服務(wù)的編程人員了解上述概念。總的來說,一個明確的接口會封裝服務(wù)的內(nèi)在實現(xiàn),而服務(wù)通過該接口發(fā)布自己的功能;與服務(wù)交互是一個具體的行為,它依賴于服務(wù)使用者和提供者之間消息的傳遞。
2. 共享契約和架構(gòu),而不是類:基于一份服務(wù)描述(一份契約),服務(wù)使用者和服務(wù)提供者都可以獲得使用或提供服務(wù)的全部所需。根據(jù)松耦合原則,服務(wù)提供者不能依靠服務(wù)使用者來重用那些依賴于使用者環(huán)境的代碼。畢竟,服務(wù)使用者可能使用不同的開發(fā)環(huán)境和運行環(huán)境。這條原則給SOA體系中所能交換的數(shù)據(jù)加上了嚴(yán)格的限制。理想的情況是,數(shù)據(jù)以符合一種或多種模式的XML文檔形式被交換,因為這種方式可應(yīng)用于任何你能想到的編程環(huán)境。因此,因為這條原則在基于DCOM和基于RMI的環(huán)境中是不可能被遵守的,所以這兩種環(huán)境基本上無法成為SOA的可用選項。
3. 策略驅(qū)動:為了與服務(wù)交互,必須滿足以下兩組不同的要求:
引領(lǐng)科技為您講解配置 codeigniter,codeigniter 基本配置信息在 application/config/config.php 文件,本文詳細(xì)講解每一個基本配置選項,從而快速掌握 codeigniter 進行開發(fā)。
您網(wǎng)站的網(wǎng)址,codeigniter 會根據(jù)這個網(wǎng)址來生成鏈接、表單地址等。
codeigniter 根目錄下的 index.php 文件名,codeigniter 會使用它來生成鏈接地址。如果使用隱藏 index.php 的 URL,將其設(shè)置為空字符串:$config['index_page'] = ""。
codeigniter 生成 URL 使用的格式,設(shè)置為“AUTO”自動探測。如果鏈接不能正常工作,可以嘗試以下值:
PATH_INFO、QUERY_STRING、REQUEST_URI、ORIG_PATH_INFO。
codeigniter 產(chǎn)生鏈接時使用的 URL 后綴,如果要實現(xiàn)偽靜態(tài),可以設(shè)置 $config['url_suffix'] = ".html"。
codeigniter 程序默認(rèn)使用的語言
codeigniter 程序默認(rèn)使用的字符集
是否啟用鉤子,鉤子功能使得您可以在不修改系統(tǒng)核心文件的基礎(chǔ)上來改變或增加系統(tǒng)的核心運行功能。
設(shè)置擴展 codeigniter 類庫時使用的類名前綴
設(shè)置 codeigniter URL 中允許使用的字符,這是一個正則表達式。當(dāng)訪問者試圖訪問的 codeigniter URL 包含其它字符時,會得到一個警告。應(yīng)該盡量限制 codeigniter URL 使用的字符來提高安全性,可以有效的過濾注入攻擊。如果設(shè)置為空,允許使用所有字符,強烈建議不要這么做。
codeigniter URL 默認(rèn)使用分段的 URL,此選項也允許 codeigniter 開啟查詢字符串形式 URL。您可以使用查詢字符串來傳遞要訪問的控制器和函數(shù)。例如: index.php?c=controller&m=method。codeigniter 默認(rèn)使用分段的 URL,查詢字符串的 URL 很多特性不被支持。
codeigniter 將查詢字符串中此選項對應(yīng)的值當(dāng)做 codeigniter 控制器的名字。
codeigniter 將查詢字符串中此選項對應(yīng)的值當(dāng)做 codeigniter 控制器方法的名字
啟用錯誤日志,設(shè)置記錄哪些類型的錯誤。
0 = 關(guān)閉錯誤日志記錄
1 = 記錄錯誤信息
2 = 記錄調(diào)試信息
3 = 記錄通知信息
4 = 記錄所有信息
如果您不想使用默認(rèn)的錯誤日志記錄目錄配置(system/logs/),可以設(shè)置完整的服務(wù)器目錄。
codeigniter 錯誤日志時間格式
如果您不想使用默認(rèn)的緩存目錄(system/cache/)來存儲緩存,可以設(shè)置完整的服務(wù)器目錄
codeigniter 使用的密鑰
是否對輸入數(shù)據(jù)(GET、POST)自動過濾跨腳本攻擊
啟用Gzip壓縮達到最快的頁面加載速度
設(shè)置時間格式:"local"、"GMT"
如果您想要使用短標(biāo)記,但 PHP 服務(wù)器不支持,codeigniter 可以通過重寫短標(biāo)記來支持這一功能。
如果訪問者通過代理服務(wù)器來訪問您的網(wǎng)站,您必須設(shè)置代理服務(wù)器 IP 列表,以識別出訪問者真正的 IP
EL表達式
1、EL簡介
1)語法結(jié)構(gòu)
${expression}
2)[]與.運算符
EL 提供.和[]兩種運算符來存取數(shù)據(jù)。
當(dāng)要存取的屬性名稱中包含一些特殊字符,如.或?等并非字母或數(shù)字的符號,就一定要使用 []。
例如:
${user.My-Name}應(yīng)當(dāng)改為${user["My-Name"] }
如果要動態(tài)取值時,就可以用[]來做,而.無法做到動態(tài)取值。例如:
${sessionScope.user[data]}中data 是一個變量
3)變量
EL存取變量數(shù)據(jù)的方法很簡單,例如:${username}。它的意思是取出某一范圍中名稱為
username的變量。
因為我們并沒有指定哪一個范圍的username,所以它會依序從Page、Request、Session、
Application范圍查找。
假如途中找到username,就直接回傳,不再繼續(xù)找下去,但是假如全部的范圍都沒有找到時,
就回傳null。
屬性范圍在EL中的名稱
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4) 1--EL表達式用${}表示,可用在所有的HTML和JSP標(biāo)簽中作用是代替JSP頁面中復(fù)雜的JAVA代碼.
2--EL表達式可操作常量 變量 和隱式對象. 最常用的 隱式對象有${param}和${paramValues}.
${param}表示返回請求參數(shù)中單個字符串的值. ${paramValues}表示返回請求參數(shù)的一組
值.pageScope表示頁面范圍的變量.requestScope表示請求對象的變量. sessionScope表示會話
范圍內(nèi)的變量.applicationScope表示應(yīng)用范圍的變量.
3 --<%@ page isELIgnored="true"%> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默認(rèn)的啟用EL語言.
4-- EL語言可顯示 邏輯表達式如${true and false}結(jié)果是false 關(guān)系表達式如${5>6} 結(jié)
果是false 算術(shù)表達式如 ${5+5} 結(jié)果是10
5--EL中的變量搜索范圍是:page request session application 點運算符(.)和"[ ]"都是
表示獲取變量的值.區(qū)別是[ ]可以顯示非詞類的變量
2、EL隱含對象
1)與范圍有關(guān)的隱含對象
與范圍有關(guān)的EL 隱含對象包含以下四個:pageScope、requestScope、sessionScope 和
applicationScope;
它們基本上就和JSP的pageContext、request、session和application一樣;
在EL中,這四個隱含對象只能用來取得范圍屬性值,即getAttribute(String name),卻不能取得
其他相關(guān)信息。
例如:我們要取得session中儲存一個屬性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中則使用下列方法
${sessionScope.username}
2)與輸入有關(guān)的隱含對象
與輸入有關(guān)的隱含對象有兩個:param和paramValues,它們是EL中比較特別的隱含對象。
例如我們要取得用戶的請求參數(shù)時,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中則可以使用param和paramValues兩者來取得數(shù)據(jù)。
${param.name}
${paramValues.name}
3.其他隱含對象
1)cookie
JSTL并沒有提供設(shè)定cookie的動作,
例:要取得cookie中有一個設(shè)定名稱為userCountry的值,可以使用${cookie.userCountry} 來
取得它。
2)header和headerValues
header 儲存用戶瀏覽器和服務(wù)端用來溝通的數(shù)據(jù)
例:要取得用戶瀏覽器的版本,可以使用${header["User-Agent"]}。
另外在鮮少機會下,有可能同一標(biāo)頭名稱擁有不同的值,此時必須改為使用headerValues 來取得
這些值。
3)initParam
initParam取得設(shè)定web站點的環(huán)境參數(shù)(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}來取得名稱為userid
4)pageContext
pageContext取得其他有關(guān)用戶要求或頁面的詳細(xì)信息。
${pageContext.request.queryString} 取得請求的參數(shù)字符串
${pageContext.request.requestURL} 取得請求的URL,但不包括請求之參數(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} 取得主機端的服務(wù)信息
4) 條件標(biāo)簽>
1.算術(shù)運算符有五個:+、-、*或$、/或div、%或mod
2.關(guān)系運算符有六個:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.邏輯運算符有三個:&&或and、||或or、!或not
4.其它運算符有三個:Empty運算符、條件運算符、()運算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
5) EL函數(shù)(functions)
語法:ns:function( arg1, arg2, arg3 …. argN)
其中ns為前置名稱(prefix),它必須和taglib 指令的前置名稱一置
6) 補充:
<%@ 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 對象的
username屬性值輸出到頁面當(dāng)前位置。
${……}是JSP2.0 中的Expression Language(EL)的語法。它定義了一個表達式,
其中的表達式可以是一個常量(如上),也可以是一個具體的表達語句(如forEach循環(huán)體中
的情況)。典型案例如下:
? ${logininfo.username}
這表明引用logininfo 對象的username 屬性。我們可以通過“.”操作符引
用對象的屬性,也可以用“[]”引用對象屬性,如${logininfo[username]}
與${logininfo.username}達到了同樣的效果。
“[]”引用方式的意義在于,如果屬性名中出現(xiàn)了特殊字符,如“.”或者“-”,
此時就必須使用“[]”獲取屬性值以避免語法上的沖突(系統(tǒng)開發(fā)時應(yīng)盡量避免
這一現(xiàn)象的出現(xiàn))。
與之等同的JSP Script大致如下:
LoginInfo logininfo =
(LoginInfo)session.getAttribute(“l(fā)ogininfo”);
String username = logininfo.getUsername();
可以看到,EL大大節(jié)省了編碼量。
這里引出的另外一個問題就是,EL 將從哪里找到logininfo 對象,對于
${logininfo.username}這樣的表達式而言,首先會從當(dāng)前頁面中尋找之前是
否定義了變量logininfo,如果沒有找到則依次到Request、Session、
Application 范圍內(nèi)尋找,直到找到為止。如果直到最后依然沒有找到匹配的
變量,則返回null.
如果我們需要指定變量的尋找范圍,可以在EL表達式中指定搜尋范圍:
${pageScope.logininfo.username}
${requestScope.logininfo.username}
${sessionScope.logininfo.username}
${applicationScope.logininfo.username}
在Spring 中,所有邏輯處理單元返回的結(jié)果數(shù)據(jù),都將作為Attribute 被放
置到HttpServletRequest 對象中返回(具體實現(xiàn)可參見Spring 源碼中
org.springframework.web.servlet.view.InternalResourceView.
exposeModelAsRequestAttributes方法的實現(xiàn)代碼),也就是說Spring
MVC 中,結(jié)果數(shù)據(jù)對象默認(rèn)都是requestScope。因此,在Spring MVC 中,
以下尋址方法應(yīng)慎用:
${sessionScope.logininfo.username}
${applicationScope.logininfo.username}
? ${1+2}
結(jié)果為表達式計算結(jié)果,即整數(shù)值3。
? ${i>1}
如果變量值i>1的話,將返回bool類型true。與上例比較,可以發(fā)現(xiàn)EL會自
動根據(jù)表達式計算結(jié)果返回不同的數(shù)據(jù)類型。
表達式的寫法與java代碼中的表達式編寫方式大致相同。
IF / CHOOSE:
<c:if test="${var.index % 2 == 0}">
*
</c:if>
判定條件一般為一個EL表達式。
<c:if>并沒有提供else子句,使用的時候可能有些不便,此時我們可以通過<c:choose>
tag來達到類似的目的:
<c:choose>
<c:when test="${var.index % 2 == 0}">
*
</c:when>
<c:otherwise>
!
</c:otherwise>
</c:choose>
類似Java 中的switch 語句,<c:choose>提供了復(fù)雜判定條件下的簡化處理手法。其
中<c:when>子句類似case子句,可以出現(xiàn)多次。上面的代碼,在奇數(shù)行時輸出“*”號,
而偶數(shù)行時輸出“!”。
經(jīng)驗:1、如果EL表達式無法解析:– <%@ page isELIgnored="false" %>
一、 JSTL
1、EL運算符>;
2)var指定變量,并把EL運算結(jié)果賦值給該變量值為true/false;
3)scope:指定 var變量的范圍;
6、迭代標(biāo)簽
語法:<c:forEach items=“collection” var=“name” varStatus=“status” begin=“int“
end=”int” step=“int” >
//循環(huán)體
</c:forEach>
說明:1)items:是集合,用EL表達式;
2)var:變量名,存放items
3)varStatus: 顯示循環(huán)狀態(tài)的變量
①index:從0開始;
②count:元素位置,從1開始;
③first:如果是第一個元素則顯示true;
④last:如果是最后一個元素則顯示true;
4)begin:循環(huán)的初始值(整型);
5)end: 循環(huán)結(jié)束 ;
6)step:步長,循環(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>
說明:只有當(dāng)條件user.generous返回值是true時,才顯示user.generous is true.
只有當(dāng)條件user.stingy返回值是true時,才顯示user.stingy is true.
其它所有的情況(即user.generous和user.stingy的值都不為true)全部顯示user.generous and
user.stingy are false.
由于JSTL沒有形如if (){…} else {…}的條件語句,所以這種形式的語句只能用<c:choose>、
<c:when>和<c:otherwise>標(biāo)簽共同來完成了。
8、c:forTokens>標(biāo)簽
說明:
items 進行循環(huán)的項目 是 無
delims 分割符 是 無
begin 開始條件 否 0
end 結(jié)束條件 否 集合中的最后一個項目
step 步長 否 1
var 代表當(dāng)前項目的變量名 否 無
varStatus 顯示循環(huán)狀態(tài)的變量 否 無
例子:
<c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value=""/>
</c:forTokens>
這個標(biāo)簽的使用相當(dāng)于java.util.StringTokenizer類。在這里將字符串a(chǎn):b:c:d以:分開循環(huán)四次,
token是循環(huán)到當(dāng)前分割到的字符串。
9、<c:redirect>標(biāo)簽
說明:標(biāo)簽將請求重新定向到另外一個頁面,它有以下屬性 屬性 描 述 是否必須 缺省值
url url地址 是 無
context /后跟本地web應(yīng)用程序的名字 否 當(dāng)前應(yīng)用程序
例子:
<c:redirect /'>http://www.yourname.com/login.jsp"/
將請求重新定向到
("
10、<c:param>標(biāo)簽
說明:<c:param>標(biāo)簽用來傳遞參數(shù)給一個重定向或包含頁面,它有以下屬性屬 性 描 述 是否
必須 缺省值
name 在request參數(shù)中設(shè)置的變量名 是 無
value 在request參數(shù)中設(shè)置的變量值 否 無
例子:
<c:redirect url="login.jsp">
<c:param name="id" value="888"/>
</c:redirect>
將參數(shù)888以id為名字傳遞到login.jsp頁面,相當(dāng)于login.jsp?id=888
11、<fmt:>格式化標(biāo)簽
說明:需要導(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:通過EL表達式或<%new Date() %> 取的日期值;
Pattern:輸出的日期格式;
2) 格式化數(shù)字<fmt:formatNumber
value="${n}" pattern="###,###.##" />
1.你可以打開一個窗口然后點擊,工具—文件夾選項—查看—顯示所有文件夾
選擇所要文件,右鍵屬性,將“隱藏”前面的勾去掉就可以。
還有另外一種方法,就是在開始-程序-附件-命令提示符下用dir -a 查看就可以看見隱藏的文件,
然后你再用Attrib -s -h -r “路徑和文件名”其中-s 表示減去系統(tǒng)屬性 -h 表示減去隱藏屬性 -r 表示減去只讀屬性。
另外你如果愿意的話還可以為文件加上以上的屬性,把-號變成+號就可以了。
2.選擇“工具→文件夾選項→查看→顯示所有文件和文件夾”,點確定。本來應(yīng)該就把隱藏的文件顯示出來的,但是隱藏的文件并沒有顯示出來,重復(fù)上次操作發(fā)現(xiàn)“查看”中“隱藏文件和文件夾”一欄中它自動又跳為“不顯示隱藏文件和文件夾”這讓我很苦惱,因為我因此找不到我所有已經(jīng)設(shè)置為隱藏的文件……
解決方法有三:
a.
運行regedit,找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL],將CheckedValue的值改為1
b.
將下面的內(nèi)容復(fù)制到記事本,保存為reg的注冊表信息文件,然后雙擊導(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.
如果操作后還是無法顯示隱藏文件,可以復(fù)制下列內(nèi)容到記事本中,另存為一個reg文件,然后雙擊運行即可。
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]
@=""
說明:
將選項 CheckedValue 的值改成 0 然后再將系統(tǒng)屬性設(shè)置成不顯示隱藏文件,這樣,你隱藏的文件就徹底隱藏了,即使顯示全部文件,你隱藏的文件也不會顯示的。不僅如此,電腦里面所有隱藏文件將全部不被顯示。如果需要顯示,只要將選項 CheckedValue 的值改成 1 ,再將系統(tǒng)屬性設(shè)置成顯示全部文件即可。
3.問題:
我使用的是Windows2000系統(tǒng),我把"文件夾選項"中的"查看"設(shè)為"不顯示隱藏的文件和文件夾"時,電腦上隱藏的文件反而能看見,設(shè)為"顯示所有文件和文件夾"時,這些文件反而隱藏了,這是怎么回事?
解決:
在運行中輸入regedit,打開注冊表編輯器.定位到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即可。