原创 JUC併發容器——阻塞隊列

生產者消費者 儘管性能不如併發隊列,但阻塞隊列更加適合生產消費者的場景,這是因爲它支持兩個附加操作,另外就是隊列會自動平衡負載,即那邊(生產與消費兩邊)處理快了就會被阻塞掉,從而減少兩邊的處理速度差距: 支持阻塞的插入方法:當隊

原创 併發概念基礎:線程安全與線程間通信

線程安全 按照線程安全的安全程度來分的話,java中的各種操作共享的數據主要分爲5類:不可變、絕對線程安全、相對線程安全、線程兼容和線程對立。 不可變 對於final關鍵字可見性來說,只要一個不可變對象被正確構建出來(沒有thi

原创 Android 反編譯與防止被反編譯

反編譯神器:jadx 防止反編譯 防止反編譯的幾種方法 Android ProGuard 啓用ProGuard 在Android專案根目錄下,有個「project.properties」檔案,找到以下字串,並移除掉前面的「#」

原创 併發概念基礎:線程,死鎖

線程的狀態,method 死鎖的條件

原创 JUC併發容器——ConcurrentLinkedQueue

線程安全的隊列 阻塞隊列:使用一個鎖(進隊和出隊同一個鎖)和兩個鎖(入隊和出隊用不同的鎖) 非阻塞隊列:ConcurrentLinkedQueue ConcurrentLinkedQueue特性: 是一個基於鏈接節點的無界線

原创 clssloader與雙親委派

JVM裏的有幾種classloader,爲什麼會有多種? 什麼是雙親委派機制?介紹一些運作過程,雙親委派模型的好處; 什麼情況下我們需要破壞雙親委派模型; 常見的JVM調優方法有哪些?可以具體到調整哪個參數,調成什麼值?

原创 JVM intro

原创 JUC併發容器——跳錶

跳錶 SkipList 跳錶是隨機化的一個數據結構,以O(logn)的期望時間支持查找和插入。 跳錶是鏈表的優化,在有序鏈表的基礎上,它把一維的線性鏈表做了一些提取,相當於新建了若干層索引,借索引減少比較次數。 JDK中沒有Sk

原创 20170729

週六在家看了一些哲學知識: 1. 生活方式和追求這些東西別人無權干涉,包括父母,當然干涉了也會適得其反。每個人都有對生活的理解 1. 找到那個熱愛的事情,如果不行。就熱愛生活,如果不行,就愛身邊愛你的人。如果還不行,就好好愛自己,自立,自

原创 JVM三大常量池與方法區

版本主線 hotspot從1.6到1.8,方法區的實現從永久代轉移到元空間(Metaspace,位於Native Memory)。 Java 1.7作爲過渡版本,率先實現部分區域的轉移,分別是: 字符串常量池(也就是String

原创 JUC鎖框架——join方法、CountDownLatch、CyclicBarrier和Semaphore

有用於同步一批線程的行爲,分別是CountDownLatch、Semaphore和CyclicBarrier。 join方法 // Thread.java中也有一個類似的基礎方法 public final sy

原创 羅斯50分

很久沒有這樣盼着一個人贏了,儘管我不是羅斯的球迷,大抵因爲看球太晚,錯過了玫瑰綻放的歲月,但他的傳聞從來都不絕於耳——史上最年輕MVP,是帶腦子的威少…但此後的2000多天裏受制於大傷不斷,輾轉於各支球隊,從主力到角色球員到考慮退

原创 JUC鎖框架——基於AQS的實現,從ReentrantLock認識獨佔和共享

JDK中有以下基於AQS的實現 ReentrantLock CountDownLatch Semaphore ReentrantReadWriteLock CyclicBarrier (委託給ReentrantLock)

原创 JUC鎖框架——初識AQS

AQS:AbstractQueuedSynchronizer Synchronized和ReentrantLock的實現原理是不一致的,Synchronized是依靠java虛擬機的功能實現的。ReentrantLock則是有AQ

原创 Android/Java中的兩種常見內存泄漏

0. GC Roots 在Java中,是通過可達性分析(Reachability Analysis)來判定對象是否存活的。該算法的基本思路就是通過一些被稱爲引用鏈(GC Roots)的對象作爲起點,從這些節點開始向下搜索,搜索走