中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

這是一份收藏量超過2萬6的計算機科學(xué)學(xué)習(xí)筆記

2018-07-13    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
這是一份收藏量超過 2 萬 6、Fork 量超過 7 千的學(xué)習(xí)筆記。近日,中山大學(xué)鄭永川構(gòu)建了一個「準(zhǔn)備秋招學(xué)習(xí)筆記」的項目,該項目包含了計算機科學(xué)的大量精要知識與教程。該項目從基礎(chǔ)排序算法到編程理念展示了計算機科學(xué)的應(yīng)知應(yīng)會,該項目對機器學(xué)習(xí)開發(fā)者及入門讀者也非常有用,例如 Linux 系統(tǒng)、面向?qū)ο蟮木幊獭it 工具和代碼可讀性等。這些筆記都是作者根據(jù)對各類書籍的理解,并記錄重要知識點而完成。

項目地址:https://github.com/CyC2018/Interview-Notebook

該項目的主體內(nèi)容可分為 9 部分,其中算法介紹了基礎(chǔ)的棧和隊列、并查集、排序和查找等,操作系統(tǒng)介紹了現(xiàn)代計算機系統(tǒng)與 Linux 系統(tǒng)。其它如介紹了設(shè)計模式和基本思想的面向?qū)ο缶幊、世界上最先進(jìn)的分布式版本控制系統(tǒng) Git、以及 Java 和編程實踐等都有涉及。

 

 

如下是該項目各類別的基本目錄與內(nèi)容,因為機器學(xué)習(xí)可能會常用到面向?qū)ο蟮木幊谭椒,因此我們在后面簡要介紹了這一章節(jié)中面向?qū)ο蟮幕舅枷搿?/p>

算法

劍指 Offer 題解(目錄根據(jù)原書第二版進(jìn)行編排)

Leetcode 題解(做了一個大致分類,并對每種分類題型的解題思路做了總結(jié))

算法(主要參考 Robert Sedgewick 的算法書進(jìn)行實現(xiàn),源代碼以及測試代碼可在另一個倉庫獲取)

操作系統(tǒng)

計算機操作系統(tǒng)(參考 現(xiàn)代操作系統(tǒng)、Unix 環(huán)境高級編程、深入理解計算機系統(tǒng))

Linux(參考 鳥哥的 Linux 私房菜)

網(wǎng)絡(luò)

計算機網(wǎng)絡(luò)(參考 謝希仁的計算機網(wǎng)絡(luò)、計算機網(wǎng)絡(luò) 自頂向下方法、TCP/IP 詳解)

HTTP(參考 圖解 HTTP,更多的是參考網(wǎng)上的文檔,比如 MDN、維基百科等)

Socket(參考 Unix 網(wǎng)絡(luò)編程)

面向?qū)ο?/strong>

設(shè)計模式(參考 Head First 設(shè)計模式、設(shè)計模式 可復(fù)用面向?qū)ο筌浖幕A(chǔ),實現(xiàn)了 Gof 的 23 種設(shè)計模式)

面向?qū)ο笏枷?內(nèi)容包括三大原則(繼承、封裝、多態(tài))、類圖、設(shè)計原則)

數(shù)據(jù)庫

數(shù)據(jù)庫系統(tǒng)原理(參考 數(shù)據(jù)庫系統(tǒng)原理)

SQL(參考 SQL 必知必會)

Leetcode-Database 題解(Leetcode 上數(shù)據(jù)庫題目的解題記錄)

MySQL(參考 高性能 MySQL)

Redis(參考 Redis 設(shè)計與實現(xiàn)、Redis 實戰(zhàn))

Java

Java 基礎(chǔ)(參考 Effective Java、Java 編程思想,也有部分內(nèi)容參考官方文檔以及 StackOverflow)

Java 虛擬機(參考 深入理解 Java 虛擬機)

Java 并發(fā)(參考 Java 編程思想、深入理解 Java 虛擬機)

Java 容器(包含容器源碼的分析)

Java I/O(包含 NIO 的原理以及實例)

分布式

一致性(CAP、BASE、Paxos、Raft)

分布式問題分析(分布式事務(wù)、分布式鎖、分布式 Session、負(fù)載均衡)

工具

Git(一些 Git 的使用和概念)

正則表達(dá)式(參考 正則表達(dá)式必知必會)

編碼實踐

重構(gòu)(參考 重構(gòu) 改善既有代碼的設(shè)計)

代碼可讀性(參考 編寫可讀代碼的藝術(shù))

代碼風(fēng)格規(guī)范(Google 開源項目的代碼風(fēng)格規(guī)范)

面向?qū)ο笏枷?/strong>

具體而言例如在面向?qū)ο蟮幕舅枷胫,作者介紹了封裝、繼承和多態(tài)三大特性,此外還有類圖和設(shè)計原則。這里摘取了原項目中展開的面向?qū)ο笕筇匦,更信息的?nèi)容請查看原 GitHub 項目。

面向?qū)ο蟮木幊淘趯崿F(xiàn)想法乃至系統(tǒng)的過程中都非常重要,我們不論是使用 TensorFlow 還是 PyTorch 來構(gòu)建模型都或多或少需要使用類和方法。若能了解面向?qū)ο蟮娜筇匦圆⑹褂妙惡头椒▉順?gòu)建模型,那么它們可以讓我們的機器學(xué)習(xí)代碼更加美麗迷人。

封裝

利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個不可分割的獨立實體。數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)系。用戶無需知道對象內(nèi)部的細(xì)節(jié),但可以通過對象對外提供的接口來訪問該對象。

優(yōu)點:

減少耦合:可以獨立地開發(fā)、測試、優(yōu)化、使用、理解和修改

減輕維護(hù)的負(fù)擔(dān):可以更容易被程序員理解,并且在調(diào)試的時候可以不影響其他模塊

有效地調(diào)節(jié)性能:可以通過剖析確定哪些模塊影響了系統(tǒng)的性能

提高軟件的可重用性

降低了構(gòu)建大型系統(tǒng)的風(fēng)險:即使整個系統(tǒng)不可用,但是這些獨立的模塊卻有可能是可用的

以下 Person 類封裝 name、gender、age 等屬性,外界只能通過 get() 方法獲取一個 Person 對象的 name 屬性和 gender 屬性,而無法獲取 age 屬性,但是 age 屬性可以供 work() 方法使用。

注意到 gender 屬性使用 int 數(shù)據(jù)類型進(jìn)行存儲,封裝使得用戶注意不到這種實現(xiàn)細(xì)節(jié)。并且在需要修改 gender 屬性使用的數(shù)據(jù)類型時,也可以在不影響客戶端代碼的情況下進(jìn)行。

 

 

繼承

繼承實現(xiàn)了 IS-A 關(guān)系,例如 Cat 和 Animal 就是一種 IS-A 關(guān)系,因此 Cat 可以繼承自 Animal,從而獲得 Animal 非 private 的屬性和方法。

Cat 可以當(dāng)做 Animal 來使用,也就是說可以使用 Animal 引用 Cat 對象。父類引用指向子類對象稱為 向上轉(zhuǎn)型。

 

 

繼承應(yīng)該遵循里氏替換原則,子類對象必須能夠替換掉所有父類對象。

多態(tài)

多態(tài)分為編譯時多態(tài)和運行時多態(tài)。編譯時多態(tài)主要指方法的重載,運行時多態(tài)指程序中定義的對象引用所指向的具體類型在運行期間才確定。

運行時多態(tài)有三個條件:

繼承

覆蓋(重寫)

向上轉(zhuǎn)型

下面的代碼中,樂器類(Instrument)有兩個子類:Wind 和 Percussion,它們都覆蓋了父類的 play() 方法,并且在 main() 方法中使用父類 Instrument 來引用 Wind 和 Percussion 對象。在 Instrument 引用調(diào)用 play() 方法時,會執(zhí)行實際引用對象所在類的 play() 方法,而不是 Instrument 類的方法。

 

標(biāo)簽: Google linux Mysql 代碼 開發(fā)者 數(shù)據(jù)庫 網(wǎng)絡(luò) 轉(zhuǎn)型

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:DeepMind想用IQ題測試AI的抽象思維能力,進(jìn)展還不錯

下一篇:數(shù)字化轉(zhuǎn)型時,CIO應(yīng)該避過的那些坑