Dimple在左耳聽風ARTS打卡(第六期)

  • 2019 年 12 月 25 日
  • 筆記

所謂ARTS: 每周至少做一個LeetCode的演算法題;閱讀並點評至少一篇英文技術文章;學習至少一個技術技巧;分享一篇有觀點和思考的技術文章。(也就是Algorithm、Review、Tip、Share 簡稱ARTS)這是第六期打卡。

Algorithm LeetCode演算法

有效的括弧 (leetcode.com/problems/v)

題目描述:給定一個只包括 '(',')','{','}','[',']' 的字元串,判斷字元串是否有效。

有效字元串需滿足: 1. 左括弧必須用相同的右括弧閉合 2. 左括弧必須以正確的順序閉合

注意空字元串可被認為是有效字元串 示例 1:

輸入:"()""  輸出: true  

示例 2:

輸入: "()[]{}"  輸出: true  

示例 3:

輸入: "(]"  輸出: false  

示例 4:

輸入: "([)]"  輸出: false  

示例 5:

輸入: "{[]}"  輸出: true  

這道演算法題,考察的情況就不是之前那些題目一樣,是常規操作了。我說的常規操作,這裡的意思是說對字元串的增刪改查的操作,因為你仔細查看這題,你會發現,其實這就是一道堆棧問題。

之前沒做過入棧出棧的題目,剛好這道題可以拿來練手了。這題的思路,無非就是對堆棧的熟悉程度,小編給出中文版力扣中的解題思路,供大家參考。在這裡,小編就不啰嗦了,相信官網裡給出的解釋比我這個更能讓大家看懂。地址:

(leetcode-cn.com/problem)

public static boolean isValid(String s) {      Stack<Character> stack = new Stack<>();      for(char c : s.toCharArray()) {          if (c == '(' || c == '[' || c == '{') {              stack.push(c);          } else {              if (stack.isEmpty()) {                  return false;              } else {                  char top = stack.pop();                  if (c == ')' && top != '(') {                      return false;                  }                  if (c == ']' && top != '[') {                      return false;                  }                  if (c == '}' && top != '{') {                      return false;                  }              }          }      }      return stack.isEmpty();  }  

Review 閱讀並點評至少一篇英文文章

GitHub Protest Over Chinese Tech Companies』 「996」 Culture Goes Viral (radiichina.com/github-p)

今天在知乎上去看一些國外的技術網站的推薦,很多人都推薦了raddit,我也就點進去看了,結果這條標題吸引了我。

對的,就是前些天在我們技術圈很是風靡的關於「996」的話題的,我就饒有興趣的點點開看了,文章很短,因為恰逢5.1假期,我給自己偷下懶。

朋友們都知道GitHub是「託管和審查程式碼,管理項目,並與3100萬開發人員一起構建軟體」的網站,這個996已成為有史以來發展最快的GitHub存儲庫之一,說明還是引起了很多人寫程式碼的朋友的關注,很多大V也針對這個事件寫過文章,都發表了自己的觀點。

當然啦,還有馬雲爸爸,他的話更是轟動,怕別人誤解還是啥的,還在微博里做了補充。更引起波瀾的自然就是京東的東哥了,文中也提到,京東是被重點點名的企業,何況還有各種新聞纏繞,曾經的曾經,京東是多少人羨慕的地方吧。

對於我們IT從業人員來說,996並不可怕,可怕的是你996了還沒有收穫,無論從技術、精神還是金錢上,那這個996就毫無意義。僅是個人觀點,各位不要做多猜測哈。

這次吹水了,下周好好找找資源,繼續學習技術,幹起來。

Tip 一個技術技巧

前兩次是《Java核心技術36講》的學習內容,第26和27講,因為這門課記錄的筆記比較多,這次還是繼續分享這門課的筆記,接下來的第28講內容,談談你的GC調優思路。

談談你的GC調優思路

對於GC調優來說,首先就需要清楚調優的目標是什麼?從性能的角度看,通常關注三個方面記憶體佔用(footprint)、延時(latency)和吞吐量(throughput) 基本的調優思路可以總結為:

  • 理解應用需求和問題,確定調優目標
  • 掌握JVM和GC的狀態,定位具體的問題,確定真的有GC調優的必要
  • 這裡需要考慮,選擇的GC類型是否符合我們的應用特徵,如果是,具體問題表現在哪裡,是Minor GC過長,還是Mixed GC等出現異常停頓情況;如果不是,考慮切換到什麼類型,入CMS和G1都是更側重於低延遲的GC選項
  • 通過分析確定具體調整的參數或者軟硬體配置
  • 驗證是否達到調優目標,如果達到目標,即可以考慮結束調優;否則,重新完成分析、調整、驗證這個過程

調優建議

  • 首先,建議盡量升級到較新的JDK版本
  • 第二,掌握GC調優資訊收集途徑

Share 一篇有觀點和思考的技術文章

繼續設計模式的學習執行,更新到觀察者模式。在上面說道,我學習Java輸出了一篇學後感,和大家一起共勉。

Tags: