自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 开源一个lua rpc framework

基于libevent2的lua rpc 框架,单进程单线程模式,项目开发别阶段可以以单进程多线程模式开发,可以轻松的加入的游戏服务器中。简单易用的socket接口,轻松搭建出分布式系统提供简单的mongodb,redis驱动,lua调试器,lua热点堆栈分析器,lua死循环抛出,基于gperftools的性能分析器和内存分析器,lua层异步等待进程退出等模块。点击打开链接htt

2018-01-18 13:44:52 1887

原创 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 1871

原创 讲讲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 5766

原创 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 2900 2

原创 lua的注册表,_ENV,_G

之前读书的时候,比较喜欢玩python,对于lua,就知道专门用来做游戏脚本的,一直没机会接触到。有幸的是,今年进入了一个新项目,用到了lua.我做事不喜欢不明不白,所以在使用lua过程中遇到不明一般都喜欢看源码探其原由。lua51和lua52都有一个叫全局表_G,遍历这个表就可以知道,这个表保存了lua所有的全局函数和全局变量。而到了lua52,有个叫_ENV的玩意,遍历这个表也知道

2013-09-09 00:11:07 5675 1

原创 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 855

原创 用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 1272

原创 在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 2668

原创 用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 1438

原创 用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 2181 1

原创 用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 2344

原创 把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 959

原创 好非主流的内存池用法,参考了某大牛的写法改造了一下。

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 1579

原创 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 2296 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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