首页 > 代码库 > 今日刷题总结7
今日刷题总结7
内联函数
内联函数是由inline关键字修饰。在类内定义的函数默认为内联函数。从源代码的层面上看,内联函数有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,这类似于宏替换,使用函数体替换调用处的函数名。能否形成内联函数,需要看编译器对该函数定义的具体处理。
内联函数的主要作用是用来消除函数调用时的时间开销。它通常用于频繁执行的函数,对于小内存空间的函数非常受益。
使用内联函数的时候要注意:
(1)递归函数不能定义为内联函数
(2)内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
(3)内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
(4)对内联函数不能进行异常的接口声明。
数据库系统
数据库系统(Data Base System,简称DBS)是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
数据库系统一般由4个部分组成:
(1)数据库,即存储在磁带、磁盘、光盘或其他外存介质上、按一定结构组织在一起的相关数据的集合。
(2)数据库管理系统(DBMS)。它是一组能完成描述、管理、维护数据库的程序系统。它按照一种公用的和可控制的方法完成插入新数据、修改和检索原有数据的操作。
(3)数据库管理员(DBA)。
(4)用户和应用程序。
数据库系统可分为两类:
(1)集中式DBS:是指数据库中的数据集中存储在一台计算机上,数据的处理也集中在一台计算机上进行。
(2)分布式DBS:是指数据存放在计算机网络的不同场地的计算机中,每一场地都有自治处理能力并完成局部应用;而每一场地也参与(至少一种)全局应用程序的执行,全局应用程序可通过网络通信访问系统中多个场地的数据。
页面置换算法
局部置换:只置换本进程内的物理页面。一个进程占用的物理页面总数是限定的,当需要置换时,即总数已经用完,新进来一个页面,本进程就需要换出一个老的页面。
全局置换:指的是进程缺页时,可能置换的是内存中所有可换出的物理页面。即要换进的是A进程的页面,出去的可以是B进程的页面,因此分配给进程的页面总数是动态变化的。
这两种总的置换策略下有各自的方法:
局部置换:
- 最优算法
- 先进先出算法(有Belady异常)
- Least Recently Used(最近最久未使用算法)
- 时钟算法
- 最不常用算法(Least Frequently Used)算法
全局置换:
- 工作集算法
- 缺页率算法
参考自http://blog.csdn.net/u011240016/article/details/53128209
ACID
acid指DBMS在写入或更新资料的过程中,为保证事物是正确可靠的,所必须具备的四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。
(1)原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
(2)一致性: 是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
(3)隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
(4)持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
指针和引用的区别
(1)相同点: a、都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
(2)区别:
a、指针是一个实体,而引用仅是个别名;
b、引用使用时无需解引用(*),指针需要解引用;
c、引用只能在定义时被初始化一次,之后不可变;指针可变;
d、引用不能为空,指针可以为空;
e、sizeof(引用)得到的是所指向的变量(对象)的大小,而sizeof(指针)得到的是指针本身(所指向的变量或对象的地址)的大小;
f、指针和引用的自增(++)运算意义不一样;
g、从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。
今日刷题总结7