08 2013 档案
摘要:今天valgrind 排查一下程序里的坑, 结果发现有几处未初始化的警告, 看了看代码, 是struct epoll_event结构体, 实际上根本没有问题, 只是valgrind不理解上下文的误判. 为了清理valgrind报错, 我就直接给struct epoll_event[64] = {0}; , 这样就消掉了错误, 可是接下来Profile却惊人的悲剧了. 我发现改了之后的代码CPU消耗是原来的2倍, profile里表明 = {0}最终被编译器转化成了memset, 我开的可是gcc -O2, 这算啥事. 总之, 慎用, 尤其别用在关键代码路径上, 并且不要用在较大的...
阅读全文
摘要:在做服务端开发的时候,对于来自客户端的请求以及返回客户端的应答都需要使用一段内存来缓冲数据,传统做法就是定长缓冲区,像这样: char readbuf[4096]; char writebuf[4096]; 在你确定单个请求极限大小的情况下, 上面的定义也并不合理, 比如网络状况极差的情况下, writebuf的容量可能无法容纳待送出的应答, 这种情况只能无奈的断掉用户连接, 这并不合理. 于是, 一个改进的方法:char *readbuf;char *writebuf; 当缓冲区满, 我们通过realloc扩容, 保证总是能装得下数据, 上面的问题算是解决了. 然而, 将...
阅读全文
摘要:讲解bind+function与多态抽象的比较
阅读全文
摘要:博客会记录工作中遇到的问题啊, 或者有价值的技术之类的, 也扯点生活上的思考, 希望对大家能有点帮助.
阅读全文

浙公网安备 33010602011771号