左耳听风 第四十七周
每周完成一个ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS)
Algorithm
开始按照类型来刷题,本周为:栈 相关,以下为个人题解:
review
「What I’m Telling Business People About Why Relational Databases Are So Bad」(我要告诉商人们关系型数据库如此糟糕的原因)
作者在文章中讲述了关于「关系型数据库」糟糕的几个原因:
1、存在 「SQL 注入」等隐患,谷歌等大型企业每天要遭受大量的SQL 注入攻击。许多企业也因此损失了大量的金钱。
2、因关系数据库的数据存储方式,我们存取数据时需要大量的连接操作,这种连接操作总是大量重复的,这并不符合 DRY( Don’t repeat youself )原则,而数据连接带来的是程序的复杂性、无序性的上升,在软件开发中这等于错误的增加。
对于关系型数据库的连接操作,有一个形象的比喻,主人把车开回家,把车的零件拆下来挂在墙上,第二天早上起来上班前再把零件装回车上,再开车上班。(重复不必要的工作)
这篇文章的大部分观点,我并不是很认同,许多观点比较片面,不过在评论区有一则非常不错的评论
该评论者的观点如下:
1、「SQL 注入」并不只存在于关系型数据库,非关系型数据库也存在「SQL 注入」问题。
2、单纯说 好/坏 并没有任何实质意义,我们需要的不仅是提出问题,更重要的是能够实际解决问题的方案。
3、关系型数据库从目前的应用来看并没有太多的不好,教育、医疗、金融服务等应用中都有对关系型数据库的使用,每天有数百万人因使用关系型数据库而收益。
4、事情不是好是坏,而是事实
Tip
数据库列名与实体类属性名不一致解法方法:
方法1:对数据库查询的列名取别名,直接在数据库层面解决问题
方法2:在 XML 配置文件中配置 resultMap 对实体类属性与列名进行映射
差异:
前者,效率更高但是对每一条 SQL 查询语句都需要修改别名更繁琐,可以利用视图机制来解决
后者,效率相对更低,但是一次定以后对每一条查询都可用
share
阿德勒心理学认为每个人的烦恼都指向【人际关系】问题。而解决问题的方法在于正确认识自己,将自己与他人的课题分离。
如何正确认识自己呢?接受自己的不完美,承认自己在某些方面并不比别人更好,正视自己的不足,不应和别人比较好坏,而应该和自己比较,看看自己比一年前、一个月前有什么变化,是变好还是变化了,正确看待自己才是我们解决自身烦恼的关键。
如何分离自己和他人的课题。遇到问题,先从自己身上寻找答案,无法改变他人也不能改变他人的行为和思想,不将自己的意志强加于他人。