ARTS第一期

2019-03-24  本文已影响0人  1f2bd7776608

每周完成一个 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

上一篇下一篇

猜你喜欢

热点阅读