原创 Java 多線程 : JUC 併發工具原理

Java 多線程 : JUC 併發工具原理 首先分享之前的所有文章 , 歡迎點贊收藏轉發三連下次一定 >>>> 😜😜😜 文章合集 : 🎁 juejin.cn/post/694164… Github : 👉 github.com/b

原创 zip文件操作導致JVM crash

1. 概況     程序運行操作系統: CentOS6.5 64bit     JDK版本:7 2. 測試 2.1 準備測試程序 測試程序很簡單,就一個類一個main函數,大概流程:     先從參數中讀取 獲取zip文件的時間間隔

原创 零拷貝(mmap+write、sendfile)

傳統讀操作 JAVA用傳統方式進行讀操作時,整體流程如上圖,具體如下: 1、應用程序發起讀數據操作,JVM會發起read()系統調用。 2、這時操作系統OS會進行   一次上下文切換(把用戶空間切換到內核空間) 3

原创 Mysql中,21個寫SQL的好習慣,你值得擁有呀

前言 每一個好習慣都是一筆財富,本文分SQL後悔藥, SQL性能優化,SQL規範優雅三個方向,分享寫SQL的21個好習慣,謝謝閱讀,加油哈~ github地址,感謝每顆star github.com/whx123/Java… 公衆

原创 MySQL索引底層:B+樹詳解

前言 當我們發現SQL執行很慢的時候,自然而然想到的就是加索引。對於範圍查詢,索引的底層結構就是B+樹。今天我們一起來學習一下B+樹哈~ 公衆號:撿田螺的小男孩 樹簡介、樹種類 B-樹、B+樹簡介 B+樹插入 B+樹查

原创 實戰!聊聊如何解決MySQL深分頁問題

前言 大家好,我是撿田螺的小男孩。 我們日常做分頁需求時,一般會用limit實現,但是當偏移量特別大的時候,查詢效率就變得低下。本文將分4個方案,討論如何優化MySQL百萬數據的深分頁問題,並附上最近優化生產慢SQL的實戰案例。

原创 基於GitHub的敏捷學習方法之道與術

持續行動,持續反思,持續進步。—— via. 敏捷學習宣言 前言 對時間的敬畏 需要好多年才能懂得,最好不是去震驚世界,而是要像易卜生所說的,生活在世界上。 我們都一樣,渴望着建樹功勳、改變世界。可是伴隨着年歲的增長,卻發現夢想

原创 實戰!日誌打印的15個好建議

前言 大家好,我是撿田螺的小男孩。日誌是快速定位問題的好幫手,是撕逼和甩鍋的利器!打印好日誌非常重要。今天我們來聊聊日誌打印的15個好建議~ 公衆號:撿田螺的小男孩 1. 選擇恰當的日誌級別 常見的日誌級別有5種,分別是erro

原创 隔離級別、幻讀、Gap Lock、Next-Key Lock

前面我寫了很多Mysql相關的知識點,到這一篇稍微可以串一下了,從SQL執行流程、MVCC到鎖,很多時候可能覺得對於間隙鎖和Next-Key Lock好像已經理解了,但是好像又覺得理解差那麼一點意思,這篇文章從頭來梳理一下概念,明確一下這

原创 CMS低延遲垃圾收集器詳解

  ​​ 因爲熱愛所以堅持,因爲熱愛所以等待。熬過漫長無戲可演的日子,終於換來了人生的春天,共勉!!! 1.CMS概述 ①. 在JDK1.5時期, HotSpot推出了一款在強交互應用中幾乎可認爲有劃時代意義的垃圾收集器: CMS (C

原创 MySQL日誌15連問

前言 大家好,我是撿田螺的小男孩。金九銀十已經來了,整理了15道經典MySQL日誌面試題,希望對大家有幫助。 公衆號: 撿田螺的小男孩 1. redo log是什麼? 爲什麼需要redo log? redo log 是什麼呢?

原创 PostgreSQL的數據變化捕獲和實時通知——基於Listen-Notify和Server-Sent Events

有這樣一個需求:監聽某個PostgreSQL的業務數據庫,當特定表中的數據發生變化時,實時通知用戶。 數據庫→後端 方案1:輪詢 監聽數據表,最容易想到、實現最簡單的,就是輪詢。 但是,考慮到實時性,高頻率的輪詢必然會對數據庫造成一定壓

原创 Redis只能做緩存?太out了!

Redis只能做緩存?太out了! 大多數數據庫,由於經常和磁盤打交道,在高併發場景下,響應會非常的慢。爲了解決這種速度差異,大多數系統都習慣性的加入一個緩存層,來加速數據的讀取。redis由於它優秀的處理能力和豐富的數據結構,已經成

原创 Spring Boot 單元測試實踐(二)

Spring Boot 單元測試實踐(二) 前言 在前文《Spring Boot 單元測試實踐》中講了在單元測試中外部依賴需要進行 Mock,從而保證測試用例的 R(可重複的) 原則。 那麼如何對依賴 MySQL,Redis、MQ

原创 聊聊redo log是什麼?

-聊聊redo log是什麼? 前言 說到MySQL,有兩塊日誌一定繞不開,一個是InnoDB存儲引擎的redo log(重做日誌),另一個是MySQL Servce層的 binlog(歸檔日誌)。 只要是數據更新操作,就一定會