原创 Tomcat服務器處理一個http請求的過程

Tomcat容器就是一個Servlet,理解Servlet的運行過程。 假設來自客戶的請求爲: http://localhost:8080/test/index.jsp (1)請求被髮送到本機端口8080,被在那裏監聽的Co

原创 Servlet的生命週期(重點)

有關servlet的類有Servlet,HttpServlet以及GenericServlet. 其實我們要寫一個Servlet只要寫一個類去實現Servlet就可以了,但是,Servlet裏面有很多的方法,我們沒有必要每次爲了

原创 Spring(2)--使用Spring容器

Spring有兩個核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它們都可代表Spring容器,Spring是生成Bean實例的工廠

原创 TCP的可靠性傳輸

TCP協議作爲一個可靠的面向流的協議,其可靠性和流量控制由滑動窗口協議保證,而擁塞控制則由控制窗口結合一系列的控制算法實現, 一、滑動窗口協議 所謂滑動窗口協議,理解的有兩點:1、窗口對應的是一段被髮送者發送的字節序列,其連續的範

原创 多線程系列提高(4)--同步容器類

一、同步容器類 同步容器類包括Vector和HashTable,此外還包括在JDK1.2中添加的一些功能相似的類,這些同步的封裝器類是由Collections.synchronizedXxx等工廠方法創建的。這些類實現線程安全的方

原创 Spring(1)--依賴注入IoC

依賴:A對象需要調用B對象,被Spring稱爲依賴,即A對象依賴B對象。 在平常的Java開發中,Java實例的調用者創建被調用的Java實例,調用者直接使用new關鍵字創建被依賴對象,程序高度耦合,效率低下。而在Spring框架

原创 Spring(4)--對AOP的理解

什麼是AOP? AOP,也就是面向切面編程。傳統的學Java就是面向對象編程(OOP),而OOP是從靜態解讀考慮程序結構,但AOP是從動態角度考慮程序運行過程。也可以說AOP是OOP的補充和完善。OOP引入了封裝、繼承和多態性等

原创 多線程系列提高(2)--線程安全性

如果當多個線程訪問同一個可變的狀態變量時沒有使用合適的同步,那麼程序就會出現錯誤。有三種方式可以修復這個問題: (1)不在線程之間共享該狀態變量 (2)將狀態變量修改爲不可變的變量 (3)在訪問狀態變量時使用同步 注意:完全

原创 二叉查找樹--紅黑樹

一、紅黑樹的性質 紅黑樹是一棵二叉查找樹,它在每個結點上增加了一個存儲位來表示結點的顏色,可以是RED或BLACK。通過對任何一條從根到葉子的簡單路徑上各個結點的顏色進行約束,紅黑樹確保沒有一條路徑會比其他路徑長出2倍,因而是近乎

原创 Mina工作原理分析

Mina是Apache社區維護的一個開源的高性能IO框架,在業界內久經考驗,廣爲使用。Mina與後來興起的高性能IO新貴Netty一樣,都是韓國人Trustin Lee的大作。二者的設計理念是極爲相似的。在作爲一個強大的開發工具的

原创 多線程系列提高(3)--對象的共享

一、可見性 在單線程環境中,如果向某個變量先寫入值,然後在沒有其他寫入操作的情況下讀取這個變量,那麼總能得到相同的值。然而,當讀操作和寫操作在不同的線程中執行時,就是另外一種情況。我們無法確保執行讀操作的線程能夠適時的看到其他線程

原创 二叉查找樹(查詢、插入、遍歷、刪除)--Java實現

搜索樹數據結構支持許多動態集合操作,包括search、insert、delete、maximum、minimum等。因此,我們使用一棵搜索樹既可以作爲一個字典又可以作爲一個優先隊列。 二叉搜索樹上的基本操作所花費的時間與這棵樹的

原创 統計字符串

問題描述:統計字符串中字符的個數 如輸入:aaaabbbccssaa 則輸出:a4b3c2s2a2 思路: (1)如果字符串爲空,那麼統計的字符串就不存在 (2)如果字符串不爲空,首先有字符串res,表示統計字符串,還有整

原创 多線程系列提高(5)--幾種重要的併發容器類

一、ConcurrentHashMap 與hashMap一樣,ConcurrentHashMap也是一個基於散列的Map,但它使用了一種完全不同的加鎖策略來提高併發性和伸縮性。ConcurrentHashMap並不是將每個方法都在

原创 Spring(3)--Spring容器中的Bean

Spring框架的本質:通過XML配置來驅動Java代碼,這樣就可以把原本由Java代碼管理的耦合關係,提取到XML配置文件中管理,這就實現了系統中各組件的解耦,有利於後期的升級和維護。 對於開發者來說,開發者使用Spring框架