摘要: 一般我们讲,都说进程有文件描述符表,文件描述符表中的指针指向某个inode,这中间省略了file,dentry对象,对准确理解VFS结构无益,本文结合网络所查,并根据APUE8.3和LKD13.11章节校对,总结在下,希望有用。 内核中,对应于每个进程都有一个文件描述符表,表示这个进程打开的所有文件。文件描述表中每一项都是一个指针,指向一个用于描述打开的文件的数据块———file对象,file对象中描述了文件的打开模式,读写位置等重要信息,当进程打开一个文件时,内核就会创建一个新的file对象。需要注意的是,file对象不是专属于某个进程的,不同进程的文件描述符表中的指针可以指向相同... 阅读全文
posted @ 2012-05-15 18:10 aitao 阅读(7212) 评论(0) 推荐(2) 编辑
摘要: 引子打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识,自然,还是得从最基础的开始,那就从汇编语言开刀吧,从汇编语言开刀的话,我们必须还先要了解一些其他东西,像 CPU ,内存这些知识点还是理解深刻一点的比较好,所以这一篇博文就绕着 80x86 CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍 。同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长,如果有兴趣想了解这一块的话,还请自行斟酌好阅读比例,建议分 3 次以上阅览 。读者定位本博文主要将介绍的是 8086 CPU 中的寄存器,既然是 8086 C 阅读全文
posted @ 2012-05-15 17:45 aitao 阅读(24505) 评论(10) 推荐(12) 编辑
摘要: 1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=03、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4、应尽量避免在 where 子句中使用 or 来连接条件,否则将导 阅读全文
posted @ 2012-05-15 17:38 aitao 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 学习tcp/ip一般不涉及http报文格式。但是也有必要从报文的角度,而不是html代码角度了解一下HTTP报文,它是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。(1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。HTTP协议的请求方法有GET、POST、HEAD、PU.. 阅读全文
posted @ 2012-05-12 22:35 aitao 阅读(1321) 评论(4) 推荐(0) 编辑
摘要: SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。低速设备经通道和设在主机内存的缓冲存储器与高速设备相联,该高速设备通常是辅存。为了存放从低速设备上输入的信息,或者存放将要输出到低速设备上的信息(来自内存),在辅存分别开辟一固定区域,叫“输出井”(对输出),或者“输入井”(对输入)。简单来说就是在内存中形成缓冲区,在高级设备形成输出井和输入井,传递的时候,从低速设备传入缓冲区,再传到高速设备的输入井,(如果要输出显示)再从高速设备的输出井,传到缓冲区,再传到低速设备。 阅读全文
posted @ 2012-05-05 15:38 aitao 阅读(3078) 评论(0) 推荐(1) 编辑
摘要: ORDER BY通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了。另一个是把结果选好之后再排序。用有序索引这种,当然是最快的,不过有一些限制条件,来看下面的测试。测试数据:student表有两个字段id ,sid ,id是主键。一共有20W条记录,id从1到200000,sid也是从1到200000的数据。第一种情况 :order by的字段不在where条件也不在select中select sid from zhuyuehua.student where sid < 50000 order by id;第二种情况 :order by的字 阅读全文
posted @ 2012-05-04 22:53 aitao 阅读(39480) 评论(1) 推荐(11) 编辑
摘要: 转自:http://www.cnblogs.com/Mainz/archive/2008/12/20/1358897.html什么情况下使用表变量?什么情况下使用临时表?表变量: DECLARE @tb table(id int identity(1,1), name varchar(100)) INSERT @tb SELECT id, name FROM mytable WHERE name like ‘zhang%’临时表: SELECT name, address INTO #ta FROM mytable WHERE name like ‘zhang%’表变量和临时表的比较:临时表是 阅读全文
posted @ 2012-05-04 22:45 aitao 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 一、开放性1. SQL Server只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据库。2. Oracle能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。3. Sybase ASE能在所有主流平台上运行(包括 windows)。 但由于早期Sybase与OS集成度不高,因此VERS 阅读全文
posted @ 2012-05-04 19:43 aitao 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 上网已成为我们生活中不可缺少的工作及休闲方式,但在平时的工作中经常碰到有网友来信问“为什么网速变慢了;网速变慢怎么办”等问题。要解决这些问题,我们还是先从了解一些概念开始。一、关于网速的一些基本概念1、网速与带宽网速通常指用户实际的网络访问速度,网络的理论速度通常用带宽表示。如我们常说的1M带宽,即为1024Kbps(Kilobitpersecond千比特每秒)。所谓网速,即网络每秒传输的速度,也就是常说的上传速度及下载速度,以bps表示,即每秒可传输之位数。这里还有另外一种表示方式,即KB/s(KiloBytepersecond千字节每秒),因为1Byte=8bit,所以,1M带宽也可以.. 阅读全文
posted @ 2012-05-04 17:08 aitao 阅读(1155) 评论(0) 推荐(0) 编辑
摘要: 方法一:charszString[]="-2876.99812376443";doubledb1;db1=atof(szString);printf("atofresult:\n");printf("%f%.12f%.2f%e%E\n",db1,db1,db1,db1,db1);printf("%.1e%.1E%.18e%.18E\n",db1,db1,db1,db1);方法二:charszString2[]="-2876.99812376443";doubledb2;sscanf(szStri 阅读全文
posted @ 2012-05-04 16:46 aitao 阅读(973) 评论(0) 推荐(0) 编辑
摘要: 1、I/O重定向详解及应用实例1、 基本概念(这是理解后面的知识的前提,请务必理解)a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关;c、 用d、 用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案;e、 0 是与 1> 是一样的;f、 在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料;g、 管道“|” 阅读全文
posted @ 2012-05-04 16:09 aitao 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统... 阅读全文
posted @ 2012-05-03 20:52 aitao 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 操作系统可按照不同方式进行分类。例如,按用户数目的多少,可分为单用户和多用户系统;根据操作系统所依赖的硬件规模,可分为大型机、中型机、小型机和微型机操作系统;根据操作系统提供给用户的工作环境,可分为单用户操作系统、多道批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统等。一、单/多用户操作系统 单用户操作系统一次只能支持一个用户进程的运行,相对于多用户操作系统它可以支持多个用户同时登陆,允许运行多个用户的进程,比如WIN XP它本身就是个多用户操作系统,不管是在本地还是远程都允许多个用户同时在登陆状态。它向用户提供联机交互式的工作环境,比如MS-DOS它就是一个典型的.. 阅读全文
posted @ 2012-05-03 16:36 aitao 阅读(2363) 评论(0) 推荐(1) 编辑
摘要: 最近在看csdn解题笔记系列文章关于树的部分,卒读之后,扪心自问:二叉树到底有多少种便利方法?每种方法又有几中实现版本?各个版本间的关系如何,有无必然联系和转化可能?那天知道晚上一点多才有一些确定性的思考结果,总结如下。 一、树的递归遍历方法:略; 二、树的非递归遍历方法 (1)国内教材和网络流行的解法:二叉树的先根遍历,中根遍历,后根遍历的非递归算法; (2)自己凭直觉想了一种先序方法[1],但无法对称地推广到中序、后序,便随便翻了下师弟给的一本电子书,Knuth大弟子Sedgewick的《算法:第1-4部分》,发现一种新的,思路比较统一的先序、中序、后序遍历的形式化非递... 阅读全文
posted @ 2012-05-02 13:19 aitao 阅读(2102) 评论(0) 推荐(0) 编辑
摘要: 1)http://www.cnblogs.com/flyinghearts/archive/2011/05/27/2060265.html2)http://blog.csdn.net/v_JULY_v/article/details/6322882 阅读全文
posted @ 2012-05-01 23:04 aitao 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 首先,判断单个链表是否含有环: 设置两个指针,一个慢步长为1,一个快步长为b,如果两个指针在某一位置重合,则有环,否则无环,类似于俩人在操场上跑圈。这只是一个宏观思路,具体怎么用计算机思维实现,自定。 然后,分情况讨论: 情况一:两条单链表均无环 最简单的一种情况,由于两条链表如果交叉,他们的尾节点 阅读全文
posted @ 2012-04-30 12:05 aitao 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 在《程序员面试宝典》上看到printf的一道题,挺有意思,记录一下。floatvalue=1.0;printf("value_int = %d\n",value);printf("value_float = %f\n", value);应该输出什么?乍看这个题,很简单,浮点数1.0在内存中的存储形式是0x3f800000。float型在内存中占4Byte, int型也占4字节,按说就直接输出0x3f800000的十进制形式就可以呗。谁知道一运行大跌眼镜,打印信息:value_int = 0value_float = 1.0怎么回事?使用gcc -S的参数 阅读全文
posted @ 2012-04-21 21:28 aitao 阅读(10345) 评论(0) 推荐(0) 编辑
摘要: IEEE标准:http://www.cnblogs.com/kingwolfofsky/archive/2011/07/21/2112299.html直观表示:http://blog.csdn.net/pisheng/article/details/6191521深入理解:(定点数转换)http://blog.csdn.net/ganxingming/article/details/1361697 阅读全文
posted @ 2012-04-21 21:17 aitao 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/motadou/archive/2009/01/17/1558438.html1 -- 结构体数据成员对齐的意义许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,而这... 阅读全文
posted @ 2012-04-21 10:40 aitao 阅读(9292) 评论(1) 推荐(0) 编辑