原创 解讀NIO Socket非阻塞模式

前言:      jdk供的無阻塞I/O(NIO)有效解決了多線程服務器存在的線程開銷問題,但在使用上略顯得複雜一些。在NIO中使用多線程,主要目的已不是爲了應對 每個客戶端請求而分配獨立的服務線程,而是通過多線程充分使用用多個CPU

原创 Inside java.lang.Enum

1 Introduction to enum     Java SE 5中引入了枚舉,同時添加了一個新關鍵字enum。下面是個枚舉的例子: public enum Suit { CLUBS, DIAMONDS, HEARTS, SP

原创 Java 理論與實踐: 使用通配符簡化泛型使用 (二)

自從泛型被添加到 JDK 5 語言以來,它一直都是一個頗具爭議的話題。一部分人認爲泛型簡化了編程,擴展了類型系統從而使編譯器能夠檢驗類型安全;另外一些人認爲泛型添加了很多不必要的複雜性。對於泛型我們都經歷過一些痛苦的回憶,但毫無疑問通配

原创 深入淺出 RPC - 淺出篇

近幾年的項目中,服務化和微服務化漸漸成爲中大型分佈式系統架構的主流方式,而 RPC 在其中扮演着關鍵的作用。 在平時的日常開發中我們都在隱式或顯式的使用 RPC,一些剛入行的程序員會感覺 RPC 比較神祕,而一些有多年使用 RPC 經驗的

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

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

原创 總結一致性哈希(Consistent Hashing)

在大型web應用中,緩存可算是當今的一個標準開發配置了。在大規模的緩存應用中,應運而生了分佈式緩存系統。分佈式緩存系統的基本原理,大家也有所耳聞。key-value如何均勻的分散到集羣中?說到此,最常規的方式莫過於hash取模的方式。比如

原创 Oracle FlashBack 簡介

簡介 Flashback數據庫是一種時點(PIT)數據庫恢復的方式。這種不完全的恢復策略可以用於恢復由於人爲錯誤導致邏輯損壞的數據庫。在10g中引入之後,它的設計目標就是以縮減恢復時間而獲得最大的可用性。這篇文章將會探索Flashb

原创 Oracle Flashback 閃回查詢功能操作範例(9i and 10g)

Oracle 從 9i開始提供了基於回滾段的閃回查詢(Flashback Query)功能,可用於恢復錯誤的DML操作。在Oracle 10g中對閃回查詢做了較大改進,不再侷限於閃回查詢,還可用於恢復錯誤

原创 深入淺出 RPC - 深入篇

《深入篇》我們主要圍繞 RPC 的功能目標和實現考量去展開,一個基本的 RPC 框架應該提供什麼功能,滿足什麼要求以及如何去實現它? RPC 功能目標 RPC 的主要功能目標是讓構建分佈式計算(應用)更容易,在提供強大的遠程調用能力時不

原创 一個牛x的mock框架--Powermock

首先,官網:http://code.google.com/p/powermock/ 先做好心理準備,這個開源工具的官網基本上沒啥文字說明。但是可以下載源代碼,裏面有一些示例測試用例。   當你的領導對你說,UT的代碼覆蓋率要達到100%!

原创 Twitter“鯨魚”故障技術剖析

很多人都熟悉Twitter訪問故障時候那條白色的鯨魚。今年新推出的Twitter Engineering Blog 講述了Twitter白鯨技術故障的原因及解決思路。這是到目前爲止Twitter公開的最底層的一篇技術資料。http://

原创 Java深度歷險(二)——Java類的加載、鏈接和初始化

在上一篇文章 中介紹了Java字節代碼的操縱,其中提到了利用Java類加載器來加載修改過後的字節代碼並在JVM上執行。本文接着上一篇的話題,討論Java類的加載、鏈接和初始化。Java字節代碼的表現形式是字節數組(byte[]),而Jav

原创 Windows操作系統堆和棧的區別

堆和棧的區別 一、預備知識—程序的內存分配 一個由c/C++編譯的程序佔用的內存分爲以下幾個部分 1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。 2、堆區(heap) 

原创 回滾段探究

l       前言 對於oracle的回滾段的分配與管理,實際上不那麼複雜,當然如果我們從原理甚至從oracle internal的角度深究相關問題的話有不是一件容易的事。但對於我們普通開發人員和DBA來說,重要的是在概念上清晰,原理上

原创 import 靜態成員(Static import)

在 J2SE 5.0  後新增了"import static" ,它的作用與 套件(package) 中介紹的"import"類似,都是爲了讓您可以省一些打字功夫,讓編譯器多作一點事而存在的。 "import stat