main函数中的argc和argv C++ main函数的参数 C++的main函数可以没有输入参数,也可以有输入参数,而且只能有两个参数,习惯上coding如下: int main(int argc, char* argv[]) 或者 int main(int argc, char** argv) 其中,argc = argument count :表示传入main函数的数组元素个数,为int类型,而 argv = argument vector :表示传入main函数的指针数组,为char**类型。第一个数组元素argv
innoDB存储引擎-索引与算法-第五章 5.1索引简介5.1.1innoDB存储引擎支持以下几种常见的索引:1.B+树索引-2.全文索引3.哈希索引-哈希索引是自适应的,innoDB存储引擎会根据情况自动为决定是否为表生成哈希索引,不能人为干预是否在一张表中生成哈希索引5.2 数据结构与算法5.2.1二分查找法5.2.2二叉查找树和平衡二叉树5.3 B+树B+树的精简定义:B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找书。在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上,
innoDB存储引擎-表-第四章 4.1.索引组织表1.什么是索引组织表?在innoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。2.innoDB是怎么选择或创建主键的?在innoDB存储引擎中,每个表都有一个主键,如果在创建表时没有显示地定义主键,则innoDB会按以下方式选择或创建主键:1.首先判断表中是否有非空的唯一索引(Unique NOT NULL),如果有,则该列为主键2.如果不符合条件1,则innoDB存储引擎自动创建一个6字节大小的指针当表中有多个非空唯一索
innoDB存储引擎-文件-第三章 本章将分析构成mysql数据库和innodb存储引擎表的各种类型文件。这些文件有:1.参数文件2.日志文件3.socket文件4.pid文件5.MySQL表结构文件6.存储引擎文件3.1参数文件1.什么是参数文件?1.参数文件告诉mysql实例启动时在哪里可以找到数据库文件2.参数文件指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型mysql数据库的参数文件是以文本方式进行存储的。用户可以通过一些常用的文本编辑软件(vi和em
innoDB存储引擎-第二章 2.3 InnoDB体系结构2.31后台线程1.Master thread2.IO thread3.Purge thread4.Page Cleaner Thread2.32内存1.缓冲池2.LRU List,Free List和Flush List1.LRU算法的作用?通常来说,数据库中的缓冲池是通过LRU算法来进行管理的,LRU算法即为Latest Recent Used,最近最少使用算法。我们通常的做法是将最频繁使用的页放在LRU列表的前端,最少使..
C++ 函数指针和指针函数 C++中的一个重要概念及其特点,也是掌握C++ 比较困难的部分。本文主要介绍函数指针和指针函数用法及区别。1、指针函数指针函数,简单理解就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式如下:*类型标识符 函数名(参数表)例如,int *myfun(int x,int y);注意:在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针。指针函数的写法可以有以下几种:int *fun(int x,int y);
C++智能指针 C++中有auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针。智能指针的主要作用是管理堆内存。因为在C++中,堆内存由程序员手动释放,那有时候可能会出现程序员忘记释放的这一种情况,智能指针就是为了防止这种情况出现的,它的作用是自动化的管理我们的堆内存。1.auto_ptrauto_ptr是在C++98中引进的一个概念,那它在C++11中是已经被废弃了。原因是使用auto_ptr可能会造成和我们的浅拷贝相似的问题:同一块内存的重复释放,导致程序崩溃。
template的用法(超详细) 假如我们有以下函数int compare(const string &v1,const string &v2){ if(v1<v2)return -1; if(v1>v2)return 1; return 0;}这个函数比较两个值并指出两个值的大于,小于或者等于关系。1.函数模板1.template<typename T>int compare(const T&v1,const T&v2){
STL源码剖析-stack 1.stack概述stack是一种先进后出的数据结构,它只有一个出口。stack允许新增元素,移除元素,取得最顶端元素,但除了最顶端外,没有任何其它方法可以存取stack的其他元素。换言之,stack不允许有遍历行为2. stack定义完整列表stack以deque为底部结构并封闭其头端开口,便轻而易举地形成了一个stack。SGI STL以deque作为默认情况下的stack底部结构,stack的实现因而非常简单 由于stack以deque为底部容器...
for循环的正确执行顺序 假设有以下for循环:for(init-statement;condition;expression){ //statement}那么它的计算顺序如下:1.循环开始时,先执行一次init-statement2.接着,求解condition。如果条件为true,执行循环,如果条件为false,则不执行for循环体3.如果condition条件为true,执行for循环体statement4.注意!重点来了!最后才是求解这个expression!...
C++-回调函数 1. 什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A君去B君店里买东西,恰好缺货,A君留下号码给B君,有货时通知A君。感觉这个让人更容易想到的是异步操作,而不是回调。另外还有两句英文让我印象深刻:1) If you call me, I will call you back; 2) Don't call me, I will call
C++右值引用 1.左值和右值什么是左值和右值?在C++中,一个表达式,不是左值就是右值左值:可以取地址,位于等号左边右值:不能取地址,位于等号右边(右值没有可标识的地址,右值仅仅是计算过程中保存在寄存器的临时值)int a = 5;a可以通过&取地址,位于等号左边,所以a是一个左值 5不能通过&取地址(编译器会报错),位于等号右边,所以5是一个右值可以使用&取地址运算符判断一个表达式是否为左值,即是否有一个地址,&作用于右值时,编译器会报错2.
explicit关键字 1.explicit关键字的作用explicit关键字的作用就是防止类构造函数的隐式自动转换class CxString // 使用关键字explicit的类声明, 显示转换 { public: char *_pstr; int _size; explicit CxString(int size) { _size = size; // 代码同上, 省略... } CxStri.
C++11Lambda表达式 C++ 11 Lambda表达式C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达式完整的声明格式如下:[capture list] (params list)
constexpr 1.用constexpr修饰变量1.1 const在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量,举一个简单的例子:void func(const int num){ const int count = 24; int array[num]; // error,num是一个只读变量,不是常量 int array1[count]; // ok,count是一个常量 in.
C++中的static C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下://Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void
C++std std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准库中的函数或者对象都要用std来限定。至于为什么将cout放到名字空间std中,是因为象cout这样的对象在实际操作中或许会有好多个,比如说你自己也可能会不小心定义一个对象叫cout,那么这两个cout对象就会产生冲突。那么std都是在什么时候使用?一般来说,std都是要调用C++标准库时使用。比如:使用标准库文件iostream时,要写上std;使用非标准库文件iostream.h,...
final关键字 final关键字的含义:final关键字代表最终的、不可改变的常见的四种用法:① 可以用来修饰一个类② 可以用来修饰一个方法③ 可以用来修饰一个局部变量④ 可以用来修饰一个成员变量1、final关键字用于修饰类格式如下: public final class 类名称 { ... }作用:使当前这个类不能有任何子类。(“太监类”)注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写2、final关键字用于修饰成员方法格式如下...
inline函数 1.inline函数1.为什么要用inline函数对于一个代码很少的函数,函数调用时传递参数和得到返回结果的开销可能比函数体内部代码的开销还大,并且编译器生成用于参数传递或返回结果的代码可能比函数体代码占用更多内存,对于这种短小的函数,可以在函数定义前用关键字inline声明为内联函数,从而可避免函数调用的开销,提高程序效率,且使程序代码更短。2.inline函数做了什么inline函数指示编译器在编译时将函数调用语句替换为函数体的代码并对函数体的局部变量名做一些调整。例如:inl