原创 Java併發之Semaphore的源碼分析

Semaphore是一個計數信號量,採用的是共享鎖的方式來控制。 主要對下面2個方法進行分析: acquire(int)來獲取信號量,直到只有一個可以用或者出現中斷。 release(int)用來釋放信號量,將信號量數量返回給Semap

原创 使用Ant自動構建Java項目成jar包配置

使用Ant很方便將Java項目打成jar包,下面是自己寫的一些配置。 build.properties #set configuration target.dir=target targetclasses.dir=target/clas

原创 使用Cobertura的命令行方式測試代碼覆蓋率

  一、簡介               Cobertura 是一種開源工具,它通過檢測基本的代碼,並觀察在測試包運行時執行了哪些代碼和沒有執行哪些代碼,來測量測試覆蓋率。      下載Cobertura    http://cobe

原创 使用Ant與Junit進行自動化測試

使用Ant與Junit組合進行測試。 1.項目結構圖: 2.文件代碼 Calculator.java package com.test.junit; public class Calculator { public int add

原创 Junit4部分註解

@BeforeClass:這個註解修飾public static void無參數的方法。修飾的方法運行在所有方法之前(包括@Before修飾的方法和類的默認構造方法前),而且只運行一次,同時會先執行父類的@BeforeClass修飾的方

原创 Java動態代理Proxy類的解析

使用過代理的,對Proxy不會感到陌生,主要分析Proxy類的內部結構。 一、Proxy類的結構 /** * a cache of proxy classes * 緩存java代理類 */

原创 java泛型通配符

考慮到常規打印集合所有元素的問題,然而你將寫一個比較好的版本(jdk1.5以前) void printCollection(Collection c) { Iterator i = c.iterator(); for (

原创 使用JDBC遇到SQL關鍵字in的問題

今天使用JDBC遇到SQL關鍵字in的問題 String sql = "select sum(oil_mass),count(oil_id) from oil_bill where oil_id in (?) "; ... Prepar

原创 Java併發之CountDownLatch源碼分析

CountDownLatch是一個同步輔助類,在完成一組正在其他線程中執行的操作之前,它允許一個或多個線程一直等待。內部採用的公平鎖和共享鎖的機制實現。 一、CountDownLatch的構造函數(採用的是一種公平鎖機制) publi

原创 [LeetCode]Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5

原创 Class類源碼淺析

在java運行的應用中,類和接口代表着Class的實例。枚舉是類的一種,註解是接口的一種,數組是屬於類。 Class的構造函數 //只允許JVM創建Class對象 private Class() {} Class的部分函數通過全類名,獲

原创 MySQL使用like出現 操作MySQL數據庫報出:Parameter index out of range (1 > number of parameters

...sql = "...where 1=1  and s.content like '%?%'";sqlValue.add(content);...一直出現錯誤Parameter index out of range (1 > num

原创 Thread源碼淺析

一、Thread類的數據結構 class Thread implements Runnable { //... private char name[];//線程的名字 private int

原创 Java併發之synchronized的解析

在JDK中沒有太多的對synchronzied的解析,主要是同步作用。下面通過jvm的中synchronizer.cpp的源碼來分析 在這裏可以下載jvm源碼:http://hg.openjdk.java.net/ synchron

原创 Java併發之AtomicInteger源碼分析

一、AtomicInteger的數據結構 二、構造方法 三、常用的方法 主要的核心函數是compareAndSet(int expect,int update),採用happen-before關係. 從這幾個方法中可