原创 ClassPool介紹

1、簡介 ClassPool是緩存CtClass對象的容器,所有的CtClass對象都在ClassPool中。所以,CtClass對象很多時,ClassPool會消耗很大的內存,爲了避免內存的消耗,創建ClassPool對象時可以使用

原创 AQS源碼分析(超時、中斷與其他)

中斷 JAVA中並沒有好的中斷線程的方式,早期引入的Thead.stop()和Thread.resume()容易導致死鎖(參考:http://docs.oracle.com/javase/6/docs/technotes/guides/

原创 AQS源碼分析(共享與互斥)

共享模式與獨佔模式 AQL的內部隊列採用的是CLH隊列鎖模型,CLH隊列是由一個一個結點(Node)構成的。Node類中有兩個常量SHARE和EXCLUSIVE,顧名思義這兩個常量用於表示這個結點支持共享模式還是獨佔模式,共享模式指的是

原创 抽象工廠模式和工廠方法模式區別

首先來看看這兩者的定義區別: 工廠模式:定義一個用於創建對象的藉口,讓子類決定實例化哪一個類 抽象工廠模式:爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類        個人覺得這個區別在於產品,如果產品單一,最合適

原创 synchronized關鍵字

監視器 java中同步是通過監視器模型來實現的,JAVA中的監視器實際是一個代碼塊,這段代碼塊同一時刻只允許被一個線程執行。線程要想執行這段代碼塊的唯一方式是獲得監視器。 監視器有兩種同步方式:互斥與協作。多線程環境下線程之間如果需要

原创 Trie樹

一:概念      下面我們有and,as,at,cn,com這些關鍵詞,那麼如何構建trie樹呢? 從上面的圖中,我們或多或少的可以發現一些好玩的特性。       第一:根節點不包含字符,除根節點外的每一個子節點都包含一個

原创 JAVA CAS原理深度分析

java.util.concurrent包完全建立在CAS之上的,沒有CAS就不會有此包。可見CAS的重要性。   CAS CAS:Compare and Swap, 翻譯成比較並交換。  java.util.concurrent包中藉助

原创 自旋鎖、排隊自旋鎖、MCS鎖、CLH鎖

自旋鎖(Spin lock) 自旋鎖是指當一個線程嘗試獲取某個鎖時,如果該鎖已被其他線程佔用,就一直循環檢測鎖是否被釋放,而不是進入線程掛起或睡眠狀態。 自旋鎖適用於鎖保護的臨界區很小的情況,臨界區很小的話,鎖佔用的時間就很短。

原创 AQS源碼分析(獲取與釋放)

同步狀態 AQS採用的是CLH隊列,CLH隊列是由一個一個結點構成的,前面提到結點中有一個狀態位,這個狀態位與線程狀態密切相關,這個狀態位(waitStatus)是一個32位的整型常量,它的取值如下: [java] view

原创 CLH隊列鎖

NUMA與SMP SMP(Symmetric Multi-Processor),即對稱多處理器結構,指服務器中多個CPU對稱工作,每個CPU訪問內存地址所需時間相同。其主要特徵是共享,包含對CPU,內存,I/O等進行共享。SMP的優點是能

原创 網站大流量解決

基本思路是:  1.儘量減少無所謂得頁面刷新。比如採用xmlhttp或者ajax等技術實現頁面局部刷新。  2.大量使用緩存,其中緩存又可以分爲三種,。Application   Cache   。Pre   Request   Cac

原创 伸展樹

1:思想     伸展樹的原理就是這樣的一個”八二原則”,比如我要查詢樹中的“節點7”,如果我們是AVL的思路,每次都查詢“節點7”,那麼當這 棵樹中的節點越來越多的情況下就會呈現下旋,所以複雜度只會遞增,伸展樹的想法就是在第一次查

原创 簡述java內存模型

1. 概述   多任務和高併發是衡量一臺計算機處理器的能力重要指標之一。一般衡量一個服務器性能的高低好壞,使用每秒事務處理數(Transactions Per Second,TPS)這個指標比較能說明問題,它代表着一秒內服務器平均能響

原创 AQS簡介

1、引言 JAVA內置的鎖(使用同步方法和同步塊)一直以來備受關注,其優勢是可以花最小的空間開銷創建鎖(因爲每個JAVA對象或者類都可以作爲鎖使用)和最少的時間開銷獲得鎖(單線程可以在最短時間內獲得鎖)。線程同步越來越多地被用在多處理器

原创 MAVEN常用命令

Maven庫: http://repo2.maven.org/maven2/ Maven依賴查詢: http://mvnrepository.com/ Maven常用命令:  1. 創建Maven的普通java項目:     m