[返回] [最新] [最热门] [最高评价]

秋天

今天武汉起了大风,温度骤降。秋天说到就到了。

前段时间一直住在杭州高强家,我们隔一天去一次可笑岩壁,蚂蚁啃大树一般一点点的清理岩壁,打洞装挂片。夏天和灰风两条线路都完成了,难度都不高,大约一条在 5.10a 另一条在 5.10b 左右。

我发现我的攀岩技术有很大进步。原本我的身体素质不太适合玩这个,一直以来进步也非常缓慢。许多同学苦练两个月就能爬 5.12 的难度,但是我做不到。不过经过这两个
...

云风 2011-09-17 21:03 | 查看: 12991

读了一点 go 的源码

首先是 runtime 里的 hashmap ,想看看 go 的 hashmap 和 lua 的有什么区别。

结论就是 go 的比 lua 的实现复杂的多 (lua 的 ltable.c 不到 600 行代码,go 的 hashmap.c 有超过 1500 行)。go 的 hashmap 更注重于空间效率。go 的 map 是有类型的,key value 类型都固定,存在类型描述结构里
...

云风 2013-08-15 18:17 | 查看: 6697

Buddy memory allocation (伙伴内存分配器)

今天吃晚饭的时候想到,我需要一个定制的内存分配器。主要是为了解决 共享内存 中的字符串池的管理。

这个内存分配器需要是非入侵式的,即不在要分配的内存块中写 cookie 。

而我的需求中,需要被管理的内存块都是很规则的,成 2 的整数次幂的长度。buddy memory allocation 刚好适用。

算法很简单,就是每次把一个正内存块对半切分,一直切到需要的大小分配出去。回收的时候,如
...

云风 2011-12-20 21:38 | 查看: 5201

Hive , Lua 的 actor 模型

上个周末我一直在想,经过一年多在 skynet 上的开发,我已经有许多相关经验了。如果没有早期 erlang 版本的历史包袱以及刚开始设计 skynet 时的经验不足,去掉那些不必要的特性后的 skynet 应该是怎样的。

一个精简过代码的 skynet 不需要支持 Lua 之外的语言和通讯协议。如果某个服务的性能很关键,那么可以用 C 编写一个 Lua 库,只让 Lua 做消息分发。如果需
...

云风 2013-06-26 19:10 | 查看: 5166

ZeroMQ 的模式

在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go 都使用这一手段来让并行任务之间协同工作。

最近读完了 ZeroMQ 的 Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ 把消息通讯方面的模式总结的很不错。

ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的
...

云风 2011-02-25 14:27 | 查看: 4704

Lua GC 的源码剖析 (4)

今天来看一下 mark 过程是怎样实现的。

所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。

开始的两个状态和 mark 过程有关。

初始的 GCSpause 状态下,执行 markroot 函数。我们
...

云风 2011-03-31 01:02 | 查看: 3922

Lua GC 的源码剖析 (2)

早期的 Lua GC 采用的是 stop the world 的实现。一旦发生 gc 就需要等待整个 gc 流程走完。如果你用 lua 处理较少量数据,或是数据增删不频繁,这样做不是问题。但当处理的数据量变大时,对于实时性要求较高的应用,比如网络游戏服务器,这个代价则是不可忽略的。lua 本身是个很精简的系统,但不代表处理的数据量也一定很小。

从 Lua 5.1 开始,GC 的实现改为分步的。虽
...

云风 2011-03-28 14:45 | 查看: 3848

libuv 初窥

过年了,人都走光了,结果一个人活也干不了。所以我便想找点东西玩玩。

今天想试一下 libev 写点代码。原本在我那台 ubuntu 机器上一点问题都没有,可在 windows 机上用 mingw 编译出来的库一个 backend 都没有,基本不可用。然后网上就有同学推荐我试一下 libuv 。

libuv 是 node.js 作者做的一个封装库,在 unix 环境整合的 libev ,而在 w
...

云风 2012-01-20 23:18 | 查看: 3202

我们的新游戏《心动庄园》上线啦

《心动庄园》已经开发超过了一年半,其实去年这个时候我们已经在内测了,折腾了很久,改来改去的。

之所以项目折腾超过了预期时间这么久都没有被公司砍掉,纯粹是因为开发者对这款游戏是真爱。所有开发人员,甚至包括程序,都花了大量时间玩它,并喜欢它。你可以想想,反复改了一年多还留有爱,那不是真爱是什么?所以即使开发预算超标,公司的管理层也不舍得砍掉它。

这是款农场经营游戏,一开始立项是因为我们公司有很多人
...

云风 2015-08-25 22:49 | 查看: 2955

pbc 库的 lua binding

前几天写的 pbc 初衷就是想可以方便的 binding 到动态语言中去用的。所以今天花了整整一天自己写了个简单的 lua binding 库,就是很自然的工作了。

写完了之后,我很好奇性能怎样,就写了一个非常简单的测试程序测了一下。当然这个测试不说明很多问题,因为测试用的数据实在是太简单了,等明天有空再弄个复杂点的来跑一下吧。我很奇怪,为什么 google 官方的 C++ 版性能这么差。


...

云风 2011-12-14 22:44 | 查看: 2727

C# 版的 Lua

我们游戏客户端使用了 Unity3D , 我们不打算给它写 C 插件, 所有的开发都在 mono 中进行的。

由于某些需求,我们需要在客户端解析一些 Lua 脚本(这些脚本同时供我们的服务器使用)。所以,就有了阿楠同学开发的 UniLua 。

这个世界上已经有了很多的 .net 版的 Lua 实现,但是都不完整。它们大多是基于 Lua 5.1 甚至更老的版本的。还有一些只能解析 Lua 的字节
...

云风 2013-02-01 14:13 | 查看: 2706

使用 luajit 的 ffi 绑定 zeromq

最近 Lua 社区非常活跃。6 月 22 日发布了 Lua 5.2.0 (beta-rc2) 。今天(6 月 24 日) 发布了 LuaJIT-2.0.0-beta8 。

虽然 luajit 和 lua 5.2 还有点小矛盾,luajit 没有完全支持 lua 5.2 的迹象。不过,这些对 Lua 社区都是好消息啦。可能对于 lua 用户会有点小纠结,到底是追随官方的 5.2 版呢,还是去用性能
...

云风 2011-06-24 19:02 | 查看: 2476

...更多...