“ 帶着問題/目的去練習,事半功倍”
Algorithm-一週至少一道算法題
Review-閱讀並點評至少一篇英文技術文章
Tip-學習至少一個技術技巧,總結和歸納在日常工作中所遇到的知識點
Share-分享一篇有觀點和思考的技術文章
01-Algorthm
———————
https://leetcode.com/problems/binary-search-tree-iterator/
思路:樹的遍歷,還是用樹的遍歷框架,遍歷結點和左右子樹。
https://leetcode.com/problems/kth-largest-element-in-an-array/
思路:快速選擇算法,參考快排算法
02-Review
——————
文章鏈接:https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html
很讚的一篇文章,相當於指明瞭一幅尋寶圖的起點,介紹如何開始學習分佈式系統,記錄幾點摘要:
入門分佈式系統至少要三個月,之後需要很長時間去加深這部分的能力
不鼓勵通過看某些概念或算法的實現代碼來學習分佈式系統,因爲代碼都是大同小異,結構都很類似,通過代碼會讓自己進入了一個熟悉的領域,帶着原來的思路去學習,應該把分佈式系統當作一個全新的領域來學習。
先讀完這本《Introduction to Distributed Systems》[https://cse.buffalo.edu/~demirbas/CSE586/book.pdf],裏面介紹了分佈式系統領域的概念和相關主題
使用TLA+(一種正式的規範語言。它用於設計,建模,記錄和驗證程序,尤其是併發系統和分佈式系統。)來練習算法
學習分佈式系統中的impossibility results,即證明某項事情的不可能的,分佈式系統中兩個最重要的impossibility results,網絡協同攻擊和FLP。
讀原始的論文來學習
文章又推薦了一次馬丁大神的《數據密集型系統設計》,這本書我讀過一遍,簡直是大開眼界,值得再次拜讀。還有其他的學習鏈接都在文章裏面有,這裏不一一列舉了。
03-Tip
——————
進程和線程的區別
從學術上理解,進程就是`包含上下文切換的程序執行時間總和 = CPU加載上下文+CPU執行+CPU保存上下文`,
線程就是CPU執行那一部分的一個個小段。
進程和線程都是一個時間段的描述,是CPU工作時間段的描述,不過是顆粒大小不同。
另一種簡單的理解:
1. 進程:程序的一次執行
2. 線程:CPU的基本調度單位
04-Share
—————
blog-使用攔截器統一處理異常(見推送第二篇文章)
參考鏈接:
線程和進程的區別是什麼?
https://www.zhihu.com/question/25532384
原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。
如果本文對你有幫助,請點個贊吧,謝謝
更多精彩內容,請關注個人公衆號。