原创 十大經典排序算法(摘抄至一像素博客)

0、算法概述 0.1 算法分類 十種常見排序算法可以分爲兩大類: 非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此稱爲非線性時間比較類排序。 線性時間非比較類排序:不通過比較來決定元素

原创 LVS+Keepalived搭建高可用負載服務

LVS+Keepalived 1》Keepalived簡介              Keepalived是Linux下一個輕量級別的高可用解決方案,高可用(High Avalilability,HA),其實兩種不同的含義:廣義來講,是指

原创 Docker快速入門——Docker-Compose

Docker快速入門——Docker-Compose 一、Docker-Compose簡介 1、Docker-Compose簡介 Docker-Compose項目是Docker官方的開源項目,負責實現對Docker容器集羣的快速編排。 D

原创 JVM調優

這裏介紹4個垃圾收集器,如果進行了錯誤的選擇將會大大的影響程序的性能。     時至今日,仍然有兩個事情困擾着開發人員:垃圾收集(GC)和了解異性(程序猿的悲鳴),後者我確實不太瞭解,因爲我被前者搞的無暇顧及怎麼了解異性,特別是當知道在J

原创 Spring-@Transactional的事務隔離級別

//支持當前事務,如果當前沒有事務,就新建一個事務。Spring默認事務級別。 int PROPAGATION_REQUIRED = 0;   //支持當前事務,如果當前沒有事務,就以非事務方式執行。 int PROPAGATION_SU

原创 系統吞吐量、TPS(QPS)、用戶併發量、性能測試概念和公式

一.系統吞度量要素:   一個系統的吞度量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。 系統吞吐量幾個重要參數:

原创 三大主流軟件負載均衡器對比(LVS、Nginx、HAproxy)

三大主流軟件負載均衡器對比(LVS、Nginx、HAproxy)   (資料來自網絡,做了部分的補充說明)LVS:     1. 抗負載能力強,性能高,能達到F5的60%,對內存和CPU資源消耗比較低     2. 工作在網絡4層,通過V

原创 深入理解Java內存模型(一)——基礎

併發編程模型的分類 在併發編程中,我們需要處理兩個關鍵問題:線程之間如何通信及線程之間如何同步(這裏的線程是指併發執行的活動實體)。通信是指線程之間以何種機制來交換信息。在命令式編程中,線程之間的通信機制有兩種:共享內存和消息傳遞。 在共

原创 深入理解Java內存模型(七)——總結

處理器內存模型 順序一致性內存模型是一個理論參考模型,JMM和處理器內存模型在設計時通常會把順序一致性內存模型作爲參照。JMM和處理器內存模型在設計時會對順序一致性模型做一些放鬆,因爲如果完全按照順序一致性模型來實現處理器和JMM,那麼很

原创 深入理解Java內存模型(五)——鎖

鎖的釋放-獲取建立的happens before 關係 鎖是java併發編程中最重要的同步機制。鎖除了讓臨界區互斥執行外,還可以讓釋放鎖的線程向獲取同一個鎖的線程發送消息。 下面是鎖釋放-獲取的示例代碼: class MonitorEx

原创 深入理解Java內存模型(四)——volatile

volatile的特性 當我們聲明共享變量爲volatile後,對這個變量的讀/寫將會很特別。理解volatile特性的一個好方法是:把對volatile變量的單個讀/寫,看成是使用同一個監視器鎖對這些單個讀/寫操作做了同步。下面我們通過

原创 深入理解Java內存模型(三)——順序一致性

數據競爭與順序一致性保證 當程序未正確同步時,就會存在數據競爭。java內存模型規範對數據競爭的定義如下: 在一個線程中寫一個變量, 在另一個線程讀同一個變量, 而且寫和讀沒有通過同步來排序。 當代碼中包含數據競爭時,程序的執行往往產生違

原创 深入理解Java內存模型(六)——final

與前面介紹的鎖和volatile相比較,對final域的讀和寫更像是普通的變量訪問。對於final域,編譯器和處理器要遵守兩個重排序規則: 在構造函數內對一個final域的寫入,與隨後把這個被構造對象的引用賦值給一個引用變量,這兩個操作之

原创 深入理解Java內存模型(二)——重排序

數據依賴性 如果兩個操作訪問同一個變量,且這兩個操作中有一個爲寫操作,此時這兩個操作之間就存在數據依賴性。數據依賴分下列三種類型: 名稱 代碼示例 說明 寫後讀 a = 1;b = a; 寫一個變量之後,再讀這個位置。 寫後寫 a = 1

原创 23種設計模式

一、設計模式的分類 總體來說設計模式分爲三大類: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行爲型模式