原创 G1的垃圾回收概念

通過市場的力量,不斷淘汰舊的行業,把有限的資源讓給那些競爭力更強、利潤率更高的企業。類似地,硅谷也在不斷淘汰過時的人員,從全世界吸收新鮮血液。經過半個多世紀的發展,在硅谷地區便形成只有卓越才能生存的文化。本着這樣的理念,GC承擔了淘汰垃圾

原创 如何啓動ZooKeeper(上)

啓動ZooKeeperZooKeeper服務的啓動方式分爲三種,即單機模式、僞分佈式模式、分佈式模式,這裏針對三種模式均做逐一講解。Tips 調試過程建議儘量使用分佈式模式,單機模式不推薦在生產環境下使用,僞分佈式模式實質上是在一個進程內

原创 不懂技術的研發團隊領導

不懂技術的人如果做了研發團隊的領導,很容易出現嚴重的問題。例如,技術會議他到底需不需要參加,如果是一位技術專家出生的人,毫無疑問他需要參加,但是如果情況不是,這時候就會出現麻煩。他參加或者不參加,都會引起麻煩,所以儘量避免這樣的人出任研發

原创 如何啓動ZooKeeper(下)

(3). Module3 分佈式模式由於ZooKeeper單機模式不支持單點失敗保護,所以不推薦在生產環境下使用。ZooKeeper有另外一種支持多臺機器的模式,即真正的分佈式模式,這多臺包含在一個應用體內的集羣機器被稱爲quorum,這

原创 G1 GC日誌分析

使用UseG1GC這個選項顯示地要求JDK7或者JDK8對應的JVM採用G1 GC,據說JDK9開始默認GC會變更爲G1 GC(現在是ParallelGC),但一切皆有可能。我們使用VM參數-XX:+PrintGCDetails-verb

原创 LRU算法

LRU是Least Recently Used 的縮寫,即“最近最少使用”,基於LRU算法實現的Cache機制簡單地說就是緩存一定量的數據,當超過設定的閾值時就把一些過期的數據刪除掉,比如我們緩存10000條數據,當數據小於10000時可

原创 LFU算法

LFU(LeastFrequently Used),即最近最多使用算法。它是基於“如果一個數據在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小”的思路。LFU算法需要維護一個隊列記錄所有數據的訪問記錄,每個數據都需要

原创 訂單系統的優化方案

要優化訂單系統,提高訂單的每秒交易數量(TPS,Transactionper second),我們首先要做的是對下訂單的邏輯進行剝離,只保留核心部分,而把附加功能剔除出去。比如說下單要考慮庫存量、考慮發短信、要給賣家發消息通知、要對訂單做

原创 系統架構過程中常用到的術語

性能:Web系統的性能受多方面因素的影響,但大多數開發人員主要關心的是響應時間和可擴展性這兩方面。n 響應時間:Web應用從收到請求到返回響應結果所花費的時間。而應用系統應該在可接受的時間範圍內返回響應結果,否則就不能算是一個性能良好的應

原创 程序性能優化策略

列舉幾點常見的性能優化策略。n 用空間換時間。該策略屬於系統架構層面的優化。我們知道,各種緩存機制,從CPU L1/L2/RAM到硬盤,都可以通過空間換時間的策略。這類策略基本上是通過採用把計算的過程一步一步地保存或者緩存等方式,避免重複

原创 採用Clone()方式創建對象

Java語言裏面的所有類都默認繼承自java.lang.Object類,在java.lang.Object類裏面有一個clone()方法,JDK API的說明文檔裏面解釋了這個方法會返回Object對象的一個拷貝。我們需要說明兩點:一是拷

原创 軟件程序性能衡量指標

如果拋開所有的內部技術因素,我們只看應用程序的性能指標,那麼一般來說,程序的性能大體可以通過以下幾個方面來衡量。n 響應時間:系統對用戶行爲或者事件做出響應的時間。響應時間越短,性能一定越好,所以我們在系統設計過程中應該儘量採用異步處理方

原创 避免對boolean判斷

Java裏的boolean數據類型被定義爲存儲8位(1個字節)的數值形式,但只能是true或是false。有些時候我們出於寫代碼的習慣,經常容易導致習慣性思維,這裏指的習慣性思維是想要對生成的數據進行判別,這樣感覺可以在該變量進入業務邏輯

原创 JVM之堆

堆在JVM規範裏是一種通用性的內存池(也存在於RAM中),用於存放所有的Java對象。堆是一個運行時數據區,類的對象從中分配空間。這些對象通過New關鍵字被建立,它們不需要程序代碼來顯式地釋放。堆是由垃圾回收來負責的,堆的優勢是可以動態地

原创 IT從業者職業生涯收入曲線分析

IT從業者在整個職業生涯的收入趨勢,這個話題很多我的讀者開小窗問我,我做一個自己的想法說明。根據我實際的觀察,我認爲一位IT從業者在整個職業生涯中的收入趨勢可能由以下幾種情況(最後三種是不可能出現的,我也列出,並做解釋),我逐一說明。這條