关于使用chroot导致程序不能获取时区的问题

之前遇到一个很奇怪的问题,就是程序更新之后所记录的日志中时间突然不对了。仔细的检查了日志文件后发现程序启动时所记录的时间是正确的 +8 时区时间,但是进入事件处理循环之后所记录的时间变成了 UTC 时间。

经过一个无比痛苦和纠结的反复检查过程之后,终于发现问题是由于程序中新增的 chroot 调用导致的。

chroot是在unix系统的一个操作,针对正在运作的软件进程和它的子进程,改变它外显的根目录。 ...

以 Nginx 为例谈高性能服务端程序设计原则

Nginx 是一个高性能的 HTTP 和反向代理服务器,与 Apache 相比 Nginx 在高并发的情况下有着更好的性能,因而在访问量较大的网站中得到了越来越广泛的应用。

Nginx 的高性能得益于多个方面,本文不予深入探讨。这里仅仅以 Nginx 为例探讨高性能服务端程序的设计原则。

影响服务端程序性能的原因可以被总结为以下几点:

1、阻塞的方法调用

任何时候都不应该调用阻塞的方法,除非没有非阻塞的版 ...

整数溢出问题

在使用 C/C++ 编写的程序中,缓冲区溢出是一个臭名昭著的问题。想必在每一堂 C 语言课程上都会被提及和强调。然而,相对而言缓冲区溢出也是比较容易检测的。对于有经验的程序员来说,比较容易排查和避免。

与缓冲区溢出相比,整数溢出是一个更加隐蔽的问题。与缓冲区溢出导致攻击者可以执行恶意代码不同,整数溢出的后果是程序无法正确的进行判断和检查,其危害取决于该段程序的具体流程。

为什么说整数溢出更加隐蔽呢?因 ...

如何缩短网址

问题1:有些时候我们不希望直接在URL中使用数字ID,原因之一是数字ID显得有些太长了。那么如何使它变得短一些呢?
问题2:相似的需求也出现在微博的短网址服务中。我们如何把一个较长的网址与一个较短的网址对应起来呢?

最容易想到的方法大概是使用哈希函数把URL映射到相应的字符串上。但是使用哈希函数不可避免的会出现冲突的问题。并且,常用的哈希算法(例如MD5、SHA1、CRC32)生成的字符串比较长,不能 ...

在 Windows 下建立符号链接

如果开始使用 Windows,如何建立快捷方式大概是最早教授的使用技巧之一。但是非常糟糕的一点是,快捷方式只能被 Windows 的资源管理器所理解,在其它软件——例如 Apache——看来,快捷方式不过是一个普通的文件。

于是,我们需要一种文件系统层面的“快捷方式”,它能够对所有应用程序都有效。在 Linux 下我们可以通过 ln 命令来创建这样一种被称作“符号链接”的东西。

当然,在 Window ...

为什么要使用Git而不是SVN?

为什么要使用Git而不是SVN?

这个话题或许会带来一些争议,因为Git和SVN确实由于其不同的设计理念而各有优点。这里仅就我个人在使用过程中的一些感受进行阐述。

1、SVN必须要联网才能工作。

这并不一定是指连上互联网,因为SVN服务器往往设置在局域网内。并且,由于某些众所周知的原因,SF.NET 等提供的服务经常中断,导致无法提交更改。

而Git可以在任何时候进行commit,而仅需要在有网络连接的时 ...