再谈对非阻塞的理解

一般来说,现在大家 epoll 都是搭配着非阻塞 IO 一起用的,要问为什么?大家都这么用的啊,而且异步嘛,非阻塞嘛,很自然嘛 但是,非阻塞 IO 具体是怎么对 send 和 recv 起作用的。一般理解,我们之所以要用非阻塞,是为了避免这种情况: 客户端跟我们 tcp 三次握手完了,我们 listen fd 上得到一个 IN 事件了,然后 acc……

阅读全文

getdatetimestr

下午写了这么一个函数 char* getdatetimestr() { static char datetimestr[32] = {0}; static time_t last_update_time = 0; struct timeval tv = {0}; gettimeofday(&tv, NULL); time_t nowtime = tv.tv_sec; if (nowtime != last_update_time) { last_update_time = now……

阅读全文

iOS 微信如何收藏动画表情

网上看了一些办法,都不靠谱,实践下来,其实方法如下: 在电脑上登录 Windows 微信(网页版不行) 把要收藏表情的那个网页分享到文件传输助手 在 Windows 上打开网页,把动画表情保存到桌面 从桌面把文件拖入文件助手的聊天窗,发送出去 在手机上收藏,完成 好吧,这明显又是一篇水文,但是没办法,这种文章搜索引擎才……

阅读全文

netty 初窥

先说结论,总体感觉很好,比 cpp 上的 nio 框架好。 缘起是一个同学来问 java web 的问题,帮他调了一下,两年没怎么碰过 java web 的东西了,各种生疏,而且在调试的过程中,也再次感觉到 java 这个东西实在不适合做 web,一个是重,ssh 框架一上来就给人压得喘不过气的感觉,新增一个功能,要 spring struts 里面 xml ……

阅读全文

boost optional 以及 operator bool

boost 库有一个组件,叫做 optional,用来保存一些可有可无的成员变量,说明见这里,http://www.boost.org/doc/libs/…,样例用法如下 #include <boost/optional.hpp> #include <stdio.h> #include <string> int main() { boost::optional<std::string> name; if (name) ……

阅读全文

动态链接库中的全局变量

想给自己之前的日志库,加一个染色的功能 gcc 有一个自己的特性,叫 __thread,介绍可以看这里,https://gcc.gnu.org/onlinedocs…,是可以用来修饰一个全局变量,从而让这个全局变量在每个线程都有一份拷贝,例子如下: #include <stdio.h> #include <unistd.h> #include <pthread.h> #inc……

阅读全文

(void)var 是在干嘛

最近在看 muduo 的代码,看到类似这样的写法: size_t n = activeTimers_.erase(timer); assert(n == 1); (void)n; 而且不止一处,于是就很好奇,这种 (void)var 是在干嘛,查了一下,这里说道,http://stackoverflow.com/quest… It works around some compiler warnings. Some compilers will warn if you ……

阅读全文