原创 Java內存模型(上)

Jvm中內存分爲兩種:一種是棧內存,一種是堆內存。 棧內存:存放對象,函數中基本類型的變量和對象的引用變量、靜態類方法;特點:存在棧中的數據可以共享。 堆內存:存放對象,用來存放由new創建的對象和數組;特點:由Java虛擬機的自動垃圾回

原创 一種簡單無鎖隊列的實現

Disruptor是內存無鎖併發框架,基於一個環數組作爲緩衝,詳見Disruptor-1.0。 下面是自己設計的一個簡易版,目前沒有發現存在衝突或錯誤的測試用例。大家可以一起測試下。 package tianshui.lockfree.

原创 緩存簡析

一、緩存穿透 在項目中使用緩存通常都是APP先檢查緩存中是否命中,如果命中直接返回緩存內容;如果不命中就直接查詢數據庫然後回寫緩存並返回結果。此時如果查詢某個數據在緩存中一直不存在,就會造成每一次請求都查詢DB,這樣緩存就失去了意義,在流

原创 synchronized(class)、synchronized(this)與synchronized(object)

JAVA中synchronized關鍵字能夠作爲函數的修飾符,也可作爲函數內的語句,也就是平時說的同步方法和同步語句塊。假如再細的分類,synchronized可作用於instance變量、object reference(對象引用)、s

原创 CAP理論十二年回顧:"規則"變了

CAP理論斷言任何基於網絡的數據共享系統,最多隻能滿足數據一致性、可用性、分區容忍性三要素中的兩個要素。但是通過顯式處理分區情形,系統設計師可以做到優化數據一致性和可用性,進而取得三者之間的平衡。 自打引入CAP理論的十幾年裏,設計師和研

原创 NoSQL Data Models

引自:http://coolshell.cn/articles/7270.html

原创 Java內存模型(下)

順序一致性內存模型是一個理論參考模型,JMM和處理器內存模型在設計時通常會把順序一致性內存模型作爲參照。JMM和處理器內存模型在設計時會對順序一致性模型做一些放鬆,因爲如果完全按照順序一致性模型來實現處理器和JMM,那麼很多的處理器和編譯

原创 一種高併發流控程序的簡單輕量實現

實現一個流控程序,控制客戶端每秒調用某個遠程服務不超過N次,客戶端是會多線程併發調用。 import java.util.Date; import java.util.concurrent.ExecutorService; import

原创 簡析分佈式計算框架:Hive HBase Hadoop HDFS

Hive Hive是爲簡化編寫MapReduce程序而生的,使用MapReduce做過數據分析的人都知道,很多分析程序除業務邏輯不同外,程序流程基本一樣。在這種情況下,就需要Hive這樣的SQL似的用戶編程接口。Hive本身不存儲和計算數

原创 序列化Serializable的理解

序列化: 簡單說就是爲了保存在內存中的各種對象的狀態(也就是實例變量,不是方法),並且可以把保存的對象狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保存object states,但是Java給你提供一種應該比你自己好的保存對象狀

原创 無鎖同步棧實現

public class ConcurrentStack<E> {     private AtomicReference<Node<E>> top = new AtomicReference<Node<E>>();     Concu

原创 一段阻塞隊列代碼的糾錯與優化

下面的代碼在某處發現後,立馬發現存在問題。 public class BlockingQ { private Object notEmpty = new Object(); private Object notFull = new

原创 二進制流實現深複製

public static Object depthClone(Object srcObj) throws IOException, ClassNotFoundException{ Object cloneObj = null;

原创 一種簡單線程併發控制的實現

/** * @author 天水 * @date 2013-4-12 下午05:08:49 */ public class ConcurrentController implements Runnable { // 併發控制數

原创 BeanFactoryPostProcessor和BeanPostProcessor的區別

BeanFactoryPostProcessor和BeanPostProcessor都是Spring初始化bean的擴展點。兩個接口非常相似。 BeanFactoryPostProcessor可以對bean的定義(配置元數據)進行處理。