博客园  :: 首页  :: 联系 :: 管理

2013年3月25日

摘要: Chapter 3 Data语义学 The Semantics of DataData Member的绑定:主要是作用域的规定Data Member的布局类的static data member会放在程序的数据段(data segment)。不同的access section的数据们放置没有强制的前后关系。vptr的放置也没有强制规定。Data Member的存取static data member的存取:由于static data member放在程序的数据段,访问时用唯一的地址即可。如果两个不同的class有同名的static data member,则这两个同名的member会被name 阅读全文

posted @ 2013-03-25 20:05 Apprentice89 阅读(501) 评论(0) 推荐(0)

2013年3月21日

摘要: Chapter 2 构造函数语义学关于C++,最常听到的一个抱怨就是:编译器背着程序员干了太多的事情。默认构造函数 default constructor如果没有程序员定义的构造函数,则会有一个default constructor被隐式(implicity)声明出来。一个被隐式声明的default ctor有时候会是一个trivial的ctor(完全什么也不做,连成员变量也不初始化,等于没有这个ctor,只是概念上有而已)。在以下四种情况下,这个隐式声明的default ctor会是nontrivial ctor。情况1:这个类含有带有default ctor的成员。例如:classFoo 阅读全文

posted @ 2013-03-21 15:23 Apprentice89 阅读(628) 评论(0) 推荐(0)

摘要: Chapter 1 关于对象C++的对象:C++的class ADT相比C struct在布局上成本的额外负担是由virtual引起的:virtual function(用于支持动态绑定),virtual base class(用于实现“多次出现在集成体系中的base class,有一个单一而被共享的实例”)。C++中,有两种class data member:static和nonstatic,三种class function member:static, nonstatic, virtual。classPoint {public: Point(float xval); virtual ~Po 阅读全文

posted @ 2013-03-21 15:21 Apprentice89 阅读(1479) 评论(0) 推荐(0)

2013年3月14日

摘要: C++左值和右值 左值和右值是针对表达式而言的,一个表达式要么是左值,要么是右值。 左值和右值的判定:如果一个语句结束的时候,该表达式代表的对象立刻被销毁,则为左值,否则为右值。 也就是说,右值代表的是临时对象或者字面值,而左值则不是临时对象。于是另一种判定方法是:具名的表达式意味着是左值,非具名的则为右值(非具名左值引用是个例外,它是左值)。 非具名左值的例子: 1: ... 阅读全文

posted @ 2013-03-14 22:04 Apprentice89 阅读(251) 评论(0) 推荐(0)

2013年1月21日

摘要: Ext文件系统族l 简介² 文件系统要考虑的几个问题:碎片、空间利用率、维护内容一致性。Ext2文件系统l 结构概况² 块组(Block Group):块组是Ext2的核心要素。² 文件系统是由大量块组在硬盘上相继排布。如图。一个块组硬盘如下² 启动扇区是硬盘上的一个区域(一般是第一个扇区),加电后BIOS自动加载并执行其中的内容。² inode间接索引数据块:灵活应对大小文件。² ext2试图将同一个文件的块维持在同一个块组中。² ext2在分配块的时候采用预分配的方式。² 创建文件系统:用户空间工具mke2fs 阅读全文

posted @ 2013-01-21 21:53 Apprentice89 阅读(240) 评论(0) 推荐(0)

2013年1月20日

摘要: 文件系统的操作l 注册文件系统² 文件系统信息用struct file_system_type来描述。² fs/super.c中register_filesystem注册文件系统。l 装载和卸载文件系统² 文件系统的装载由mount系统调用发出。² UNIX使用单一的文件系统层次描述,新的文件系统集成到其中(mount到这个文件系统中)。² 装载点:原来的文件系统的一个目录,用来挂载新的文件系统。挂载后,该目录的内容变成新文件系统的根目录的内容,原有内容消失直到被挂载的文件系统卸载。装载可以嵌套。² 每个装载的文件系统都对应一个str 阅读全文

posted @ 2013-01-20 18:03 Apprentice89 阅读(300) 评论(0) 推荐(0)

2013年1月19日

摘要: 《第八章》虚拟文件系统VFS的层次文件系统实现与用户进程(或C库)之间。文件系统分类基于磁盘的文件系统(ext2/3 fat iso9660…)、虚拟文件系统(proc)、网络文件系统(nfs)通用文件模型VFS提供一种结构模型,包含了一个强大的文件系统所应具备的所有组件。所有的文件系统实现,都必须提供与VFS定义的结构配合的例程,以弥补两种试图之间的差异。文件描述符一个整数,在用户层所有有关文件的操作中用于标识一个文件,在打开文件时由内核创建,特定于进程。inodel inode是什么?² inode用来存放文件的元数据(例如,文件的创建者、文件的创建日期、文件的大小等等) 阅读全文

posted @ 2013-01-19 20:32 Apprentice89 阅读(633) 评论(0) 推荐(0)

2012年12月23日

摘要: (Shoemaker's Problem)A shoemaker hasNorders from customers which he must satisfy. The shoemaker can work on only one job in each day, and jobs usually take several days. For theith job, the integerTi(1Ti1, 000) denotes the number of days it takes the shoemaker to finish the job.But popularity ha 阅读全文

posted @ 2012-12-23 19:49 Apprentice89 阅读(270) 评论(0) 推荐(0)

摘要: Stacks of Flapjacks原文链接 http://blog.csdn.net/yzfuture2010/article/details/8091337有一堆煎饼,直径各异,摞成一堆。可用一把铲子插入任意两张饼之间,完成一次对铲子之上所有饼的翻转操作。假设最底部的饼的位置为1,最顶层的饼的位置为n。对第i (1≤i≤n) 张饼及其上的所有饼的一次翻转操作可以记为flip(i)。最左边一列经过flip(3)变为中间一列,而中间一列经过flip(1)变为最右边一列。求算法,使得能对任意给出的一堆饼经过如上操作变为有序堆。堆中最小直径的饼在最顶层,最大直径的饼在最底层。算法很简单,在n个. 阅读全文

posted @ 2012-12-23 11:53 Apprentice89 阅读(903) 评论(0) 推荐(0)

2012年12月17日

摘要: 计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。 在一个MBR分区表类型的硬盘中最多只能存在4个主分区。如果一个硬盘上需要超过4个以上的磁盘分块的话,那么就需要使用扩展分区了。如果使用扩展分区,那么一个物理硬盘上最多只能3个主分区和1个扩展分区。扩展分区不能直接使用,它必须经过第二次分割成为一个一个的逻辑分区,然后才可以使用。一个扩展分区中的... 阅读全文

posted @ 2012-12-17 10:38 Apprentice89 阅读(20335) 评论(0) 推荐(5)