C++函数调用过程解析

2014.05.01/2014.12.11发布于研究暂无评论#asm#call_stack#cpp#函数调用

用一个简单的例子解释C++函数调用的过程,备忘。

实验环境

以下是本次实验的环境配置

* 操作系统: Ubuntu 14.04 x86_64
* 编译器: gcc-4.8.2

开始之前

继续阅读...

输出并解析C++的调用堆栈

2014.04.25发布于研究暂无评论#call_stack#debug#gcc#linux#sigsegv

本文简要介绍在Linux上输出和解析C++的call stack的方法。

开发环境:

* 编译器: gcc 4.8.2
* 操作系统: Ubuntu 14.04 x86_64

输出调用堆栈

glibc中提供了backtrace()backtrace_symbols()两个函数来输出和解析程序的call stack,详情见man backtrace

继续阅读...

Win7系统下使用Grub4dos引导Ubuntu

2013.10.16/2016.01.22发布于研究暂无评论#grub2#grub4dos#ubuntu#win7#恢复引导

简要介绍在win7上使用grub4dos引导ubuntu的方法。以下假设win7系统的主分区为C盘,并且已经在同一硬盘上安装了ubuntu系统。

使用core.img引导

这个引导方法的关键是grub-inistall生成的core.img文件,需要注意的是,ubuntu各个版本中core.img文件的位置可能有差异。

Ubuntu 12.04    /boot/grub/core.img
Ubuntu 12.10    /boot/grub/i386-pc/core.img

如果上面两个位置都没有core.img文件,你需要手动运行grub-install来生成

继续阅读...

使用w3tc,ocp和cron让wordpress成为一个伪静态博客

2012.12.21发布于研究暂无评论#golang#php#static_blog#wordpress

前一段时间折腾了一会PelicanRuhoh这些静态博客引擎,不过因为舍不得wordpress的众多优秀主题和插件,最终没有迁移到静态博客引擎上,我果然是一个懒人。使用过静态博客引擎的人肯定对其闪电般的页面加载速度(nginx+静态文件)印象深刻,相较之下wordpress这类动态博客便差强人意。好在wordpress有众多的缓存插件,适当的配置之后页面加载速度会有很大的提高。不过这还不够,我想要的效果是,既有动态博客的便利也要有静态博客的速度。所以,免不了又要折腾一翻。

要让wordpress成为一个“伪静态博客“,至少要实现如下的几个功能:

  • 文章和页面必须被缓存,未注册用户访问时直接读取缓存的静态文件即可。这一点使用w3tc插件可以实现。
  • 使用Markdown撰写文章,这一点可以使用Markdown on Save Improved插件实现。
  • 社会化评论,可以使用Disqus, 多说灯鹭等社会化评论服务提供的插件实现。

使用w3tc有一个缺点,当写完新的文章后,文章存档、文章分类和标签这些页面将无法及时更新。一个解决的方法是,在w3tc的page cache里,将Garbage collection interval(垃圾回收间隔)设置的小一些会有所帮助。不过垃圾回收后,所有的页面缓存都会失效,然而绝大多数的页面并未改变,所以每次都重新生成所有的页面缓存有点资源浪费。

对此,我的解决方案是使用Optimus Cache Prime(ocp)爬取网站的sitemap.xml(使用Google XML Sitemaps v3 for qTranslate插件自动生成)来自动更新文章存档、文章分类和标签的页面缓存(w3tc会自动删除新文章的页面缓存)。要达到这一目的必须对ocp和Google XML Sitemaps的代码做一些修改。

继续阅读...

Wordpress Cache Plugin W3TC Test

2012.12.11发布于研究暂无评论#plugin#test#w3_total_cache#wordpress

使用Wordpress一段时间后,开始关注其性能问题,自然就要用到缓存插件。Wordpress的缓存插件挺多的,我只用过WP Super Cache和W3 Total Cache(以下简称w3tc),最终选择了w3tc,原因基于两点: 用apache bench简单测试过后发现w3tc略胜一筹; 另一点是w3tc集合了多种cache和minify功能,并且可配置性较高。

需要说明的是,本文重在展示w3tc的效果和分享使用经验,并不是一篇严肃和科学的测评,详细和专业的测评请移步WordPress Cache Plugin Benchmarks。之前在网上看到很多老外吐槽w3tc,说它配置麻烦且效果极差,甚至有人反映使用w3tc后网站性能比不用缓存插件还要差(-_-!),如果你对这些吐槽感兴趣,不妨参观下这里的评论: Use WP Super Cache for WordPress speed, not W3 Total Cache。这说明,缓存插件的效果极可能因使用环境而异,因此找到最适合自己的插件才是最重要的。

先介绍下我的服务器环境:

  • 服务器用的是Linode 512 Fremont机房,4核Intel Xeon Cpu,512M内存。
  • w3tc的Page Cache使用Disk:Enhanced模式,Minify、Database Cache和Object Cache均使用Opcode:APC模式。

用apache bench比较w3tc和wp super cache的结果就不再列出了,原因是差别不是特别明显,而且个人感觉可信度也不高。下面展示下用loadimpact.com测试裸奔(不用缓存插件)和使用w3tc的结果。

继续阅读...