作者:小傅哥
博客:https://bugstack.cn - 匯總系列原創專題文章
沉淀、分享、成長,讓自己和他人都能有所收獲!😄
讓人怪不好意思的,說是出書有點膨脹💥,畢竟這不是走出版社的流程,選題、組稿、編著、審讀、加工到出版發行。
但全書共計107頁,11萬7千字,20個章節涵蓋三個字節碼框架和JavaAgent使用並附帶整套案例源碼!
講道理,市面上以及網絡搜索中都基本很少有成體系的關於字節碼編程的知識,這主要由於大部分開發人員其實很少接觸這部分內容,包括;ASM
、Javassist
、Byte-buddy
以及JavaAgent
,沒有很大的市場也就沒有很多的資料。但大家其實已經從其他的框架或者中間件中使用到,就像你用到的;Cglib、混沌工程、非入侵的全鏈路監控以及你是否使用過jetbrains-agent.jar
做了某項實驗?
所以這樣的技術棧一直都縈繞在你身邊,只是你還沒有發現!當有一天面試問到了,那時你已經170斤工作五年。
蹭個車告訴你這個知識的重要性,阿里雲的挑戰賽!
讀不在三更五鼓,功只怕一曝十寒!
,不一定一本書中就能讀出個黃金屋,但腳下路的用什么墊都是自己日積月累。
就這本書他出爐了
介紹
初識字節碼編程是從使用非入侵的全鏈路監控開始,在這之前我所了解的如果需要監控系統的運行狀況,通常需要硬編碼埋點或者AOP的方式采集方法執行信息;耗時、異常、出入參等來監控一個系統的運行健康度。而這樣的監控方式在大量的系統中去改造非常耗時且不好維護,更不要說去監控一個業務流程的調用鏈路。
在2010年的時候,谷歌發布一篇名為《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》的論文,在文中介紹了谷歌生產環境中大規模分布式系統下的跟蹤系統Dapper
的設計和使用經驗。
這樣的監控系統采用 Javaagent
與字節碼操作框架結合使用,在應用系統加載時對需要監控的方法進行字節碼增強也叫插樁。對方法處理后的結果就和你之前硬編碼類似,但這樣就可以減輕認為操作,同時可以對多個系統之間定義調用鏈路ID進行串聯業務流程關系。最終,極大減輕了監控成本也提高了線上問題的快速定位和處理。
這里面監控系統核心知識也主要是 Javaagent
和字節碼操作,在字節碼操作中目前有三個比較常用的框架;ASM
、Javassist
、Byte Buddy
,這幾個框架都能進行字節碼操作,其中ASM
更偏向於底層,需要了解字節碼指令以及操作數棧等知識,最好學習過《Java虛擬機規范》等書籍,另外兩個框架是對 ASM
的封裝,提供更加高級的API去操作字節碼。
在本書中小傅哥
會分別講解這三種字節碼框架的使用,以及最終與Javagent
結合完成全鏈路監控的案例。通過這樣的學習讓你可以從有抓手的從案例開始,把枯燥的字節碼編程融入場景,深化理解和實操應用。也能讓你忙於CRUD開發的同時提升自己的知識棧,拓展技術視野。也許不久以后這項技術也能為你帶來一些有價值的收獲!
作者
作者小傅哥多年從事一線互聯網 Java 開發,熱衷於對學習歷程做技術匯總,側重點更傾向編寫 Java 核心內容。旨在為大家提供一個清晰詳細的學習教程也幫助自己不斷沉淀。所以投入時間學習、整理、編寫相關的資料,如果我的文章或書籍能為您提供幫助,請給予支持(關注、點贊、分享)!
如何支持:
- 關注公眾號:
bugstack蟲洞棧
- 收藏我博客:
bugstack.cn
- 分享給您身邊的小伙伴
- 還可以給我開源的項目點個星星🦍 「
CodeGuide | 程序員編碼指南
」-https://github.com/fuzhengwei/CodeGuide/wiki
如果這些都做了!記得加我微信(fustack)
,交個朋友!
下載
內容包括;
- 小傅哥的
《字節碼編程》
- 一整套書中對應的源碼
下載方式;
- 打開外鏈分享鏈接下載書籍: http://book.bugstack.cn/#s/51Es_z_Q
- 書中的源碼部分在公眾號:
bugstack蟲洞棧
,回復源碼下載
即可獲取 - 如果鏈接失效關注公眾號:
bugstack蟲洞棧
,回復PDF,獲取新的鏈接下載 - 添加作者微信(fustack)獲取書籍和源碼,也方便做相關技術交流
- 公眾號用戶,直接點擊下方閱讀原文下載
由於網絡兼容直接在線閱讀可能有字體錯位問題,請下載閱讀,體驗更好!
收個尾
頭一次把系列文章寫成書,雖然免費發布,但也可能在獲取書籍下載以及學習過程中發現我寫錯字以及寫錯某個名稱想噴我
🤮,如果你有此沖動!請添加小傅哥微信(公眾號:bugstack蟲洞棧獲取
),我會用我的技術魅力和爆炸人品感化你,並修改我的書籍內容,📝記錄你的功績到:https://github.com/fuzhengwei/CodeGuide/wiki
如果你在閱讀本書的過程中有些地方不是很容易理解,不要擔心一定作者沒有描述的更加清楚。很多知識或者系統建設並不難,只是有時候被描述的麻煩了。所以我也非常願意與你一起去學習這部分知識,在討論中不斷把問題梳理的更加清晰,用更易懂的方式剖析問題的本質。
最后,希望同好編程開發的你不只是CRUD的工具人,多多拓展技術棧夯實基本功。共勉!加油!
彩蛋
CodeGuide | 程序員編碼指南 Go!
本代碼庫是作者小傅哥多年從事一線互聯網 Java 開發的學習歷程技術匯總,旨在為大家提供一個清晰詳細的學習教程,側重點更傾向編寫Java核心內容。如果本倉庫能為您提供幫助,請給予支持(關注、點贊、分享)!