golang 调度之wakep和M创建

说说wakep和m的创建吧wakep调用时机和作用 作用:wakep的作用是添加一个P来执行goroutinue 时机:在有G变为runnable的时候 如:newproc ready wakep中调用startm来启动一个新的m startm 首先如果传递过来P是nil,则需要获取一个idle...

2019-04-30 08:38:41

阅读数 1065

评论数 0

golang 栈的扩大和收缩

栈扩大stack.go中的常量,用于检查goroutinue的状态 uintptrMask = 1<<(8*sys.PtrSize) - 1 // Goroutine preemption request. // Stored into g->stackguard...

2017-04-20 16:00:04

阅读数 2101

评论数 0

golang 启动流程

找到启动函数在linux使用objdump反汇编可以看到golang编译的exe的启动代码首先使用objdump -f exe 可以看到start address 0x0808c760然后使用objdump -d exe > t.asm打开t.asm文件查找上面的start address...

2017-04-20 15:57:52

阅读数 1594

评论数 2

lotou详解二:service注册和单节点消息发送

代码地址lotou中通过core/handler.go来管理单机节点中注册的service注册和移除注册registerService为一个service分配一个唯一的serviceId serviceId由16的节点id和46位的本机唯一的id组成。unregisterService移除一个s...

2017-03-30 22:55:36

阅读数 564

评论数 0

lotou详解一:基本概念

lotou是一个基于golang的支持分布式的轻量级游戏服务器框架,主要提供游戏服务器集群的消息转发代码仓库 lotou提供了三种不同的消息发送方式: 1.Send 用于普通的消息推送,不需要返回,发送之后就不再关注 2.Request 异步非阻塞请求响应模式,request接收一个回调函...

2017-03-25 23:20:23

阅读数 1691

评论数 0

7个go的基本注意事项

传递参数的时候不传递interface而传递具体类型 不适用io.Writer & io.Reader, 而使用具体类型(和第一点有点重复了) 传递一个很大的interface,应该传递只需要用到的interface 什么时候用函数什么时候用方法:当需要状态或者修改状态的时候使用方法,如果...

2017-03-12 10:06:45

阅读数 439

评论数 0

go 自己实现一个gob编解码

代码库为什么要写这么一个编解码golang内部也实现了一个gob的二进制编解码,接口简单,使用方便,但是它对interface的支持不是很好, 比如如下代码:var in []interface{} = []interface{}{1, 1.5, "abc", "1...

2017-03-10 16:56:20

阅读数 1094

评论数 0

go 实现一个简单的UUID生成器

查看源代码实现方法:UUID 通过三部分组成 curtime << 22 | generaterid << 12 | sequenceid具体原理如下:首先每一个UUID生成器有一个id在生成UUID的时候先取当前时间距离1970的秒数作为高位,generaterid作为中...

2017-03-09 18:24:06

阅读数 1504

评论数 0

go 语言中的继承

go 语言中可以通过匿名field来实现继承的效果,type T1 struct { A int }func (t T1) Log() { }func (t *T1) Print() { }type T2 struct { T1 }t2 T2{}继承效果可以通过t2.Log()直接...

2017-03-09 15:15:26

阅读数 938

评论数 0

go 用slice模拟vector功能

appendVectora = append(a, b...)copyb = append([]T(nil), a...)b = make([]T, len(a)) copy(b, a)cut删除一段范围i~jcopy(a[i:], a[j:]) for k, n := len(a) - j + ...

2017-02-10 11:43:46

阅读数 1482

评论数 0

go语言实现IOS OTA安装应用

现在的IOS OTA安装应用需要使用https才能安装。 要使得服务器支持https,服务器必须要有https证书。证书可以同过购买获得或者自己生成。 这里我们使用自己生成的证书,使用自己生成的证书必须在iphone上手动安装之后才能访问https服务器,否则iphone会拒绝访问未受信任的h...

2017-01-23 10:42:40

阅读数 501

评论数 0

cocos2dx中的class的实现以及C++的__index搜索

metatable要理解lua的class,首先要先理解metatable的作用和__index以及lua调用table里面的函数的时候搜索函数的逻辑: 1、直接当前表里面搜索函数 如果存在,直接调用,不存在继续 2、如果表里面不存在调用的函数,会查找表的metatable的__index ...

2017-01-11 11:40:28

阅读数 706

评论数 0

cocos2dx增加front层并优先响应listener

需求在游戏中会有一些提示性的消息需要显示在UI的最上层,即使是在scene切换的时候也不能消失掉。比如当服务器推送某个消息的时候,需求一个弹窗来展示,但这个时候游戏刚好进行了scene切换,就会导致添加在上一个scene的弹窗消失掉,导致该提示消息无法展示。解决方法我们可以为看到cocos2dx中...

2017-01-11 09:14:57

阅读数 284

评论数 0

go 判断一个文件是否存在

通过下面的代码可以判断一个指定的路径在系统是否存在。if _, err := os.Stat(path); err != nil { if os.IsNotExist(err) { // file does not exist } else { //...

2017-01-04 09:10:08

阅读数 6536

评论数 0

go实现一个简单的游戏服务器框架(lotou)多节点

代码仓库在这个什么都流行分布式、大并发的时代,不支持点多节点也太说不过去了。 lotou的多节功能主要是建立在network和core模块之上的。 主要分为slave和master。在lotou的多节点中,有一个master和多个slave组成。因为lotou里面主要是针对服务进行通信,所以只...

2016-12-22 14:30:00

阅读数 1023

评论数 0

go实现一个简单的游戏服务器框架(lotou)编码

代码仓库在lotou中实现了两种二进制编码方式。binary一种是普通的C/C++模式的小端编码方式,每一个数据都被依次编码进一个二进制流中,基本用法如下: 编码 binary.Encode(v) binary.Encode(v) 解码 binary.Decode(&v) bina...

2016-12-12 14:53:41

阅读数 1000

评论数 0

go实现一个简单的游戏服务器框架(lotou)网络通信

代码仓库,目前代码比较粗糙,欢迎各种改进建议。 网络通信相关代码请查下以下链接(https://github.com/sydnash/lotou/tree/master/network/tcp)目前网络通信只实现了基于go的tcp的通信。go的tcp相关的主要接口 net.JoinHostPo...

2016-12-09 10:37:44

阅读数 3288

评论数 0

go实现一个简单的游戏服务器框架(lotou)基本设计

代码仓库,目前代码比较粗糙,欢迎各种改进建议。 以为go语言原生支持高并发(goroutine)和通信机制(channel),所以首先想到的就是使用这两个东西来构建我的消息分发机制。 核心思路: 有一个core模块维护了所有的服务 当有消息发送的时候,通过该core模块将消息发送到对应服务器的...

2016-12-08 16:08:01

阅读数 3372

评论数 0

go实现一个简单的游戏服务器框架(lotou)起源

最近一直想学习一些关于游戏服务器的知识,显示看了一下云风的skynet框架,从而对于一个游戏服务器框架有了一个基本概要了解。先来说说我对于skynet的一些理解吧。skynet理解skynet只完成了服务器最核心的一部分功能,必须消息分发,必须服务的创建、销毁以及服务间的通信。 skynet中最...

2016-12-08 15:30:30

阅读数 5511

评论数 0

go 内置函数

go 的内置函数不拥有前面提到的go的标准类型,因此内置函数不能作为一个函数值赋值给函数类型的变量。closeclose用于关闭一个channel,使用close函数要注意以下几点: 关闭一个只接受的channel会导致错误 在一个已经关闭的channel上发送数据会导致panic 关闭一个nil...

2016-12-08 13:54:45

阅读数 1894

评论数 0

提示
确定要删除当前文章?
取消 删除