【深度剖析】MySQL B+樹索引:一次查詢的內部奧秘
大家好!今天我們來聊一個 MySQL 核心知識點:B+樹索引的查詢過程。可能你每天都在用SELECT語句查詢數據,但你想過這背後到底發生了什麼嗎?MySQL 是怎麼從成千上萬的數據中快速找到你要的那一條記錄的?帶着這個問題,我們一起揭開 MySQL B+樹索引的神秘面紗! 先説説為什麼 MySQL 選擇 B+樹? 在聊查詢過程前,我們得先明白 MySQL 為啥選 B+樹做索引結構。想象一下,如果數
昵称 異常君
贡献者239
粉丝0
大家好!今天我們來聊一個 MySQL 核心知識點:B+樹索引的查詢過程。可能你每天都在用SELECT語句查詢數據,但你想過這背後到底發生了什麼嗎?MySQL 是怎麼從成千上萬的數據中快速找到你要的那一條記錄的?帶着這個問題,我們一起揭開 MySQL B+樹索引的神秘面紗! 先説説為什麼 MySQL 選擇 B+樹? 在聊查詢過程前,我們得先明白 MySQL 為啥選 B+樹做索引結構。想象一下,如果數
昵称 異常君
你是否曾經為 MySQL 查詢性能苦惱?或者聽説過"索引下推",但不太明白它是如何工作的?今天我就和大家聊聊 MySQL 中一個強大卻常被忽視的特性 - 索引下推(Index Condition Pushdown,簡稱 ICP)。這個特性從 MySQL 5.6 版本引入,能有效提升查詢性能,減少 IO 操作,但很多開發者對它的理解還不夠深入。 索引下推是什麼? 索引下推是由 MySQL 優化器決定
昵称 異常君
在開發或生產環境中,我們有時候會上服務器器然後敲命令來部署項目。這種敲命令的方式不僅麻煩,有時候還容易出錯,此時使用一套自動化部署方案,不僅方便還不易出錯。最近發現了一款好用的自動化部署工具Jpom,體驗不輸Jenkins,分享給大家! Jpom簡介 Jpom是一款簡而輕的自動化部署工具,目前在Gitee上已有8.5k+star,它具有在線構建、自動部署、日常運維、項目監控等功能。 它能解決你日常
昵称 macrozheng
有些程序員在項目上線時,會選擇手敲命令來部署項目,這種方式一旦敲錯命令就會導致項目部署失敗。今天給大家分享一套基於Jenkins+Docker的自動化部署方案,部署齊全,能讓你少走坑路! Jenkins簡介 Jenkins是一款領先的開源自動化工具,採用Java構建,提供超過1800個插件,支持自動化幾乎所有任務,目前在Github上已有23k+Star。其目標是通過自動化重複性的工作,減少人工干
昵称 macrozheng
在之前的文章中介紹過《使用Jenkins一鍵打包部署SpringBoot項目》,其實Jenkins也可以用來打包部署前端項目。今天就以mall電商實戰項目的前端為例,來講解下如何使用Jenkins一鍵打包部署前端項目。 學習準備 學習本文需要有一定的Jenkins基礎,比如瞭解Jenkins的安裝和基本使用,這些內容可以參考這篇文章: 《Jenkins+Docker一鍵部署SpringBoot項目
昵称 macrozheng
本文首發於公眾號:Hunter後端 原文鏈接:Golang基礎筆記十六之反射 反射可以用於程序在運行時檢查、修改自身類型和值,主要通過 reflect 包實現。 首先,我們提出一個需求,要打印出一個結構體 struct 的各個字段及其對應的標籤數據,按照當前的筆記內容是無法解決該問題的,但是我們可以使用反射操作來完成。 以下是本篇筆記目錄: 變量的類型和值 修改變量的值 遍歷結構體
昵称 XHunter
很多初級甚至中級開發會濫用atomic,因為在他們的世界觀裏atomic比mutex輕量,性能總是優於鎖的。 這話不能算錯,但有個很重要的前提,那就是原子操作競爭不激烈的時候。 “競爭激烈”是指什麼呢,指的是有很多線程在同一個資源上大量執行原子操作的情況。 落在這種情況下原子操作反而會成為性能拖油瓶。我們來看一個經典的原子計數器: func AddAtomic() uint64 { var co
昵称 apocelipes
本文首發於公眾號:Hunter後端 原文鏈接:Golang筆記之Redis 這一篇筆記主要介紹 Golang 連接和使用 Redis,以下是本篇筆記目錄: 目錄 1、安裝模塊 2、連接 Redis 3、字符串 1. 字符串寫入 2. 字符串讀取 4、哈希 1. 寫入 1) 單字段寫入
昵称 XHunter
最近公司裏的新人問了我一個問題:這段代碼是啥意思。這個問題很普通也很常見,我還是個新人的時候也經常問,當然,現在我不是新人了但我也經常發出類似的提問。 代碼是長這樣的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string FieldB *int64 ... }
昵称 apocelipes
大家好,我是 Java陳序員。 在開發中,常常需要進行 API 調試,可以藉助 Postman 或者 curl 命令完成工作。但是 Postman 需要安裝,而 curl 命令參數又很複雜,不易操作。 今天給大家推薦一款極簡到極致的網頁版 API 調試神器,可替代 Postman! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹
昵称 codechen8848
引言:從Gin的Context池化,揭開sync.Pool的神秘面紗 在編寫高性能的Go Web服務時,我們總是追求極致的效率。但在高併發場景下,頻繁的對象創建和銷燬是隱藏在背後的性能殺手。 在《Gin 框架核心架構解析》中,我們提到Gin會為每個HTTP請求分配一個Context對象。當你的服務每秒處理數千甚至上萬個請求時,這意味着海量的Context對象被創建,給Go的垃圾回收(GC)機制帶來
昵称 木章永
大家好,我是 Java陳序員。 你是否會有這樣的困擾:手裏存款越來越多,反而成了甜蜜的負擔? 看着銀行卡里不斷上漲的數字,卻總説不清每筆錢的來龍去脈;想給資金做個分類管理,卻被各種理財 APP 的複雜界面勸退;更擔心把財務數據存在第三方平台,哪天就成了“透明人”~ 今天,給大家介紹一款開源自託管的個人記賬工具,輕量又安全! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超
昵称 codechen8848
package _case import ( "fmt" "strconv" "time" "unsafe" ) // ConvertCase 類型轉換 func ConvertCase() { // 同類型轉換 數字和數字 字符串和字符和字節 // 不同類型轉換 數字和字符串 // 接口類型轉其他類型 // 數字類型轉換 var num1 int = 100 fmt.Pr
昵称 風動隨心
目前golang 1.26的各種新特性還在開發中,不過其中一個在開發完成之前就已經被官方拿到枱面上進行宣傳了——內置函數new功能擴展。 每個新特性其實都有它的背景故事,沒有需求的驅動也就不會有新特性的誕生。所以在介紹這個新特性之前我們先來了解下是什麼樣的場景催生了這個功能。 如果你經常瀏覽一些大型的go項目,尤其是那些需要頻繁和JSON、GRPC或者yaml打交道的項目,比如k8s,你會發現這些
昵称 apocelipes
一、靜態代碼分析 靜態代碼分析是一種在不執行和運行程序的情況下檢查源代碼的方法。通過這種方法,自動化工具會掃描代碼查找潛在的問題,如bug、安全漏洞或與編碼標準的偏離。靜態代碼分析可以在執行或合併到main分支之前檢查源代碼中的問題。 動態代碼分析是在代碼被執行時,識別運行時的問題,例如性能瓶頸、內存泄露和邏輯缺陷。它輸出的內容是程序的實際運行時行為,包括日誌、跟蹤和性能指標。它在實際或
昵称 筱倩
Golang相關測試框架 在 Go 語言裏,最常用的測試框架有:自帶的 testing 包、GoConvey 和 testify。 1、Go自帶的testing包 testing包是官方內置的,無需額外安裝,也是大多數項目的首選。 (1)單元測試 測試文件必須以 _test.go 結尾,例如:calc_test.go 測試函數必須以 Test 開頭(推薦寫成 T
昵称 筱倩
Go語言代碼覆蓋率實現 一、什麼是代碼覆蓋率 代碼覆蓋率是軟件測試中的一種白盒測試度量指標,表示程序源代碼中被執行的比例。簡單來説,就是“我的測試到底跑過多少代碼”。 覆蓋率常見的幾種標準: 語句覆蓋(段覆蓋、基本塊覆蓋):每一行代碼是否至少執行過一次 分支覆蓋:程序中的每個判斷(if/else)是否都執行過true和false兩種結果 條件覆蓋:判斷語句中的每個子條件是否都覆蓋到tr
昵称 筱倩
大家好,我是 Java陳序員。 想必大家都用過百度文庫,常常因為沒有會員而不能複製或者下載文檔而被勸退,但是又不得不用。 今天,給大家介紹一個可以平替百度文庫的文檔管理系統,免費開源! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 DocHub 使用 Go 語言的 Beego 框架開發實現的類百度文庫解決方案,支持 Offic
昵称 codechen8848
作者:張富春(ahfuzhang),轉載時請註明作者和引用鏈接,謝謝! cnblogs博客 zhihu Github 公眾號:一本正經的瞎扯 以最經典的計算 qps 的曲線為例,vmselect 內部是如何計算的? 1 grafana 通過 query_range 接口發起請求 通常會在 grafana 中配置一個 line chart,然後使用以下的 promql 表達
昵称 ahfuzhang
大家好,我是 Java陳序員。 在 IT 團隊協作中,接口文檔散亂、版本混亂、權限管理複雜等問題常常困擾着 IT 從業者。 今天,為大家推薦一款簡單好用的文檔管理系統,尤其適合 IT 中小團隊高效管理各類文檔! 關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。 項目介紹 MinDoc —— 一款針對 IT 團隊開發的文檔管理系統,基於 Go
昵称 codechen8848
最近在做老系統優化,正好遇到了需要使用字符串內部化的場景,所以今天就來説説字符串內部化這種優化技巧。 什麼是字符串內部化 熟悉Java或者python的開發者應該對“內部化”這種技術不陌生。內部化指的是對於內容完全相同的字符串變量,內存中只保留一份數據,所有的變量都引用同一份數據,從而節約內存。 舉個Java的例子: public class StringInternDemo { publ
昵称 apocelipes
寫在前面 無論博客還是公號,我都很久不寫東西了,去年、今年兩年發生了太多的事,我沒法梳理,也不想梳理了,本能的想着用時間來沖淡一切的一切,但是現實就是無法如願。 自然文章、博客也就停滯了,相應的閲讀量和粉絲也嚴重下滑了,也在學着接受了現實的一切,更多的是和自己和解的過程吧。 為什麼寫這篇文章 可能是靈感來了吧, 説實話,這篇文章應該產出在好幾個月之前的吧,現在的我看來只能算是餘温尚存吧,也許再過
昵称 久曲健