左耳聽風 第四十八週
每週完成一個ARTS: 每週至少做一個 leetcode 的算法題、閱讀並點評至少一篇英文技術文章、學習至少一個技術技巧、分享一篇有觀點和思考的技術文章。(也就是 Algorithm、Review、Tip、Share 簡稱ARTS)
Algorithm
開始按照類型來刷題,本週爲:字符串、數組、哈希表 相關,以下爲個人題解:
review
「What I’m Telling Business People About Why Relational Databases Are So Bad」(在代碼中添加註釋:好的、壞的以及醜陋的)
註釋可以分爲兩類:
一類是文檔註釋,用於 API 文檔,方便開發者在使用代碼庫或框架,根據特定的語法規則寫在代碼中由特定的工具抽取生成。
另一類是說明註釋,方便維護、重構或擴展代碼。而這類代碼的註釋的好壞直接影響後來者的工作,好的註釋能夠幫助維護,而壞的註釋會讓後續的工作變得困難以至於根本不願意去維護代碼。
作者認爲,註釋其實是代碼的一種氣味,當你的註釋寫的又長又晦澀難懂時,說明你的代碼過於複雜,這時你就要考慮是否要重構你的代碼,讓代碼簡化(通常搞複雜度 = 更多的 BUG)。
好的代碼:幫助我們解釋易混淆的代碼,幫助我們理解代碼。
壞的代碼:讓代碼的理解變得更爲複雜,使代碼看起來一團亂。
醜陋的代碼:沒有意義的代碼出現在生產線,可能是對開發過程的吐槽或是對長期加班的不滿,這些可以寫在自己的電腦裏,但是不應放在上線的代碼中,干擾別人的情緒對代碼產生誤解。
總結:不要寫沒有意義的註釋,讓代碼替你說話,只有當代碼無法直接表達你的意圖時,我們才需要註釋。
Tip
數據庫方面的知識是後端面試中必考的,我們可以通過事務的特性來推導出事務併發處理異常和事務的隔離級別(不死記概念)。
事務的四大特性簡稱爲 ACID,對應着:
原子性、一致性、隔離性 以及 持久性,而事務的併發異常正是破壞事務的幾個特性,如:髒讀,讀出了未提交的數據,正是破壞了事務的 原子性。而事務的隔離級別正是針對於三種異常來的,在 讀未提交 的情況下,可能出現三種並非異常,讀已提交保證了事務的原子性,則 髒讀 異常被消除,而隔離級別最高的 可串行化 在犧牲事務的併發效率的情況下消除了所有的併發異常。
不應死記某個答案,而是應該理解思想,去學習答案是如何推導的。
share
網絡似乎剝奪了我們專注以及沉思的能力?許多人因快速地收發電子郵件和在社交媒體上發信息所帶來的繁忙假象而慰藉,而 深度工作 卻是要我們擺脫這些。