2009年02月23日

原创 ELF 可执行程序在运行阶段寻找动态库的路径顺序

ld, ld.so, LD_LIBRARY_PATH, -rpath, runtime, 库路径阅读全文>

发表于 @ 2009年02月23日 16:21:00|评论(loading...)|举报|收藏

原创 gcc 在编译阶段寻找动态库的路径顺序

ld, 编译, LD_LIBRARY_PATH, rpath, ld.so, 路径阅读全文>

发表于 @ 2009年02月23日 16:18:00|评论(loading...)|举报|收藏

2009年01月20日

转载 GLIB 常用数据结构介绍 (3)


数组

概念

到目前为止我们已经介绍了两类有序集合:GSList 和 GList。它们非常相似,因为都依赖于指针来从一个元素链接到下一个条目,或者,在 GList 中,链接到前一个条目。不过,有另外一类不使用链接的有序集合;它的功能与 C 数组多少有些类似。

它叫做 GArray,提供一个具备索引的单一类型的有序集合,能够为了容纳新条目而增加大小。

相对于链表,数组有什么优势?一方面,索引访问。也就是说,如果想获得数组中的第十五个元素,只需要调用一个能够在常数时间内获取它的函数;不需要手工地遍历到那个位置,那将是一个 O(n) 操作。数组知道自己的大小,所以查询其大小是一个 O(1) 操作而不是 O(n) 操作。




基本操作

这里是向数组添加和删除数据的一些主要方法:


//ex-garray-1.c
#include
int main(int阅读全文>

发表于 @ 2009年01月20日 17:19:00|评论(loading...)|举报|收藏

转载 GLIB 常用数据结构介绍 (4)


队列

概念

队列是另一个便利的数据结构。一个 队列 会保存一列条目,而且访问形式通常是向最后添加条目,从最前删除条目。当需要按到达顺序进行处理时,这很有实用。标准队列的一个变种是“双端队列(double-ended queue)”,或者说是 dequeue,它支持在队列的两端进行添加或者删除。

不过,在很多情况下最好避免使用队列。队列搜索不是特别快(是 O(n) 操作),所以,如果需要经常进行搜索,那么哈希表或者树可能更实用。这同样适用于需要访问队列中随机元素的情形;如果是那样,那么将会对队列进行很多次线性扫描。

GLib 提供了一个使用 GQueue 的 dequeue 实现;它支持标准队列操作。它的基础是双向链表(GList),所以它也支持很多其他操作,比如在队列之中进行插入和删除。不过,如果您发现自己经常要使用这些功能,那么可能需要重新考虑容器的选择;或许另一个容器更为合适。




基本操作

这里是以“排队买阅读全文>

发表于 @ 2009年01月20日 17:14:00|评论(loading...)|举报|收藏

转载 GLIB 常用数据结构介绍 (2)

GLIB hash table阅读全文>

发表于 @ 2009年01月20日 17:10:00|评论(loading...)|举报|收藏

转载 GLIB 常用数据结构介绍 (1)


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));
 list = g_slist_remove(list, "first");
 g_g_printf("The list is now %d items long\n", g_slist_length(list));
 g_slist_free(list);
 return 0;
}

***** Output *****

The list is now 2 items long

The list is now 1 item阅读全文>

发表于 @ 2009年01月20日 17:08:00|评论(loading...)|举报|收藏

2008年11月12日

原创 socket 编程中出现的两个情况及原因分析

socket 编程, Connection reset by peer, EAGAIN 阅读全文>

发表于 @ 2008年11月12日 20:39:00|评论(loading...)|举报|收藏

2008年10月10日

原创 使用 libevent 容易犯的一个错误

使用 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_accept 实际上是要求在整个程序的生命期中都有效的,且看 libevent 文档中的描述:Event notificationFor each file descriptor that you wish to monitor, you must declare an event structure and call event_set() to initialize the members of the structure. To enable notification, you add the structure to the list of monitore阅读全文>

发表于 @ 2008年10月10日 17:36:00|评论(loading...)|举报|收藏

2008年07月26日

原创 对 C++ 引用的理解

C++ 引用阅读全文>

发表于 @ 2008年07月26日 17:23:00|评论(loading...)|举报|收藏

2008年06月18日

原创 Linux 下查看 IPC 使用情况的方法

linux, IPC, message queue, shared memory, POSIX, SYSV阅读全文>

发表于 @ 2008年06月18日 20:24:00|评论(loading...)|举报|收藏

2008年05月12日

原创 用 inotify 监视文件系统的变化

inotify,文件系统阅读全文>

发表于 @ 2008年05月12日 20:21:00|评论(loading...)|举报|收藏

2008年05月09日

转载 [高性能技术] 使用异步 I/O 大大提高应用程序的性能

使用异步 I/O 大大提高应用程序的性能,高性能阅读全文>

发表于 @ 2008年05月09日 18:55:00|评论(loading...)|举报|收藏

原创 关于“惊群”的讨论

惊群 thundering herd阅读全文>

发表于 @ 2008年05月09日 18:53:00|评论(loading...)|举报|收藏

2008年05月08日

原创 “堆碎片”以及解决方法

堆碎片以及解决方法阅读全文>

发表于 @ 2008年05月08日 17:22:00|评论(loading...)|举报|收藏

2008年01月28日

转载 ld 中文使用手册完全版(译)

本文档介绍GNU连接器ld的2.14版本. 本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝. 阅读全文>

发表于 @ 2008年01月28日 21:01:00|评论(loading...)|举报|收藏

用户操作
[即时聊天] [发私信] [加为好友]
小马哥 (rstevens)
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
小马哥 (rstevens)的公告
1、记录技术成长历程。
2、关注基于 Linux 的,适用于移动终端的软件开发平台及相关技术。
3、关注提高性能的技术
欢迎各位网友与我讨论交流:
rstevens2008 AT gmail.com
rstevens2008 AT hotmail.com
Locations of visitors to this page

Google

最近更新

    文章分类
    收藏
    1. Friendly Link
    absurd(RSS)
    Brad Abrams
    fmddlmyy的专栏
    fudan_abc的专栏(RSS)
    holub
    KangHua 的专栏
    Krzysztof Cwalina
    一个叫搜索引擎的家伙
    云风的博客
    刘未鹏的博客
    博客园培训团队
    周爱民的博客
    开源电信-黄思源的博客
    手机开发网
    苏鹏的博客
    许式伟的专栏(RSS)
    透明思考 -- 熊节的博客
    项立刚的博客(中国通信业知名观察家)
    4. Techinique Resource
    del.icio.us
    developerWorks Linux 专栏
    http://www.rapidshare.com/
    OSDN
    图书下载
    英特尔® 软件网络
    存档
    Csdn Blog version 3.1a
    Copyright © 小马哥 (rstevens)