ARTS - 2020.06.02 ~ 2020.06.07

ARTS打卡 - 1

1. Algorithm

题目:5. Longest Palindromic Substring

按照以前做过的以及题目顺序(hard跳过原则 - _ -)做的这道题,首先看了一下什么是Palindromic String(回文字符串)。。 然后求回文子串首先能想到的就是暴力解法,就是遍历所有的长度大于2的子串,然后判断是否为回文子串,考虑应该还有更合适的解法。想到从两边向中间判断头尾是否相等,但没想明白指针应该怎么移动。后来看了一下解法,可以用动态规划做,理解了一下动态规划的分析方法(感觉画一个表,然后填步骤到表里比较容易理解一些),希望下次类似的题可以把dp运用起来。

2. Review

9 Excuses Why Programmers Don’t Test Their Code

看了一篇有关测试的9个实践,主要是一些对编写测试代码常见的疑问,以及解答:

1、没有人能够写出完美代码,除了我以外,但我只有一个 —— Linus Torvalds

2、如果代码是不可测试的,则需要考虑重构代码,不可测试的代码维护和修改的代价是昂贵的。

3、测试一些边际条件以及更复杂的情况。

4、刚开始测试会增加开发时间,但随着测试成为一种习惯,会大大节约实际开发时间。

5、通过沟通,查看旧文档寻找出对于旧代码的测试点。

6、当处理不断变化的需求时,应当最先测试主要流程。

7、手动测试有时更快,但重复一次又一次的手动测试会大量浪费时间。

8、客户只想为可交付的成果付费,尽可能少的付出,但从长远来看,编写测试可以降低维护成本与开发成本。

9、您添加的两行代码成功打破了您无法预料的内容 —— 全面测试可以过滤代码错误,确认代码运行无误。

3. Tip

学会了如何使用node inspector调试一个node server,之前使用过一个工具叫做devtool,可以单步调试nodejs的代码,但是无法对运行的server进行debug调试。 如 macaca server --verbose 命令是启动了一个server,但是是通过node编写的cli运行的,无法直接使用node inspector调试,需要首先找到cli运行的js文件,然后通过node –inspector=xxxx/xxx-cli , 然后通过chrome://inspect ,就可以看到被调试的服务,通过inspect控制台就可以进行debug调试了。

4. Share

干货 | Kotlin/Native 异步并发模型初探

由于想了解一下kotlin mutex与actor,刚好看到了这篇文章,主要是讲了一下kotlin/native的异步并发模型,对于kotlin/native的异步并发模型,文章主要提到了几个点:

  • 冻结对象,对象子图, @ThreadLocal, @SharedImmutable
  • kotlin/Native 实现并发: worker的使用
  • 预览版的多线程协程模型与存在的问题。