归档 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 <iostream>
#include <memory>
#include <string>
#include <vector>
#include ...

最后更新于 .

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;
//此时B中的m_pA已经无效 ...

每日归档

上个月

2011年5月

下个月

2011年7月

归档