<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[iverson_1的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/iverson_1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; iverson_1]]></copyright><item><title><![CDATA[Linux_源码阅读工具]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5775590</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5775590</guid><author>iverson_1</author><pubDate>Fri, 30 Jul 2010 09:49:00 +0800</pubDate><description><![CDATA[使用vim + cscope/ctags，就能够实现Source Insight的功能，可以很方便地查看分析源代码。关键词: vim, cscope, ctags, tags1. 查看vim是否支持cscope    $ vim --version | grep cscope 2. 编译支持cscope的VIM(--enable-cscope)    # USE="bash-completion cscope nls perl python -acl -gpm -minimal -ruby -vim-pag]]></description><category></category></item><item><title><![CDATA[Larbin_配置]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5775424</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5775424</guid><author>iverson_1</author><pubDate>Fri, 30 Jul 2010 08:53:00 +0800</pubDate><description><![CDATA[配置英文原版说明：http://larbin.sourceforge.net/custom-eng.html#larbin.conflarbin.conf ################################################ Who are you ?# mail of the one who launched larbin (YOUR mail)From larbin2.6.3@unspecified.mail# name of the bot (sent with http ]]></description><category></category></item><item><title><![CDATA[RB tree VS AVL tree]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5755559</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5755559</guid><author>iverson_1</author><pubDate>Thu, 22 Jul 2010 15:54:00 +0800</pubDate><description><![CDATA[AVL trees are actually easier to implement than RB trees because there 
are fewer cases. And AVL trees require O(1) rotations on an insertion, 
whereas red-black trees require O(lg n). 
In practice, the speed of 
AVL trees versus red-black trees will d]]></description><category></category></item><item><title><![CDATA[海量数据处理]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5752503</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5752503</guid><author>iverson_1</author><pubDate>Wed, 21 Jul 2010 14:30:00 +0800</pubDate><description><![CDATA[转自:http://www.yaronspace.cn/blog/index.php/archives/392发信人: phylips (星星||一年磨十剑), 信区: Algorithm
标  题: 大数据量，海量数据 处理方法总结
发信站: 兵马俑BBS (Thu Nov 26 16:32:38 2009), 本站(bbs.xjtu.edu.cn)
最近有点忙，稍微空闲下来，发篇总结贴。大数据量的问题是很多面试笔试中经常出现的问题，比如baidu google 腾讯 这样的一些涉及到海量数据的公司]]></description><category></category></item><item><title><![CDATA[sizeof和strlen]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5750059</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5750059</guid><author>iverson_1</author><pubDate>Tue, 20 Jul 2010 16:16:00 +0800</pubDate><description><![CDATA[一、好首先看看sizeof和strlen在MSDN上的定义：
首先看一MSDN上如何对sizeof进行定义的：sizeof Operator
sizeof expression
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type 
(including aggregate types). This keyword returns a value of type s]]></description><category></category></item><item><title><![CDATA[线性表]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5712463</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5712463</guid><author>iverson_1</author><pubDate>Sun, 04 Jul 2010 21:21:00 +0800</pubDate><description><![CDATA[// LinearList.h#ifndef _LINEARLIST_H_
#define _LINEARLIST_H_
#include 
using namespace std;
template 
class LinearList
{
public:
	virtual bool IsEmpty() const=0;
	virtual int Length() const=0;
	virtual bool Find(int i, T& x) const=0;
	virtual in]]></description><category></category></item><item><title><![CDATA[export]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5712408</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5712408</guid><author>iverson_1</author><pubDate>Sun, 04 Jul 2010 20:50:00 +0800</pubDate><description><![CDATA[<br />1.函数模版的编译模式分两种
：完包含编译模式和局部编译模式
（需要用export关键字） <br />
2.不同的编译器对这两种编译模式的支持各不相同，但一般都支持完全包含编译模式
(vc6.0就不支持export)，具体支持情况需要参照具体使用的编译器文档 <br /><br />
模版函数和普通函数在使用的时候有一定的区别： <br />
(1)普通函数在使用的源文件中直接include该函数的声明即可 <br />
(2)模版函数在使用的源文件中既要include模版函数的]]></description><category></category></item><item><title><![CDATA[编程细节]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5703896</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5703896</guid><author>iverson_1</author><pubDate>Wed, 30 Jun 2010 10:53:00 +0800</pubDate><description><![CDATA[1.在使用STL的迭代器进行累加时，最好使用前置式递增：++iter 代替后置式递增：iter++，因为他比后者效率高，后者需要创建一个临时对象，因为它必须保存迭代器的原本位置并将它返回；]]></description><category></category></item><item><title><![CDATA[volatile]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5701894</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5701894</guid><author>iverson_1</author><pubDate>Tue, 29 Jun 2010 14:56:00 +0800</pubDate><description><![CDATA[一个定义为volatile的变量是说这变量可能会被意想不到地改变，这样，编译器就不会去假设这个变量的值了。精确地说就是，优化器在用到这
个变量时必须每次都小心地重新读取这个变量的值，而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子： 
    1). 并
行设备的硬件寄存器（如：状态寄存器） 
    2). 一个中断服务子程序中会访问到的非自动变量(Non-
automatic variables) 
    3). 多线程应用中被几个任务共享的变量 
    回答不出这]]></description><category></category></item><item><title><![CDATA[mutable]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5701813</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5701813</guid><author>iverson_1</author><pubDate>Tue, 29 Jun 2010 14:34:00 +0800</pubDate><description><![CDATA[<br />关键字
mutable的中文意思是：“可变的、易变的”与constant（即C++中
const）是反义词。C++中的mutable是为了突破const限制而设置的，被mutable修饰的变量将永远处于可变状态，即使是位于
const修饰的函数中。mutable又是一个奇怪的修饰符（specifier），它只能够用于一个类的非静态数据成员。下面我将讨论
mutable 的语义和用法，但是首先我要解释一下 C++ 对象模型的一个关键概念。
<br />对象的状态<br />

   ]]></description><category></category></item><item><title><![CDATA[explicit]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5701597</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5701597</guid><author>iverson_1</author><pubDate>Tue, 29 Jun 2010 13:19:00 +0800</pubDate><description><![CDATA[<br /> 在 C++ 中， 如果一个类有只有一个参数的构造函数，C++ 
允许一种特殊的声明类变量的方式。在这种情况下，可以直接将一个对应于构造函数参数类型的数据直接赋值给类变量，编译器在编译时会自动进行类型转换，将对
应于构造函数参数类型的数据转换为类的对象。 如果在构造函数前加上 explicit 修饰词， 则会禁止这种自动转换，在这种情况下， 
即使将对应于构造函数参数类型的数据直接赋值给类变量，编译器也会报错。<br /> 下面以具体实例来说明。<br /> 
建立people.cpp ]]></description><category></category></item><item><title><![CDATA[关于动态语言和静态语言、强类型定义语言和弱类型定义语言的概念区分]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5698897</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5698897</guid><author>iverson_1</author><pubDate>Mon, 28 Jun 2010 11:18:00 +0800</pubDate><description><![CDATA[<br />1、动态语言和静态语言<br />
　　通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。<br />（1）动态类型语言：动态类型语言是指在运行期间才去做数据类型检查的语言
，也就是说，在用动态类型的语言编程时，永远也不用给任何变量指定数据类
型，该语言会在你第一次赋值给变量时，在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言，其他的各种脚本语言如
VBScript也多少属于动态类型语言。<br />（2）静态类型语言：静态类型语言与动态类型语言刚]]></description><category></category></item><item><title><![CDATA[为什么需要头文件？ and 重定义问题]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5698495</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5698495</guid><author>iverson_1</author><pubDate>Mon, 28 Jun 2010 09:00:00 +0800</pubDate><description><![CDATA[首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了.一个程序,可以由一
个编译单元组成,也可以有多个编译单元组成. 
如果你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(一个函数不能放到两个编译单元里面,但两个以上就可以分别放在一个单元,也就是
cpp里面)那么就是一个.cpp对应一个.obj,然后将所有的obj链接起来(通过一个叫链接器的程序),组成一个.exe,也就是程序了.如果一
个.cpp要用到另一个.c]]></description><category></category></item><item><title><![CDATA[程序执行过程]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5698455</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5698455</guid><author>iverson_1</author><pubDate>Mon, 28 Jun 2010 08:34:00 +0800</pubDate><description><![CDATA[要理解一个程序的执行过程，首先要理解什么是编译器。我们用C语言写的程序，计算机只能识别机器语言（二进制指令），计算机并不能理解。因此，必须
 将C语言转换为机器语言。编译器就是用来实现这一功能的。编译器将源代码文件按照一定的对应规则映射程计算机能够识别的二进制指令。关于源文件、目标文件和可执行文件
源文件：保存源代码的文件（*.c, *.cpp)
目标文件：编译器根据源文件创建的机器语言指令成为目标代码，包含目标代码的磁盘文件即目标文件。
 一般为（*.obj）文件，Linux下为（*.o）文件。编]]></description><category></category></item><item><title><![CDATA[inline]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5697684</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5697684</guid><author>iverson_1</author><pubDate>Sun, 27 Jun 2010 16:53:00 +0800</pubDate><description><![CDATA[定义<br />内联函数从源代码层看，有函数的结构，而在编译后，却不具体函数的性质。编译时，类似宏替换地，
使用函数体替换调用处的函数名。
一般在代码中用inline修饰，但是否能形成内联函数，需要看编译器对该函数定义的具体处理。实现<br />有两种实现方式：
　　<br />1.在类声明的内部声明，而在类声明外部定义叫做显式内联函数
，如：
　　<br />class display
　　<br />{ 
　　<br />      int t;
　　<br />      public]]></description><category></category></item><item><title><![CDATA[#ifdef、#ifndef、#if]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5690784</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5690784</guid><author>iverson_1</author><pubDate>Thu, 24 Jun 2010 09:51:00 +0800</pubDate><description><![CDATA[这几个宏是为了进行条件编译。一般情况下，源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译，也就是对一部分内容指定编译的条件，这就是“条件编译”。有时，希望当满足某条件时对一组语句进行编译，而当条件不满足时则编译另一组语句。  条件编译命令最常见的形式为：  #ifdef 标识符  程序段1   #else   程序段2   #endif   它的作用是：当标识符已经被定义过(一般是用#define命令定义)，则对程序段1进行编译，否则编译程序段2  其中#else部分也可以]]></description><category></category></item><item><title><![CDATA[声明和定义]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5690053</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5690053</guid><author>iverson_1</author><pubDate>Wed, 23 Jun 2010 19:27:00 +0800</pubDate><description><![CDATA[在声明部分出现变量有两种情况:  (1)一种是需要建立存储空间的，如:int a;  (2)另一种是不要建立存储空间的，如:extern int a;  前者是"定义性声明" (defining declaration), 或者称为"定义"(definition)；  后者是"引用性声明" (referencing declaration).  广义地说,声明包括定义,但并非所有的声明都是定义.对"int a;"来说,它既是定义又是声明; 对"extern a;"而言,它是声明不是定义.  一般为了叙述方便]]></description><category></category></item><item><title><![CDATA[extern "C"]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5689280</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5689280</guid><author>iverson_1</author><pubDate>Wed, 23 Jun 2010 14:46:00 +0800</pubDate><description><![CDATA[<br />extern "C" 
包含双重含义，从字面上即可得到：首先，被它修饰的目标是“extern”的；其次，被它修饰的目标是“C”的。让我们来详细解读这两重含义。
　　<br />（1） 被extern "C"限定的函数或变量是extern类型的；<br />       extern是C/C++语言中表明函数和全局变量作用范围（可见性）的关键字，该关键字告诉
编译器，其声明的函数和变量可以在本模块或其它模块中使用。<br />       记住，下列语句：
　　 <br />       ]]></description><category></category></item><item><title><![CDATA[标准I/O(buffered I/O)浅析]]></title><link>https://blog.youkuaiyun.com/iverson_1/article/details/5658969</link><guid>https://blog.youkuaiyun.com/iverson_1/article/details/5658969</guid><author>iverson_1</author><pubDate>Wed, 09 Jun 2010 17:04:00 +0800</pubDate><description><![CDATA[http://www.chinaunix.net/jh/23/982604.htmlCU有很多上讨论I/O操作的帖子,在这里发一篇我自己关于标准I/O的理解的帖子

这里借用了glibc中标准I/O实现的细节,所以代码多是不可移植的.

写的有点乱,很多东西都是自己的理解,这里只是抛砖引玉,期望和大家多多讨论一下.
1. buffered I/O, 即标准I/O
首先,要明确,unbuffered I/O只是相对于buffered I/O,即标准I/O来说的.

而不是说unbuffered]]></description><category></category></item></channel></rss>