ARTS - Week 5

发布于: 2020 年 07 月 13 日

Algorithm

112. 路径总和

典型的深度搜索的题目,递归一定可以解。

但是这个题目其实只要搜索到正确的值就可以不继续后面的循环了,导致用递归并不一定是最优解。

采用循环来实现深度搜索,在找到解时break,理论上可以加快运行速度

Review

这次Review的是Google的Map Reduce的Paper,目前大概只看完一半,看这种著名的Paper给我很大的感悟:

  1. 很多事情并没有你想象中的那么难。看Paper之前,我抱着一种心态——这可是闻名世界的Paper,一定非常高深。然而实际上,优秀的作品总是通俗易懂。

  2. 我总是再渴求所谓的“高级的知识”,比如,当我第一次知道CAS这种CPU同步原语时,我觉得我就学到了一种“高级的知识”,给我带来巨大的兴趣和成就感。于是,我总是渴求这种“高级的知识”,对其他的普通的知识提不起兴趣来,学习效率也十分低下。

  3. 在MapReduce的Paper里,提到了一个掉队者(straggler)问题,指的是,MapReduce程序中,经常会出现一台机器由于硬件原因,运行非常缓慢,所有的其他MapReduce任务都执行完了,它还没运行完毕,这台机器成了整个MapReduce任务最慢的节点,拖慢了整个Task的节奏

  4. 而解决上述问题的方法并不高深,当整个MapReduce任务执行到80%时,MapReduce集群会对剩余的20%任务启动备份,即同一个任务同时在两台不同的机器上跑,任意一台机器上的任务运行完毕,视为该任务执行完毕。只用这么一个简单粗暴的办法,就解决了掉队者问题。

  5. 其实大部分复杂问题的解决,并不是靠一个“高级的知识”解决的,而是靠一个个“普通的知识”和巧妙的思维来解决的。尊重每一个知识,所有的知识都是平等的,没有高低贵贱,能解决问题的方法,就是好方法!

  6. 不追求“高级”,但依旧要追求“优雅”

Tips

利用继承 + Spring Boot profile特性mock数据

在测试过程中,很多时候需要在测试环境mock,但是又不希望这些mock代码影响生产环境。利用extends + spring boot profile优雅解决问题。

例如你有一个@Service标签修饰的类,有一个A方法需要被mock,你可以写一个类继承这个类,在用@Profiles("QA")修饰它,然后在这个子类override的A方法里写你的mock代码。那么这部分代码可以直接发布到生产环境,无需担心它会影响正常代码的运行。同时,在测试环境又可以运行被mock的A方法。

Share

DDD分层架构:有效降低层与层之间的依赖

最近一直在研究DDD,不过任督二脉还没打通,暂时不多言。

DDD编码方式下,可以代替当前Controller、Service、DAO三层架构的架构模式,一图胜千言

发布于: 2020 年 07 月 13 日 阅读数: 14
用户头像

Khirye

关注

还未添加个人签名 2018.03.31 加入

还未添加个人简介

评论

发布
暂无评论
ARTS - Week 5