ARTS第一期
每周完成一个 ARTS:
Algorithm :leetcode题库第3题:无重复字符的最长子串
Review :阅读并点评至少一篇英文技术文章
Tip :学习至少一个技术技巧
Share 分享一篇有观点和思考的技术文章
第一次做有些粗陋。。。。。。。。。。。。
A:
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串 的长度。
示例 1:
输入: "abcabcbb"输出: 3解释:因为无重复字符的最长子串是"abc",所以其长度为 3。
示例 2:
输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是"b",所以其长度为 1。
示例 3:
输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是子串 的长度,"pwke"是一个子序列,不是子串
完成代码:
R:
来源于 Twitter
题目:How To Estimate Time On A Project
在实际工作中,会经常被人问及需要多久时间完成,文章提及几点,让我们更合理的预估出项目的开发时间:
1、 与客户或者经理一起遍历项目或者任务列表
2、 记笔记,问更多的问题,一直问,直到对任务很清楚
3、 看看你的同时的平均水平,这样让你了解其他人的期望的平均时间,并且了解你同事的进度,这样你可以更好的把控时间。
4、 要预留足够的测试时间
5、 不要放慢自己的最好的工作速度
6、 最后提及他在一个项目中低估了时间,就老实的于上级交代,这会得到理解
个人观点:
我觉得上面说的几点还是对我比较有帮助的,在估算时间时,会做到以上其中几点,但对这一问题,没有做梳理,已致估算有大的出入。这对今后评估项目时间有很大的帮助。
T:
1、group by +
order by优化
数据表:
CREATETABLE`article_rank` (
`id` int(11)unsignedNOTNULL AUTO_INCREMENT,
`aid` int(11)unsignedNOTNULL,
`pv` int(11)unsignedNOTNULLDEFAULT'1',
`day` int(11)NOTNULLCOMMENT'日期 例如20171016',
PRIMARYKEY(`id`),
KEY`idx_day_aid_pv` (`day`,`aid`,`pv`),
KEY`idx_aid_day_pv` (`aid`,`day`,`pv`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
要求:
查询2018-12-20 ~ 2018-12-24这5天浏览量
使用3个方案优化:
方案1: 方案1 使用 idx_aid_day_pv 索引
select aid,sum(pv) as num from article_rank force index(idx_aid_day_pv) where day>=20181220 and day<=20181224 group by aid order by num desc limit 10;
方案2: 方案2 扩充临时表空间上限大小
方案3:使用SQL_BIG_RESULT 优化,使临时表直接走磁盘存储。
总结:
方案1:优化效果不稳定,当总表数据量与查询范围的总数相同时,且不超出内存临时表大小限制时,性能达到最佳。当查询数据量占据总表数据量越大,优化效果越不明显;方案2:需要调整临时表内存的大小,可行;不过当数据库超过32MB时,如果使用该方式,还需要继续提升临时表大小;方案3:直接声明使用磁盘来放临时表,虽然扫描行数多了一次符合条件的总行数的扫描。但是整体响应时间比方案2就慢了0.1秒。因为我们这里数据量比较,我觉得这个时间差还能接受。
结果:选择方案3比较合适。
2、如何理解并应用贝塞尔曲线
https://segmentfault.com/a/1190000018502700
个人觉得比较有意思,在此推荐给大家
S: 技术并非一切,做做 Side Project 吧
https://juejin.im/post/5c9340956fb9a070d013faac