codesun 发布的文章

谈谈writev的问题

POSIX提供了一个比write函数更加高级的writev,在很多场景下,它相对于write有一定的优势。

APUE一书将writev的介绍放在了Advanced I/O部分,个人拙见,它和write应该是属于同层次的IO,谈不上Advanced。

最近,我在重写HTTP解析器的时候用到了writev,发现它并不如想象中的方便,甚至相当坑,有必要记录一下,或许对大家有所帮助。

阅读剩余部分

C++ 虚函数表及调用规范

很久没写博客了,最近实验室项目赶进度,有点忙不过来,先把之前的坑填上。

在支付工具想做社交,即时通讯工具想做app市场,英语字典想做新闻社交的今天,创造这些怪象的公司要求程序员懂得更多几乎是理所当然的,毕竟现在大家什么都想做。这不,正值招聘季,实验室的几位学长也是一直在讨论各种问题,发现对于C++而言,问的最多的还是虚函数表和STL。

STL的考点至少是实用的,哪怕要求你读过源码,也并不过分,毕竟知根知底才能更好地应用。但要求程序员掌握对象模型着实拎不清,因为这几乎用不到,远没有在设计模式上投入时间实在,或许它们最希望的是拿批发价招语言专家。。。

阅读剩余部分

dnsmasq 部署笔记

发现实验室留着5台主机没人用,反正闲着也是闲着,于是琢磨着部署个集群玩玩,貌似有很多东西并没有亲自体验过,如ceph,mesos,kubernetes等,之后应该会贴出相关的笔记。

无论部署什么服务,只要是分布式的,基本离不开域名解析,因为我基本记不住IP,所以DNS服务就很必要了。

本文为我在ubuntu上配置DNS服务的笔记,这里ubuntu的版本为16.04,DNS程序为DNSmasq。

阅读剩余部分

POSIX进程组笔记

题目起得有点大,这里加上POSIX只是为了说明本文描述并不是windows下的进程。

前几天遇到了一个问题,在terminal触发ctrl+c,也就是发送SIGINT信号后,程序的所有进程都收到了该信号,觉得有点奇怪,故收集并整理了相关资料。

本文为我的笔记,可能有不正确的点,望指正。

阅读剩余部分

多进程日志实现

在绝大多数情况下,日志模块对于一个程序而言是必不可少的,对于服务端程序的重要性尤甚。

因为几乎所有服务端程序都是作为守护进程而运行的,因此指望开发者从terminal获取程序的状态并不现实,这个时候,依靠日志记录关键信息就很重要了,当然日志的作用远不止记录信息,它还可以用于恢复,相信从事数据库开发的读者对这应该十分熟悉,但这不属于本文的范畴。

对于Java开发者而言,他们是很幸福的,因为有log4j,甚至还有slf4j,而对于C语言而言,并没有发现同等地位或者功能的日志库,更别提类似slf4j之类的日志库抽象层了。于是,我拿起键盘,再次造起了轮子。

本文谈及的实现是为了多进程程序而设计的,简单而有效是我们追求的目标,通常而言简单的程序性能不会太差,当然乱用锁的除外。

阅读剩余部分