- 博客(67)
- 收藏
- 关注
原创 free中的buffer和cache
free可以查看当前系统使用内存的情况buffercacheBuffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可搜索以干其他的事...
2019-04-18 21:10:54 364
原创 core dump
为什么会有core dump当一个程序发生异常的时候,可以选择把进程的用户空间内存写到磁盘上,文件名叫core,core-dump(核心转储)用于查看进程的错误信息,便于分析程序,进行事后调试。操作系统显示core文件的大小一般情况下系统会限制core文件的大小的,因为服务器上一般都有自启进程的进程,用于把挂掉的进程重新启动起来,如果要是产生core文件的话,服务器上挂满了core文件会产生...
2019-04-18 20:18:02 224
原创 C语言和C++的区别
1.函数的默认参数C++允许给参数赋默认值,C语言不允许函数调用的时候会有压栈开销,参数一般是从右向左压参int sub(int a = 10, int b) //错误int sub(int a, int b = 10); //正确注意:int sub(int a, int b = 10); int sub(int a = 10, int b) 这种声明很熟的...
2019-04-10 17:07:07 951
原创 malloc的底层实现
内存管理(虚拟内存空间)每个进程都有一个虚拟内存空间,虚拟内存空间通过MMU(存储器管理单元)映射到真正的物理空间,MMU是一个硬件,利用存储在主存中的查询表翻译虚拟地址,查询表由操作系统管理,用户无法获取。虚拟地址空间给每个进程一个假象,就像每个进城拥有4G的运行空间一样,但是实际在使用内存的时候,虚拟地址空间通过映射到物理地址空间。物理内存已经映射的物理空间有一个break指针,指针...
2019-04-09 17:15:52 260
原创 高并发的内存池
优势内存碎片问题。(尽量缓解)性能问题。(提高申请内存的效率)多核多线程环境下,锁竞争问题结构threadCache第一层的结构是一个class ThreadCache{public: void* Allocate(size_t size); void Deallocate(void* ptr,size_t size); void* FetchFromCentral...
2019-04-03 00:09:27 339
原创 运算符重载
运算符重载函数原型:返回值类型 operator操作符(参数列表)不能通过连接其他符号来创建新的操作符:比如operator@重载操作符必须有一个类类型或者枚举类型的操作数用于内置类型的操作符,其含义不能改变,例如:内置的整型+,不 能改变其含义作为类成员的重载函数时,其形参看起来比操作数数目少1成员函数的操作符有一个默认的形参this,限定为第一个形参.* 、:: 、...
2018-11-16 21:12:12 277
原创 拷贝构造函数
拷贝构造函数只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用特征拷贝构造函数是构造函数的一个重载形式拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用若未显示定义,系统生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝我们叫做浅拷贝(值拷贝),有时候会...
2018-11-16 21:05:17 229
原创 构造函数与析构函数
Date类class Date{private : int _year ; int _month ; int _day ;};1.构造函数定义:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次特征函数名与类名相同。无返回值。对象实例化时编译器自动调用对应的构造函...
2018-11-16 20:49:20 359
原创 (this)指针
日期类:class Date{public : void Display () { cout <<_year<< "-" <<_month << "-"<< _day <<endl; cout<<this->_year<&
2018-11-16 20:06:05 275
原创 类对象大小的计算
class A // 1字节{public: void PrintA { cout&lt;&lt;_a&lt;&lt;endl; }private: char _a;};存储方式:每个对象都输自己的数据成员成员函数放在公共代码区域一个类的大小,实际就是该类中”成员变量”之和编译器给了空类一个字节来唯一标识这个类。存储的时候要遵守内存对其原则:第一个成员在与...
2018-11-16 19:54:20 394
原创 struct和class的区别
在C++中class和struct都可以定义类区别在于:struct成员默认访问方式是public,class的默认成员访问方式是private上面提到了3个访问限定符public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)访问权限作用域从该访问限定符出现的位置开始直到下一个访问...
2018-11-15 11:03:09 1072
原创 指针空值(nullptr)
在C语言中我们只用NULL作为空指针,而在C++中我们使用nullptr作为空指针,void f(int){ cout<<"f(int)"<<endl;}void f(int*){ cout<<"f(int*)"<<endl;}int main(){ f(0); //调用第一个 f(NULL); //调用第一个 f((int...
2018-11-15 10:54:28 618
原创 auto关键字
定义:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。int TestAuto(){ return 10;}int main(){ int a = 10; auto b = a; // int auto c = 'a'; // char auto d = TestAuto(); // int //a...
2018-11-15 10:49:35 177
原创 内联()
定义以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。像宏一样特性inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等等,编译器优化时会忽...
2018-11-15 10:36:38 295
原创 引用(&)
** 引用的定义:** 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。#include<iostream>using namespace std;int main(){ int a = 10; int& ra = a; a = 20; //a, ra 都改为20,a,ra的地址一样...
2018-11-15 10:31:39 541
原创 函数重载
函数重载的定义: 是函数的一种特殊形式,C++允许在同一作用域中声明几个功能相似的同名函数,这些同名函数的形参列表(参数个数 或类型或顺序)必须不同,常用来处理实现功能相似数据类型不同的问题。返回值相同函数名相同我们需要搞清楚为什么C语言不支持函数重载,而C++支持???命名修饰规则运行需要经过下面4步:1.预处理:去注释、条件编译、宏替换、头文件的包含2.编译:生成汇编代码...
2018-11-15 09:59:43 143
原创 缺省参数(备胎)
默认缺省参数的定义: 声明或定义函数时为函数的参数指定一个默认值,在调用该函数时, ①如果没有指定实参则采用该默认值, ②否则使用指定的实参#include<iostream>using namspace std;void TestFunc(int a = 0){ cout<<a<<endl;}int main(){ TestFu...
2018-11-15 09:07:06 189
原创 输入和输出(cout/ cin)
#include<iostream>using namespace std;int main(){ cout<<"Hello world!!!"<<endl; return 0;}cout标准输出(控制台)cin标准输入(键盘)必须包含头文件#include<iostream>和std标准命名空间C++的输入输出很方便,不需要格...
2018-11-15 08:53:01 239
原创 命名空间
出现的原因: 在C/C++中,变量、函数和类都大量存在,这些变量、函数和类的名称都存在全局作用域中,可能会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。命名空间的定义:命名空间用关键字namespace,后面是命名空间的名称,然后又一堆{},{}中的是命名空间成员。//1.普通命名空间namespace N1 // N1为命名空间的名称{ // 命...
2018-11-15 08:48:18 156
原创 VS_2013出现scanf函数不安全的问题
错误 1 error C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. g:\code\c\test_10_...
2018-10-29 20:08:08 590
原创 VS_2013运行代码时显示窗口一闪而过
(1)在主函数的return语句前面加上getchar()(2)在主函数的return语句前面加上一个函数(3)通过设置点击项目–》选择最后一项属性–》通用配置–》--》链接器–》系统–》--》子系统–》控制台(console)–》确定...
2018-10-29 19:54:43 421
原创 C语言实现两个数的最大公约数
(1)穷举法c=两个数中小的一个,给两个数分别取余c,判断余数是否为0为0,c就是最大公约数不为0,依次给c–判断啥时候两个数的余数都为0,即为最大公约数#include<stdio.h>int main(){ int a = 0; int b = 0; scanf("%d %d",& a, &b); int c = a > b ? ...
2018-10-29 19:37:34 381
原创 make和
make是一条指令Makefile是一个文件hello.c文件 1 #include<stdio.h> 2 3 int main() 4 { 5 printf("hello Makefile!\n"); 6 return 0; 7 } Makefile文件 1 hello:hello.o 2 gcc hello...
2018-10-27 23:10:04 167
原创 linux环境下调试代码
//创建文件test.c[admin@bogon code]$ touch test.c[admin@bogon code]$ lstest.c//编辑test.c[admin@bogon code]$ vim test.ctest.c文件 1 #include<stdio.h> 2 3 int Sum(int x, int y) 4 { 5 ...
2018-10-27 22:39:02 991
原创 堆的实现(C语言)
如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。性质堆中...
2018-10-23 09:33:28 490
原创 平衡二叉树
https://leetcode-cn.com/problems/balanced-binary-tree/description/给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 ...
2018-10-22 15:47:48 189
原创 二叉树遍历
https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId=60&&tqId=29483&rp=1&ru=/activity/oj&qru=/ta/tsing-kaoyan/question-ranking题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串...
2018-10-22 15:15:27 134
原创 二叉树的最大深度
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/description/给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 ...
2018-10-22 14:48:28 137
原创 另一个树的子树
https://leetcode-cn.com/problems/subtree-of-another-tree/description/给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 /...
2018-10-22 14:30:26 161
原创 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3https://leetcode-cn.com/probl...
2018-10-21 23:42:52 123
原创 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...
2018-10-21 23:27:39 186
原创 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/递归后序遍历/** * Definition for a bin...
2018-10-20 23:26:00 159
原创 二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [null,1,3,2,null] 1 \ 2 / 3输出: [1,3,2]https://leetcode-cn.com/problems/binary-tree-inorder-traversal/description/递归访问/** * Definition for a binary...
2018-10-20 23:21:29 142
原创 二叉树的先序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]递归实现访问递归实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *le...
2018-10-20 23:13:38 270 1
原创 循环队列
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作: MyCircu...
2018-10-20 22:58:27 391
原创 最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。 pop() – 删除栈顶的元素。 top() – 获取栈顶元素。 getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(...
2018-10-20 22:28:28 124
原创 用栈实现队列
使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queu...
2018-10-20 22:14:58 182
原创 用队列实现栈
使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或...
2018-10-20 21:57:46 217
原创 括号匹配问题
给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。https://leetcode-cn.com/problems/valid-parentheses/description/示例 1:输入: "()"输出: true示例 2:输入...
2018-10-20 21:23:37 289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人