極客時間出品的《Java效能調優實戰》由劉超所作,劉超是金山軟體西山居技術經理,本門課覆蓋80%以上Java應用調優場景。
訂閱形式
用我的邀請購買,還會額外返現12元。購買連結:http://gk.link/a/103FE 也可以掃描頁面最下方海報圖中的二維碼購買。
購買的朋友請加我微訊號 dismissmewp ,備註:返現。
已有2825人購買,限時 ¥68
原價 ¥99該專欄以音訊和文字形式進行,共43講 。可在極客時間APP/小程式/網站上觀看。
專欄簡介
你好,我是劉超,目前在金山西山居擔任技術經理,很高興通過這個專欄,跟你一起討論 Java 效能調優這個話題。
先給你講個故事吧。多年前我加入了一家大型網際網路公司,剛進入就以 996 標準,參與新品研發。公司業務發展急需網際網路產品,因此我們的時間很緊張,4 個月新產品就上線了。
開始還算順利,但不久後的一天晚上,系統突然就癱瘓了,重啟之後,問題仍然無規律地重現。當時運維同事馬上寫了一個重啟指令碼,定時排隊重啟各個服務,但也只能做到“治標不治本”。
作為主力開發,我和公司的系統架構師一起排查問題。架構師輕車熟路地通過各種 Linux 命令線上上環境檢視效能指標,也 dump 出日誌檔案,走查程式碼,最後定位到了問題,後面就是分析原因、制定解決方案、更新版本等一系列操作。那是我第一次深刻感受到效能調優的重要性。
後來的幾年裡,我又陸續參與過物流、電商、遊戲支付系統的研發,這些專案都存在一個共性,就是經常會運營一些大促以及搶購類活動。活動期間,系統不僅要保證處理請求業務的嚴謹性,還要歷經短時間內高併發的考驗。我也一直處於效能調優的一線。
正所謂“實踐出真知“。這些年在生產環境中遇到的事故不少,很多坑一點點踩平,就走出了一條路,這個過程中我收穫了很多實打實的經驗,希望能分享給更多的人,我們一起學習、交流和探討。
關於效能調優,我先來說說的我的感受。Java 效能調優不像是學一門程式語言,無法通過直線式的思維來掌握和應用,它對於工程師的技術廣度和深度都有著較高的要求。
網際網路時代,一個簡單的系統就囊括了應用程式、資料庫、容器、作業系統、網路等技術,線上一旦出現效能問題,就可能要你協調多方面元件去進行優化,這就是技術廣度;而很多效能問題呢,又隱藏得很深,可能因為一個小小的程式碼,也可能因為執行緒池的型別選擇錯誤…可歸根結底考驗的還是我們對這項技術的瞭解程度,這就是技術深度。
顯然,效能調優不是一件容易的事。但有沒有什麼方法能把這件事情做好呢?接下來跟你分享幾點我的心得。
Java效能調優實戰專欄作者
劉超,現任金山軟體西山居(國內最早的遊戲開發工作室)技術經理,主導遊戲支付系統的研發工作,2018 年開始帶領技術團隊轉型微服務架構。曾就職於魅族、平安銀行等公司,負責過電商、物流、支付系統的搭建工作,主攻後端架構研發,在高併發業務系統方面,具有豐富的實戰經驗。
在他看來,Java 效能調優和學一門程式語言不同,前者無法通過直線式的思維來掌握和應用。他認為,紮實的計算機基礎,透過原始碼看技術本質的良好習慣,善於追問和總結才是做好效能調優的大前提。
因此,在這個專欄裡,他將結合自己多年的從業經驗,從 Java 應用服務的每一層優化實戰出發,精選高頻效能問題,透過 Java 底層原始碼,提煉出優化思路和它背後的實現原理,最後形成一套“學完就能用的調優方法論”,幫助你快速進階。
《Java效能調優實戰》專欄模組
專欄共 43 期,分為七大模組。
模組一,概述。這個模組將為你建立兩個標準。一個是效能調優標準,另一個是調優過程標準,為效能調優實戰做好準備。
模組二,Java 程式設計效能調優。這個模組將從基礎的資料型別講起,涉及容器在實際應用場景中的調優,還有現在網際網路系統架構中比較重要的網路通訊調優。
模組三,多執行緒效能調優。如何做鎖優化?如何優化多執行緒上下文切換?如何用協程來優化多執行緒業務?這些問題都會在這個模組重點講解。
模組四,JVM 效能監測及調優。Java 應用程式是執行在 JVM 之上的,對 JVM 進行調優可以提升系統效能。這個模組將重點講解 Java 物件的建立和回收、記憶體分配等問題。
模組五,設計模式調優。設計模式可以優化架構設計,這個模組將結合一些複雜的應用場景,解析設計優化案例。
模組六,資料庫效能調優。資料庫最容易成為整個系統的效能瓶頸,這個模組會重點解析一些資料庫的常用調優方法。
模組七,實戰演練場。這個模組將帶你進入綜合效能問題高頻出現的應用場景,綜合應用前面六大模組的內容,學習整體調優方法。
《Java效能調優實戰》專欄詳細目錄
《Java效能調優實戰》課程目錄
開篇詞丨怎樣才能做好效能調優?
模組一 •概述
如何制定效能調優標準?
如何制定效能調優策略?
模組二• Java程式設計效能調優
字串效能優化不容小覷,百M記憶體輕鬆儲存幾十G資料
慎重使用正規表示式
AtrayList還是LinkList?使用不當效能差千倍
Stream如何提高遍歷集合效率?
深入淺出HashMap的設計與優化
網路通訊優化之I/O模型:如何解決高併發下I/O瓶頸?
網路通訊優化之序列化:避免使用Java序列化
網路通訊優化之通訊協議:如何優化RPC網路通訊?
答疑課堂
模組三•多執行緒效能調優
多執行緒之鎖優化(上):深入瞭解同步鎖的優化方法
多執行緒之鎖優化(下):使用樂觀鎖優化並行操作
多執行緒調優(上):哪些操作導致了上下文切換?
多執行緒調優(下):如何優化多執行緒上下文切換?
併發容器的使用:識別不同場景下最優容器
如何設定執行緒池大小?
如何用協程來優化多執行緒業務?
答疑課堂
模組四• JVM效能監測及調優
深入JVM即時編譯器JIT,優化Java編譯
磨刀不誤砍柴工:欲知JVM調優先了解JVM
如何優化垃圾回收機制?
如何優化JVM記憶體分配?
記憶體持續上升,我該如何排查問題?
答疑課堂
模組五•設計模式調優
單例模式:如何建立單一物件優化系統效能?
原型設計與享元模式:提升系統效能的利器
如何使用設計模式優化併發程式設計?
生產者消費者模式:電商庫存設計優化
裝飾器模式:如何優化電商系統中複雜的商品價格策略?
答疑課堂
模組六•資料庫效能調優
MySQL調優之SQL語句:如何寫出高效能SQL語句?
MySQL調優之事務:高併發場景下的資料庠事務調優
MySQL調優之索引:索弓|的失效與優化
記一次線上SQL死鎖事故:讀寫分離的必要性
什麼時候需要分表分庫?
電商系統表設計優化案例分析
資料庫引數設定優化,失之毫釐差之千里
答疑課堂
模組七•實戰演練場
如何設計更優的分散式鎖?
電商系統的分散式事務調優
如何使用快取優化系統效能?
記一次雙十一搶購效能瓶頸調優
結束語 學做自己的伯樂
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***