原创 深入理解java虛擬機 -- java虛擬機內存結構(1)

目錄 學習目標: JVM的作用: java代碼編譯執行過程 1、程序計數器(Program Counter Register): 2、虛擬機棧(JVM Stack): 3、本地方法棧(Native Method Statck): 4、堆

原创 深入理解java虛擬機 -- 如何下載hotspot、jdk源碼

目錄     爲什麼要學習jvm 如何下載jdk源碼、hotspot源碼 Hotspot的目錄結構    爲什麼要學習jvm 學習JVM對於一個Java程序員的好處大概可以概括爲下8點: 瞭解java的發展歷程,以及計算機語言的歷史發

原创 Tomcat 9 源碼解析 -- 請求如何經過tomcat到達servlet

目錄 請求如何到達Tomcat 在進入容器 後如何執行的 類中的執行流程 四個主要容器的執行流程 前面幾篇文章講解了Tomcat如何啓動的,如何通過NIO,開啓一個ServerSocket服務監聽。 最後用戶通過瀏覽器就可以直接訪問到想要

原创 Tomcat 9 源碼解析 -- 與SpringMvc如何結合在一起

   Tomcat啓動項目的方式下,如何加載SpringMvc 中的 DispatcherServlet   SpringBootServletInitializer類 public abstract class SpringBootS

原创 Tomcat 9 源碼解析 -- tomcat框架設計(源碼層次解析)

Tomcat 9 源碼解析 -- tomcat框架設計 前文已經從架構層次講解了tomcat框架設計,以及tomcat使用,以及每個模塊的作用,以及各功能模塊之間的關係。 下面是Tomcat 9 架構的一個啓用的架構流程圖:    

原创 Tomcat 9 源碼解析 -- tomcat框架設計

Tomcat整體架構與重要組件 1.Tomcat整體架構 如果你瀏覽過Tomcat源碼相關文章,你一定對此圖不陌生. Tomcat即是一個HTTP服務器,也是一個servlet容器,主要目的就是包裝servlet,並對請求響應相應的se

原创 Tomcat 9 源碼解析 -- 環境搭建

前言 爲什麼要學習tomcat源碼? 以我個人來說,爲什麼我要學習tomcat源碼,之前我看過一本書《tomcat源碼解析》,講的十分詳細,但是那個是以tomcat 7 爲基礎進行講解的。 看到tomcat 7 --》 tomcat 9

原创 Tomcat 9 源碼解析 -- Connector組件(2)

  Tomcat 9 源碼解析 -- Connector組件 上文中已經分析到了processKey()方法。 Poller #run()   在run方法最後調用了   processKey(sk, attachment); // 處

原创 Tomcat 9 源碼解析 -- Connector組件

<Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"

原创 Tomcat 9 源碼解析 -- StandardContext

  StandardContext 類介紹   StandardContext 和其他 Container 一樣,也是重寫了 startInternal 方法。由於涉及到 webapp 的啓動流程,需要很多準備工作,比如使用 WebRes

原创 Tomcat 9 源碼解析 -- ServletContainerInitializer

最近一直在死磕Tomcat 9 的源碼,在此寫下一些自己的學習心得,大家可以一起學習,互相討論。 本文主要是關於 Tomcat中 ServletContainerInitializer 初始化的部分。 先看一張截圖: 1. 左側爲方法調用

原创 Maven項目中使用tomcat啓動

最近學習Tomcat源碼,平時新建maven項目的時候,使用springboot內嵌tomcat啓動,現在需要使用外部tomcat啓動,以便於學習tomcat和spring代碼之間的執行關係。 添加完外部tomcat後突然發現無法將 ma

原创 java SPI 機制 在Tomcat,spring-mvc啓動及servlet3.0中的應用

    寫本篇博客原由:    最近本人在學習Tomcat源碼,在研讀StandardContext的時候,其中有一個關鍵類ContextConfig,也就是下面代碼: processServletContainerInitializer