原创 《深入理解Java虛擬機》讀書筆記9--線程安全與鎖優化

線程安全 線程安全,耳熟能詳,但想準確的描述並不容易。這裏借用《Java Concurrency In Practice》作者Brian Goetz對其的一個定義:“當多個線程訪問一個對象時,如果不用考慮這些線程在運行時環境下的調度和

原创 服務監控(技術框架Flume、Kafka、Storm、Hadoop基礎)小結

主要涉及到的技術框架:flume(日誌收集及傳輸)、kafka(消息隊列)、storm(流式計算)、hadoop(離線分析),這幾項技術也是大數據方面較爲成熟和常用的技術方案。大數據是未來的一個熱點方向,涉及的技術和思想也十分豐富。本文

原创 《深入理解Java虛擬機》讀書筆記8--Java內存模型與線程

在許多情況下,讓計算機同時處理多個任務,不僅是因爲計算機的處理能力太強大,另一個重要的原因是計算機的計算速度與它的存儲和通信系統速度差距太大,大量時間被浪費在磁盤及網絡IO上 硬件效率與一致性 虛擬機在處理併發時遇到的問題與物理機有

原创 this逃逸與安全發佈

什麼是this逃逸? this逃逸是指當一個對象還沒有完成構造(構造方法尚未返回)的時候,其他線程就已經可以獲得到該對象的引用,並可以通過該引用操作該對象 this逃逸有什麼問題? 由於對象尚未完整構造,所以此時訪問到的對象尚未完全初

原创 Zuul源碼解讀

最近這段時間在使用Zuul,順便簡單閱讀了一下源碼。本文旨在對自己閱讀到的源碼做一點小結,以後日後回顧。不追求面面俱到,細緻入微,看到哪裏寫到哪裏吧關於Zuul的介紹及基本使用就不在此贅述了,網上有很多這方面的文章入口:系統啓動時處理@E

原创 《深入理解Java虛擬機》讀書筆記3--類文件結構

很遺憾,這將是很枯燥的一章,但是如果想較爲深入的理解JVM,這一章又很有必要硬着頭皮搞清楚。如果之前沒有接觸過類似的內容,那麼有很大的可能第一次基本讀不懂,如果出現這樣的情況也沒有關係,請繼續保持學習,並且隔段時間再次重新閱讀。像我這樣不

原创 怎樣配置Feign使用HttpClient

背景: 默認情況下,feign通過jdk中的HttpURLConnection向下遊服務發起http請求(詳見下圖,源碼詳見feign.Client.Default),這種情況下,由於缺乏連接池的支持,在達到一定流量的後服務肯定會出問題

原创 《深入理解Java虛擬機》讀書筆記7--運行期優化

記得在大學剛開始學習Java的時候,也許是爲了讓大家好理解,老師說Java是一門解釋執行的語言。但是現在回顧這句話,這種說法可能就不是那麼準確了 實際上,Java程序在啓動最初是通過解釋器進行解釋執行的,但是當某個方法或者代碼運行非常

原创 《深入理解Java虛擬機》讀書筆記5--字節碼執行引擎

字節碼執行引擎是Java虛擬機最核心的組成部分之一。虛擬機是相對於物理機的概念,兩者都有代碼執行能力。不同的是物理機的執行引擎直接建立在物理硬件和操作系統層面上,而虛擬機的執行引擎則有自己的指令集,可以執行不被硬件直接支持的指令Java虛

原创 《深入理解Java虛擬機》讀書筆記6--編譯期優化

說起Java語言的編譯期,它可能是指編譯器把Java源碼文件轉變爲Class字節碼文件的過程,也可能是指虛擬機在運行時把字節碼轉變爲機器代碼的過程(JIT編譯器,Just In Time Compiler)。本章我們來討論一下上面提到的

原创 CAS筆記

需求 多個應用系統需要實現登錄功能,並且賬號體系是同一套,同時爲了提升使用體驗(一次登錄,即可訪問多個相互信任的應用系統),因此需要搭建一套sso系統。sso的基本原理可以參考現實生活中的公園“通票”,一個公園中可能包含多個景區,每個景

原创 Feign接口JSON數據轉Date類型數據慢8小時問題

今天記一次錯誤排查及解決筆記 現象 最近在接口聯調中發現一個現象,前端傳入JSON格式數據,其中包含Long型時間戳,但是在調用Feign接口(有Date類型參數)的時候,發現Date類型參數總是比正確時間慢8小時 比如{"time

原创 《深入理解Java虛擬機》讀書筆記4--類加載機制

所謂類加載機制,就是虛擬機將Class文件加載到內存,對數據進行校驗、解析、初始化,然後轉化爲可被虛擬機使用的數據類型的過程與靜態連接的語言不通,Java採用動態連接方式,這種策略在運行時雖然會增加一些性能開銷,但是卻給程序提供了高度的靈

原创 《深入理解Java虛擬機》讀書筆記1--Java內存區域

《深入理解Java虛擬機》是我個人讀過的第一本關於JVM方面的書籍。十分有幸能夠讀到這本書,在此對作者表示深刻的敬意不知道有沒有人和我一樣有類似的情況,就是一本書讀完,經過一段時間之後,林林總總最後留在腦子裏的並不多,很多東西又還給了作者

原创 《深入理解Java虛擬機》讀書筆記2--垃圾收集(GC)與內存分配

垃圾收集(Garbage Collection,GC),其實主要需要完成3件事情:哪些內存需要回收?什麼時候回收?如何回收?對於程序計數器、虛擬機棧以及本地方法棧,這三塊內存區域是線程私有的,伴線程生,隨線程死,並且每一個棧幀需要的內存在