<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[alibo2008的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/alibo2008</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; alibo2008]]></copyright><item><title><![CDATA[智能指针std::auto_ptr和tr1:shared_ptr用法]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/49813695</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/49813695</guid><author>alibo2008</author><pubDate>Fri, 13 Nov 2015 09:58:58 +0800</pubDate><description><![CDATA[下面通过一个工厂函数(createInvestment())返回一个特定的investment对象:

Investment* createInvestment();

 

见如下函数:

void f()

{

    Investment* pInv = createInvestment();

    ....

    delete pInv;

}]]></description><category></category></item><item><title><![CDATA[标准C++中的STL容器类简介]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/48175309</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/48175309</guid><author>alibo2008</author><pubDate>Wed, 02 Sep 2015 10:54:45 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/phunxm/article/details/5081472



容器的概念
所谓STL容器，即是将最常运用的一些数据结构（data structures）实现出来。
容器是指容纳特定类型对象的集合。根据数据在容器中排列的特性，容器可概分为序列式（sequence）和关联式（associative）两种。
迭代器是一种检查容器内元素并遍历元]]></description><category></category></item><item><title><![CDATA[Linux文件查找命令find详述]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/46416475</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/46416475</guid><author>alibo2008</author><pubDate>Mon, 08 Jun 2015 19:04:15 +0800</pubDate><description><![CDATA[Linux文件查找命令find详述
  
关于find命令
由于find具有强大的功能，所以它的选项也很多，其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS)，find命令在该文件系统中同样有效，只你具有相应的权限。在运行一个非常消耗资源的find命令时，很多人都倾向于把它放在后台执行，因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系]]></description><category></category></item><item><title><![CDATA[errno 104:connetction reset by peer的错误分析]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/45694845</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/45694845</guid><author>alibo2008</author><pubDate>Wed, 13 May 2015 16:29:06 +0800</pubDate><description><![CDATA[errno = 104错误表明你在对一个对端socket已经关闭的的连接调用write或send方法，在这种情况下，调用write或send方法后，对端socket便会向本端socket发送一个RESET信号，在此之后如果继续执行write或send操作，就会得到errno为104，错误描述为connection reset by peer。

        出现这种问题的很大一部分原因，至]]></description><category></category></item><item><title><![CDATA[n/2复杂度反转字符串]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/45172735</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/45172735</guid><author>alibo2008</author><pubDate>Tue, 21 Apr 2015 17:04:39 +0800</pubDate><description><![CDATA[#include 
#include 


/*
    s  --> string 
    n  --> string length
*/
void shiftstringone(char *s, int n)
{
    assert(s != NULL);
    char t = s[0];
    for(int i = 1; i 
    {
      ]]></description><category></category></item><item><title><![CDATA[排序算法总结]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44681201</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44681201</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 19:47:22 +0800</pubDate><description><![CDATA[http://hi.baidu.com/gilbertjuly/blog/item/7c1cc4c7c28b5d129c163d07.html

排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大，所以排序算法对算法本身的速度要求很高。而一般我们所谓的算法的性能主要是指算法的复杂度，一般用O方法来表示。在后面我将给出详细的说明。对于排序的算法我想先做一点简单的介绍，也是给这篇文章理]]></description><category></category></item><item><title><![CDATA[read系统调用，mmap系统调用]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44681175</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44681175</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 19:45:57 +0800</pubDate><description><![CDATA[一般情况下，操作文件既可以使用标准I/O，也可直接使用系统调用。两者有何区别呢？

在输入输出中，直接使用底层的系统调用效率是非常低的，为什么？

(1)  系统调用会影响系统性能。执行系统调用时，Linux必须从用户态代码

     切换到内核态，然后再返回用户代码。

(2)  硬件会对底层系统调用一次所能读写的数据块做出一定的限制。



 

带缓存的文件操作]]></description><category></category></item><item><title><![CDATA[标准IO缓冲详解全缓冲、行缓冲、不缓冲]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44681147</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44681147</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 19:43:20 +0800</pubDate><description><![CDATA[标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。他也对每个I/O流自动地进行缓冲管理，从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是，标准I/O库最令人迷惑的也是他的缓冲。




标准I/O提供了三种类型的缓冲：




1、全缓冲。这种情况下，在填满标准I/O缓冲区后才进行实际I/O操作。对于驻留在磁盘上的文件通常是由标准I/O库实施全缓]]></description><category></category></item><item><title><![CDATA[Linux进程同步之记录锁（fcntl）]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44681137</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44681137</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 19:40:49 +0800</pubDate><description><![CDATA[记录锁相当于线程同步中读写锁的一种扩展类型，可以用来对有亲缘或无亲缘关系的进程进行文件读与写的同步，通过fcntl函数来执行上锁操作。尽管读写锁也可以通过在共享内存区来进行进程的同步，但是fcntl记录上锁往往更容易使用，且效率更高。

记录锁的功能：当一个进程正在读或修改文件的某个部分是，它可以阻止其他进程修改同一文件区。对于这个功能阐述我认为有三点要解释的：

记录锁不仅仅可以用来同步]]></description><category></category></item><item><title><![CDATA[文件描述符和文件指针的区别]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44678687</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44678687</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 16:31:31 +0800</pubDate><description><![CDATA[文件描述符就是open文件时产生的一个整数，直到一个索引作用，它用于UNIX系统中，用于标识文件。
文件指针是指向一个FILE的结构体，这个结构体里有一个元素就是文件描述符。它用于ANSI C标准的IO库调用中，用于标识文件。
 
既然FILE中包含文件描述符元素，可以用fopen()直接获取指针fp，然后使用fp获得fp中所包含文件描述符fd的信息。
 
文件描述符应该是唯一的，但文件]]></description><category></category></item><item><title><![CDATA[open/read/write和fopen/fread/fwrite的区别]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44678603</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44678603</guid><author>alibo2008</author><pubDate>Fri, 27 Mar 2015 16:27:35 +0800</pubDate><description><![CDATA[open：系统调用，返回的是文件描述符，即文件句柄，是文件在文件描述副表里的索引。

fopen：C语言库函数，返回的是一个指向文件结构的指针。fopen是ANSI
 C标准中的C语言库函数，在不同的操作系统中应该调用不同的内核API，UNIX环境下，fopen是对open的封装。

文件描述符是UNIX/Linux下的一个概念，Linux环境下，一切设备皆是文件，一切设备皆是以文件的形]]></description><category></category></item><item><title><![CDATA[fork /vfork 的异同]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44655033</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44655033</guid><author>alibo2008</author><pubDate>Thu, 26 Mar 2015 20:14:02 +0800</pubDate><description><![CDATA[1>fork()用于创建一个新进程。由fork()创建的子进程是父进程的副本。即子进程获取父进程数据空间，堆和   栈的副本。父子进程之间不共享这些存储空间的部分。而vfork()创建的进程并不将父进程的地址空间完全复制到子进程中，因为子进程会立即调用 exec(或exit)于是也就不会存放该地址空间。相反，在子进程调用exec或exit之前，它在父进程的空间进行。2>vfork()与fork()]]></description><category></category></item><item><title><![CDATA[static和const关键字尽可能多的作用]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44654619</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44654619</guid><author>alibo2008</author><pubDate>Thu, 26 Mar 2015 19:47:27 +0800</pubDate><description><![CDATA[static关键字至少有下列n个作用：

（1）函数体内static变量的作用范围为该函数体，不同于auto变量，该变量的内存只被分配一次，因此其值在下次调用时仍维持上次的值；

（2）在模块内的static全局变量可以被模块内所用函数访问，但不能被模块外其它函数访问；

（3）在模块内的static函数只可被这一模块内的其它函数调用，这个函数的使用范围被限制在声明它的模块内；

]]></description><category></category></item><item><title><![CDATA[编写类String的构造函数、析构函数和赋值函数]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44654561</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44654561</guid><author>alibo2008</author><pubDate>Thu, 26 Mar 2015 19:43:41 +0800</pubDate><description><![CDATA[编写类String的构造函数、析构函数和赋值函数，已知类String的原型为：

class String
{       
public:      

  String(const char *str = NULL); // 普通构造函数    

  String(const String &other); // 拷贝构造函数   

  ~ String(void); ]]></description><category></category></item><item><title><![CDATA[最长回文子串]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44650559</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44650559</guid><author>alibo2008</author><pubDate>Thu, 26 Mar 2015 15:27:43 +0800</pubDate><description><![CDATA[最长回文子串是最初我在网易笔试的时候遇见的，当时天真的把原字符串S倒转过来成为S‘，以为这样就将问题转化成为了求S和S’的最长公共子串的问题，而这个问题是典型的DP问题，我也在前面的文章中介绍了3中解决这个问题的方法。但是非常可惜，后来才知道这个算法是不完善的。那么到底为什么呢？听我慢慢道来。

S=“c a b a”  那么  S' = “a b a c”, 这样的情况下 S和 S‘的最长公]]></description><category></category></item><item><title><![CDATA[fork循环]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44646411</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44646411</guid><author>alibo2008</author><pubDate>Thu, 26 Mar 2015 10:26:56 +0800</pubDate><description><![CDATA[题目：请问下面的程序一共输出多少个“-”？







1

2

3

4

5

6

7

8

9

10

11

12

13

14




#include
 

#include
 

#include
 

 

int

main(void)

{

   int]]></description><category></category></item><item><title><![CDATA[高性能I/O设计模式概述]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44062997</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44062997</guid><author>alibo2008</author><pubDate>Wed, 04 Mar 2015 17:31:17 +0800</pubDate><description><![CDATA[http://www.yeolar.com/note/2012/12/15/high-performance-io-design-patterns/


这篇概述把网上的一些资料汇总到了一起，主要目的是解释清楚I/O模型的概念和Reactor、Proactor模式。




目录

服务器的几种实现方法一些概念

同步和异步阻塞和非阻塞
I/O模型Reactor和Proa]]></description><category></category></item><item><title><![CDATA[两种高性能 I/O 设计模式 Reactor 和 Proactor]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44062977</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44062977</guid><author>alibo2008</author><pubDate>Wed, 04 Mar 2015 17:30:10 +0800</pubDate><description><![CDATA[http://daoluan.net/blog/two-high-performance-io-design-patterns/#comments



Contents


1 Reactor
2 Proactor
3 总结



Reactor 和 Proactor 是基于事件驱动，在网络编程中经常用到两种设计模式。

曾经在一个项目中用到了网络库 libeven]]></description><category></category></item><item><title><![CDATA[IO - 同步，异步，阻塞，非阻塞 （亡羊补牢篇）]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/44062965</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/44062965</guid><author>alibo2008</author><pubDate>Wed, 04 Mar 2015 17:28:47 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/historyasamirror/article/details/5778378


当你发现自己最受欢迎的一篇blog其实大错特错时，这绝对不是一件让人愉悦的事。
《 IO - 同步，异步，阻塞，非阻塞 》是我在开始学习epoll和libevent的时候写的，主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢，我还是非常开心的，也说]]></description><category></category></item><item><title><![CDATA[网络server模型]]></title><link>https://blog.youkuaiyun.com/alibo2008/article/details/24037503</link><guid>https://blog.youkuaiyun.com/alibo2008/article/details/24037503</guid><author>alibo2008</author><pubDate>Fri, 18 Apr 2014 17:45:36 +0800</pubDate><description><![CDATA[本章主要列举服务器程序的各种网络模型，示例程序以及性能对比后面再写。
一、分类依据。服务器的网络模型分类主要依据以下几点
（1）是否阻塞方式处理请求，是否多路复用，使用哪种多路复用函数
（2）是否多线程，多线程间如何组织
（3）是否多进程，多进程的切入点一般都是accept函数前
二、分类。首先根据是否多路复用分为三大类：
（1）阻塞式模型
（2）多路复用模型
（3）实时信号模型]]></description><category></category></item></channel></rss>