原创 Emacs 記錄

什麼是 Emacs An extensible, customizable, free/libre text editor — and more. Emacs 是... 學會了Emacs,你就可以: 一個快速、好用、高度自定義的編輯

原创 Golang 中使用 Slice + 索引 Map 替代 Map 獲得性能提升

起因 在我們的多個線上遊戲項目中,很多模塊和服務爲了提高響應速度,都在內存中存放了大量的(緩存)數據以便獲得最快的訪問速度。 通常情況下,爲了使用方便,使用了 go 自身的 map 作爲存放容器。當有超過幾十萬 key 值,並且 map 的

原创 使用 authenticationDatabase 參數連接 aliyun 上的 MongoDB

通常,命令行 連接 MongoDB 我們是這麼做的: mongo -u <user> -p <pass> --host <host> --port 28015 或者使用標準的連接字符串地址URI: mongodb://[username:p

原创 defer 的一些用法和猜測

以前的代碼中,基本上只使用了 defer 作爲防禦程序 panic 退出的手段,沒有仔細考慮過對返回值的影響。今天有同事提到: 如果執行過程中發生 panic,defer函數 recover() != nil的情況下,未命名的返回值的函數會

原创 Go 的一個 CAS 操作使用場景

大概一年前,曾經遇到這麼一個問題:程序中有 N個併發執行的routine,都會向一個size 爲 n 的 channel 裏面寫入數據,這 N 個 routine 有比較高的併發度,同時負載也比較大,所以不希望在寫入數據的時候卡住,因此使用

原创 更好的 Golang 的 MongoDB 驅動 `globalsign/mgo`

用 1.3 版本使用 Go 開始,連接 MongoDB 使用的驅動中,最常見的就是:mgo.v2 這個庫一度是唯一的選擇,它的接口設計合理,與 Golang/MongoDB/bson 適配的也做的不錯。然而這個庫長期處於無人看管的狀態,有一

原创 網絡遊戲中玩家數據的處理

背景 網絡遊戲中最重要的數據莫過於玩家在遊戲的過程中產生的數據。 可以簡單的分成兩類: 存檔數據 過程記錄數據 第一類數據主要是類似角色『基礎』信息,揹包、技能、任務,以及所有(或者部分)玩家共有的王國、地圖、聯盟等信息。第二類主要是類

原创 Go map 的特殊特性

零值特性 未初始化的map某些操作是合法的: var testMap map[int]int size := len(testMap) // size is 0 _, present := testMap[0

原创 Go maps in action 翻譯

原文地址 概要介紹 hash table 可能是計算機科學領域最重要的一種數據結構,不同的實現方式會有不同的特性,但通常來說都會提供快速查找、增加和刪除的操作。Go 內置了一個名爲 map 的 hash table。 定義和初始化 一個 G