之前買了極客時間上的一個課程《左耳聽風》,發現作者發起了一個挑戰挺有趣的,ARTS,堅持100天。
Algorithm-一週至少一道算法題
Review-閱讀並點評至少一篇英文技術文章
Tip-學習至少一個技術技巧,總結和歸納在日常工作中所遇到的知識點
Share-分享一篇有觀點和思考的技術文章
看到這個挑戰後自己也想實踐一次,作爲今年的100天挑戰,再次出發。
第一週:200511-200517
Algorithm
leetcode-230:https://leetcode.com/problems/kth-smallest-element-in-a-bst/
leetcode-94:https://leetcode.com/problems/binary-tree-inorder-traversal/
leetcode-144:https://leetcode.com/problems/binary-tree-preorder-traversal/
leetcode-145:https://leetcode.com/problems/binary-tree-postorder-traversal/
leetcode-897:https://leetcode.com/problems/increasing-order-search-tree/
leetcode-997:https://leetcode.com/problems/find-the-town-judge/
Review
1、Implementing a Key-Value Store – Part 1: What are key-value stores, and why implement one
點評:
作者介紹了kv存儲及爲什麼要實現,kv是一種簡易的數據庫,用於存儲數據。比如現在的redis,是一種可支持快速讀/存的數據庫。可以有多種數據結構實現KV存儲系統,比如哈希表和平衡樹。
要實現kv存儲系統的原因是爲了提升後端程序員的技術棧,而且閱讀書籍和wiki太無聊且缺少實踐。
作者爲了回顧以下後端相關知識點:
C++
面向對象編程
數據結構和算法
內存管理
多線程、多進程和併發
網絡編程(server/client)
磁盤管理的I/O問題以及文件系統使用
文章的結構很清晰,先介紹了存儲系統,以及作爲後端通過實踐去實現一個,而且重點並不是造輪子,只是在參考已有KV存儲系統的實現,取其精華,去其糟粕,實現一個更好的KV存儲系統,同時也提升自己技能樹。
這樣的學習習慣可以借鑑,帶着目的去學習和練習,目標清晰,也不會被其他東西打斷。自己的學習也可以參考列一下自己要學習的知識點,不能總是東拼西湊的,知識點需要能串起來。
2、如何閱讀論文(https://www.cc.gatech.edu/~akmassey/posts/2012-02-15-advice-on-reading-academic-papers.html)
總結記錄:
首先讀簡要和結論:
找到作者想表達的內容和研究的課題
快速過一遍論文,得出:
目的、結構和研究方向
不用每一個字都讀了,如果遇到不懂的,可以暫時先跳過,繼續往下讀,後面的內容可能會解釋前面的內容
Tip
參數校驗,定義通用參數,把方法寫在類裏邊,在請求到來時或者在攔截器調用類的校驗方法。
模型是人們對一類事物的概括與抽象,可以幫助我們更好地理解事物的本質,更方便地解決問題。比如,數學公式是我們對物理與數學規律的抽象,地圖和沙盤是我們對地理空間的抽象,軟件架構圖是軟件工程師對軟件系統的抽象。
通過抽象,我們更容易把握事物的內在規律,而不是被紛繁複雜的事物表象所迷惑,更進一步深刻地認識這個世界。通過抽象,伽利略發現力是改變物體運動的原因,而不是使物體運動的原因,爲全人類打開了現代科學的大門。
關於認爲做“最新東西”寫的亂點沒問題,反正最後會重構的問題;這個理論對麼?當然對,但是有一個前提,就是做的東西簡單, 更確切的講, 好測, 能很容易驗證基本邏輯或者系統的normal path; 對於不好測,且出一個bug就影響重大, 可能會導致黃掉整個項目,那麼程序複雜度就不能過於給系統添麻煩,程序複雜度和業務複雜度不成基本線性關係,說明這個程序員寫程序沒有scalability,做點簡單東西還行,做複雜東西就原地爆炸;程序員產出的code能不能在複雜度這個維度上scale,是我想指出的東西。(阿萊克西斯-知乎)
Share(在第二篇文章中給出)
blog-【總結】從0到1的項目經歷
挑戰看起來不容易,做起來好難,堅持下去更難,把挑戰暴露出來,希望能接受大家的監督,完成這個挑戰。
這是第一次挑戰的記錄,排版有點亂,還在學習怎麼做好排版,之後會繼續改良。如果有錯誤的地方,歡迎指正。
原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。
如果本文對你有幫助,請點個贊吧,謝謝^_^
參考鏈接:
左耳聽風ARTS
https://time.geekbang.org/column/article/85839
編程到底難在哪裏?
https://www.zhihu.com/question/22508677/answer/276595266
Advice on Reading Academic Papers
https://www.cc.gatech.edu/~akmassey/posts/2012-02-15-advice-on-reading-academic-papers.html
Implementing a Key-Value Store
http://codecapsule.com/2012/11/07/implementing-a-key-value-store-part-1-what-are-key-value-stores-and-why-implement-one/
更多精彩內容,請關注個人公衆號。