- 博客(14)
- 收藏
- 关注
原创 开源一个lua rpc framework
基于libevent2的lua rpc 框架,单进程单线程模式,项目开发别阶段可以以单进程多线程模式开发,可以轻松的加入的游戏服务器中。简单易用的socket接口,轻松搭建出分布式系统提供简单的mongodb,redis驱动,lua调试器,lua热点堆栈分析器,lua死循环抛出,基于gperftools的性能分析器和内存分析器,lua层异步等待进程退出等模块。点击打开链接htt
2018-01-18 13:44:52
1945
原创 lua table 的rehash
先看rehash实现:static void rehash (lua_State *L, Table *t, const TValue *ek) { int nasize, na; int nums[MAXBITS+1]; /* nums[i] = number of keys with 2^(i-1) < k <= 2^i */ int i; int totaluse;
2015-04-06 21:43:04
1932
原创 讲讲table.insert
先看table.insert调用的C函数:static int tinsert (lua_State *L) { int e = aux_getn(L, 1) + 1; /* first empty element */ int pos; /* where to insert new element */ switch (lua_gettop(L)) { case 2:
2015-04-06 21:34:05
5849
原创 lua table的长度问题
细谈一下lua里很多人有疑问的table长度问题。1. > tbl = {1,2,3} > print(#tbl) 3 > 2. > tbl = {1,nil,3} > print(#tbl) 3 > 3. > tbl = {1,nil,3,nil} > print(#tbl) 1 > 情况1正常,情况2有点不正常,情况3很不正常,好
2015-04-06 20:40:17
2963
原创 lua的注册表,_ENV,_G
之前读书的时候,比较喜欢玩python,对于lua,就知道专门用来做游戏脚本的,一直没机会接触到。有幸的是,今年进入了一个新项目,用到了lua.我做事不喜欢不明不白,所以在使用lua过程中遇到不明一般都喜欢看源码探其原由。lua51和lua52都有一个叫全局表_G,遍历这个表就可以知道,这个表保存了lua所有的全局函数和全局变量。而到了lua52,有个叫_ENV的玩意,遍历这个表也知道
2013-09-09 00:11:07
5766
原创 python写的daemon进程
import sys, os, time, atexitfrom signal import SIGTERMimport signalimport subprocessclass Daemon: def __init__(self, stdin='/dev/null', stdout='/home/workspace/py_server/engine.log', std
2012-08-30 14:43:42
876
原创 用python的tiwsted实现一个定时器
class Timer: def __init__(self): self.reactor = None self.interval = Interval() self.tple = None self.cancel_flag = False def update_reactor(self,
2012-08-26 19:03:30
1302
原创 在python的twisted中reactor信号处理
昨天写了一个简单的游戏服务器,在终端启动的时候,奇了个怪了,按CTRL+C,无法把进程停下来,当再次启动时报CannotListenError: Couldn't listen on any:2404: [Errno 98] Address already in use.错误,查了一下,原来在python中,非主线程不能处理信号,而twisted中epollreactor.EpollReact
2012-08-24 18:38:02
2727
原创 用python的twisted做个简单游戏服务器原形--客户端逻辑ClientService类
'''Created on 2012-8-14@author: qs'''from monitor import Monitorfrom clientservice import ClientServiceimport structclass ClientMonitor(Monitor): def __init__(self): Monitor
2012-08-23 23:32:40
1466
原创 用python的twisted做个简单游戏服务器原形--客户端消息处理和重组类MessageQueue
'''Created on 2012-8-14@author: qs'''import threadingimport threadimport timeimport structclass MessageQueue(threading.Thread): def __init__(self, monitor): threading.Threa
2012-08-23 23:27:05
2210
原创 用python的twisted做个简单游戏服务器原形--客户端连接monitor管理类
'''Created on 2012-8-14@author: qs'''#from twisted.internet import epollreactor#epollreactor.install()from twisted.internet import selectreactorselectreactor.install()from twisted.internet.p
2012-08-23 23:23:41
2376
原创 把ACE的ACE_Hash_Map_ManagerEx改写了一下
在写dl engine的时候,一直不想依赖于其它库,但hash map这种常用的map肯定会经常用到,而stl的hash_map非线程安全,就打算自已把stl 的hash map或者ACE的hash map改写一下。因为最近一直在用ACE做项目,对ACE_Hash_Map_ManagerEx比较熟悉,就把它的源码看了几遍,发现ACE的hash map和stl的实现差不多,都是用桶开链法实现,不同点
2012-08-19 00:18:02
996
原创 好非主流的内存池用法,参考了某大牛的写法改造了一下。
namespace DL{template >class Memory{public: static void *operator new(size_t size); static void operator delete(void *ptr);private: static MUTEX __mutex; stati
2012-08-18 23:57:57
1603
原创 python struct模块应用.数据转换换成二进制流
class Buffer: def __init__(self, bytes=None, recogn=10000): if (bytes == None): self.length = 4 self.buffer = struct.pack('i', recogn) else: sel
2012-08-18 23:18:34
2334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人