写个博文其实也没什么特别要说的。研究node.js的过程中扩展了socket.io的聊天室demo,仿制了一个动漫DRRR(无头骑士异闻录)中的聊天室。使用邀请制,即注册需要提供邀请码。头一次在GitHub建项目:DRRR-chat-room。下个项目可能是用socket.io做一个真·实时弹幕站,尽请期待。
node.js的'Cannot enqueue Handshake after invoking quit'错误
今天用node.js做无刷新聊天室的时候遇到”Error: Cannot enqueue Handshake after invoking quit.”的问题,在Stack Overflow被点化了。
【五】nginx的数据结构(3)——扩展红黑树
基础版的红黑树写完之后总觉得有些辅助功能不补充一下就难以体现红黑树在统计方面的优越性,于是我又写了红黑树扩展版。
Linux下Sublime的C/C++多文件程序Makefile+清理+执行配置
不自己动手为Sublime配个C/C++的通用Makefile脚本吗?不能自动编译链接多文件的编辑器不是好IDE。
【四】nginx的数据结构(2)——自己动手重写红黑树
不管看了多少遍有多滚瓜烂熟,数据结构或者算法的代码如果不亲自码一遍,我总是不敢说自己懂了。这次就来自己动手重写红黑树。
C语言的static关键字
static这个关键字可谓熟悉又陌生,要比较系统地理解它,更好地使用它,需要对它有更加深入的了解。
【三】nginx的数据结构(1)——ngx_int_t与ngx_rbtree_t
就来挑两个特别的数据结构ngx_int_t、ngx_rbtree_t作为研读nginx源码的开始吧。
【二】nginx源码文件结构浏览
要读大项目的源码,最好还是先把项目文件组织结构弄清楚,这样后面找源码会比较方便,对整体项目的架构也能有一个具体一些的概念。
【一】nginx核心架构概述
毕业前,毕设完成后,我闲极无聊接触了一下socket编程,用C++的Qt框架写了玩具一样的TCP和UDP通信客户端。跟直系学长电话聊天时被建议深挖一下socket,尝试走走后端或者架构师路线。问该怎么深挖,答研究源码,要学习socket相关知识,研究服务器源码是最合适不过的了。至于选择哪个服务器,经过考量调查,发现比起比较沉重庞大的apache,nginx更加小巧,也非常优秀。于是在开始正式吃源码之前,我先开始了一番自我科普工作。
Qt出现错误undefined reference to 'vtable for XXXXX.XXX'
如果新建一个类,继承了某个类,在这个类的头文件中式没有 Q_OBJECT宏声明的,如果想使用signal-slot信号,就需要添加Q_OBJECT宏,但是添加了这个宏后,就可能会出现这种错误,“undefined reference to vtable for XXXXX”的编译错误。
这是因为在Makefile里面没有这个类并没有Q_OBJECT信息,所以在执行Makefile时候也就没有moc xxx.h这条命令,最终导致连接失败。
知道了这个原因后,解决方法就很简单了,重新运行qmake,生成Makefile,然后再编译就OK了。