原创 Nginx簡介、安裝(Linux)與腳本自啓動

Nginx   Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在BSD-like 協議下發行,由俄羅斯的程序設計師Igor Sysoev所開發。其特點是佔有內存少,併發能力強,

原创 存儲器層次結構、Cache Line、僞共享、Cache Line對齊

存儲器的層次結構:   存儲器是分層次的,離CPU越近的存儲器,速度越快,每字節的成本越高,同時容量也越小。寄存器速度最快,離CPU最近,成本最高,所以個數容量有限,其次是高速緩存(緩存也是分級,有L1,L2,L3等緩存),再次是

原创 JVM層級的內存屏障:JSR內存屏障

JSR內存屏障: LoadLoad:對於這樣的語句Load1;LoadLoad;Load2,在Load2及後續的讀操作要讀取的數據被訪問前,保證Load1要讀取的數據被讀取完畢; StoreStore:對於這樣的語句Store1

原创 CPU的亂序執行和合並寫技術

CPU的亂序執行:   CPU在進行讀等待的同時執行指令,是CPU亂序的根源,這其實不是亂,而是提高效率。例如指令1去內存讀數據,因爲CPU與內存訪問速度相差100倍,如果指令2的執行過程不需要依賴指令1,那麼指令2可以先執行,亂

原创 Spring配置元數據的三種方式

1、基於XML文件的配置:   傳統上,配置元數據以簡單直觀的XML格式提供,如下beans.xml文件中所示:id是標識單個bean定義的字符串,class定義bean的類型,並使用完全限定的類名,可以選擇是否配置屬性值。 <?

原创 Java自定義類加載器(Tomcat類加載器)

自定義類加載器:   因爲系統的ClassLoader只會加載指定目錄下的class文件,如果你想加載自己的class文件,那麼就可以自定義一個ClassLoader。而且我們可以根據自己的需求,對class文件進行加密和解密,自

原创 Java類加載機制(類加載器、雙親委派)

類加載的時機 創建類的實例:new、反射、反序列化、clone; 訪問類中的某個靜態變量,或者對靜態變量進行賦值; 主動調用類的靜態方法; ClassForName(“包類名”),得到的class已經初始化完成,ClassLoa

原创 使用JDOM讀取XML文件

books.xml: <?xml version="1.0" encoding="utf-8" ?> <books> <book id="001"> <title>Harry Potter</title>

原创 Java自定義註解

Java自定義註解 簡介:   Annotation事Java5開始引入的新特徵,它提供了一種安全的類似註釋的機制,用來將任何的信息和元數據(metadata)與程序元素(類、方法、成員變量等)進行關聯。爲程序的元素加上更直觀的說

原创 代理模式(靜態代理、JDK動態代理、CGLib動態代理、Spring AOP)

定義:爲其他對象提供一種代理,以控制對這個對象的訪問,代理對象在客戶端和目標對象之間起到中介的作用; 類型:結構型; 適用場景: 保護代理對象; 增強代理對象; 優點: 將代理對象與真實被調用的目標對象分離; 一定程度上降低

原创 Java鎖升級過程

markword實現表:   Java對象頭裏的markword主要存儲虛擬機有關該對象的運行數據,如hashcode、gc年齡和鎖信息,實現表如下圖所示:   markword中最低的三位代表鎖狀態 其中1位是偏向鎖位 兩位是普

原创 Java對象內存佈局

  在Java虛擬機中,每一個Java對象都由標記字段(markword)、類型指針(class pointer)、實例數據(instance data)和內存對齊(padding)構成,數組對象還有數組長度(length,4字節

原创 操作系統學習筆記(進程、線程、CPU調度、死鎖)

1、進程與線程 進程: 父進程先創建,子進程後創建,但是子進程先死亡,因爲子進程可能需要共享父進程的資源; 進程中止原因:進程結束、進程終止、內存清除; 生產者-消費者:生產者進程是產生數據的進程,在硬盤中讀取數據到內存;中間線

原创 狀態模式

定義:允許一個對象在其內部狀態改變時,改變它的行爲; 類型:行爲型; 適用場景 一個對象存在多個狀態(不同狀態行爲不同),且狀態可相互轉換; 優點 將不同的狀態隔離; 把各種狀態的轉換邏輯,分佈到state的子類中,減少相互

原创 策略模式

定義:定義了算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化不會影響到使用算法的用戶,且可以替換掉程序中大量的“if-else”語句; 類型:行爲型; 適用場景 系統有很多類,而它們的區別僅僅在於行爲不同 一個