秋招复习-C++(三)

• 数据库html

1.数据库的索引有哪些?程序员

(1)B树索引:利用B树做为底层数据结构的索引,在B树索引中保存索引列的值和数据表的对应行的ID,每个叶子结点都存放着一个索引列的值和数据表对应行的ID,经过这个能够实现快速查询。数据库

(2)位图索引:当字段的基数很低时,须要使用位图索引(效率较高),将某个字段全部可能的值用对应的位去表示,每一条记录对应一组位,字段与位符合的置为1,不然置为0,节省内存空间session

(3)反向键索引:为了解决B树索引对顺序键值的不适配致使创建好的索引而提出的一种特殊的B树索引,可让索引的叶子结点分布更为平均,每次进行索引时反向键索引会先反向每一个键值的字节,而后对反向后的新数据进行索引。数据结构

(4)基于函数的索引:即查询语句中包含了函数表达式做为查询条件,为了提升查询效率(避免全表扫描),能够采用基于函数的索引,即利用函数表达式做为索引项进行查找。函数

(5)哈希索引、全局索引等其余索引spa

 能够参考这篇博客:https://www.cnblogs.com/sessionbest/articles/8689255.htmlcode

• C++htm

《Effective C++》总结:https://www.cnblogs.com/shenshenlei/p/5497967.html对象

1. 定义一个空类,会发生什么?

      编译器会自动为空类声明一个默认构造函数(无参),一个拷贝构造函数,一个赋值运算符(=)以及一个析构函数,而且这个析构函数默认是非虚函数,除非这个空类的基类定义了一个虚析构函数。注意这里只是声明,只有在这些函数被实际调用的时候才会被编译器所建立。(参考《Effective C++》条款5)

2.编译器默认提供的函数,若是不想要使用,应该将拷贝构造函数和赋值运算符声明为私有的,而且不予以实现,这样就能够阻止编译器实现将一个对象拷贝成另外一个对象(从逻辑上来讲是不存在两个对象彻底相同)。

      C++11之前:将拷贝构造函数和赋值运算符函数均声明为私有,而且不予以实现,以下代码所示:

 class temp{ public: ...... private: temp(const temp& f);//拷贝构造函数
    temp& operator=(const temp&);//重载赋值运算符,只声明不定义 }

        C++11出现了新的标准,容许程序员以一种新的方式实现以上功能,以下代码所示, 支持C++11的编译器上也能够将成员函数定义成delete,这样就实现了对编译器默认提供的函数的屏蔽。(具体能够参考《Effective C++》条款6)

1 class temp 2 { 3 public: 4  ... 5 private: 6  ... 7     temp(const temp&) = delete; //拷贝构造函数
8     temp& operator=(const temp&) = delete; //重载赋值运算符

 • 多进程

多进程通讯方式(IPC)及特色总结

     无名管道(pipeline): 简单方便,但只适合于父子进程之间(也能够提供给子进程的子进程即孙进程),局限于单向通讯,必须有一方关闭管道的写入,另外一方关闭管道的读取,实用范围小。

      命名管道(FIFO):与无名管道相反的是,FIFO能够实现任意进程之间的通讯,不仅限于父子进程之间,功能比无名管道强大,不足之处是命名管道长期驻留在内存中,使用不当容易出错。

相关文章
相关标签/搜索