Archive for the ‘个人开源项目’ Category

实现了一个协程库

cialis pas

Lua的一个问题

viagra belgique

最近对qnode进行压力测试,结果很不理想.前期只顾着赶功能,没有进行单元测试,只是简单的进行一些测试,所以现在打算回过头来对一些基础模块写测试用例.

这是本篇的题外话了,在压力测试qnode的时候,由于qnode是使用的actor模型,每个actor会有一个lua协程,但是在做压测的时候,会创建出很多actor这样就出了问题,来看看lua_newthread这个用来创建协程的函数:

Lua5.1.4代码分析(二十三)-如何实现Lua代码的热更新

能很好的支持代码热更新机制,是大部分选择要嵌入脚本语言的原因之一。好处很简单,脚本代码可以热更新的话,调试和线上解决问题都可以不用重启程序了,对开发效率有很大的帮助。

今天就来谈谈Lua代码如何实现热更新。

先简单回顾之前提过的模块和require机制。Lua内部提供了一个require函数,来实现模块的加载,它做的事情主要是以下几个:
1)

qnode 0.1发布

大概半年前提到的qnode项目,实际上我在这半年里一直不停的ci代码。不过最近改变思路,决定时不时发布一个小版本,包含几个新的特性,有点类似互联网产品中的快速发布敏捷迭代。这样的好处是,其他人能看到这个项目的进度,我也有一个比较明确的短期目标去开发。

0.1版本主要做的是这几件事情:

类Erlang项目qnode

我在2010年开始接触Erlang,后来2011年开始抄Erlang实现的Riak项目来学习Erlang使用。在这之前,我基本上都在使用C++来编写服务器代码,大部分的C系服务器中,不管是reactor还是proactor模型,在处理非阻塞I/O问题时,都会采用注册回调函数的方式来处理异步I/O,本质上回调函数就是个函数指针,但是经常要带上一些参数的话,复杂一点的可能就会采用C++模板。当逻辑复杂起来时,这样写出来的代码是很难看的,对阅读者而言难,在调试问题时对调试者而言也是个问题。

Erlang采用了另一种方式解决这样的问题。在Erlang中可以创建所谓的“微进程”,当由于I/O等原因可能造成阻塞时,Erlang

十字链表的AOI算法

看了云风写的

向eventrpc 客户端加入异步/同步操作

之前的实现中,使用一个单独的Dispatcher类,用于分发网络事件,但是这个类也是在主线程中的,这样带来的问题,诚如上一篇文章说的那样, 不能支持异步事件的通知.对客户端而言,当发出一个请求时,必须阻塞等待回复的返回.

于是,今天抽出时间,将Dispatcher类实现为与线程绑定,它运行在副线程中.

使用google protobuf RPC实现echo service

这篇文章将讲述如何使用google的protobuf库实现一个RPC service,就实现一个最简单的service吧:echo.
文章对应的代码都可以在eventrpc中找到,写下这篇文章时的svn revision是138.

1) 定义协议
首先需要为这个service定义proto文件, 如下:

package echo;

message EchoRequest
{
  required string message = 1;
};

message EchoResponse
{
  required string response = 1;
};

service EchoService
{
  rpc Echo(EchoRequest)

mktags相关文章收集

1) mktags–根据指定的文件路径以及文件类型生成ctags以及cscope索引文件的工具

2) mktags0.2版本发布

3) mktags0.3版本发布–支持指定某个目录的搜索深度

4) mktags0.4版本发布–支持添加删除搜索目录

eventrpc相关文章收集

1) 集成libevent,google protobuf的RPC框架

Pages: 1 2 Next