原创 遊戲服務器如何保證單個玩家是消息順序處理?

兩種方案: 方案一(這是我們服務器目前使用的方法): 使用netty,mina派發給一個線程執行器,讓所有玩家消息單線程環境下執行,那麼每個玩家的消息就能保證順序性了。每個玩家在netty或者mina中都是一個會話,會話裏面的消息是可以保

原创 java8 LinkedList源碼分析

LinkedList特點: 數據結構用雙向鏈表實現,增刪元素性能較好。 實現了所有List的接口。 可以插入null元素。 不是線程安全的。 類定義 繼承AbstractSequentialList實現了List,Deque,Clonea

原创 Java8 ArrayList源碼分析

java8源碼 ArrayList 總的來說就是一個動態數組,擴容時會變1.5倍容量 默認構造 一個空數組的arraylist 分析幾個重要的方法 add(E)方法 每次調用此方法,會先檢查是否需要擴容,, ensureCapacity

原创 Java Executor框架

Executor 類結構 Executor提供了一種提交任務與任務具體如何執行的解耦方式。 ExecutorService 提供了shutdown,shutdownNow,invokeAll,invokeAny等線程管理的方法。

原创 java ArrayDeque源碼圖析

    事情是這樣的     在一次開發當中,我想用到隊列的相關特性,這次隊列不用考慮在併發情況下的安全特性,併發包裏面的數據結構就不用考慮了。於是我找啊找,到了jdk中隊列的實現有LinkedList,ArrayDeque,Priori

原创 談HashMap,HashSet,HashTable容易被我們忽視的問題

   在平時開發中,HashMap,HashTable,HashSet 都是經常用到的鍵值映射數據結構,在這裏我主要寫一些平時我們使用這些數據結構中容易忽視的問題。 HashMap    HashMap的結構     HashMap 底層

原创 線程池最優大小計算公式

java併發編程實戰中提到一個計算線程池最優大小的公式 線程數量=cpu的數量*cpu期望利用率*(1 + 任務等待時間/任務處理時間)。 比如一個8核CPU,希望這部分工作的CPU使用率20%,任務等待時間允許200ms,每個任務執行

原创 java8 LinkedHashMap源碼分析

繼承了HashMap 實現了 Map接口 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 雙向鏈表頭結點 transient Li

原创 java8 Vector源碼分析

Vector特點 底層基於動態數組實現 所有操作都加上了synchronized操作,屬於線程安全的容器類。 可以把Vector看成是一個線程安全的ArrayList 構造函數 //默認構造函數 public Vector()

原创 Java8 ThreadPoolExecutor源碼分析

ThreadPoolExecutor是Java線程的實現之一。 使用線程池的好處: 降低系統資源消耗,避免創建與銷燬線程帶來的資源消耗。 提高響應速度,任務可以從已經從線程池裏獲取一條線程執行而不必new 一條線程。 方便線程的管

原创 關於程序員看書這個事情

    一眨眼自己也從剛畢業的菜鳥變成了一位從業6年的老鳥了。我跟大部分程序員一樣,平凡的不能再平凡,平時的工作就是寫業務代碼。有空閒的時間也會在網上看看技術文章。看了這麼多,但這些知識點在自己腦裏感覺就像是一盤散落的沙子,如果有人讓我總

原创 LinkedList源碼分析

LinkedList特點: 數據結構用雙向鏈表實現,增刪元素性能較好。 實現了所有List的接口。 可以插入null元素。 不是線程安全的。 類定義 繼承AbstractSequentialList實現了List,Deque,Clonea

原创 《java併發編程實戰》讀書筆記

線程安全: 當多個線程訪問某個類時,這個類始終能表現出正確的行爲,那麼就稱這個類是線程安全的。 什麼線程活躍性問題? 活躍性問題,意味着某個線程可能一直得不到執行。線程A一直等待線程B釋放其持有的資源,如果B不釋放,那麼A就一直等下去。例

原创 遊戲服務器線程模型

遊戲主線程: 處理活動請求,系統進階等非場景且不涉及數據庫操作的請求。 場景線程: 一個場景可以綁定一個線程,或者多個場景綁定一個線程,場景有關的所有請求包括戰鬥請求都會在場景線程裏順序執行,單線程執行執行線程安全。每個場景線程還有一個綁

原创 spring boot web 多模塊打包

 新建一個maven-web項目,取名web-all,web-all項目使用了themeleaf模板引擎 再依次建立以下子模塊 common模塊:公共模塊,會被其他模塊引用api web模塊:web應用,將會用來部署網站,會引用commo