原创 下載器斷點下載-方便遊戲強更 原
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
原创 網絡優化-TCP和UDP的協作 原
TODO
原创 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