- 博客(11)
- 资源 (6)
- 收藏
- 关注
原创 go实现一个简单的游戏服务器框架(lotou)多节点
代码仓库在这个什么都流行分布式、大并发的时代,不支持点多节点也太说不过去了。 lotou的多节功能主要是建立在network和core模块之上的。 主要分为slave和master。在lotou的多节点中,有一个master和多个slave组成。因为lotou里面主要是针对服务进行通信,所以只要master和slave的主要功能就是对服务间 的消息进行转发。 基于多节点网络,lotou还实现
2016-12-22 14:30:00 1489
原创 go实现一个简单的游戏服务器框架(lotou)编码
代码仓库在lotou中实现了两种二进制编码方式。binary一种是普通的C/C++模式的小端编码方式,每一个数据都被依次编码进一个二进制流中,基本用法如下:编码 binary.Encode(v) binary.Encode(v)解码 binary.Decode(&v) binary.Decode(&v)使用非常简单,编码方式也很简单。还有一种是为了用于lotou内部通信(后面即将实现的
2016-12-12 14:53:41 1270
原创 go实现一个简单的游戏服务器框架(lotou)网络通信
代码仓库,目前代码比较粗糙,欢迎各种改进建议。 网络通信相关代码请查下以下链接(https://github.com/sydnash/lotou/tree/master/network/tcp)目前网络通信只实现了基于go的tcp的通信。go的tcp相关的主要接口net.JoinHostPort 将一个host和port组成一个合法的网络地址(host:port)net.ResolveTCP
2016-12-09 10:37:44 4496
原创 go实现一个简单的游戏服务器框架(lotou)基本设计
代码仓库,目前代码比较粗糙,欢迎各种改进建议。 以为go语言原生支持高并发(goroutine)和通信机制(channel),所以首先想到的就是使用这两个东西来构建我的消息分发机制。 核心思路:有一个core模块维护了所有的服务当有消息发送的时候,通过该core模块将消息发送到对应服务器的接收channel中服务中开一个goroutine来从channel取出消息并处理主要函数: co
2016-12-08 16:08:01 4419
原创 go实现一个简单的游戏服务器框架(lotou)起源
最近一直想学习一些关于游戏服务器的知识,显示看了一下云风的skynet框架,从而对于一个游戏服务器框架有了一个基本概要了解。先来说说我对于skynet的一些理解吧。skynet理解skynet只完成了服务器最核心的一部分功能,必须消息分发,必须服务的创建、销毁以及服务间的通信。 skynet中最核心的两个部分,网络和消息分发。消息分发skynet中有一个消息队列的队列,这个队列保存了每一个服务的消
2016-12-08 15:30:30 7092
原创 go 内置函数
go 的内置函数不拥有前面提到的go的标准类型,因此内置函数不能作为一个函数值赋值给函数类型的变量。closeclose用于关闭一个channel,使用close函数要注意以下几点:关闭一个只接受的channel会导致错误在一个已经关闭的channel上发送数据会导致panic关闭一个nil channel会导致panic在一个channel关闭之后,如果channel已经没有剩余数据等待接
2016-12-08 13:54:45 2537
原创 正则表达式*和?的一个错误认识
这两天再看go的正则表达式的时候,看到关于unicode匹配的方式\p{Name}不是很明白,所以就想写程序来尝试一下,因此而引出博文标题提到的一个误区。 首先还是先解释下\p{name}到底是什么意思。 这里的{name}指的是unicode的类型对象名称,具体可在RE2 syntax中查看。其中{Han}可以用来匹配中文字符,因此下了下面的程序来验证。package mainimport
2016-12-07 09:34:30 480
原创 go控制流和一些特殊语句
send和receive语句send、receive操作是针对channel的 send : ch <- a receive: a := <- ch++和--语句在go中++和--是一个赋值语句,而不是一个表达式因此不能像C/C++那样编写如下代码: a = b++ 同时在go中只有后置,没有前置写法。a++a--if语句ifif是编程语言中最简单的条件分支判断语句,几乎所有语言都有,所
2016-12-06 14:40:44 586
原创 GO声明和作用域
作用域go语言一共有如下几个作用域:全局作用域:所有的关键字和内置类型、函数都拥有全局作用域package作用域:一个包中声明的变量、常量、函数、类型等都拥有包作用域,在同一个包中可以任意访问文件作用域:一个文件中通过import导入的包名,只在当前文件有效函数作用域以及for、if、{}自定义作用域,函数的参数、reciever、返回值都拥有函数作用域,for、if、{}内部的变量只拥有最
2016-12-06 10:49:37 2702
翻译 go语言的type的比较和赋值
type的比较两个类型要么相同要么不相同。如果两个命名类型起源于同样的声明;一个命名类型和不具名类型永远不相同;两个不具名类型相同如果他们拥有同样的字面结构且对应成员有相同的类型。具体的规则如下:两个array type相同如果他们拥有相同的element type和同样的数组长度两个slice type相同如果他们拥有相同的element type两个struct type相同如果他们
2016-12-05 22:57:08 3170
原创 go语言基本数据类型
初识GO语言go是一门新语言,他在语言级提供了并发的支持(goroutine)和通信工具channel,同时它也是一门编译型、强类型的语言,拥有内存GC机制。程序的模块通过package来组织。GO基础整数十进制整数,使用0-9的数字表示且不以0开头。八进制整数,以0开头,0-7的数字表示十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成100 1234550100 0600
2016-12-05 15:50:48 3687 4
敏捷软件开发:原则、模式与实践
2011-07-01
linux设备驱动程序示例源代码
2010-12-25
数据结构与算法分析-c语言描述
2010-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人