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輸出了一篇學後感,和大家一起共勉。
