Tiny Concurrent Http Server on Windows and Linux

前段时间趁着春节,分别基于 IOCP 和 epoll 实现了 demo 级别的 http server(在遵守 http 1.1 socket 复用基础上只提供了某个指定目录下文件的 GET),算是简单的过了一下 proactor 和 reactor 模型下的 TCP 并发服务。

功能做的很粗糙,并且没有封装类似 event-loop 的东西,连接管理也基本算是纸糊的,原因还是前面说过的,只是想过一下两种模型,并且,在不研究当前流行的 paradigm 的前提下,凭借自己的 first understanding / hunch 去实现;等对这块有一段时间的研究后,作为参照,来回对比以加深理解。

Read More

被 FFmpeg 的日志模块撞了一下腰

周末的时候客服同学反馈有个用户出现了崩溃,并且要来了崩溃 dmp 文件。

挂上 windbg 后发现崩溃原因是 CRT 的 invalid-parameter 异常,第一现场是输出 ffmpeg 的 avcodec 模块的日志。

省略中间若干分析过程,直击结论:FFmpeg 的 Windows 构建并不是用 MSVC 编译的,因此在类似 printf() 函数的 format specifier 使用上出现了偏差。

Read More

在 VS C++ 的调试器中正确显示 UTF-8 字符串内容

众所周知,UTF-8 在 Windows 上一直都不是一等公民,在 MSVC 的调试器里,std::string 默认按照本地编码解释,在中文系统上是 GBK 或 GB2312。

于是,如果一个 std::string 或者 char[] 里存储的是 UTF-8 编码的字符串,那么非 ASCII 部分就会乱码。这在调试中是一个非常不好的体验。

Read More

Monthly Read Posts in Feb 2018

C++11 Concurrency Tutorial - Part 4: Atomic Types

Read More

靴子落地

2018年2月25日

是日

靴子落地

https://music.163.com/#/song?id=93175

Read More

2017 小结

上一次写年终总结大概在三四年前,因为老博客数据没有备份的缘故,具体是什么时候也记不清了。

BTW,其实我也不是很记得一开始为什么要在春节期间而不是元旦时写上一年的总结。可能和往常元旦时还未放假有关。

17年总体上还算符合个人发展的预期:

上半年接了原来主站投稿工具的锅,和另外一个同事花了一个月多,完全从头开始硬生生的做了一个新版本的投稿工具,还带着新版本要求的压制功能。后续又迭代了两三个版本,后面最新的 v2.0 甚至都已经开始支持简单的视频编辑。

Read More

使用 Winsock Extension API 的正确姿势

所谓的 Winsock Extension API 指的是微软专门额外添加,由应用层 mswsock.dll 导出的函数集,包括 AcceptEx(), DisconnectEx() .etc

使用这部分 API 的原因是它们通常支持更新更牛X的特性,且几乎大多数都是异步函数。

Read More