libfeihu Blog

libfeihu Blog


以普通用户启动的Vim如何保存需要root权限的文件

以普通用户启动的Vim如何保存需要root权限的文件

在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'readonly' option is set (add ! to override) [read more]

NBA 38大催泪瞬间:假如

NBA 38大催泪瞬间:假如

此篇文章无关乎技术!献给热爱篮球的朋友! [read more]

知无涯之std::sort源码剖析

知无涯之std::sort源码剖析

从事程序设计行业的朋友一定对排序不陌生,它从我们刚刚接触数据结构课程开始便伴随我们左右,是需要掌握的重要技能。任何一本数据结构的教科书一定会介绍各种各样的排序算法,比如最简单的冒泡排序、插入排序、希尔排序、堆排序等。在现已知的所有排序算法之中,快速排序名如其名,以快速著称,它的平均时间复杂度可以达到O(N logN),是最快排序算法之一。 [read more]

知无涯之C++ typename的起源与用法

知无涯之C++ typename的起源与用法

侯捷在Effective C++的中文版译序中提到: C++的难学,还在于它提供了四种不同(但相辅相成)的程序设计思维模式:procedural-based, object-based, object-oriented, generics 对于较少使用最后一种泛型编程的我来说,程序设计基本上停留在前三种思维模式当中。虽说不得窥见高深又现代的泛型技术,但前三种思维模式已几乎满足我所遇到的所有需求,因此一直未曾深入去了解泛型编程。 [read more]

深入理解log机制

深入理解log机制

最近在部门内部做了一个关于log机制的知识分享,深入的探讨了log机制中各种概念的来源、常用log库的用法、内部处理流程,以及如何在一个涉及多台主机的复杂系统中部署log等问题。本文是对这次分享的总结,将对这些问题一一展开介绍。 [read more]

记一次当前工作目录问题的排查经历

记一次当前工作目录问题的排查经历

最近在使用ClearCase的时候遇到一个问题,当从命令行里启动版本树,并想给一个节点打上review属性时,经常会出现一个命令窗口一闪而过,刷新版本树之后却没能找到想要打的review属性,只有再次尝试才会正确打上。大家忍受了这个问题很久,但一直都没时间去深入分析它。在连续几次遇到这情况之后,我觉得忍无可忍,下定决心解决它,最终找到了问题的根源并给出了解决方案,在这里详细记录一下这次排查的经历。 [read more]

谁打印了这个字符串

谁打印了这个字符串

前段时间在调试时遇到一个问题,运行程序出现错误,但并没有足够的信息来定位错误所在。可喜的是控制台上输出了一些可疑信息,只要找到了哪里打印了这些信息便有可能推断错误的原因。然而由于程序过于庞大,不可能一步一步跟踪调试去查找哪条语句执行后输出了这段字符串。尝试在所有的代码中搜索这段字符串也无功而返。后来突发奇想,能否在输出字符串时设置一个条件断点,只要输出的这段信息就中断,这样就可以在中断后找到何处打印了这些可疑信息,进而解决程序的问题了。 [read more]

跟我一起学习VIM - The Life Changing Editor

跟我一起学习VIM - The Life Changing Editor

前两天同事让我在小组内部分享一下VIM,于是我花了一点时间写了个简短的教程。虽然准备有限,但分享过程中大家大多带着一种惊叹的表情,原来编辑器可以这样强大,这算是对我多年来使用VIM的最大鼓舞吧。所以分享结束之后,将这篇简短教程整理一下作为我2014年的第一篇Blog。 [read more]