Algorithm
283. 移动零
解法一:
1 | class Solution { |
执行用时:0ms,内存消耗:37.7MB。
解法二:
1 | class Solution { |
执行用时:0ms,内存消耗:36.6MB。
Review
10 Signs You Will Suck at Programming
文章论述了 10 个影响编程的品格。想要入门的人可以自查自己适不适合编程,已经入行的人可以看看自己有哪些地方需要改进。
- 缺乏好奇心
- 缺乏自己解决问题的能力(或资源检索能力)
- 面对问题时缺乏耐心
- 攻克问题时没有成功的喜悦
- 对学习和理解不耐烦
- 厌倦思考
- 无法独立思考
- 思维僵硬、狭窄或者混乱
- 需要“正确”答案,而不是从一系列答案中甄别好坏
- 不注意细节
Tip
MySQL 选错索引
MySQL 通过优化器来制定执行方案,优化器会结合扫描行数、是否使用临时表、是否排序等各种因素综合判断使用哪一个索引进行查询。
扫描行数判断:MySQL 在真正开始执行语句之前,并不能精确地知道满足这个条件的记录有多少条,只能通过统计信息来估算记录数,这个统计信息就是索引的“区分度”。一个索引上不同的值越多,这个索引的区分度就越好。而这个索引上不同值的个数,我们称之为“基数”(cardinality)。也就是说,这个基数越大,索引的区分度越好。但是 MySQL 是通过采样统计的方法来估算索引基数的,所以基数的估计很容易是不准的。
对此,可以通过 analyze table
命令来重新统计索引信息。
但是优化器的判断标准不止是扫描行数,是否使用临时表、是否排序等因素也会影响索引的选择。
索引选择异常的处理
- 采用
force index
强行选择一个索引; - 考虑修改语句,引导 MySQL 使用我们期望的索引;
- 有写场景下,我们可以新建一个更合适的索引,来提供给优化器选择。或者删掉误用的索引。
Share
过年回家,看到的一些变化:年