摘要:
GoWorld代码:https://github.com/xiaonanln/goworld Golang具有运行效率高、内存安全等优良特性,因此是非常适合用来进行服务器开发。使用Golang开发游戏服务器有如下的优点: 运行效率远高于各种脚本语言,大幅度提升服务器承载能力 内存安全,不会像C++服 阅读全文
摘要:
github地址:https://github.com/uber-go/zap Log a message and 10 fields: Log a message with a logger that already has 10 fields of context: Log a static s 阅读全文
摘要:
interface简介 Go语言以简单易上手而著称,它的语法非常简单,熟悉C++,Java的开发者只需要很短的时间就可以掌握Go语言的基本用法。 interface是Go语言里所提供的非常重要的特性。一个interface里可以定义一个或者多个函数,例如系统自带的io.ReadWriter的定义如下 阅读全文
摘要:
GoWorld游戏服务器引擎简介 GoWorld是一款开源的分布式可扩展的游戏服务器引擎,使用Go语言(Golang)编写。它采用类似BigWorld的结构,使用了简化的场景-对象框架。以一个典型的MMORPG为例,每个服务器上会有多个场景,每个场景里可以包含多个对象,这些对象包括玩家、NPC、怪物 阅读全文
摘要:
Golang为我们提供了非常方便的性能测试工具pprof,使用pprof可以非常方便地对Go程序的运行效率进行监测。本文讲述如何使用pprof对Go程序进行性能测试,并使用qcachegrind查看性能测试的输出文件。 载入pprof模块 想要对一个Go程序进行pprof监测,第一步是在main函数 阅读全文
摘要:
定时器模块在服务端开发中非常重要,一个高性能的定时器模块能够大幅度提升引擎的运行效率。使用Golang和heap实现一个通用的定时器模块,代码来自:https://github.com/xiaonanln/goTimer 也可以查看文档:http://godoc.org/github.com/xia 阅读全文
摘要:
chan对象是Golang的一个核心卖点,可以轻松实现goroutine之间的通信。Golang允许我们为chan设置不同的缓冲大小。当默认缓冲大小为0的时候,一个goroutine对chan的写入操作必须要等到有其他goroutine对chan进行读取的时候才会返回,反之一个goroutine对c 阅读全文
摘要:
原文地址:http://goworldgs.com/?p=37 在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针。下面是一个例子,通过FIELD_OFFSET宏计算结构体内一个字段的偏移,函数getT可以从一个F*的指针获得对应的T*对象。 在Gola 阅读全文
摘要:
用paralist包可以减少行距,代码如下\usepackage{paralist}\let\itemize\compactitem\let\enditemize\endcompactitem\let\enumerate\compactenum\let\endenumerate\endcompactenum\let\description\compactdesc\let\enddescription\endcompactdesc但是你会发现行距都没了,之前的文字、之后的文字和列表整个挤到一起了。好在我们可以直接修改paralist宏包。修改paralist.sty中\setlength{\pl 阅读全文
摘要:
树节点定义:struct Node { int data; Node *left; Node *right; };递归实现:void visit(Node *node) { assert(node != NULL); printf("%d ", node->data);}void visitPrevOrderRec(Node *tree) { if (tree == NULL) return ; visit(tree); visitPrevOrderRec(tree->left); visitPrevOrderRec(tree->rig... 阅读全文