<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rstevens</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rstevens]]></copyright><item><title><![CDATA[Linux 汇编语言开发指南]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/6716168</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/6716168</guid><author>rstevens</author><pubDate>Wed, 24 Aug 2011 19:59:32 +0800</pubDate><description><![CDATA[Linux 汇编语言开发指南


http://www.ibm.com/developerworks/cn/linux/l-assembly/


尤其是  七、GCC 内联汇编 ， 很实用！]]></description><category></category></item><item><title><![CDATA[python 中的新玩意： 生成器]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/6019876</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/6019876</guid><author>rstevens</author><pubDate>Thu, 18 Nov 2010 20:20:00 +0800</pubDate><description><![CDATA[1、 什么是生成器生成器是执行一个带 yield 语句的函数所返回的对象def foo():
	yield 1
	yield 2
	
f = foo() 其中， type(foo) 是 function， 而 type(f) 是 generaotr生成器对象，实现了 __iter__() 和　next() ，因此，它是一个迭代器，可以用在 for 循环中2、 为什么需要生成器？生成器的特点，在于它可以记住运行状态以 foo() 函数为例，第一次调用的时候，返回 1，并记住已经执行到这里了； 第二次调]]></description><category></category></item><item><title><![CDATA[python 学习： 迭代器]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/6019873</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/6019873</guid><author>rstevens</author><pubDate>Thu, 18 Nov 2010 20:18:00 +0800</pubDate><description><![CDATA[1、 什么是迭代器迭代器就是提供  next() 方法的对象2、 如何使用迭代器for v in it:python 的 for 语句可对迭代器进行处理，它自动调用迭代器的 next() 方法进行遍历，并在遇到 StopIteration 异常后终止循环3、 有哪些迭代器？list, dict, 文件对象，都属于迭代器4、 为自己的类增加迭代器功能如果你的类满足迭代器的特性，那么只需要实现 __iter__() 和 next() 方法即可成为一个迭代器]]></description><category></category></item><item><title><![CDATA[python 内存泄露的诊断]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/5997974</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/5997974</guid><author>rstevens</author><pubDate>Tue, 09 Nov 2010 17:16:00 +0800</pubDate><description><![CDATA[对于一个用 python 实现的，长期运行的后台服务进程来说，如果内存持续增长，那么很可能是有了“内存泄露”一、内存泄露的原因对于 python 这种支持垃圾回收的语言来说，为什么会有内存泄露了？通常来说，有以下三种原因：1、 所用到的用 C 语言开发的底层模块中出现了内存泄露。2、 代码中用到了全局的 list 或者 dict，不停的往这些容器中插入对象，而忘记了在使用完之后进行删除回收3、 代码中有“引用循环”， python 垃圾处理机制无法进行回收二、 内存泄露的诊断思路内存泄露，一定是由于某些对象]]></description><category></category></item><item><title><![CDATA[ELF 可执行程序在运行阶段寻找动态库的路径顺序]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3929245</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3929245</guid><author>rstevens</author><pubDate>Mon, 23 Feb 2009 16:21:00 +0800</pubDate><description><![CDATA[ Linux 上 ELF 格式的可执行程序，在程序启动阶段，会加载  ld.so 这个动态库（比较奇妙的是，它也可以直接被执行，动态库/可执行程序 二合一？），并通过它来加载其它需要的动态库。ld.so  manual page 中介绍了运行阶段寻找动态库的顺序 ：         ld.so  loads  the shared libraries needed by a pro]]></description><category></category></item><item><title><![CDATA[gcc 在编译阶段寻找动态库的路径顺序]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3929210</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3929210</guid><author>rstevens</author><pubDate>Mon, 23 Feb 2009 16:18:00 +0800</pubDate><description><![CDATA[摘自 ld manual page            The linker uses the following search paths to locate required shared libraries:           1.  Any directories specified by -rpath-link options.           2.  Any  ]]></description><category></category></item><item><title><![CDATA[GLIB 常用数据结构介绍 (3)]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3839877</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3839877</guid><author>rstevens</author><pubDate>Tue, 20 Jan 2009 17:19:00 +0800</pubDate><description><![CDATA[数组概念到目前为止我们已经介绍了两类有序集合：GSList 和 GList。它们非常相似，因为都依赖于指针来从一个元素链接到下一个条目，或者，在 GList 中，链接到前一个条目。不过，有另外一类不使用链接的有序集合；它的功能与 C 数组多少有些类似。它叫做 GArray，提供一个具备索引的单一类型的有序集合，能够为了容纳新条目而增加大小。相对于链表，数组有什么优势？一方面，索引访问。也就是说，如]]></description><category></category></item><item><title><![CDATA[GLIB 常用数据结构介绍 (4)]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3839867</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3839867</guid><author>rstevens</author><pubDate>Tue, 20 Jan 2009 17:14:00 +0800</pubDate><description><![CDATA[队列概念队列是另一个便利的数据结构。一个 队列 会保存一列条目，而且访问形式通常是向最后添加条目，从最前删除条目。当需要按到达顺序进行处理时，这很有实用。标准队列的一个变种是“双端队列（double-ended queue）”，或者说是 dequeue，它支持在队列的两端进行添加或者删除。不过，在很多情况下最好避免使用队列。队列搜索不是特别快（是 O(n) 操作），所以，如果需要经常进行搜索，那么]]></description><category></category></item><item><title><![CDATA[GLIB 常用数据结构介绍 (2)]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3839848</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3839848</guid><author>rstevens</author><pubDate>Tue, 20 Jan 2009 17:10:00 +0800</pubDate><description><![CDATA[ 哈希表概念到目前为止，本教程只介绍了有序容器，在其中插入的条目会保持特定次序不变。哈希表 是另一类容器，也称为“映射”、“联合数组（associative array）” 或者“目录（dictionary）”。正如语文辞典使用一个定义来关联一个词，哈希表使用一个 键（key） 来唯一标识一个 值（value）。哈希表可以根据键非常快速地执行插入、查找和删除操作；实际上，如果使用得当，这些可以都是]]></description><category></category></item><item><title><![CDATA[GLIB 常用数据结构介绍 (1)]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3839845</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3839845</guid><author>rstevens</author><pubDate>Tue, 20 Jan 2009 17:08:00 +0800</pubDate><description><![CDATA[int main(int argc, char** argv) { GSList* list = NULL; list = g_slist_append(list, "second"); list = g_slist_prepend(list, "first");g_printf("The list is now %d items long/n", g_slist_length(list)); l]]></description><category></category></item><item><title><![CDATA[使用 libevent 容易犯的一个错误]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/3051924</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/3051924</guid><author>rstevens</author><pubDate>Fri, 10 Oct 2008 17:36:00 +0800</pubDate><description><![CDATA[使用 libevent 的一个代码片段如下：struct event ev_accept;event_set(&ev_accept, listen_fd, EV_READ|EV_PERSIST, on_accept, NULL);event_add(&ev_accept, NULL);这段代码是错误的，因为 ev_accept 是在栈上分配的临时变量，但是 ev_accep]]></description><category></category></item><item><title><![CDATA[对 C++ 引用的理解]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2715626</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2715626</guid><author>rstevens</author><pubDate>Sat, 26 Jul 2008 17:23:00 +0800</pubDate><description><![CDATA[ 仅仅是记录一下心得； 接触 C++ 是很久以前的事情，但此后一直很少使用，因此对 C++ 的很多语言特性理解很肤浅； 例如，一直就有点迷惑，“为什么有了指针，C++ 还要引入引用” ？ 网上搜索一下，一般的答案是 “引用是将引用者作为被引用者的一个别名”； 我试着从编译器的角度来理解这个“别名”的意思； 一个符号，是一个对象的“正式名称”；例如  ]]></description><category></category></item><item><title><![CDATA[Linux 下查看 IPC 使用情况的方法]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2562565</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2562565</guid><author>rstevens</author><pubDate>Wed, 18 Jun 2008 20:24:00 +0800</pubDate><description><![CDATA[1. SYS-V 方法可以通过 ipcs 命令来查看 SYS-V 相关的 IPC 使用情况 2. POSIX 方法 1). message queueLinux 提供了 mqueue 的文件系统类型，可以通过它来观察到 POSIX 消息队列的使用情况 $ mkdir /dev/mqueue $ mount -t mqueue none /dev/mqueue $]]></description><category></category></item><item><title><![CDATA[用 inotify 监视文件系统的变化]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2438567</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2438567</guid><author>rstevens</author><pubDate>Mon, 12 May 2008 20:21:00 +0800</pubDate><description><![CDATA[可以用 Linux 2.6 kenel 提供的 inotify 机制来监控文件系统的变化，例如增加文件，删除文件，修改文件等 下面是一个例子程序，可用来监控一个目录，如果在此目录下进行创建文件、删除文件、修改文件的操作，会有提示信息打印到屏幕上 #include sys/inotify.h>#include stdio.h>#include errno.h>#include sys]]></description><category></category></item><item><title><![CDATA[[高性能技术] 使用异步 I/O 大大提高应用程序的性能]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2424635</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2424635</guid><author>rstevens</author><pubDate>Fri, 09 May 2008 18:55:00 +0800</pubDate><description><![CDATA[使用异步 I/O 大大提高应用程序的性能转自： http://www.ibm.com/developerworks/cn/linux/l-async/Linux® 中最常用的输入/输出（I/O）模型是同步 I/O。在这个模型中，当请求发出之后，应用程序就会阻塞，直到请求满足为止。这是很好的一种解决方案，因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元（CPU）。但是]]></description><category></category></item><item><title><![CDATA[关于“惊群”的讨论]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2424617</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2424617</guid><author>rstevens</author><pubDate>Fri, 09 May 2008 18:53:00 +0800</pubDate><description><![CDATA[“惊群”问题可以在 > 中看到，下面这个帖子对这个问题做了一些讨论，有时间需要看一下内核代码来更深入的了解一下http://www.chinaunix.net/jh/23/946261.html]]></description><category></category></item><item><title><![CDATA[“堆碎片”以及解决方法]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2417625</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2417625</guid><author>rstevens</author><pubDate>Thu, 08 May 2008 17:22:00 +0800</pubDate><description><![CDATA[ 最近用 C 开发一个服务器软件，代码需要频繁的分配内存，并且用到的第三方库 GLIB 和 libCurl 也有不同的内存分配方式。在开发过程中，发现一个问题，就是在压力测试下，程序耗用内存一直增长，直到用完 3G 的虚存空间，从而 malloc 失败；而我的代码中，内存使用完后都是及时释放的，不应该出现这种现象。因此首先怀疑是有内存泄露，但是无论用 valgrind，还是 dmall]]></description><category></category></item><item><title><![CDATA[ld 中文使用手册完全版(译) ]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2070568</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2070568</guid><author>rstevens</author><pubDate>Mon, 28 Jan 2008 21:01:00 +0800</pubDate><description><![CDATA[[Linux命令] ld 中文使用手册完全版(译) 使用ld ******** 本文档介绍GNU连接器ld的2.14版本. 本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝. 概述 ******** ld把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序 时,最后一步就是运行ld. ld能接受]]></description><category></category></item><item><title><![CDATA[linux系统locale的设定]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/2025410</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/2025410</guid><author>rstevens</author><pubDate>Fri, 04 Jan 2008 11:12:00 +0800</pubDate><description><![CDATA[locale 是国际化与本土化过程中的一个非常重要的概念，个人认为，对于中文用户来说，通常会涉及到的国际化或者本土化，大致包含三个方面：看中文，写中文，与 window中文系统的兼容和通信。从实际经验上看来，locale的设定与看中文关系不大，但是与写中文，及window分区的挂载方式有很密切的关系。本人认为就像一个纯英文的Windows能够浏览中文，日文或者意大利文网页一样，你不需要设定loca]]></description><category></category></item><item><title><![CDATA[[高性能技术] 高效异步IO的设计开发]]></title><link>https://blog.youkuaiyun.com/rstevens/article/details/1903917</link><guid>https://blog.youkuaiyun.com/rstevens/article/details/1903917</guid><author>rstevens</author><pubDate>Tue, 27 Nov 2007 11:45:00 +0800</pubDate><description><![CDATA[高效异步IO的设计开发转自： http://hippoweilin.mobile.spaces.live.com/arc.aspx      高效异步IO，按我理解起来应该不光要达到程序运行时的高效，当然也要达到开发效率的高效，其中还包括很重要一点就是质量，对于很多从未做过异步IO的人来说，初次尝试异步IO肯定会碰到不少困难，因为不光是对编程能力的考验，也需要开发者对操作系统的IO操作有相]]></description><category></category></item></channel></rss>