原创 Java集合: ConcurrentHashMap源碼分析 JDK1.8

轉載文章,原博客地址爲:http://blog.csdn.net/u010887744/article/details/50637030 jdk1.8和jdk1.7對於ConcurrentHashMap的實現出現的重大變化,不再採

原创 Java併發編程:生產者-消費者模式

  生產者消費者模型是併發編程的經典模型,生產者模型的核心思想是生產者生產的產品通過一塊共享的資源與消費者交互,通過共享資源的交互實現了生產者與消費者的解耦。現在的消息隊列使用的也是這種思想。   本文實現瞭如下描述的生產者-消

原创 Redis持久化方式介紹

  Redis的持久化方法持久化方法有RDB文件和AOF文件兩種。下面主要介紹兩種持久化方法的原理缺點以及我在做交易系統異步化改造項目時用到redis的場景。 1 RDB文件   RDB文件是一個經過壓縮的二進制文件,通過這個文件

原创 Java集合:LinkedList使用詳解及源碼分析

1 使用方法   LinkedList基於雙端鏈表實現,可以作爲棧、隊列或者雙端隊列使用。 public class LinkedList<E> extends AbstractSequentialList<E>

原创 Java集合:ArrayList使用詳解及源碼分析

1 使用方法   ArrayList是數組隊列,可以實現容量的動態增長。ArrayList類繼承了AbstractList抽象類並且實現了List、RandomAccess,Cloneable以及java.io.Serializa

原创 LeetCode:Fraction to Recurring Decimal

1、題幹 Given two integers representing the numerator and denominator of a fraction, return the fraction in string for

原创 Java集合:集合框架

  Java集合源碼位於Java.util包下,主要包括List、Set、Map、Iterator以及工具類Arrays和Collections。Java集合框架的頂級接口包括Collection和Map兩個,其中Collecti

原创 Java集合:Hashtable使用詳解及源碼分析

1 使用方法   Hashtable是和HashMap類似的散列表,存儲的內容爲key-value鍵值對,key的值是唯一的,和HashMap不同的是key和value都不能爲null。Hashtable和HashMap的關係可以

原创 Java併發編程:阻塞隊列及實現生產者-消費者模式

1 什麼是阻塞隊列   JDK 1.5的java.util.concurrent包提供了多種阻塞隊列。阻塞隊列相對於PriorityQueue、LinkedList等非阻塞隊列的特點是提供了,隊列阻塞的操作,優化了隊列爲空向隊列取

原创 Java併發編程:ThreadPoolExecutor類及方法源碼分析

  ThreadPoolExecutor是jdk自帶線程池實現類,現有的Executors工具類實現的幾種線程池核心都是調用ThreadPoolExecutor類。ThreadPoolExecutor在jdk1.7及以後做了部分修

原创 Java集合:HashMap使用詳解及源碼分析

1 使用方法   HashMap是散列表,存儲的內容爲key-value鍵值對,key的值是唯一的,可以爲null。 public class HashMap<K,V> extends AbstractMap<K,V> imple

原创 Java併發編程:線程同步機制

  Java中線程同步可以通過wait、notify、notifyAll等方法實現。這幾個方法在最頂級的父類Object中實現,並且被聲明爲final,所以子類無法重寫這幾個方法。在實現線程同步時,一般需要配合synchroniz

原创 LeetCode:Increasing Triplet Subsequence

Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array. Formally t

原创 Java集合:TreeMap使用詳解及源碼分析

1 使用方法   TreeMap和HashMap一樣是散列表,但是他們內部實現完全不同,TreeMap基於紅黑樹實現,是一個有序的散列表,而HashMap使用數組加鏈表實現是無序的。 public class TreeMap<K,

原创 Java併發編程:死鎖及解決方法

1 什麼是死鎖   死鎖是多個進程\線程爲了完成任務申請多個不可剝奪的資源並且以不正確的方式推進導致的一直互相等待對方釋放資源的狀態。下面以經典的哲學家就餐問題爲例,描述死鎖產生的場景。 2 哲學家就餐問題   五個哲學家坐在一個