摘要: select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 多端口复用函数select在调用前要首先设置监听的端口数目,FD_ZERO是清空端口集,FD_SET是设置端口集。select()函数常常用在用一个进程监听多个服务器端socket。有时,select()也被当作延时函数使用。sleep()延时会释 阅读全文
posted @ 2011-04-25 11:32 jerryking 阅读(3736) 评论(0) 推荐(0) 编辑
摘要: 只要在编译函数库源程序时加上-shared选项即可,这样所生成的执行程序即为动态链接库。从某种意义上来说,动态链接库也是一种执行程序。按一般规则,程序名应带.so后缀。下面举个例子说说。我准备编写两个函数,一个用于查询当前日期getdate,一个用于查询当前时间gettime,并将这两个函数存于动态链接库my.so中。为此,需要做以下几项工作。1.1 编写用户接口文件datetime.h,内容如下(每行前面的数字为行号):----------------------------------------------------------------------1 /* datetime.h : 阅读全文
posted @ 2011-04-21 11:55 jerryking 阅读(2075) 评论(0) 推荐(0) 编辑
摘要: Linux 动态库剖析(zhuan)进程与 APIM. Tim Jones, 顾问工程师, Emulex Corp.简介:动态链接的共享库是 GNU/Linux® 的一个重要方面。该种库允许可执行文件在运行时动态访问外部函数,从而(通过在需要时才会引入函数的方式)减少它们对内存的总体占用。本文研究了创建和使用静态库的过程,详细描述了开发它们的各种工具,并揭秘了这些库的工作方式。本文的标签:aa标记本文!发布日期:2008 年 9 月 08 日级别:中级其他语言版本:英文访问情况6792 次浏览建议:0(添加评论)平均分 (共 13 个评分 )库用于将相似函数打包在一个单元中。然后这些 阅读全文
posted @ 2011-04-21 11:39 jerryking 阅读(391) 评论(0) 推荐(0) 编辑
摘要: oracle 9i新特性1,支持上下滚动游标:可以使用可滚动游标代替以往顺序游标2,proc 支持连接池技术,应用此技术可以在应用程序中采用多线程进行数据库操作,提高应用程序性能。常见的问题1.我们怎么编译链接应用程序编译和链接应用程序是个很平台化得工作, 设置环境变量ORACLE_HOME=/home/oracle #设定oracle的主目录路径 ORACLE_SID=xingdb #设定oracle实例名 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 客户端字符集设置 PATH=${ORACLE_HOME}/bin:${PATH}:. LD_LIBRARY_PATH 阅读全文
posted @ 2011-04-11 16:17 jerryking 阅读(827) 评论(0) 推荐(0) 编辑
摘要: ========================================动态内存分配========================================数组元素存储在内存中连续的位置上。当一个数组被声明时,它所需要的内存在编译时就被分配。但是也可以使用动态分配内存在运行时为它分配内存1.为什么使用动态分配内存?当我们声明数组时,必须用一个编译时常量来指定数组的长度。但是数组的长度往往在运行时在会知道,这是由于他所需要的内存空间取决于输入数据例如,一个用于计算学生等级和平均分的程序可能存储一个班所有学生的数据,但不同班级的学生数量是不同的,在这种情况下我们通常采用的办法是声明 阅读全文
posted @ 2011-04-01 16:25 jerryking 阅读(658) 评论(0) 推荐(0) 编辑
摘要: ==================结构和联合==================聚合数据类型能够同时存储超过一个的单独数据c提供了两种类型的聚合数据类型:数组和结构数组是相同类型的元素的聚合,它的每个元素都是通过下标引用或指针间接访问来选择的。结构也是一些值的集合,这些值成为他的成员。但一个结构的各个成员可能具有不同的类型。每个结构成员都有自己的名字,他们是通过名字来访问的。这个区别很重要,结构不是一个它自身成员的数组。和数组不同,当结构变量在表达式里使用时,它并不被替换成指针,结构变量也无法使用下标来选择特定的变量,结构变量属于标量类型,所以你可以像对待其他标量类型一样执行相同类型的操作。 阅读全文
posted @ 2011-03-30 17:18 jerryking 阅读(585) 评论(0) 推荐(1) 编辑
摘要: 数组的形式是int a[];int b;b是一个标量,a就是一个数组,因为它是一些值的集合。下标和数组名一起使用,用于标识集合中某个特定的值,每一个特定的值都是一个标量可以用于任何可以使用表量的环境中,a[1]标识一个标量一个整数,那么a是什么呢?一个合乎逻辑的答案是他代表整个数组。但事实并非如此,在c中,在几乎所有使用数组名得表达式中,数组名得值是一个指针常量,也就是数组第一个元素的位置。它的类型取决于数组元素的类型;如果他们是int型那么他们就是指向int的常量指针。但请不要根据这个事实得出数组和指针是相同的结论。数组具有一些和指针完全不同的特性,例如数组具有特定的大小而指针只是个标量值。 阅读全文
posted @ 2011-03-30 15:23 jerryking 阅读(489) 评论(0) 推荐(1) 编辑
摘要: ---------指针的详解---------指针的定是int * a;b = 1;a=&b可以看出来,a这个指针变量存的是b的地址。可以变形为int *a=&b*d 表示访问位置100,并取得里面的值。一个常见的错误,int *a ;*a= 12;但是a究竟指向哪里呢,由于我们没有对a进行初始化,所以我们没有办法预测12这个值究竟存在哪里。如果变量是静态的它会被初始化为0,如果是自动的它根本不会被初始化,无论哪种情况,声明一个 指向整型的指针都不会创建用于存储整型的内存空间。所以程序执行这个赋值操作,将会发生什么呢?如果你运气好,a的赋值是个非法地址,这样赋值语句将会出错标准 阅读全文
posted @ 2011-03-29 15:07 jerryking 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 1.变量-------标量和常量是按值传送的,数组是以引用形式进行的,也就是按址传送。在函数中对标量参数的任何修改都会在函数返回时丢失的。-------所有传递给函数的参数都是按值传送的。但是,当数组名作为参数时就会产生按引用传递的效果,规则和行为之间似乎存在明显的矛盾之处。2.编译和链接-------编译,编译是由编译器将用户源代码编译成若干个目标模块-------链接,由链接程序将编译后形成的一组目标模块以及他们所需的库函数链接在一起,形成一个完成的装入模块-------由装入程序将装入模块装入内存-------编译和链接都是为将用户程序从硬盘上调入内存并将其转换为可执行程序服务的。--- 阅读全文
posted @ 2011-03-28 17:26 jerryking 阅读(207) 评论(0) 推荐(1) 编辑
摘要: 临时表内存表几个问题:内存表 存在于物理硬盘中,同时存在于内存中,使用hash散列索引存在于内存中, 问题1:怎么保证内存中的数据和数据库中的数据同步。 问题2:对于两台服务器,两个数据库系统,要实现两台数据库的同步,对于内存表而言,怎么实现两个内存的数据同步以及两个数据数据的同步。 (例如,需要双活的系统,必须保证两台服务器里的数据是同步的,对于内存表而言这个问题怎么解决) 阅读全文
posted @ 2011-03-24 14:31 jerryking 阅读(205) 评论(0) 推荐(0) 编辑