原创 分佈式通信框架

分佈式通信框架分佈式通信框架分佈式通信框架

原创 分佈式架構基礎

分佈式架構基礎分佈式架構基礎分佈式架構基礎

原创 性能優化-Tomcat調優

通常我們的應用都是部署在tomcat中,那麼針對tomcat可以進行如下配置優化 刪減配置 移除conf/web.xml中的org.apache.catalina.servlets.DefaultServlet 移除conf/w

原创 變量可見性問題

簡介 併發編程時各個線程中無法獲取到共享變量的最新值。 產生的原因 共享變量存儲在主內存中,通常情況下各個線程在使用某個共享變量時先將共享變量複製進線程工作內存中,後續使用到該變量時直接從當前線程工作內存中獲取變量值,此時如果其

原创 性能優化-請求合併

通常我們的系統查詢過程如下圖 當我們面臨百萬級甚至更過查詢請求時,這種簡單應用結構明顯無法滿足業務及性能要求。此時我們需要對上述結構進行優化。通常的做法有一下兩種方式 負載均衡 將應用後臺集羣部署,降低單個後臺服務器壓力。 緩

原创 日誌鏈路追蹤

摘要 在我們的系統中需要記錄日誌,包括接口、方法的調用用戶信息、用時、參數等。分佈式環境中通過dubbo調用rpc服務,需要提供全局traceId追蹤完整調用鏈路。 解決方案 日誌中心獨立部署,提供rpc服務,日誌統一記錄統一

原创 多線程基本概念

線程狀態 線程裝填包括了新建狀態、就緒狀態、運行狀態、阻塞狀態和死亡狀態。 其中阻塞狀態又分爲三種: 等待阻塞:運行狀態中的線程執行wait()方法,使線程進入到等待阻塞狀態 同步阻塞:線程在獲取synchronized同步鎖失

原创 Thread Callable Runable

1. Thread public class ThreadTest { public static void main(String[] args){ new MyThread().start();

原创 優雅的處理if-else 工廠模式+策略模式

摘要 對於簡單的if-else語句可以通過衛語句處理。 public void doSomeThing(Object obj){ if(obj!=null){ System.out.printl

原创 基於redis的分佈式鎖

摘要 當在分佈式模型下,數據只有一份,此時需要利用鎖的技術控制某一時刻修改數據的進程數。與單機模式下的鎖不同,分佈式鎖不僅僅需要保證不同進程訪問對象有鎖,還需要保證不同主機的不同系統訪問該對象時有鎖。所以通常我們會爲需要枷鎖的對象

原创 CountDownLatch、Semaphore、CyclicBarrier

摘要 CountDownLatch、Semaphore和CyclicBarrier都是用於同步一批線程的行爲 CountDownLatch 是一個計數器閉鎖,同時只能有一個線程去操作該計數器,通過它可以完成類似於阻塞當前線程的功

原创 jdk8新特性-Lambda 表達式

摘要 Lambda 允許把函數作爲一個方法的參數(函數作爲參數傳遞進方法中)。可以取代大部分的匿名內部類,寫出更優雅的 Java 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優化代碼結構。 基礎語法 (parameters)

原创 hibernate狀態

摘要 Hibernate是對象關係映射框架,是對jdbc進行了非常輕量級的對象封裝,是一個全自動的orm框架。 Hibernate的API一共有6個,分別爲:Session、SessionFactory、Transaction、Q

原创 pagehelper-分頁插件

說明 前端在展示數據列表時需要分頁,通常後端是通過兩個sql查詢數據,一個查詢總數、另一個通過limit,start查詢當前頁具體數據。這樣會導致後端類似的sql寫兩遍。通過pagehelper可以只寫一條查詢sql,pagehe

原创 jdk8新特性-Optional

摘要 Optional 類主要解決的問題是臭名昭著的空指針異常(NullPointerException)。它提供了可設置爲空值(ofNullable)、值是否存在(isPresent)、值爲空時取默認值(orElse)等方法,讓