1. 程式人生 > >學習筆記---程式設計師練級攻略(入門篇、修養篇、專業基礎篇、軟體設計篇、高手成長篇)

學習筆記---程式設計師練級攻略(入門篇、修養篇、專業基礎篇、軟體設計篇、高手成長篇)

根據極客時間 左耳朵耗子 整理,請忽略最後的每一行最後的數字

文章目錄

1. 入門篇 47

1.1. 零基礎啟蒙 47
1.1.1. 十年學會程式設計:http://norvig.com/21-days.html 47
1.1.2. 程式設計師的謊謬之言還是至理名言?:https://coolshell.cn/articles/4235.html 47
1.1.3. 《與孩子一起學程式設計》 47
1.1.4. 線上程式設計:

https://www.codecademy.com/learn 47
1.1.5. https://blackbird.school/ 47
1.1.6. 程式設計練習:http://www.codeabbey.com/index/task_list 47
1.1.7. web入門:https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web 47
1.1.8. python入門 47
1.1.8.1. 《Python程式設計快速上手》https://book.douban.com/subject/26836700/https://book.douban.com/subject/26836700/
47
1.1.8.2. 《Python 程式設計:從入門到實踐》https://book.douban.com/subject/26829016/ 47
1.1.9. javascript入門 47
1.1.9.1. 最權威的 JavaScript 官方教程:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 47
1.1.9.2. w3school教程:http://www.w3school.com.cn/js/ 48
1.1.9.3. 廖雪峰教程:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000
48
1.1.10. Linux入門 48
1.1.10.1. w3school教程:https://www.w3cschool.cn/linux/ 48
1.1.11. 程式設計工具 48
1.1.11.1. Visual Studio Code:https://www.gitbook.com/book/jeasonstudio/vscode-cn-doc/details 48
1.1.11.2. sublime Text 48
1.1.12. web程式設計入門 48
1.1.12.1. html:https://developer.mozilla.org/zh-CN/docs/Web/HTML 48
1.1.12.2. js:https://www.w3schools.com/js/js_htmldom.asp 48
1.1.12.3. css:https://developer.mozilla.org/zh-CN/docs/Web/CSS 48
1.1.12.4. php:http://www.w3school.com.cn/php/index.asp 48
1.1.13. 小專案:blog系統 48
1.1.13.1. 表設計:https://code.tutsplus.com/tutorials/how-to-create-a-phpmysql-powered-forum-from-scratch--net-10188 48
1.1.13.2. 防sql注入:http://php.net/manual/zh/security.database.sql-injection.php 48
1.1.13.3. https://technet.microsoft.com/zh-cn/library/ms161953(v=sql.105).aspx?f=255&MSPPError=-2147217396 49
1.2. 正式入門 49
1.2.1. 程式設計技能 49
1.2.1.1. 快速有效提高程式設計能力:http://blog.thefirehoseproject.com/posts/learn-to-code-and-be-self-reliant/ 49
1.2.1.2. 《程式碼大全》好的書和不好的書最大的不一樣的是,好的書在你不同的階段來讀,你會有不同的收穫,而且還會產生更多的深層次的思考! 49
1.2.2. Java 49
1.2.2.1. 世界上目前為止綜合排名最好的語言 49
1.2.2.2. 工業級的程式語言 49
1.2.2.3. 《Java 核心技術(卷 1)》《Head First Java》《Spring in Action》《Spring Boot 實戰》 49
1.2.2.4. Ioc AOP 49
1.2.3. Linux 49
1.2.3.1. 《鳥哥的Linux私房菜》 49
1.2.4. 網路協議 49
1.2.4.1. HTTP協議 49
1.2.4.2. HTTP 協議的幾個關鍵點:1)HTTP 頭,2)HTTP 的請求方法,3)HTTP 的返回碼。還有,HTTP 的 Cookie、快取、會話,以及連結管理,等等 49
1.2.5. 資料庫設計 50
1.2.5.1. 慕課網線上教程:https://www.imooc.com/learn/117 50
1.2.5.2. 《MySQL 必知必會》 50
1.2.5.3. workbench:https://dev.mysql.com/doc/refman/5.7/en/ 50
1.2.6. 前端 50
1.2.6.1. jquery 50
1.2.6.2. bootstrap 50
1.2.6.3. ES6: http://es6.ruanyifeng.com/#docs/promise 50
1.2.6.4. 前端除錯:http://www.igeekbar.com/igeekbar/post/156.htm 50
1.2.7. 字元編碼 50
1.2.7.1. http://www.imkevinyang.com/2010/06/關於字元編碼,你所需要知道的.html 50
1.2.7.2. http://www.developerknowhow.com/1091/the-history-of-character-encoding 50
1.2.7.3. https://en.wikipedia.org/wiki/Character_encoding 50
1.2.7.4. https://github.com/jagracey/Awesome-Unicode 50
1.2.7.5. https://github.com/Codepoints/awesome-codepoints 50
1.2.8. 程式碼版本管理 50
1.2.8.1. git:https://git-scm.com/book/zh/v2/ 50
1.2.8.2. https://backlog.com/git-tutorial/cn/ 51
1.2.8.3. 圖文教程:https://github.com/JiapengLi/GitTutorial 51
1.2.8.4. 圖文:https://www.jianshu.com/p/1b65ed31da97 51

2. 修養篇 51

2.1. https://www.quora.com/What-are-some-of-the-most-basic-things-every-programmer-should-know 51
2.2. https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/index.html 51
2.3. 英文能力 51
2.3.1. 資訊的源頭,有價值資訊的集散地 51
2.3.2. github/Youtube/Google/Stackoverflow 51
2.3.3. 聽說讀寫 51
2.3.3.1. 堅持 Google 英文關鍵詞 51
2.3.3.2. GitHub 上只用英文。用英文寫程式碼註釋,寫 Code Commit 資訊,用英文寫 Issue 和 Pull Request,以及用英文寫 Wiki 51
2.3.3.3. YouTube 上每天看 5 分鐘的視訊。YouTube 上有相關的機器字幕,實在不行就開啟字幕。 51
2.3.3.4. 堅持用英文詞典而不是中文的:劍橋英語 https://dictionary.cambridge.org,或者google翻譯外掛:https://chrome.google.com/webstore/detail/google-dictionary-by-goog/mgijmajocgfcbeboacabfgobmjgjcoja 51
2.3.3.5. 堅持用英文的教材而不是中文的:https://www.rong-chang.com/ http://www.bbc.co.uk/learningenglish 52
2.4. 問問題的能力 52
2.4.1. 問問題的智慧英文原版:http://www.catb.org/~esr/faqs/smart-questions.html 52
2.4.2. 問問題的智慧中文翻譯版:https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way http://doc.zengrong.net/smart-questions/cn.html 52
2.4.3. X-Y problem: http://xyproblem.info/ 52
2.4.4. X-Y problem:https://coolshell.cn/articles/10804.html 52
2.4.5. stackoverflow問法:https://meta.stackexchange.com/questions/7931/faq-for-stack-exchange-sites 52
2.5. 寫程式碼的修養 52
2.5.1. 《重構:改善既有程式碼的設計》《修改程式碼的藝術》《程式碼整潔之道》《程式設計師的職業素養》(程式設計大師+Bob+大叔+40+餘年程式設計生涯的心得體會) 52
2.6. Code Review 52
2.6.1. https://medium.com/@palantir/code-review-best-practices-19e02780015f 52
2.6.2. https://dzone.com/articles/how-google-does-code-review 52
2.6.3. https://thenewstack.io/linkedin-code-review/ 52
2.7. UnitTest 52
2.7.1. https://junit.org/junit5/docs/current/user-guide/ 52
2.7.2. http://sjyuan.cc/junit5/user-guide-cn/ 53
2.7.3. https://stackify.com/unit-testing-basics-best-practices/ 53
2.7.4. https://dzone.com/articles/unit-testing-best-practices 53
2.7.5. http://www.kyleblaney.com/junit-best-practices/ 53
2.8. 安全無小事 53
2.8.1. OWASP 是一個開源的、非盈利的全球性安全組織,致力於應用軟體的安全研究。其被視為 Web 應用安全領域的權威參考。 53
2.8.2. https://www.owasp.org/index.php/Main_Page 53
2.8.3. https://www.owasp.org/images/d/dc/OWASP_Top_10_2017_中文版v1.3.pdf 53
2.8.4. 伯克利大學:https://security.berkeley.edu/secure-coding-practice-guidelines 53
2.8.5. 卡內基:https://wiki.sei.cmu.edu/confluence/display/seccode/SEI+CERT+Coding+Standards 53
2.8.6. http安全:https://www.keycdn.com/blog/http-security-headers/ 53
2.8.7. 防禦性程式設計;https://en.wikipedia.org/wiki/Defensive_programming/ https://medium.com/web-engineering-vox/the-art-of-defensive-programming-6789a9743ed4 https://medium.com/@cvitullo/overly-defensive-programming-e7a1b3d234c2 53
2.9. 軟體工程與上線 53
2.9.1. 系統上線是一件嚴肅的事情 53
2.9.2. 測試 54
2.9.2.1. 《完美軟體:對軟體測試的各種幻想》 54
2.9.2.2. 《Google 軟體測試之道》 54
2.9.3. 上線檢查 54
2.9.3.1. https://github.com/mtdvio/going-to-production/blob/master/serverside-checklist.md 54
2.9.3.2. https://github.com/mtdvio/going-to-production/blob/master/spa-checklist.md 54
2.9.3.3. https://www.datadoghq.com/blog/monitoring-101-collecting-data/ 54
2.10. 程式設計規範 54
2.10.1. 程式碼整潔/易讀/易維護 54
2.10.2. 提升開發效率,效率來自結構化而非雜亂 54
2.10.3. 避免陷阱/bug少/質量高 54
2.10.4. 團隊更高效率協作 54
2.10.5. c語言:https://users.ece.cmu.edu/~eno/coding/CCodingStandard.html 54
2.10.6. C++:https://google.github.io/styleguide/cppguide.html 54
2.10.7. go:https://golang.org/doc/effective_go.html 54
2.10.8. java: https://google.github.io/styleguide/javaguide.html 54
2.10.9. js:https://google.github.io/styleguide/jsguide.html https://github.com/ryanmcdermott/clean-code-javascript http://crockford.com/javascript/code.html 55
2.10.10. php:http://www.php-fig.org/psr/ http://www.phptherightway.com/ https://github.com/jupeter/clean-code-php 55
2.10.11. python:https://google.github.io/styleguide/pyguide.html https://www.python.org/dev/peps/pep-0008/ http://docs.python-guide.org/en/latest/ 55
2.10.12. ruby:https://github.com/airbnb/ruby https://github.com/bbatsov/ruby-style-guide 55
2.10.13. shell:https://google.github.io/styleguide/shell.xml 55
2.10.14. nodejs:https://docs.npmjs.com/misc/coding-style https://github.com/Microsoft/nodejs-guidelines https://github.com/felixge/node-style-guide 55
2.10.15. 前端:https://cssguidelin.es/ https://smacss.com/ https://github.com/bendc/frontend-guidelines https://github.com/marcobiedermann/html-style-guide http://codeguide.co/ https://google.github.io/styleguide/htmlcssguide.html 55
2.10.16. 前端開發checklist:https://github.com/thedaviddias/Front-End-Checklist 55
2.10.17. API 55
2.10.17.1. http://stateless.co/hal_specification.html 55
2.10.17.2. https://github.com/Microsoft/api-guidelines 55
2.10.17.3. http://apiguide.readthedocs.io/en/latest/ 55
2.10.17.4. https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9 56
2.10.17.5. http://jsonapi.org/recommendations 56
2.10.17.6. https://github.com/shieldfy/API-Security-Checklist 56
2.10.18. 開發工具 56
2.10.18.1. https://github.com/google/styleguide/blob/gh-pages/docguide/style.md 56
2.10.18.2. http://www.cirosantilli.com/markdown-style-guide/ 56
2.10.18.3. https://google.github.io/styleguide/jsoncstyleguide.xml 56
2.10.18.4. http://www.w3resource.com/slides/json-style-guide.php 56
2.10.18.5. https://github.com/agis/git-style-guide 56
2.10.18.6. https://github.com/git/git/blob/master/Documentation/CodingGuidelines 56
2.10.18.7. https://github.com/regexhq 56
2.10.18.8. https://github.com/zeeshanu/learn-regex 56
2.11. 有修養的程式設計師才可能成長為真正的工程師和架構師,而沒有修養的程式設計師只能淪為碼農 56

3. 專業基礎篇 56

3.1. 程式語言 56
3.1.1. C/C++/Java 工業級程式語言 56
3.1.2. Go:https://coolshell.cn/articles/18190.html 56
3.1.3. 《Java 核心技術:卷 1 基礎知識》《Spring 實戰》《Spring Boot 實戰》《Effective Java》《Java 併發程式設計實戰》《Java 效能權威指南》《深入理解 Java 虛擬機器》《Java 程式設計思想》《精通 Spring 4.x》《設計模式》《Head First 設計模式》 57
3.1.4. 設計原則 57
3.1.4.1. Program to an ‘interface’, not an 'implementation’ 57
3.1.4.2. Favor ‘object composition’ over 'class inheritance’ 57
3.1.5. C/C++ 57
3.1.5.1. 《C 程式設計語言》《C 語言程式設計現代方法》《C 陷阱與缺陷》《C++ Primer 中文版》《Effective C++》《More Effective C++》《深度探索 C++ 物件模型》《C++ 虛擬函式表解析》《C++ 物件記憶體佈局》https://en.wikipedia.org/wiki/The_C_Programming_Language 57
3.1.5.2. C++的坑真的多嗎? https://coolshell.cn/articles/7992.html 57
3.1.5.3. C++faq http://www.stroustrup.com/bs_faq.html http://www.stroustrup.com/bsfaqcn.html 57
3.1.6. Go 57
3.1.6.1. https://gobyexample.com/ 57
3.1.6.2. https://go101.org/article/101.html 57
3.1.6.3. 耗子叔:https://coolshell.cn/articles/8460.html https://coolshell.cn/articles/8489.html 57
3.1.6.4. go官方:https://golang.org/doc/effective_go.html 57
3.1.6.5. 老牌黑客羅勃·派克(Rob Pike)https://talks.golang.org/2012/concurrency.slide https://www.youtube.com/watch?v=f6kdp27TYZs https://talks.golang.org/2013/advconc.slide https://youtu.be/QDDwwePbDtw 58
3.1.6.6. https://github.com/golang/go/wiki/Articles 58
3.1.6.7. https://github.com/golang/go/wiki/Blogs 58
3.1.6.8. https://github.com/golang/go/wiki/GoTalks 58
3.1.6.9. https://github.com/avelino/awesome-go 58
3.2. 理論學科 58
3.2.1. 資料結構與演算法 58
3.2.1.1. 演算法無用論? 58
3.2.1.2. 陣列、連結串列、雜湊表、二叉樹、排序演算法 58
3.2.1.3. 路徑規劃、揹包問題、字串匹配、動態規劃、遞迴遍歷 58
3.2.1.4. 基礎:《演算法》《演算法圖解》 深入:《演算法導論》 思維改善《程式設計珠璣》 58
3.2.1.5. 演算法訓練:https://leetcode.com/ 耗子叔刷的題目 https://github.com/haoel/leetcode 58
3.2.1.6. https://www.wikiwand.com/en/List_of_algorithms 58
3.2.1.7. 資料結構動畫圖:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 58
3.2.2. 其他 59
3.2.2.1. https://book.douban.com/subject/1139426/《資料結構與演算法分析》 《資料庫系統概念》 《現代作業系統》 《計算機網路》《計算機程式的構造和解釋》《編譯原理》(龍書) 59
3.3. 系統知識 59
3.3.1. 《深入理解計算機系統》 59
3.3.2. 美國電腦科學家 http://www.kohala.com/start/ 《Unix 高階環境程式設計》《Unix 網路程式設計》 《TCP/IP 詳解 卷 I 協議》 59
3.3.3. 通俗易懂版 《Linux C 程式設計一站式學習》《TCP/IP 網路程式設計》《圖解 TCP/IP》《Linux/Unix 系統程式設計手冊》《Wireshark 資料包分析實戰》http://www.tcpipguide.com/free/index.htm 59
3.3.4. Linux系統程式設計 http://igm.univ-mlv.fr/~yahya/progsys/linux.pdf https://book.douban.com/subject/25828773/ 59
3.3.5. TCP http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/ 59
3.3.6. gdb除錯:https://blog.csdn.net/haoel/article/details/2879 59
3.3.7. makefile編寫:https://blog.csdn.net/haoel/article/details/2886 59
3.3.8. C10K問題:http://www.kegel.com/c10k.html https://www.oschina.net/translate/c10k 59
3.3.9. C10M: http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html 59
3.3.10. 後面的方向 60
3.3.10.1. 底層方向:作業系統、檔案系統、資料庫、網路 60
3.3.10.2. 架構方向:分散式系統架構、微服務、DevOps、Cloud Native 60
3.3.10.3. 資料方向:大資料、機器學習、人工智慧 60
3.3.10.4. 前端方向:你對使用者體驗或是互動更感興趣,那麼你走前端的路吧 60
3.3.10.5. 其他方向:安全開發、運維開發、嵌入式開發 60

4. 軟體設計篇 60

4.1. Linus:這世界程式設計師之所有高下之分,最大的區別就是程式設計師的“品味”不一樣。所以,對於我們每一個程式設計師,如果你想成為軟體工程師、設計師或架構師,軟體設計是你必須用心學習的事 60
4.2. 程式設計正規化 60
4.2.1. https://en.wikipedia.org/wiki/Programming_paradigm 60
4.2.2. https://www.ybrikman.com/writing/2014/04/09/six-programming-paradigms-that-will/ https://my.oschina.net/editorial-story/blog/890965 60
4.2.3. 案例:https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf 60
4.2.4. 斯坦福大學公開課:http://open.163.com/special/opencourse/paradigms.html 60
4.3. 軟體設計原則 60
4.3.1. DRY:http://en.wikipedia.org/wiki/Don't_repeat_yourself 60
4.3.2. KISS:http://en.wikipedia.org/wiki/KISS_principle 60
4.3.3. 針對介面程式設計,而非實現 組合優於繼承 61
4.3.4. 避免過度設計:http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It 61
4.3.5. 迪米特法則 不要和陌生人說話 law of demeter:http://en.wikipedia.org/wiki/Principle_of_Least_Knowledge 61
4.3.6. SOLID:https://en.wikipedia.org/wiki/SOLID 61
4.3.6.1. SRP(Single Responsibility Principle)- 職責單一原則 61
4.3.6.2. OCP(Open/Closed Principle)- 開閉原則 61
4.3.6.3. LSP(Liskov substitution principle)- 里氏代換原則:子類應該可以替換任何基類能夠出現的地方,並且經過替換以後,程式碼還能正常工作 61
4.3.6.4. ISP(Interface Segregation Principle )- 介面隔離原則 61
4.3.6.5. DIP(Dependency Inversion Principle)- 依賴倒置原則 61
4.3.7. 共同封閉原則:一起修改的類,應該組合在一起(同一個包裡) http://c2.com/cgi/wiki?CommonClosurePrinciple 61
4.3.8. CRP(Common Reuse Principle)- 共同重用原則:http://c2.com/cgi/wiki?CommonReusePrinciple,包的所有類被一起重用。如果你重用了其中的一個類,就重用全部。換個說法是,沒有被一起重用的類不應該組合在一起。 61
4.3.9. 好萊塢原則就是一句話——“don’t call us, we’ll call you.”:http://en.wikipedia.org/wiki/Hollywood_Principle http://en.wikipedia.org/wiki/Inversion_of_Control https://martinfowler.com/articles/injection.html 61
4.3.10. 高內聚,低耦合:http://en.wikipedia.org/wiki/Coupling_(computer_science) http://www.math-cs.gordon.edu/courses/cs211/lectures-2009/Cohesion,Coupling,MVC.pdf 62
4.3.11. CoC(Convention over Configuration)- 慣例優於配置原則:http://en.wikipedia.org/wiki/Convention_over_Configuration 62
4.3.12. SoC (Separation of Concerns) - 關注點分離:http://sulong.me/archives/99 62
4.3.13. DbC(Design by Contract)- 契約式設計:http://en.wikipedia.org/wiki/Design_by_contract 62
4.3.14. ADP(Acyclic Dependencies Principle)- 無環依賴原則:http://c2.com/cgi/wiki?AcyclicDependenciesPrinciple 62
4.4. 相關讀物 62
4.4.1. 《領域驅動設計》 62
4.4.2. 《UNIX 程式設計藝術》 62
4.4.3. 《Clean Architecture》 62
4.4.4. https://12factor.net/ https://12factor.net/zh_cn/ 62
4.4.5. https://medium.com/@rdsubhas/10-modern-software-engineering-mistakes-bc67fbef4fc8 62
4.4.6. https://medium.com/@DataStax/instagram-engineerings-3-rules-to-a-scalable-cloud-application-architecture-c44afed31406 63
4.4.6.1. Instagram 工程的三個黃金法則:1)使用穩定可靠的技術(迎接新的技術);2)不要重新發明輪子;3)Keep it very simple。我覺得這三條很不錯。其實,Amazon 也有兩條工程法則,一個是自動化,一個是簡化。 63
4.4.7. Restful API 63
4.4.7.1. 設計好的API:google分享 https://www.infoq.com/presentations/effective-api-design 63
4.4.7.2. https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 63
4.4.7.3. https://betimdrenica.wordpress.com/2015/03/09/ideal-rest-api-design/ 63
4.4.7.4. https://github.com/interagent/http-api-design 63
4.4.7.5. https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md 63
4.4.7.6. https://github.com/watson-developer-cloud/api-guidelines 63
4.4.7.7. https://opensource.zalando.com/restful-api-guidelines/ 63
4.4.8. 程式打日誌注意事項:https://blog.codinghorror.com/the-problem-with-logging/ 63
4.4.9. 可擴充套件高效能網站架構:http://berb.github.io/diploma-thesis/community/index.html 63

5. 高手養成 63

5.1. Linux系統/記憶體/網路 64
5.1.1. Linux 64
5.1.1.1. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/?version=7 64
5.1.1.2. https://github.com/0xAX/linux-insides 64
5.1.1.3. http://lwn.net/Kernel/Index/ 64
5.1.1.4. http://learnlinuxconcepts.blogspot.com/2014/10/this-blog-is-to-help-those-students-and.html 64
5.1.1.5. https://www.kernel.org/doc/ 64
5.1.1.6. 核心開發者blog:http://planet.kernel.org/ 64
5.1.1.7. IBM紅皮書:有點老https://lenovopress.com/redp4285.pdf 64
5.1.1.8. 老書“http://tldp.org/LDP/tlk/tlk.html 64
5.1.1.9. http://www.brendangregg.com/linuxperf.html 64
5.1.1.10. DROPbox:https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency/ 64
5.1.2. 記憶體相關 64
5.1.2.1. http://futuretech.blinkenlights.nl/misc/cpumemory.pdf 64
5.1.2.2. https://lwn.net/Articles/250967/ 中文版 https://www.oschina.net/translate/what-every-programmer-should-know-about-memory-part1 64
5.1.2.3. http://irl.cs.ucla.edu/~yingdi/web/paperreading/whymb.2010.06.07c.pdf 65
5.1.2.4. A Tutorial Introduction to the ARM and POWER Relaxed Memory Models: http://www.cl.cam.ac.uk/~pes20/ppc-supplemental/test7.pdf 65
5.1.2.5. http://www.cl.cam.ac.uk/~pes20/weakmemory/cacm.pdf 65
5.1.2.6. lib庫 65
5.1.2.6.1. http://www.malloc.de/en/ 65
5.1.2.6.2. https://github.com/gperftools/gperftools 65
5.1.2.6.3. http://jemalloc.net/ 65
5.1.2.6.4. https://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf 65
5.1.2.6.5. C記憶體分配 https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Thread-caching_malloc_(tcmalloc) 65
5.1.2.6.6. https://owent.net/2013/867.html 65
5.1.2.6.7. http://www.cnhalo.net/2016/06/13/memory-optimize/ 65
5.1.2.6.8. https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919 65
5.1.2.6.9. https://zapier.com/engineering/celery-python-jemalloc/ 65
5.1.3. 網路相關 65
5.1.3.1. 《計算機網路(第五版)》 65
5.1.3.2. 渥太華大學課程:http://www.site.uottawa.ca/~shervin/courses/ceg4185/lectures/ 66
5.1.3.3. https://www.geeksforgeeks.org/computer-network-tutorials/ 66
5.1.3.4. 網路調優 66
5.1.3.4.1. https://access.redhat.com/sites/default/files/attachments/20150325_network_performance_tuning.pdf 66
5.1.3.4.2. 網路工具:https://github.com/caesar0301/awesome-pcaptools 66
5.1.3.4.3. https://netdevconf.org/1.2/papers/bbr-netdev-1.2.new.new.pdf 66
5.1.3.4.4. https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/ 66
5.1.3.4.5. https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data/ 66
5.1.3.5. 網路協議 66
5.1.3.5.1. ARP:https://tools.ietf.org/html/rfc826 66
5.1.3.5.2. https://tools.ietf.org/html/rfc1853 66
5.1.3.5.3. https://tools.ietf.org/html/rfc2784 66
5.1.3.5.4. https://tools.ietf.org/html/rfc2661 66
5.1.3.5.5. https://tools.ietf.org/html/rfc2637 66
5.1.3.5.6. TCP那些事兒 ,耗子叔 https://coolshell.cn/articles/11564.html https://coolshell.cn/articles/11609.html 66
5.1.3.5.7. 最初TCP定義:https://tools.ietf.org/html/rfc793 66
5.1.3.5.8. https://tools.ietf.org/html/rfc813 67
5.1.3.5.9. https://tools.ietf.org/html/rfc879 67
5.1.3.5.10. https://tools.ietf.org/html/rfc896 67
5.1.3.5.11. https://tools.ietf.org/html/rfc2018 67
5.1.3.5.12. https://tools.ietf.org/html/rfc2883 67
5.1.3.5.13. https://tools.ietf.org/html/rfc2988 67
5.1.3.5.14. https://tools.ietf.org/html/rfc6298 67
5.1.3.5.15. 擁塞控制https://tools.ietf.org/html/rfc2581 http://ee.lbl.gov/papers/congavoid.pdf 67
5.1.3.5.16. http://man7.org/linux/man-pages/man7/tcp.7.html 67
5.1.3.5.17. HTTP 67
5.1.3.5.17.1. https://book.douban.com/subject/10746113/ 67
5.1.3.5.17.2. https://tools.ietf.org/html/rfc2616 67
5.1.3.5.17.3. https://tools.ietf.org/html/rfc7230 67
5.1.3.5.17.4. https://tools.ietf.org/html/rfc7231 67
5.1.3.5.17.5. https://tools.ietf.org/html/rfc7232 67
5.1.3.5.17.6. https://tools.ietf.org/html/rfc7233 67
5.1.3.5.17.7. https://tools.ietf.org/html/rfc7234 67
5.1.3.5.17.8. https://tools.ietf.org/html/rfc7235 67
5.1.3.5.17.9. https://en.wikipedia.org/wiki/HTTP/2 67
5.1.3.5.17.10. http2詳解 https://legacy.gitbook.com/book/ye11ow/http2-explained/details http://daniel.haxx.se/http2/ https://www.gitbook.com/book/ye11ow/http2-explained/details 68
5.1.3.5.17.11. https://cascadingmedia.com/insites/2015/03/http-2.html 68
5.1.3.5.17.12. https://www.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf 68
5.1.3.5.17.13. https://httpwg.org/specs/rfc7540.html 68
5.1.3.5.17.14. https://httpwg.org/specs/rfc7541.html 68
5.1.3.5.17.15. https://en.wikipedia.org/wiki/Internet_protocol_suite 68
5.2. 非同步I/O模型和Lock-Free程式設計 68
5.2.1. 阻塞 I/O 非阻塞 I/O I/O 的多路複用(select 和 poll) 訊號驅動的 I/O(SIGIO) 非同步 I/O(POSIX 的 aio_functions) 68
5.2.2. IO模型比較:https://www.slideshare.net/e456/tyma-paulmultithreaded1 68
5.2.3. java相關ppt:http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf 68
5.2.4. https://www.ibm.com/developerworks/library/l-async/ https://www.usenix.org/legacy/event/usenix04/tech/general/full_papers/elmeleegy/elmeleegy_html/html.html https://docs.microsoft.com/en-us/windows/desktop/FileIO/i-o-completion-ports 68
5.2.5. http://sysinternals.d4rk4.ru/Information/IoCompletionPorts.html 68
5.2.6. https://book.douban.com/subject/6935552/ 69
5.2.7. https://flylib.com/books/en/4.491.1.85/1/ 69
5.2.8. http://www.wangafu.net/~nickm/libevent-book/ https://aceld.gitbooks.io/libevent/content/ 69
5.2.9. http://docs.libuv.org/en/v1.x/design.html 69
5.2.10. 非同步 I/O 模型的發展技術是: select -> poll -> epoll -> aio -> libevent -> libuv。Unix/Linux 用了好幾十年走過這些技術的變遷,然而,都不如 Windows I/O Completion Port 設計得好 69
5.2.11. Reactor模式 69
5.2.11.1. https://dzone.com/articles/understanding-reactor-pattern-thread-based-and-eve 69
5.2.11.2. https://www.dre.vanderbilt.edu/~schmidt/PDF/Reactor2-93.pdf 69
5.2.11.3. https://www.celum.com/en/blog/technology/the-reactor-pattern-and-non-blocking-io 69
5.2.11.4. http://highscalability.com/blog/2013/5/13/the-secret-to-10-million-concurrent-connections-the-kernel-i.html 69
5.2.11.5. https://idea.popcount.org/2017-01-06-select-is-fundamentally-broken/ 69
5.2.11.6. https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12/ 69
5.2.11.7. https://idea.popcount.org/2017-03-20-epoll-is-fundamentally-broken-22/ 69
5.2.12. Lock-Free相關 69
5.2.12.1. http://www.drdobbs.com/lock-free-data-structures/184401865 70
5.2.12.2. https://erdani.com/publications/cuj-2004-10.pdf 70
5.2.12.3. 保羅·麥肯尼(Paul E. McKenney) 並行程式設計的經典 https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html https://www.linkedin.com/in/paulmckenney/ 70
5.2.12.4. https://en.wikipedia.org/wiki/Non-blocking_algorithm https://en.wikipedia.org/wiki/Read-copy-update https://en.wikipedia.org/wiki/Seqlock 70
5.2.12.5. 無鎖佇列的實現http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.53.8674&rep=rep1&type=pdf https://coolshell.cn/articles/8239.html 70
5.2.12.6. 這篇論文給出了一個無阻塞和阻塞的併發佇列演算法http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf 70
5.2.12.7. 部落格 70
5.2.12.7.1. http://www.1024cores.net/ 70
5.2.12.7.2. http://paulmck.livejournal.com/ 70
5.2.12.7.3. 併發演算法:http://concurrencyfreaks.blogspot.com/ 70
5.2.12.7.4. 加拿大程式設計師 主要C++和python http://preshing.com/ 70
5.2.12.7.5. C++專家 http://herbsutter.com/ 70
5.2.12.7.6. 英國技術極客 http://mechanical-sympathy.blogspot.com/ 70
5.2.12.8. C++類庫 70
5.2.12.8.1. http://www.boost.org/doc/libs/1_60_0/doc/html/lockfree.html 71
5.2.12.8.2. https://github.com/concurrencykit/ck 71
5.2.12.8.3. https://github.com/facebook/folly 71
5.2.12.8.4. https://github.com/preshing/junction 71
5.2.12.8.5. https://github.com/rigtorp/MPMCQueue 71
5.2.12.8.6. https://github.com/rigtorp/SPSCQueue 71
5.2.12.8.7. http://liburcu.org/ 71
5.2.12.8.8. https://github.com/khizmax/libcds 71
5.2.12.8.9. https://liblfds.org/ 71
5.2.12.9. 其它 71
5.2.12.9.1. 64位系統程式設計 https://software.intel.com/en-us/blogs/2011/07/07/all-about-64-bit-programming-in-one-place/ 71
5.2.12.9.2. https://dl.acm.org/citation.cfm?id=3037750 71
5.2.12.9.3. https://software.intel.com/en-us/articles/improving-openssl-performance 71
5.2.12.9.4. 壓縮優化:https://www.ebayinc.com/stories/blogs/tech/how-ebays-shopping-cart-used-compression-techniques-to-solve-network-io-bottlenecks/ https://engineering.linkedin.com/blog/2017/05/boosting-site-speed-using-brotli-compression https://en.wikipedia.org/wiki/Brotli 71
5.2.12.9.5. SSD硬碟測試:https://devs.mailchimp.com/blog/performance-testing-with-ssds-part-1/ 71
5.2.12.9.6. 安全程式設計:https://www.dwheeler.com/secure-programs/ 71
5.2.12.9.7. 計算機設計忠告:圖靈獎得主https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/acrobat-17.pdf 72
5.2.12.9.8. http://www.hpl.hp.com/techreports/tandem/TR-86.1.pdf 72
5.2.12.9.9. http://research.microsoft.com/en-us/um/people/gray/5_min_rule_SIGMOD.pdf 72
5.2.12.9.10. http://cacm.acm.org/magazines/2009/7/32091-the-five-minute-rule-20-years-later/fulltext 72
5.3. 資料庫 72
5.3.1. Oracle 72
5.3.1.1. 《Oracle Database 9i/10g/11g 程式設計藝術》 72
5.3.2. MySql 72
5.3.2.1. 官方手冊:https://dev.mysql.com/doc/ 72
5.3.2.2. https://www.mysql.com/cn/why-mysql/presentations/tune-mysql-queries-performance/ 72
5.3.2.3. https://www.mysql.com/cn/why-mysql/presentations/mysql-performance-tuning101/ 72
5.3.2.4. https://www.mysql.com/cn/why-mysql/presentations/mysql-performance-sys-schema/ 72
5.3.2.5. https://www.mysql.com/cn/why-mysql/presentations/mysql-performance-tuning-best-practices/ 72
5.3.2.6. 《高效能 MySQL》《MySQL 技術內幕:InnoDB 儲存引擎》《資料庫的索引設計與優化》https://dev.mysql.com/doc/internals/en/ 72
5.3.2.7. http://blog.codinglabs.org/articles/theory-of-mysql-index.html 73
5.3.2.8. https://medium.com/@kousiknath/data-structures-database-storage-internals-1f5ed3619d43 73
5.3.2.9. https://medium.com/@Pinterest_Engineering/sharding-pinterest-how-we-scaled-our-mysql-fleet-3f341e96ca6f 73
5.3.2.10. https://www.mysql.com/cn/why-mysql/white-papers/mysql-guide-to-high-availability-solutions/ 73
5.3.2.11. https://dzone.com/articles/choosing-mysql-high-availability-solutions 73
5.3.2.12. https://mariadb.com/sites/default/files/content/Whitepaper_High_availability_with_MariaDB-TX.pdf 73
5.3.2.13. https://shlomi-noach.github.io/awesome-mysql/ 73
5.3.2.14. https://www.percona.com/resources https://www.percona.com/blog/ 73
5.3.2.15. https://mariadb.com/resources https://mariadb.com/resources/blog 73
5.3.2.16. 實踐分享 73
5.3.2.16.1. https://www.percona.com/live/mysql-conference-2015/sessions/bookingcom-evolution-mysql-system-design 73
5.3.2.16.2. https://medium.com/airbnb-engineering/tracking-the-money-scaling-financial-reporting-at-airbnb-6d742b80f040 73
5.3.2.16.3. https://eng.uber.com/mysql-migration/ 73
5.3.2.16.4. https://engineering.imvu.com/2013/01/09/monitoring-delayed-replication-with-a-focus-on-mysql/ 73
5.3.2.16.5. https://githubengineering.com/mitigating-replication-lag-and-reducing-read-load-with-freno/ 74
5.3.2.16.6. https://medium.com/booking-com-infrastructure/better-parallel-replication-for-mysql-14e2d7857813 74
5.3.2.16.7. https://medium.com/booking-com-infrastructure/evaluating-mysql-parallel-replication-part-2-slave-group-commit-459026a141d2 74
5.3.2.16.8. https://medium.com/booking-com-infrastructure/evaluating-mysql-parallel-replication-part-3-benchmarks-in-production-db5811058d74 74
5.3.2.16.9. 資料分割槽:https://stackoverflow.com/questions/5541421/mysql-sharding-approaches https://www.percona.com/blog/2009/08/06/why-you-dont-want-to-shard/ https://www.percona.com/sites/default/files/presentations/How to Scale Big Data Applications.pdf https://www.percona.com/blog/2016/08/30/mysql-sharding-with-proxysql/ 74
5.3.2.16.10. https://devs.mailchimp.com/blog/using-shards-to-accommodate-millions-of-users/ 74
5.3.2.16.11. https://eng.uber.com/schemaless-rewrite/ 74
5.3.2.16.12. https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c 74
5.3.2.16.13. https://medium.com/airbnb-engineering/how-we-partitioned-airbnb-s-main-database-in-two-weeks-55f7e006ff21 74
5.3.3. NoSQL 74
5.3.3.1. 大神Martin Fowler https://youtu.be/qI_g07C_Q5I 《NoSQL Distilled - NoSQL 精粹》 74
5.3.3.2. 從CAP到NoSQL https://medium.com/baqend-blog/nosql-databases-a-survey-and-decision-guidance-ea7823a822d#.nhzop4d23 75
5.3.3.3. https://resources.sei.cmu.edu/asset_files/WhitePaper/2014_019_001_90915.pdf 75
5.3.3.4. NOSQL建模技術,耗子叔翻譯過https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ https://coolshell.cn/articles/7270.htm 75
5.3.3.5. https://docs.mongodb.com/manual/core/data-modeling-introduction/ 75
5.3.3.6. https://firebase.google.com/docs/database/android/structure-data 75
5.3.3.7. http://blog.nahurst.com/visual-guide-to-nosql-systems 75
5.3.3.8. https://www.upwork.com/hiring/data/sql-vs-nosql-databases-whats-the-difference/ 75
5.3.3.9. https://engineering.salesforce.com/sql-or-nosql-9eaf1d92545b 75
5.3.3.10. 列資料庫 75
5.3.3.10.1. Cassandra 75
5.3.3.10.1.1. https://medium.com/walmartlabs/avoid-pitfalls-in-scaling-your-cassandra-cluster-lessons-and-remedies-a71ca01f8c04 75
5.3.3.10.1.2. https://medium.com/walmartlabs/building-object-store-storing-images-in-cassandra-walmart-scale-a6b9c02af593 75
5.3.3.10.1.3. https://engineeringblog.yelp.com/2016/08/how-we-scaled-our-ad-analytics-with-cassandra.html 75
5.3.3.10.1.4. https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7 75
5.3.3.10.1.5. https://www.slideshare.net/DataStax/cassandra-at-instagram-2016 76
5.3.3.10.1.6. https://medium.com/netflix-techblog/benchmarking-cassandra-scalability-on-aws-over-a-million-writes-per-second-39f45f066c9e 76
5.3.3.10.2. HBase 76
5.3.3.10.2.1. https://medium.com/imgur-engineering/imgur-notifications-from-mysql-to-hbase-9dba6fc44183 76
5.3.3.10.2.2. https://medium.com/@Pinterest_Engineering/improving-hbase-backup-efficiency-at-pinterest-86159da4b954 76
5.3.3.10.2.3. https://www.ibm.com/support/knowledgecenter/en/SSPT3X_2.1.2/com.ibm.swg.im.infosphere.biginsights.analyze.doc/doc/bigsql_TuneHbase.html 76
5.3.3.10.2.4. http://www.larsgeorge.com/2010/05/hbase-file-locality-in-hdfs.html 76
5.3.3.10.2.5. http://borthakur.com/ftp/RealtimeHadoopSigmod2011.pdf 76
5.3.3.10.2.6.