原创 完善排行榜的排序規則

在之前的一篇博客中,討論瞭如何合併兩個排行榜。 https://www.cnblogs.com/demon90s/p/15659594.html 但代碼上有一些瑕疵,就是排序的規則寫得異常的簡陋: std::sort(tmp_list.be

原创 業務std::prev的實際應用,查詢所在區間

之前的一篇博客討論了使用lower_bound來查詢配置區間。 https://www.cnblogs.com/demon90s/p/15658800.html 由於配置設計的原因,從字段上面是無法看的出鍵所在的段的。比如: std::ma

原创 導入sql文件提示2006錯誤的解決辦法

在使用Navicat導入一份比較大的sql文件時,出現了錯誤提示: [Err] 2006 - MySQL server has gone away 並不清楚具體原因(可能是數據包太大導致socket斷開)。 解決辦法是設置 max_all

原创 C++使用lower_bound快速查詢分段配置

當前在業務中,經常要將配置根據天數進行分段。例如 1-10 天一個配置段,11-20一個配置段。 由於進行了分段,所以查詢配置就多了一層查詢,即需要先鎖定配置所在哪一段。比較習慣的做法是使用遍歷,一個一個段去查詢。雖然可行,但看着不優雅。

原创 C++中合併兩個排行榜的思路

最近的業務中,出現了合併排行榜的需求。兩個排行榜具體如何合併,還是要看業務的需求。 通常,一個排行榜使用一個key表示一個rank_item,對應一個分值用於排序。可能還帶有一些額外的信息,主要用於讀取。 比如,我們可以有一個戰鬥力的排名項

原创 C++中看上去有些奇怪的慣用法:int和bool之間的轉換

int和bool默認就可以相互轉換,但是在某些編譯器的某些設置下,執行隱式轉換會報warning(VS2015)。 當然,可以使用 static_cast 來顯式轉換,但我很少這樣用。 這裏演示一個更加看上去奇怪的慣用法(我自認爲是的,不一

原创 windows下zip工具及其使用

windows下默認沒有zip命令行程序,所以我在網上找了一個免費的。 ftp://lovemiemie.xyz/pub/install_package/windows/zipunzip.rar 使用方法也很簡單: 壓縮文件到 file.z

原创 C++單例模式案例

單例模式要注意兩點: 通過一個Instance方法,得到類型唯一的實例 屏蔽掉外部創建類型實例的方法 有兩種實現思路: 在Instance函數內部使用static聲明變量,使其具有唯一實例 在cpp文件中定義全局static指針,並在

原创 C++分割字符串方法

C++標準目前沒有提供分割字符串的方法,但可以自己實現之。 測試代碼如下: #include <vector> #include <string> #include <iostream> std::vector<std::string>

原创 C++前置聲明的幾種方式

C++的前置聲明可以避免編譯依賴,以此可以增加編譯速度。同時可以隱藏實現細節,令接口更加簡潔。 那麼C++中可以有哪些前置聲明的方式呢? 聲明全局作用域中類型的名字 聲明命名空間中類型的名字 聲明模板類型名字 當然,還有函數的前置聲明,

原创 關於分佈式系統一致性問題的思考

今天遊戲出了一個BUG,覆盤一下。這是一個分佈式揹包系統,A玩家和B玩家共享着一個揹包。A玩家和B玩家的角色揹包系統在同一個進程裏,而共享揹包系統在另一個進程(很可能還是另一臺物理機)。因此操作揹包就是一個相對耗時的操作。 比如想要從角色揹

原创 在線文檔生成工具 mkdocs 使用方法

簡介 mkdocs 是一款在線文檔生成工具,可以生成比較漂亮的在線文檔。比如我個人的C++筆記就是用它生成的:https://demon90s.github.io/CppStudy/ 其實 mkdocs 功能就是把一堆 markdown 文

原创 windows使用C++獲取本機IP地址

工作中想要寫一個工具,但需要知道機器的IP地址。查了下,沒有發現什麼好的接口可以直接獲取。 我的機器就一個IP,其他的是虛擬機的。使用 ipconfig 可以列出它們。但我需要知道的就是如同 192.168.10.111 這樣的一個字符串,

原创 shell腳本獲取隨機值

如何使用 shell 腳本獲取隨機值? 方法是使用 $RANDOM 變量。每次使用它後,它的值就變成另一個隨機值。 echo $RANDOM 如果想獲得一個可控的範圍內的值,比如 [0, 100) 。則可以 n=$(( $RANDOM %

原创 安裝mingw

mingw提供了一些unix下的工具,使其可以在widows下運行,比如gcc。 首先下載: https://sourceforge.net/projects/mingw/files/Installer/ 或 ftp://lovemiemi