1. 程式人生 > 實用技巧 >ARTS-02 20200622~20200628

ARTS-02 20200622~20200628

Alg

一個數論題

我的做法是 預處理一下,獲得一個包含了最多 n 個天數的有序數列,預處理 O(n^2) ; 然後對預處理得到的序列,每個天數依次校驗天數對應的情況是否能滿足需求, 也是 O(n^2) ,所以時間複雜度是 O(n^2) . 空間複雜度是 O(n)

但是 超時啦~

Rev

kotlin's hidden costs

講到了一些 kotlin 相比 java 的效能損失,寫 kotlin 的時候需要注意的一些點。我看了以後列舉一下我覺得有道理的 :

  • kotlin 的 * 運算子. 例如 fun f(vararg a : Int){} f(*arr) 因為這個的 JVM 位元組碼會先 system.arrayCopy 一個新的 array 再傳入 f, 需要視實際情況使用。
  • kotlin 的 range 運算子相關的問題, 也就是 0 .. 10 這個語法, 這裡不要使用 (0..10).foreach {} 的寫法, 因為這種寫法的位元組碼是使用 Iterator 遍歷的。而 for(i in 0..10) 就是正常的 判斷-跳轉

Tip

AndroidStudio 或者別的 IDEA 族的 IDE, 都可以使用 IdeaVim 外掛來給 Editor 增加一個 vim 模式, 這就使得檢視程式碼變得很舒服(因為可以使用 Ctrl-B Ctrl-W HJKL 而不需要必須使用 上下左右 來操作游標了(而實際看程式碼的時候手移動到 上下左右區域是很麻煩),再配合 IDEA 預設的一些快捷鍵, 例如 檢視父類(Cmd-U

)/檢視實現(Shift-Cmd-B)/ 檢視引用定義(Cmd-B)... 用熟了以後可以使得基於 IDEA 的程式碼檢視變得十分輕鬆愜意。

Share

偷個懶,直接放連結了, Android 端接入程式碼檢測
程式碼檢測在我看來真的很有必要, 它不是一個限制,是一個輔助工具,會告訴你 ”這個地方你做的可能還不太對,是不是考慮考慮再改一下?“ , 這在我看來很有幫助。