原创 同步鎖可以使用字符串對象做鎖需要注意的事項

Java中使用String作同步鎖 在Java中String是一種特殊的類型存在,在jdk中String在創建後是共享常量池的,即使在jdk1.8之後實現有所不同,但是功能還是差不多的。 藉助這個特點我們可以使用String來作同步的鎖,

原创 線程池ThreadPoolExecutor的三種隊列區別

使用方法: 1.SynchronousQueue   private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRunt

原创 jdk1.8後對集合的遍歷方法更新

一、首先對Map集合的遍歷方法 jdk1.7之前的遍歷方法如下: for (Map.Entry<String, Integer> entry : ordermap.entrySet()) { System.out.printl

原创 JDK 7中引入的併發框架Fork/Join(^_^)

Fork/Join 框架是 JDK 1.7 提供的並行執行任務框架,這個框架通過(遞歸)把問題劃分爲子任務,然後並行的執行這些子任務,等所有的子任務都結束的時候,再合併最終結果的這種方式來支持並行計算編程。 總體的設計參考了爲 Cilk

原创 ThreadLocal 內存泄漏問題(^_^)

ThreadLocal 的作用是提供線程內的局部變量,這種變量在線程的生命週期內起作用,減少同一個線程內多個函數或者組件之間一些公共變量的傳遞的複雜度。但是如果濫用ThreadLocal,就可能會導致內存泄漏。下面,我們將圍繞三個方面來分

原创 ConcurrentHashMap對於不同JDK版本的不同結構(^_^^_^)

瞭解ConcurrentHashMap 實現原理,建議首先了解下HashMap實現原理。   爲什麼要用ConcurrentHashMap HashMap線程不安全,而Hashtable是線程安全,但是它使用了synchronized進行

原创 java 序列化的幾種方式

什麼是序列化? 內存中的數據對象只有轉換爲二進制流纔可以進行數據持久化和網絡傳輸。將數據對象轉換爲二進制流的過程稱爲對象的序列化(Serialization)。反之,將二進制流恢復爲數據對象的過程稱爲反序列化(Deserializatio

原创 JDK1.8引入的stream

爲什麼需要 Stream Stream 作爲 Java 8 的一大亮點,它與 java.io 包裏的 InputStream 和 OutputStream 是完全不同的概念。它也不同於 StAX 對 XML 解析的 Stream,也不是

原创 實現冪等性的幾種方式

1、首先說下什麼是冪等性呢 對於同一筆業務操作,不管調用多少次,得到的結果都是一樣的。 2、冪等性設計 我們以對接支付寶充值爲例,來分析支付回調接口如何設計? 如果我們系統中對接過支付寶充值功能的,我們需要給支付寶提供一個回調接口,支付寶

原创 String類和常量池常見面試題

1、String的兩種創建方式的區別 String str1 = "abc"; String str2 = new String("abc"); sout(str1 == str2);//false 其中,第一種方式是從常量池中獲取對象

原创 select * from for update對於多個事務的隔離情況

事務與鎖的關係 1、事務與鎖是不同的。事務具有ACID(原子性、一致性、隔離性和持久性),鎖是用於解決隔離性的一種機制。 2、事務的隔離級別通過鎖的機制來實現。另外鎖有不同的粒度,同時事務也是有不同的隔離級別的。 3、開啓事務就自動加鎖。

原创 鎖和事務衝突

我使用的RedLock做分佈式鎖管理,用spring註解事務管理。 在實現過程中遇到如下兩個映像深刻的問題: 1、分佈式鎖與spring註解事務共用產生的問題 2、鎖在事務提交前超時問題 使用分佈式鎖RedLock及spring事務實現

原创 git merge --abort的使用情況

今天的項目工程文件產生了衝突,沒辦法,顯示包內容。三下五除二把衝突解決了,結果發現項目的project文件還是不能打開,但是已經無法迴歸到解決衝突之前的狀態了。執行git merge --abort命令回到解決衝突之前的狀態。 再重新執行

原创 RabbitMq常見面試題

使用RabbitMQ有什麼好處? 1.解耦,系統A在代碼中直接調用系統B和系統C的代碼,如果將來D系統接入,系統A還需要修改代碼,過於麻煩! 2.異步,將消息寫入消息隊列,非必要的業務邏輯以異步的方式運行,加快響應速度 3.削峯,併發量大

原创 緩存同步、如何保證緩存一致性、緩存誤用(^_^)

緩存誤用 緩存,是互聯網分層架構中,非常重要的一個部分,通常用它來降低數據庫壓力,提升系統整體性能,縮短訪問時間。 有架構師說“緩存是萬金油,哪裏有問題,加個緩存,就能優化”,緩存的濫用,可能會導致一些錯誤用法。 緩存,你真的用對了麼?