原创 A.Q.S源碼分析(exclusive模式下加鎖)

exclusive mode加鎖: public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWai

原创 A.Q.S源碼分析(釋放鎖)

鎖釋放的邏輯很簡單,都是喚醒後繼線程,但並不會把隊列中對應的節點釋放掉,釋放的任務有下個加鎖成功的線程負責: exclusive: public final boolean release(int arg) { if (t

原创 ThreadLocal源碼分析

源碼比較簡單,但是裏面有很多優化的地方。 TheadLocal.get()的時候實際上拿到當前線程的threadLocalMap,以theadLocal爲key,取value的過程。 源碼爲證:public T get() {

原创 A.Q.S源碼分析(shared模式下加鎖)

shared模式下加鎖和exclusive模式下加鎖的機制大致相同,都是嘗試加鎖,如果失敗那麼入隊阻塞的邏輯。 但是在獲取到鎖的邏輯有點區別: private void doAcquireShared(int arg) {

原创 HBase讀書筆記

讀寫首先根據rowid定位到reginserver:Zookeeper→-ROOT-→-META-→ReginServer -META-表中存儲了Regionserver的region分區信息,如果某臺Regionserver掛掉(通過Z

原创 《收穫,不止oralce》讀書筆記(2)

爲什麼要有回滾段? 因爲SGA的數據緩衝區(data buffer)的數據達到一定量的時候,有CKPT觸發數據緩存區寫出刷新到磁盤中。因爲data buffer中可能會存在髒數據,比如說那些沒有commit的。那麼就需要把原來的鏡像數據存

原创 《收穫,不止oralce》讀書筆記(5)

索引的三大特點:高度比較低 索引本身有序 索引存儲列值和rownid INDEX RANGE SCAN - TABLE ACCESS BY INDEX ROW ID 如果設置了分區表索引,但是用不到分區條件,等同於掃描N個高度並沒有低多少

原创 《收穫,不止oralce》讀書筆記(6)

表連接 嵌套循環(Nested Loops Join) 參與連接的兩張表有驅動表和被驅動表之分。類似於嵌套的兩層for循環。訪問被驅動表的次數等於驅動表的返回記錄數。如果在被驅動表的連接條件列上加上索引,可以顯著提高查詢效率。(適合返回少

原创 root:Permission denied

打算使用wget下載hadoop的壓縮包,結果報下面的錯誤: [root@linyuhe mnt]# wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.5.2/ha

原创 dubbo源碼分析-dubboProtocol

dubboProtocol是dubbo中的核心類,具體實現了暴露服務和引用服務。也就是export方法。 public <T> Exporter<T> export(Invoker<T> invoker) throws RpcExce

原创 Oracle中的鎖

參考:Data Concurrency and Consistency 1 Row Share Table Locks (RS) select .. for update會在行上加RS鎖,表示當前事務佔有表中的一些記錄,級別略高於一致讀。

原创 dubbo源碼分析-負載均衡算法

一致性hash(consistent hash) 核心代碼: private Invoker<T> sekectForKey(long hash) { Invoker<T> invoker;

原创 《收穫,不止oralce》讀書筆記(4)

臨時表:基於會話(commit preserve rows)和基於事務(commit delete rows) 1 CRUD產生的日誌量比普通表要少 2 在session exit或者transaction commit時,不產生日誌。

原创 《收穫,不止oralce》讀書筆記(3)

數據庫(Database)由若干表空間(Tablespace)組成,表空間由若干段(Segment)組成,段(Segment)由若干區(Extend)組成,區(Extend)又是由oracle的最小單元塊(Block)組成。 Extend

原创 Socket參數

1 Socket.setSoTimeout(int) 設置讀超時,如果在timeout時間沒有讀取到一個字節,那麼拋出IOException,並且關閉socket。github代碼 從抓包中可以看到在超時後發送了RST,告知服務端關閉連