原创 Struts2緩存解析
緩存在Struts2中起到了重要的作用,Struts2中使用緩存來進行延遲加載。 [構成緩存的類和數據結構] 構成緩存的類主要是兩個類,在com.opensymphony.xwork2.inject.util包中,分別是Referenc
原创 ThreadLocal簡單學習
學習Struts2時,遇到ThreadLocal,不甚理解,所以對此作了一番學習。 ThreadLocal是什麼呢?首先這並不是一個線程類,它是用來提供本地線程數據,也就是它保存的數據是線程相關的,每個線程都有一份數據副本,一個線程可以
原创 Android測試用例執行線程和UI線程
在做Android的AsyncTask測試的時候,發現測試用例在執行的時候是在一個名爲“Instr: android.test.Instrument
原创 條件鎖
ReentrantLock類有一個方法newCondition用來生成這個鎖對象的一個條件(ConditionObject)對象,它實現了Condition接口。Condition提供了線程通訊的一套機制await和signal等線程間
原创 http請求的參數和屬性
練習搭建和使用SSH框架的時候,遇到一個http方面很簡單的問題。一個form的表單登錄請求,表單爲最基本的html表單內容,代碼如下 在str
原创 共享鎖和排它鎖(ReentrantReadWriteLock)
1、什麼是共享鎖和排它鎖 共享鎖就是允許多個線程同時獲取一個鎖,一個鎖可以同時被多個線程擁有。 排它鎖,也稱作獨佔鎖,一個鎖在某一時刻只能被一個線程佔有,其它線程必須等待鎖被釋放之後纔可能獲取到鎖。 2、排它鎖和共
原创 Filter and Dispatcher
使用Struts框架時,需要在web應用程序的web.xml文件中增加filter配置。如下代碼 <filter> <filter-name> struts</ filter-name> <filter-c
原创 Struts2的Builder模式解析
Builder設計模式是一種創建型模式,可以將一個複雜對象的構建構成和它的表示區分開來,使得同樣的構建過程可以創建出不同的表示。Builder模式的適用場景如下: 1、要將創建一個複雜對象的算法與組成這個對象的部分以及組成部分的組合方式相
原创 Netty詳解
原文鏈接 http://www.blogjava.net/czihong/articles/391927.html Netty提供異步的、事件驅動的網絡應用程序框架和工具,用以快速開發高性能、高可靠性的網絡服務器和客戶端程
原创 Netty的ChannelFuture
在Netty中的所有的I/O操作都是異步執行的,這就意味着任何一個I/O操作會立刻返回,不保證在調用結束的時候操作會執行完成。因此,會返回一個ChannelFuture的實例,通過這個實例可以獲取當前I/O操作的狀態。 ChannelF
原创 Netty的ChannelPipeline
1、如何理解Netty的ChannelPipeline 在Netty中,每個Channel被創建的時候都需要被關聯一個對應的pipeline(通道),這種關聯關係是永久的(整個程序運行的生命週期中)。ChannelPipelin
原创 java線程同步之CountDownLatch
1、類說明 jdk的concurrent包中的CountDownLatch類是一個線程同步的輔助類,它使得線程可以一直等待在其它線程中執行的操作,直到此操作結束。CountDownLatch在初始化的時候指定一個大小值N,調用Count
原创 關於Android程序入口的猜想
對Android程序的入口一直不大理解,因爲它不像一般的C、C++或者Java程序有一個main函數入口,在執行的時候可以很清晰地知道程序的整個流程。爲此,查了下相關資料,在《Android技術內幕-系統卷》中找到了相關內容,關於整個An
原创 Java自旋鎖
Linux系統中自旋鎖的原理和實現想當複雜,會涉及操作系統、內核等等一系列的東東,Java的自旋鎖可以理解成讓當前線程不停地在循環體內執行,直到滿足線程進入臨界區爲止。 在AbstractQueuedSynchronizer中就有自旋鎖
原创 Hadoop RPC分析(一) -- Client
[Hadoop RPC調用入口] 在使用Hadoop RPC基本框架中,主要是通過getProxy來獲得一個客戶端代理對象,通過這個對象來向服務端發送RPC請求。 getProxy有多個重載方法,最終都是調用到了下面這個函數來進行實現 (