原创 Java源碼:阻塞隊列(ArrayBlockingQueue)

一、簡介 所謂阻塞隊列,其實就是支持下面這兩種阻塞功能的隊列: 當隊列爲空時,讀取該隊列可以阻塞直到隊列不爲空; 當隊列已滿時,寫入該隊列可以阻塞直到隊列不爲滿; 這種阻塞隊列主要用於可以用來構建生產者-消費者模型,生產者只需要往隊列中

原创 JUnit4學習筆記(二):參數化測試與假定(Assumption)

一、一個簡單的測試 編寫一個只有一種運算的計算器:   public class Calculator { public static double divide(int dividend, int divisor) {

原创 JUnit4學習筆記(四):利用Rule擴展JUnit

一、Rule簡介 Rule是JUnit4中的新特性,它讓我們可以擴展JUnit的功能,靈活地改變測試方法的行爲。JUnit中用@Rule和@ClassRule兩個註解來實現Rule擴展,這兩個註解需要放在實現了TestRule藉口的成員

原创 Java中的內部類

將一個類的定義放在另一個類的定義內部,成爲內部類。 一、各種形式的內部類及其基本使用 成員內部類:作爲外部類的一個成員存在,與外部類的屬性、方法並列的類。 class Outer{ private int field = 1;

原创 關於代碼整潔

整潔的代碼只做好一件事!每個類,每個方法都應該專注於一件事。 選個好名字要花時間,但能省下更多的時間。一旦發現有更好的名稱,就應該換掉舊的。 如果名稱需要註釋來補充,那就不算是名副其實。 方法名應該是動詞或動詞短語。 每個概念對應一個詞,

原创 Javascript與Ajax

一、XMLHttpRequest 對象 (XHR) XMLHttpRequest 對象用於在後臺與服務器交換數據,有了這個對象,我們可以: 在不重新加載頁面的情況下更新網頁; 在頁面已加載後從服務器請求數據; 在頁面已加載後從服務器接收

原创 Java源碼:ThreadLocal

一、個人見解 通俗來說,實例變量就是在每個具體實例對象級別的變量,類變量(靜態變量)就是在類級別的變量,類似的,線程本地變量就是在線程級別存放的變量,而ThreadLocal就是用來提供線程本地變量存取的工具。在網上各種搜,結合自己的理解

原创 JUnit4學習筆記(三):assertThat語法與Matcher

一、使用JUnit的一般測試語法 org.junit.Assert類裏有各種斷言方法,大部分情況下我們會像下面這個例子一樣編寫測試: public class AssertThatTest { private int id =

原创 JavaScript與jQuery操作常用的輸入元素

以下代碼的測試環境爲:jQuery-2.1.4,IE 11,FireFox 40。 1. text 取值與賦值 /* 原生JS */ var txtInput = document.getElementById("txtInpu

原创 Javascript與DOM

一、Node DOM模型定義了Node接口,在DOM中的每個節點都是一個Node(即實現了Node接口),每個Node都有自身的Node類型,可以通過nodeType屬性返回的數值區分,以下是各種節點類型所對應的數值: Node.ELE

原创 Javscript中的Selector API

在JQuery中使用CSS選擇器獲取元素非常方便,其實Javascript也提供了原生API去通過CSS選擇器取得元素:querySelector(), querySelectorAll(). (完整支持的瀏覽器有:IE 8+, Fir

原创 Javascript與元素大小

1. offsetHeight: 元素在垂直方向上佔用的空間大小,以像素計。包括元素的高度、(可見的)水平滾動條高度、上邊框高度和下邊框高度。 2. offsetWidth: 元素在水平方向上佔用的空間大小,以像素計。包括元素的寬度、(

原创 jQuery中的選擇器

1. 基礎選擇器 Basics 名稱 說明 舉例 #id 根據元素Id選擇 $("divId") 選擇ID爲divId的元素 element 根據元素的名稱選擇, $("a") 選擇所有<a>元素 .class 根據元素的css類選擇

原创 JavaScript中的繼承

1.對象冒充       對象冒充指的是在子類中使用子類的this冒充父類的this去執行父類的構造函數,從而獲得了父類的屬性和方法,但是這種方式只能繼承父類構造函數中定義的屬性和方法,原型上的任何屬性和方法對子類都不可見:

原创 JavaScript中跨瀏覽器的事件方法

參考自《JavaScript高級程序設計》 <script type="text/javascript"> var EventUtil = { //增加事件處理器 addEventHandler:function(ele