归档 2011年6月

最后更新于 .

emacs中有gtd模式,那vim是不是也可以实现呢?当然可以! 只要搭配vimwikisnipmate,再加上笔者写的插件vimgtd,就可以完美实现gtd的功能,目前实现的功能如下:

  1. 查看今天待完成的任务
  2. 查看所有待完成的任务
  3. 查看过去某天已完成的任务
  4. 快捷创建任务,标记为已完成
  5. 以不同的颜色标识 未开始、进行中、过期、已完成 状态的任务

一.安装方法

二.使用说明 如功能列表里面提到的,我们一步步来操作

  • 查看今天要完成的任务列表 输入如下命令:
    :TaskToday
    
    此时的界面应该是空的,因为我们还没有创建任何任务。现在在编辑区输入 ...

最后更新于 .


博客这几天由于服务器的问题打不开,在这里跟大家抱歉啦

老读者应该都知道,笔者有两个开源项目,分别是:

fuload: 性能测试工具,可以用来给服务器做压力测试
bayonet: 基于两层状态机的epoll服务器框架

对于fuload的介绍,请看这里:
fuload开源压力测试框架完成!

对于bayonet的介绍,请看这里:
有限状态机的C++实现(1)-epoll状态机
有限状态机的C++实现(2)-bayonet开源网络服务器框架

之前由于工作等原因,bayonet一直被搁置,最近有时间,所以就抓紧把bayonet完成了,目前功能上基本已经OK了,我简单列一下功能点:


  1. 接管了网络,调用方只需要关心业务逻辑

  2. 配置的方式,快速切换TCP-UDP

  3. 快速的增加加状态机的状态,业务可以无限拓展


代码编写中,也用到了很多技术,如引用计数来保证野指针不被访问(通过引用计数解决野指针的问题(C&C++)),延迟析构对象,等等。

由于详细介绍是个很庞大的工作,所以这里就直接放出一个基于bayonet写的http代理,我们来看一下,只需要多少代码:


#include
#include
#include
#include
#include
#include

#include "bayonet_frame.h"
using namespace std;

#define APP_FSM_PROXY 2000
#define APP_FSM_LOGIC2 2001

/**
* @brief 获取ContentLen的数字的起始和长度
*
* @param strHttpBuf
* @param len
*
* @return
*/
size_t GetContentLenPos ...

最后更新于 .

C/C++代码中,野指针问题历来已久,当然,大家都知道new/delete要成对出现:


A *p = new A();
delete p;
p = NULL;

然而现实中却并不是总是如此简单,考虑如下例子:


class A
{
public:
C() {}
virtual ~C() {}
};
class B
{
public:
B() {
m_pA = NULL;
}
virtual ~B() {}

void SetA(A* p)
{
m_pA = p;
}

private:
A* m_pA;
};

A* pA = new A();
B* pB = new B();
pB->SetA(pA);

delete pA;
pA = NULL ...

每日归档

上个月

2011年5月

下个月

2011年7月

归档