Live軟件開發面面談( 簡體 字) | |
作者:潘俊 | 類別:1. -> 程式設計 -> 綜合 |
出版社:清華大學出版社 | 3dWoo書號: 49633 詢問書籍請說出此書號! 有庫存 NT售價: 295 元 |
出版日:8/1/2018 | |
頁數:306 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302501565 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章接口
1.1使用接口編程 1.2依賴反轉原則 1.3如何實現 1.3.1工廠模式 1.3.2服務定位器模式 1.3.3依賴注入 1.4真的實現了嗎 1.4.1依賴的傳遞性 1.4.2依賴的形式 1.5真正實現 1.5.1配置文件 1.5.2配置代碼 1.5.3慣例先于配置 1.5.4元數據 1.5.5實現消除依賴的方法的本質 1.6有必要針對接口編程嗎 1.6.1針對接口編程的成本 1.6.2接口的意義 1.6.3何時針對接口編程 第2章事件 2.1控制反轉 2.2觀察者模式 2.3Java中的事件編程 2.3.1通用的事件發布者和收聽者 2.3.2通用事件收聽者的問題 2.3.3Swing用戶界面里的事件編程 2.3.4專用事件收聽者的問題 2.3.5徹底地面向對象 2.3.6Java8帶來的福音 2.3.7這一切背后仍然是對象 2.4C#中的事件編程 2.4.1代理 2.4.2事件 2.5JavaScript中的事件編程 2.6事件編程的其他細節 2.6.1收聽者的執行順序 2.6.2收聽者是否在單獨的線程執行 2.6.3控件層次中的事件傳播 第3章MVC 3.1輸入、處理和輸出 3.1.1馮·諾依曼架構 3.1.2矩陣運算器和IPO 3.1.3矩陣運算器和IPO的升級版 3.2程序與用戶的交互 3.2.1三類應用程序 3.2.2持續交互帶來的變化 3.2.3圖形用戶界面帶來的變化 3.3設計理念 3.3.1關注點分離 3.3.2模型 3.3.3模型和視圖的分離 3.3.4控制器 3.3.5模型視圖 3.3.6事件發布者與收聽者之間的依賴 3.3.7合作方式 3.4桌面應用程序與移動App 3.4.1控制器和視圖在代碼單元上獨立 3.4.2控制器、視圖和模型之間的相互引用 3.4.3控制器和視圖合一 3.4.4移動App 3.5Web應用程序 3.5.1Web應用程序簡史 3.5.2服務器端的MVC 3.5.3前端控制器與控制器 3.5.4視圖 3.5.5模型 3.5.6依賴注入 3.5.7瀏覽器端的MVC 3.6類型轉換、校驗和數據綁定 3.7MVC的意義 第4章界面 4.1以用戶界面為中心VS以業務邏輯為中心 4.2設計視圖VS源代碼視圖 4.3自定義控件VS復合控件 4.4命令式語言VS聲明式語言 4.5內容與外觀的分離 4.6基于請求的框架VS基于組件的框架 4.7極簡主義 4.7.1用戶界面上的極簡主義 4.7.2刪減的對象 4.7.3方法和特征 4.7.4防止過度 第5章數據庫 5.1多值與復合屬性 5.1.1關系型數據庫模式的第一范式和第二范式 5.1.2范式與復合、多值屬性 5.1.3關系型數據庫中的多值和復雜數據類型 5.2數據庫模式 5.3數據建模 5.3.1抽象的數據建模 5.3.2針對具體數據庫的建模 5.4視圖 5.4.1索引 5.4.2關系型數據庫中的視圖 5.4.3文檔型數據庫中的視圖 5.5可伸縮性 5.6可得性與BASE 5.7編程接口 5.8總結 第6章權限 6.1身份驗證 6.1.1驗證類型 6.1.2驗證屬性 6.1.3知識要素驗證 6.2Web應用的驗證 6.2.1驗證與會話 6.2.2第三方身份驗證 6.3授權 6.4基于角色的存取控制 6.4.1用戶與權限 6.4.2群組與角色 6.4.3權限與操作 6.4.4實現 6.5基于屬性的存取控制 6.5.1資源與存取方式 6.5.2從權限到屬性 第7章異類 7.1快速開發 7.2LotusNotes是什么 7.3技術架構 7.3.1數據庫 7.3.2客戶端與服務器 7.4應用程序開發 7.4.1兩種路徑 7.4.2用戶界面驅動的快速開發 7.4.3事件驅動編程 7.4.4直接使用文檔對象編程 7.4.5權限模型 7.4.6角色和隱藏公式 7.4.7三類應用程序 7.4.8多種編程語言 7.5LotusNotes的衰亡及其教訓 7.5.1對用戶主觀體驗重視不夠 7.5.2快速開發的缺陷 7.5.3嵌入式開發的缺陷 7.5.4數據庫和應用程序合一 7.5.5創新乏力 7.6給現有LotusNotes客戶的建議 第8章興衰 8.1軟件的更新和生命 8.1.1兼容性 8.1.2兼容性與創新 8.2客戶端的興衰 8.2.1客戶端與服務器 8.2.2遠程過程調用和數據傳輸協議 8.2.3客戶端的胖瘦趨勢 8.2.4客戶端與瀏覽器 8.2.5瀏覽器與App 8.2.6理想的客戶端應用程序 8.2.7開發人員體驗VS用戶體驗 8.3LotusNotes的歷史 8.3.1前身 8.3.2青少年:版本1~3 8.3.3中年:版本4~6 8.3.4老年:版本7~9 參考文獻 現實的軟件開發會遇到許多具體的問題,例如,如何消除依賴?怎樣進行事件驅動編程?如何在迥異的環境中實現MVC架構?怎樣在不同的Web開發框架之間選擇?文檔型數據庫與關系型數據庫相比有哪些優缺點?如何構建合適的存取控制?對這些問題,簡單的答案、現成的選擇、枯燥的代碼很多,但是從問題的源頭和本質出發,深入全面的分析卻很少。本書就軟件開發中帶有普遍性的重要方面,內容由淺入深地逐漸展開,力圖使讀者對軟件開發實踐產生由點及面、融會貫通的理解。
自序
開發軟件離不開編寫代碼,但僅僅具備編程的技能也還不足以勝任開發軟件的工作。這就好比一個人會燒磚、砌墻,但要造一間可供人居住的屋子,他還得了解屋子的結構、不同房間的功能、水電管線的敷設、墻面地面的裝修等方面的知識。對軟件開發人員來說,編程領域的知識往往是最受關注的,它們確實也可以分為多個層次: 編程語言本身的知識(如C、Java),編程范式和思想,面向對象編程和函數式編程,開發框架的知識(如Spring、AngularJS),等等。一個新人若想以軟件開發為職業,大概需要閱讀的范圍就會集中在以上方面。然而,當他開始項目開發時,就會發現還有許多實際的問題需要考慮和解決,軟件開發并不像編程教材上的代碼樣例和習題那樣專注于某個算法或思想。 不妨考慮一個典型的業務系統,它是一個圖形用戶界面的程序,因而需要采用某種GUI框架開發界面; 用戶在界面上的操作通過事件機制調用相應的處理程序; 用戶界面、事件處理程序和體現需求的業務邏輯必須組成某種合理的結構,否則系統會隨著功能的增加迅速變得難以理解和維護; 系統越大,組件越多,越需要適當地保持它們之間的依賴關系,合理地應用接口是關鍵; 這個業務系統顯然比所有數據都來自即時輸入的計算器復雜,許多信息要往返于數據庫; 最后,這是一個多用戶使用的系統,必須適應不同用戶的權限需求。編程語言和范式的理論知識沒有觸及這些實際的問題,開發框架雖然涉及實踐,卻又局限在具體的方案中,不易讓人獲得對知識的一般理解。 軟件開發實踐中遇到的各個方面的問題往往缺乏系統的理論,程序員憑著各自的理解動手,或者知其然而不知其所以然,或者每個人的所以然有出入甚至矛盾。例如,針對接口編程就是盡量多用接口嗎?事件驅動編程的本質是什么?怎么樣算是應用了MVC架構?極簡主義就是越簡單越好嗎?文檔型數據庫和關系型數據庫的優劣各體現在什么地方?基于角色的存取控制系統是如何理解權限的?在主流的軟件開發理念之外能否另辟蹊徑?客戶端和瀏覽器之間的競爭究竟意味著什么?對這類實踐中涉及的概念和遇到的問題,如果追根溯源,多思考一些是什么、為什么和怎么做,達到融會貫通的理解,既對實際開發有幫助,又有益于在紛繁多變的技術浪潮中看清技術的本質、把握解決問題的方向。 本書從以上思路出發,逐個討論軟件開發實踐中的重要主題。第1章辨析對象間的依賴和針對接口編程。第2章討論事件驅動編程的方方面面。第3章分析MVC架構的思想和實現。第4章比較圖形用戶界面的一些相關或對立的思想和技術,并介紹極簡主義潮流。第5章分析熱門的文檔型數據庫,并和關系型數據庫做對比。第6章討論存取控制的各個環節,分析基于角色的和基于屬性的存取控制的優缺點。第7章介紹快速的Lotus Notes程序開發。第8章探討軟件的興衰和客戶端的潮流。順序上靠前的章節內容具有一般性,不會依賴其后的部分,靠后的章節有可能應用前文的知識。編寫風格上每章力圖從主題的源頭和本質入手,遵循邏輯層層展開,盡量全面地遍歷主題涉及的方方面面。書中代碼為正在討論的理念和問題服務,只是示意性地勾勒出核心的部分,無關和繁冗的部分被省略。 野人獻曝,未免貽笑大方; 愚者千慮,或有一得可鑒。 是為序。 作者 2018年5月 |