ARTS 第13周 |LeetCode 686 Repeated String Match |MySQL 索引原理 | 溫馨區

ARTS

ARTS 是陳浩(網名左耳朵耗子)在極客時間專欄裏發起的一個活動,目的是經過分享的方式來堅持學習。html

每人每週寫一個 ARTS:Algorithm 是一道算法題,Review 是讀一篇英文文章,Technique/Tips 是分享一個小技術,Share 是分享一個觀點。

本週內容

  1. 谷歌也考的 Easy 算法題
  2. 從 B+ 樹原理到實踐瞭解 MySQL 索引
  3. 每一個人都走在逃離溫馨區的路上

Algorithm

本週的題目比較簡單:LeetCode 686. Repeated String Match.mysql

惟一的小困難在於要搞清楚若是 A 能夠經過重複本身的方式包含 B 的話,最長鬚要「重複」到多長的字符串,而後直接用標準庫的字符串查找就能夠了。linux

本身實現字符串查找算法,不是本題的考點。算法

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索引背後的數據結構及算法原理sql

文章從 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 訪問硬盤很慢

相關文章
相關標籤/搜索