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输出了一篇学后感,和大家一起共勉。