ARTS挑戰打卡第五週

 帶着問題/目的去練習,事半功倍

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

原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

如果本文對你有幫助,請點個贊吧,謝謝

更多精彩內容,請關注個人公衆號。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章