左耳听风 第四十八周
每周完成一个ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS)
Algorithm
开始按照类型来刷题,本周为:字符串、数组、哈希表 相关,以下为个人题解:
review
「What I’m Telling Business People About Why Relational Databases Are So Bad」(在代码中添加注释:好的、坏的以及丑陋的)
注释可以分为两类:
一类是文档注释,用于 API 文档,方便开发者在使用代码库或框架,根据特定的语法规则写在代码中由特定的工具抽取生成。
另一类是说明注释,方便维护、重构或扩展代码。而这类代码的注释的好坏直接影响后来者的工作,好的注释能够帮助维护,而坏的注释会让后续的工作变得困难以至于根本不愿意去维护代码。
作者认为,注释其实是代码的一种气味,当你的注释写的又长又晦涩难懂时,说明你的代码过于复杂,这时你就要考虑是否要重构你的代码,让代码简化(通常搞复杂度 = 更多的 BUG)。
好的代码:帮助我们解释易混淆的代码,帮助我们理解代码。
坏的代码:让代码的理解变得更为复杂,使代码看起来一团乱。
丑陋的代码:没有意义的代码出现在生产线,可能是对开发过程的吐槽或是对长期加班的不满,这些可以写在自己的电脑里,但是不应放在上线的代码中,干扰别人的情绪对代码产生误解。
总结:不要写没有意义的注释,让代码替你说话,只有当代码无法直接表达你的意图时,我们才需要注释。
Tip
数据库方面的知识是后端面试中必考的,我们可以通过事务的特性来推导出事务并发处理异常和事务的隔离级别(不死记概念)。
事务的四大特性简称为 ACID,对应着:
原子性、一致性、隔离性 以及 持久性,而事务的并发异常正是破坏事务的几个特性,如:脏读,读出了未提交的数据,正是破坏了事务的 原子性。而事务的隔离级别正是针对于三种异常来的,在 读未提交 的情况下,可能出现三种并非异常,读已提交保证了事务的原子性,则 脏读 异常被消除,而隔离级别最高的 可串行化 在牺牲事务的并发效率的情况下消除了所有的并发异常。
不应死记某个答案,而是应该理解思想,去学习答案是如何推导的。
share
网络似乎剥夺了我们专注以及沉思的能力?许多人因快速地收发电子邮件和在社交媒体上发信息所带来的繁忙假象而慰藉,而 深度工作 却是要我们摆脱这些。