原创 Java核心-併發中的線程同步與鎖 原

一、線程安全問題的產生 線程安全問題:指的是在多線程編程中,同時操作同一個可變的資源之後,造成的實際結果與預期結果不一致的問題。 比如:A和B同時向C轉賬10萬元。如果轉賬操作不具有原子性,A在向C轉賬時,讀取了C的餘額爲20萬,然後加上

原创 教你用 redis 實現分佈式冪等服務中間件 原

背景 在編程領域,冪等性是指對同一個系統,使用同樣的條件,一次請求和重複的多次請求對系統資源的影響是一致的。 在分佈式系統裏,client 調用 server 提供的服務,由於網絡環境的複雜性,調用可能有以下幾種情況: server 收到

原创 Java核心-反射和動態代理(JDK Proxy和Cglib) 原

反射和動態代理放有一定的相關性,但單純的說動態代理是由反射機制實現的,其實是不夠全面不準確的,動態代理是一種功能行爲,而它的實現方法有很多。要怎麼理解以上這句話,請看下文。 一、反射 反射機制是 Java 語言提供的一種基礎功能,賦予程序

原创 都別爭了!分佈式鎖也是鎖 原

Tomcat的鎖 Tomcat是這個系統的核心組成部分, 每當有用戶請求過來,Tomcat就會從線程池裏找個線程來處理,有的執行登錄,有的查看購物車,有的下訂單,看着屬下們盡心盡職地工作,完成人類的請求,Tomcat就很有成就感。 與此同

原创 收藏起來-Redis 集羣管理常見操作 原

Redis 內置客戶端 redis-cli 通過 --cluster 選項集成了多個 Redis 集羣管理工具, 這些工具可以執行創建集羣、向集羣中添加或移除節點、對集羣實施重分片以及負載均衡等操作, 它們每一個都非常強大: $ redi

原创 關於負載均衡的一切,簡單易懂 原

什麼是負載均衡? 負載均衡(Load Balance)是分佈式系統架構設計中必須考慮的因素之一,它通常是指,將請求/數據均勻分攤到多個操作單元上執行,負載均衡的關鍵在於均勻。   常見的負載均衡方案有哪些? 常見互聯網分佈式架構如上,分爲

原创 Java併發編程之鎖機制之(ReentrantLock)重入鎖 原

ReentrantLock基本介紹 ReentrantLock 是一種 可重入 的 互斥鎖 ,它具有與使用 synchronized 方法和語句所訪問的隱式監視器鎖相同的一些基本行爲和語義,但功能更強大。 ReentrantLock 將由

原创 深入Dubbo 源碼解析 — 負載均衡LoadBalance 原

技術點 面試中Dubbo負載均衡常問的幾點 常見負載均衡算法簡介 Dubbo 官方文檔介紹 Dubbo 負載均衡的策略 Dubbo 負載均衡源碼解析 面試中Dubbo負載均衡常問的幾點 負載均衡算法 最小活躍數 一致性哈希算法

原创 Dubbo深入分析之Cluster層 原 薦

Cluster接口 整個cluster層可以使用如下圖片概括: 各節點關係: 這裏的Invoker是Provider的一個可調用Service的抽象,Invoker封裝了Provider地址及Service接口信息; Directory代

原创 高併發編程:解析HashMap 原

底層實現原理 在JDK1.8以前版本中,HashMap的實現是數組+鏈表,它的缺點是即使哈希函數選擇的再好,也很難達到元素百分百均勻分佈,而且當HashMap中有大量元素都存到同一個桶中時,這個桶會有一個很長的鏈表,此時遍歷的時間複雜度就

原创 Java-怎樣構造方法和匿名對象 原

前言 在編寫程序時不安全的初始化會導致程序發生發生重大錯誤。爲了使程序可以被安全地初始化,C++引入了構造器(也可以成爲構造方法)的概念,這是一個在創建對象時被自動調用的特殊方法。Java中也採用了構造器,並且提供了“垃圾回收器”。對於不在

原创 深入理解Java內存模型 原

  1 內存模型產生背景 在介紹Java內存模型之前,我們先了解一下物理計算機中的併發問題,理解這些問題可以搞清楚內存模型產生的背景。物理機遇到的併發問題與虛擬機中的情況有不少相似之處,物理機的解決方案對虛擬機的實現有相當的參考意義。

原创 輕鬆搞懂鎖和分佈式鎖 原

鎖的由來 : 多線程環境中,經常遇到多個線程訪問同一個 共享資源 ,這時候作爲開發者必須考慮如何維護數據一致性,這就需要某種機制來保證只有滿足某個條件(獲取鎖成功)的線程才能訪問資源,而不滿足條件(獲取鎖失敗)的線程只能等待,在下一輪競爭

原创 Dubbo 源碼分析 - 服務引用 原 薦

1. 簡介 在上一篇文章中,我詳細的分析了服務導出的原理。本篇文章我們趁熱打鐵,繼續分析服務引用的原理。在 Dubbo 中,我們可以通過兩種方式引用遠程服務。第一種是使用服務直聯的方式引用服務,第二種方式是基於註冊中心進行引用。服務直聯的

原创 Java程序性能優化—十年碼農總結的編程小技巧 原

程序的性能受代碼質量的直接影響。在本文中,主要介紹一些代碼編寫的小技巧和慣例,這些技巧有助於在代碼級別上提升系統性能。 1、慎用異常 在Java軟件開發中,經常使用 try-catch 進行錯誤捕獲,但是,try-catch 語句對系統性能