分享我收集的計算機內功修煉的經典資源

你們好,我在本文中分享了我收集的計算機內功修煉的經典資源,但願對你們提高內功有所幫助,謝謝~javascript

算法

leetcode

一個在線刷題的算法題庫,題目分了簡單、中等、困難,每道題幾乎都有不少人的答案和多種解法。java

總題數在不斷增長中,我之前刷的時候有500+的題。node

我只是把簡單的題刷了,感受對個人算法能力的提升有很大的幫助。程序員

另外須要面試的同窗也能夠刷下題。web

在線連接面試

設計

《計算機程序的構造和解釋》

本書就是大名鼎鼎的SICP,使用Lisp語言,從程序設計思想的角度介紹了構造過程抽象、構造數據抽象、面向對象設計和併發和流等內容,給出了若干設計實例。算法

本書是一本介紹設計思想的書,重點介紹了抽象的思惟,是一本好書啊!能大幅提升抽象能力!數據庫

第1章:構造過程抽象。
本章講解了面向過程設計的思想。
第2章:構造數據抽象。
本章介紹了模塊化、層次化思想。
第3章:模塊化、對象和狀態
本章介紹了對象的結構實現、併發、流等內容。編程

我只看了本書前3章,並參考網上資料作了1遍前3章的習題(3.5流的習題沒作。「流」這部分我只學習了下思想,沒有掌握)。
第1章很簡單,第二章有難度,第三章簡單(流的習題沒作,有必定難度)。設計模式

本書讓我加深了對程序設計的理解,並學習了遞歸的使用。
建議你們把前3章的習題作了,網上有詳細的答案。

《冒號課堂:編程範式與OOP思想》

經過老師與學生對話的方式,很是生動地講解了面向對象的思想。

做爲新手第一本學習面向對象思想的書,是很合適的。

《設計模式之禪》

講了5大設計原則和23個設計模式,並給出了多種設計模式的組合使用。

全書很是通俗易懂,書中的案例也很是生動,適合你們上手學習設計模式。

《領域驅動設計》

本書提出了模型驅動設計,圍繞領域建模來展開論述。
本書是一本經典書,對提升設計能力頗有幫助!

第1-3章提出了領域建模的注意事項。
第5章介紹了模型的組成部分:Entity、Value Object、Service、Module。
第6章介紹了聚合體AGGREGATE、存儲庫REPOSITORY、工廠。
第7章介紹了對初步的領域模型進行重構細化的過程,展現了將領域模型細化爲詳細架構的過程。
第8章展現了初步的領域模型的演化直到得到突破的過程。
第9章講解了如何實現深層建模,以及將業務規則提出來的思想(提出了SPECIFICATION規格模式)。
第10章提出了一些原則、啓發,參考這些模式能得到柔性設計。
第四部分從較高的範圍來展開論述。
第14章提出了上下文BOUNDED CONTEXT、持續集成、上下文之間如何聯繫起來CONTEXT MAP、BOUNDED CONTEXT之間的關係(共享內核、客戶/供應商等關係)、選擇上下文的策略以及如何轉換BOUNDED CONTEXT之間關係。
第15章講解了如何提煉出核心模型CORE DOMAIN。
第16章講解了大比例結構。包括進化迭代的思想來重構大比例結構、系統隱喻、分層、KNOWLEDGE LEVEL、可插入式組件框架PLUGGABLE COMPONRNY FRAMEWORK。

經過閱讀該書,我瞭解了領域模型的重要性。領域模型不僅是用來轉化爲數據庫表,也與實際的架構模型應該對應。也得到了設計的相關啓示(風格與《敏捷》有點像)。

《軟件架構設計(第二版)》 (做者:溫昱 )

本書系統梳理了架構設計的知識,讓我對架構設計有了更深刻的理解,是一本很好的架構設計的參考資料。

書中一共有三個部分,分別講解了軟件架構的概念,架構設計的方法、過程及步驟,模塊劃分等專題。

書中的第2部分,介紹了整個架構從需求到設計的流程,並對每一個流程展開說明,並給出了實例。

書中的第3部分,介紹了架構師的關鍵技能:模塊劃分。包括水平劃分(分層)、垂直劃分(子系統)、用例驅動設計(自底向上)等內容。這部分能夠結合《敏捷軟件開發原則、模式與實踐》中的包設計部分來理解消化。

《一線架構師實踐指南》 (做者:溫昱 )

本書重實踐,《軟件架構設計》重理論。
本書給出了一些實踐經驗,以及具體的實例,能夠做爲《軟件架構設計》在實踐方面的補充!

建議設計架構時,參考《軟件架構設計》和本書!

工程

《重構:改善既有代碼的設計》

重構領域的經典書籍。每一小節講了一個重構手法,基本覆蓋了重構的各個方面。

若是你想要你的代碼更加可讀、易於維護,建議閱讀本書。

《代碼整潔之道》

有些內容與《重構》的思想類似,也是講解如何改進代碼的書。

《修改代碼的藝術》

本書講解了處理遺留代碼的技術,其中包含了測試的相關討論(如測試私有方法)。

若是你正在接手或重構別人的代碼,或者正在你以前的項目上繼續開發,本書就是你須要看的。

《測試驅動的Javascript開發》

若是你要開發大型軟件,自動化測試很是重要。雖然前期編寫測試時會花雙倍的開發時間,可是越到後期,越能保證代碼質量,減小修改bug的時間。

本書講解了如何在開發產品代碼以前,就先寫測試,用測試來驅動開發。

這樣作的好處之一是能夠從用戶的角度,來審視代碼。經過明確代碼的輸入輸出,來提升代碼的設計。

固然,並非全部地方都適合測試驅動,我以爲像 實現算法、代碼相對穩定明確(如不是在實現demo的時候) 的地方可使用測試驅動。

《敏捷軟件開發原則、模式與實踐(C#版)》

本書講解了敏捷設計、類設計原則和包設計原則、UML、設計模式、薪水項目的設計與實現以及打包等內容,對我學習迭代開發和設計頗有幫助,不愧是經典書籍。

如下章節對我幫助很大:
第6章(採用TDD開發保齡球比賽程序(C#))、第20章(咖啡機的面向對象設計與實現)、第26章(薪水項目的面向對象設計的過程與思路)、第28章(包和組件的設計原則)、第30章(薪水項目的包分析)、第37章(測試數據層)

《xUnit測試模式:測試碼重構》

本書是一本關於如何解決測試中遇到的問題的實戰經驗書籍,給出了測試相關的概念、術語、經驗、味道以及模式和實例。

第1部分整體介紹了測試的模式和相關知識,包括測試的味道、目標、基本觀點、原則、策略,以及提出夾具的管理、結果驗證、測試替身、組織測試、數據庫測試等內容。

第2部分介紹了三大類測試味道:代碼味道、行爲味道、項目味道,對每種味道進行了詳細分析,並介紹瞭解決方案模式。

第3部分介紹了測試的模式。對應第1部分,給出了具體實例,是對第1部分的補充。

本書內容組織的方式相似於《重構》一書,一樣也應用於實戰,來源於實戰。

閱讀本書後,在實際應用中若是遇到測試相關的問題,能夠迅速地知道該問題在該書中對應的術語、模式以及解決方案。

由於我有一些測試的實戰經驗,因此看本書時就比較順利,同時也深刻了我對平時遇到的測試問題的理解。

因此建議先積累一些實戰經驗,而後再看該書,而後再應用於實戰中。

開發經驗

《人月神話》

本書講了一些實際開發軟件的經驗,如 :
增長更多的人來開發,並不能提升開發速度,反而有可能會降低。由於人越多,溝通成本就越高;
沒有銀彈,沒有能通吃一切應用場景的解決方案;
避免陷入焦油坑;

《軟件隨想錄》

本書適合要作項目管理的同窗,講解了發佈軟件的經濟學分析等內容,其中項目管理的知識(如「循證式日程規劃」)頗有啓發。

《創業必經的那些事 1》

講解了爲何創業失敗,企業發展的三個階段,如何經營企業等內容,對學習創業的思想頗有幫助。

《創業必經的那些事 2》

本書是該系列的第2本書,與第1本書有些相同的觀念,如三種角色(國王、管理者、技師),創新、量化、統一等。

本書的核心觀念就是:做爲管理者,要像企業家那樣,把公司當成本身的公司,強調要有自我意識,注重換位思考。

本書強調要管理系統,而不是管理人,由於人是不可管理的,所以須要建立一個願景,一套流程,每一個人都能在流程中快速上手,認同企業文化。

「創業」系列書籍的觀點不同凡響,回味無窮,在創業以前須要認真品讀。

《程序員修煉之道》

本書講解了如何成爲更好的程序員,涉及到了成爲優秀程序員的方方面面,注重實踐經驗。

本書讓我更加了解了如何成爲優秀的程序員,學習了一些最佳實踐。

《高效程序員的45個習慣:敏捷開發修煉之道》

本書講解了敏捷開發的最佳實踐,從態度、學無止境、交互用戶想要的軟件、敏捷反饋、敏捷編碼、敏捷調試、敏捷協做、走向敏捷 這些方面來展開論述,展現了敏捷開發的過程、實現、方法,使我對「如何成爲高校的敏捷人員」有了更深刻的認識。

下面是對我啓發較大的內容:

  1. 第4章-15 提前實現自動化部署。
    提出了一開始就自動化部署應用,如:使用戶能夠在線看到咱們的演示系統。
  2. 第5章-21 不一樣環境,就有不一樣的問題。
    提到了「持續集成」。能夠用一個持續集成工具,週期性地從源代碼控制系統中取得代碼,並運行代碼。若是有任何測試失敗了,它會通知相關的開發者。
  3. 第5章-22 自動驗收測試。
    提到了FIT,即集成測試框架。它能夠更容易地使用HTML表格定義測試用例,並比較測試結果數據。
    使用FIT,客戶能夠定義帶有新功能的使用樣本。客戶、測試人員和開發人員(根據樣本)均可以建立表格,爲代碼描述可能的輸入和輸出值。開發人員會參照樣本編寫測試代碼。測試結果成功或者失敗,都會顯示在HTML頁面中,用戶能夠很方便地查閱。

底層原理

《HTTP權威指南》

本書是HTTP及其相關核心Web技術方面的權威著做,適合全部想了解HTTP和Web底層結構的人閱讀。
本書包含21章,分爲5個邏輯部分(每部分都是一個技術專題),以及8個頗有用的附錄,這些附錄包含了參考資料,以及對相關技術的介紹。
第一部分 HTTP:Web的基礎
第二部分 HTTP結構
第三部分 識別、認證與安全
第四部分 實體、編碼和國際化
第五部分 內容發佈與分發
第六部分 附錄
第一部分用4章的篇幅描述了Web的基礎構件與HTTP的核心技術。
第1章簡要介紹了HTTP。
第2章詳細闡述了統一資源定位符(Uniform Resource Locator,URL)的格式, 以及URL在因特網上命名的各類類型的資源,還介紹了統一資源名(Uniform Resource Name,URN)的演變過程。
第3章詳細介紹了HTTP報文是如何傳送Web內容的。
第4章解釋了HTTP鏈接管理過程當中一些常常會引發誤解且少有文檔說明的規則和行爲。
第二部分重點介紹了Web系統的結構構造塊:HTTP服務器、代理、緩存、網關以及機器人應用程序。(固然,Web瀏覽器也是一種構造塊,但在本書的第一部分已經對其進行過很詳細的介紹了。)第二部分包含如下6章。
第5章簡要介紹了Web服務器結構。
第6章深刻研究了HTTP代理服務器,HTTP代理服務器是做爲HTTP服務與控制平臺使用的中間服務器。
第7章深刻研究了Web緩存的問題。緩存是經過保存經常使用文檔的本地副原本提升性能、減小流量的設備。
第8章探討了網關和應用服務器的概念,經過它們,HTTP就能夠與使用不一樣協議(包括SSL加密協議)的軟件進行通訊了。
第9章介紹了Web上的各類客戶端類型,包括無處不在的瀏覽器、機器人和網絡蜘蛛以及搜索引擎。
第10章講述了仍在研究之中的HTTP協議:HTTP-NG協議。
第三部分提供了一套用於追蹤身份、加強安全性以及控制內容訪問的技術和技巧。包含下列4章。
第11章討論了一些識別用戶的技術,以便向用戶提供私人化的內容服務。
第12章重點介紹了一些驗證用戶身份的基本方式。這一章還對HTTP認證機制與數據庫的接口問題進行了研究。
第13章詳述了摘要認證,它是對HTTP的建議性綜合加強措施,能夠大幅度提升其安全性。
第14章說明了因特網的密碼體系、數字證書以及SSL。
第四部分涵蓋HTTP報文主體和Web標準,前者包含實際內容,後者描述並處理主體內容。第四部分包含如下3章。
第15章介紹了HTTP內容的結構。
第16章探討了一些Web標準,經過這些標準,全球範圍內的用戶均可以交換以不一樣語言和字符集表示的內容。
第17章解釋了一些用於協商可接受內容的機制。
第五部分介紹了發佈和傳播Web內容的技巧。包括如下4章。
第18章討論了在現代的網站託管環境中佈署服務器的方式以及HTTP對虛擬網站託管的支持。
第19章探討了一些建立Web內容,並將其裝載到Web服務器中去的技術。
第20章介紹了可以將輸入Web流量分散到一組服務器上去的一些工具和技術。
第21章介紹了一些日誌格式和常見問題。
第六部分是一些頗有用的參考附錄,以及相關技術的教程。

本書知識點較多,內容廣而淺,沒有難度,能夠幫助讀者全面瞭解Web底層結構。

《深刻理解計算機系統》

本書從程序員的角度介紹了計算機系統,概述了計算機整個系統的實現,幫助讀者創建一個層次性的計算機系統模型。

第1章:計算機系統漫遊
大概介紹了整個計算機系統
第2章:信息的表示和處理
介紹了存儲單位、整數和浮點數的表示及運算
第3章:程序的機器級表示
介紹了彙編語言
第4章:處理器體系結構
介紹了處理器硬件的設計,介紹了指令集、邏輯電路、指令處理的5個階段(取指、譯碼、執行、訪存、寫回),介紹了指令流水線原理,以及使用暫停、轉發等技術處理流水線的數據相關和控制相關。
第5章:優化程序性能
介紹了程序優化策略,優化循環的關鍵路徑,包括:
消除連續的函數調用
將計算移到循環外
消除沒必要要的存儲器引用(引入臨時變量保存中間結果)
展開循環(增大循環步長)
經過使用如多格累積變量利用並行執行
從新結合
用功能的風格重寫條件操做,使得編譯採用條件數據傳送
第6章:存儲器層次結構
介紹了高速緩存SRAM、主存DRAM、磁盤的實現原理,介紹了存儲器層次結構。
第7章:連接
介紹了
連接器的主要任務(符號解析和重定位)
靜態連接
靜態庫
動態連接
第8章:異常控制流
介紹了4種類型的中斷,用戶模式與內核模式的切換,進程控制和進程間信號通訊,非本地跳轉。
第9章:虛擬存儲器
介紹了虛擬存儲器,地址翻譯,CPU、MMU和緩存、磁盤之間的頁命中、缺頁的執行過程,動態存儲器分配(堆)等內容。
第10章:系統級I/O
介紹了文件的操做,描述符表->打開文件表->v-node表。
第11章:網絡編程
介紹了集線器、網關、路由等,介紹了套接字操做,實現了簡單的web服務器
第12章:併發編程
介紹了進程、I/O多路複用、線程這三種不一樣的構建併發程序的機制,並擴展了一個併發網絡服務器。
介紹了互斥,介紹了生產者-消費者和讀者-寫者模型,介紹了線程不安全函數和競爭、死鎖。

該書介紹了系統底層實現,爲我總體理解計算機頗有幫助。

相關文章
相關標籤/搜索