乐趣区

关于golang:ARTS-第13周-LeetCode-686-Repeated-String-Match-MySQL-索引原理-舒适区

ARTS

ARTS 是陈浩(网名左耳朵耗子)在极客工夫专栏里发动的一个流动,目标是通过分享的形式来保持学习。

每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。

本周内容

  1. 谷歌也考的 Easy 算法题
  2. 从 B+ 树原理到实际理解 MySQL 索引
  3. 每个人都走在逃离舒服区的路上

Algorithm

本周的题目比较简单:LeetCode 686. Repeated String Match.

惟一的小艰难在于要搞清楚如果 A 能够通过反复本人的形式蕴含 B 的话,最长须要「反复」到多长的字符串,而后间接用规范库的字符串查找就能够了。

本人实现字符串查找算法,不是本题的考点。

func repeatedStringMatch(A string, B string) int {t, count, maxLen := "", 0, 2*len(A)+len(B)
    for len(t) < maxLen {if strings.Contains(t, B) {return count}
        t += A
        count++
    }
    return -1
}

Review 文章举荐

这周的文章是一篇介绍数据库索引的中文文章:MySQL 索引背地的数据结构及算法原理。

文章从 MySQL 索引的底层数据结构讲起:介绍了 B+ 树的劣势,B 树和 B+ 树的区别,磁盘和内存在物理设计和实现上的一些原理,以及为什么 B+ 树能在磁盘这种设施上实现绝对较快的查问速度。

而后,文章应用了 MySQL 的一些数据样介绍了一些常见的索引优化形式。比方,如何充分利用最左前缀准则,为什么联结索引在应用多个范畴查问时只能最多有一个范畴查问应用到索引,为什么枯燥的值更适宜做索引等等这些问题。基本上常见的问题都会波及一点,但如果想透彻深刻的理解的话,还是须要再补充一些更置信的材料。比方能够看一下作者给出的参考文献。

当然,对于索引优化这个问题,一篇文章是很难大而全的讲完的。但这篇文章作为一个入门加上要点提醒是十分好的,很值得一读。

Tip 编程技巧

Share 灵光一闪

最近始终在「抽空」看乐队的夏天和脱口秀大会。不论是哪一个节目,如同最近这两期都有一些对于舒服区的内容。比方现场唱功始终堪忧的付菡,再比方上一季半决赛认为本人写不出更好稿子而退赛的张博洋。

维持在某个绝对「胜利」的稳固状态工夫越长,冲破这个状态就越难。如果不须要为任何任何或者事件负责的话,维持这个状态就很好。可一旦有了一些进取心也好,或者被他人寄予希望也好,再或者对本人有一些要求也好,只有呈现了这种扭转或者晋升的「需要」,就必须要尝试去被动或者被动的冲破舒服区了。

看起来曾经在某个畛域很胜利的人都不想尝试,可见走出舒服区的确很难。而且,很可能没有「最初一个」舒服区,一旦冲破了这一个,就会不得不走向下一个。

本周浏览列表

I/O Limits: block sizes, alignment and I/O hints

Why does O_DIRECT require I/O to be 512-byte aligned?

Index Merge Optimization

浅谈 Linux 内核 IO 体系之磁盘 IO

Linux 中间接 I/O 机制的介绍

为什么 CPU 拜访硬盘很慢

退出移动版