原创 下載器斷點下載-方便遊戲強更 原

Unity下的版本,設計是遊戲內嵌 一個下載器 下載 遊戲 方便遊戲強更 using System.Collections; using System.Collections.Generic; using System.Threadin

原创 asio下的C++多線程模型 原

分爲2大塊,網絡 和 邏輯 網絡多線程話其實是很容易的,包含了協議解析加密壓縮socket等常規操作。 設計難點在於遊戲邏輯的多線程處理,滿足  易用  和 高性能(儘可能避免可避免的鎖)     TODO

原创 asio::async_write 的坑 原

同一個socket 的async_write操作內部是調用async_write_some 去執行的,在WriteDone之前,如果再次調用async_write 會導致 發送的stream順序錯亂, 典型復現是, boost::asio:

原创 Redis cluster eval的使用 原

對於eval 有一個很大的約束在集羣模式下,即lua所用到的key必須在該節點上 因此可以藉助solt來發送到指定的key存在的節點上  因此需要redis-client 正確處理 key 方法1:     通過client顯示指定key 

原创 服務器灰度更新 原

灰度更新的思想是, 例如:     在服務器組A,B,C 情況下 全部引流到A 等到玩家引流的差不多之後(這個過程短則幾分鐘長則幾小時)在對服務器組BC進行更新(重啓等操作),完成後再把玩家引流到BC,組A玩家遷徙完成後在進行組A的更新(重

原创 服務發現 原

對於服務器的動態擴容,可以添加一個服務器類型(CenterServer),專門用來負責這個事情。 所有服務器進程起來後,初始化完畢先連接Center 由Center根據服務器連接規則把該服務器起來的數據廣播給已經和Center保持連接的服務

原创 服務器內存緩存的設計與實現 原

緩存策略有很多種 1.登錄時初始化,離線時清理,讀寫分離 (寫 包含了立刻回寫 OR 定時回寫) 2.讀寫分離,用時cache,LRU等算法來置換   TODO   

原创 Unity Android DLL熱更 原

和 Unity Mono DLL加密 有異曲同工之處。 這裏是爲了能夠在Android下熱更C#代碼 另外一個更高層次的是更新so 實現il2cpp 的熱更     搭建mono編譯環境:(參考自:https://blog.csdn.net

原创 IOS企業證書web安裝 原

plist文件要放在https下 隨便找一個git的即可 plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1

原创 centos 7 升級g++ 到4.9 原

比在Ubuntu 方便多了 yum install centos-release-scl-rh centos-release-scl yum check-update yum install devtoolset-3-gcc devt

原创 io_service線程安全隊列效率 原

boost::asio::io_service 的本質是一個消費者模型 多線程環境下 效率測試 空轉的話效率大概是150W QPS,  模擬find操作的話是80W QPS, std::map<int, int> _x; int QP

原创 redis-cluster client容災(高可用)方案 原

這個涉及到redis的集羣方案,無論是什麼方案 都逃不過節點掛掉,高可用的處理。 一般有2種,重連和等待新主節點 提權。 一般來說節點宕機後 大量數據需要重新加載到內存 因此恢復時間比較長(甚至達到幾分鐘),因此高可用方案,幾乎只考慮後者了

原创 Lite2D的渲染線程嘗試 頂 原

項目地址      https://github.com/dreamyouxi/Lite2D 注意: 1.GL只能和一個線程相關,所以紋理產生,初始化等都要放到渲染線程。 2.雙緩衝默認是垂直同步的 可用  glfwSwapInterval

原创 spin lock自旋鎖 原

自旋鎖 通過cas操作,在大部分情況下可以實現比std::mutex 更高的性能 基本思想是通過原子操作去嘗試獲取變量的值 所有線程去競爭 該原子變量 性能: 無競爭情況下 1.spin_lock 16000W 次每秒 2.mutex 28