自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 并发和并行

并发并发:指宏观上看起来两个程序在同时运行,比如说在单核cpu上的多任务。但是从微观上看两个程序的指令是交织着运行的,你的指令之间穿插着我的指令,我的指令之间穿插着你的指令,在单个周期内只运行了一个指令。这种并发并不能提高计算机性能,但是能提高程序运行效率。并行并行:指严格物理意义上的同时运行,比如多核cpu,两个程序分别运行在两个核上,两者之间互不影响,单个周期内每个程序都运行了自己的指令...

2019-08-07 15:29:52 106

原创 阻塞IO、非阻塞IO、同步、异步

Linux IO模式分为5种阻塞IO(blocking IO)非阻塞IO(non-blocking IO)IO多路复用(IO multiplexing)信号驱动(signal driven IO)(不常用)异步IO(asynchronous IO)1、阻塞IO(blocking IO)在Linux中,默认情况下,所有的socket都是阻塞的。图示如下:图中提到两个阶段,两个阶段都被...

2019-07-30 10:24:19 231

原创 C/C++语言篇:虚析构函数

析构函数的作用类的析构函数是为了释放内存资源,析构函数不被调用的话会造成内存泄露。虚析构函数的作用定义虚析构函数是为了,当用一个基类指针删除一个派生类对象时,派生类的析构函数会被调用。C++默认析构函数不是虚函数,是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此,C++默认的析构函数不是虚函数,而是只有需要作...

2019-07-25 16:42:25 177

原创 C/C++语言篇:4种智能指针

C++中主要用New和Delete来分配和释放内存,但是有时候我们常常忘记Delete而造成内存泄露。为了避免这个问题,C++引入了智能指针模板类来管理动态内存。C++中智能指针有四种:auto_ptr,unique_ptr、share_ptr、weak_ptr。1、auto_ptr(C++98的方案,C++11已放弃)auto_ptr要求对它拥有的指针完全占用,两个auto_ptr不能同时...

2019-07-24 09:47:10 346

原创 C/C++语言篇:指针和引用的区别

指针是一个变量,是一块内存的地址值,而引用只是一个别名;sizeof时,指针的大小时4,而引用则是引用变量或对象的大小;指针可以初始化为空,但是引用不能初始化为空,且引用必须显示初始化;指针可以改变指向,而引用一经初始化后就不能改变;可以有const指针,不能有const引用;(为什么?)因为引用本来就是不可变得,无需加const修饰,所以只有常量引用(int const &b)...

2019-07-22 21:33:02 101

原创 C/C++语言篇:C++中四种 cast 转换

C++中四种强制类型转换是:static_cast,dynamic_cast,const_cast,reinterpret_cast1、static_cast用于类层次结构中基类和派生类之间指针或引用的转换

2019-07-22 21:01:09 1511

原创 C/C++语言篇:C++和C的区别

主要分两部分阐述:1.设计思想上:C是面向过程的结构化编程语言;C++是面向对象的语言。2.语法上:C++具有重载、继承和多态三种特性;C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还有new/delete关键字;C++支持函数重载,而C不支持函数重载;C++中有引用,而C没有C++支持范式编程,比如模板类,函数模板等等等。。...

2019-07-16 19:55:14 133

原创 C/C++语言篇:static关键字的作用

番外:内存的5大区域:栈区、堆区、全局区(静态区)、文字常量区、代码区静态变量: 全局静态变量、局部静态变量、静态成员变量(都属于全局变量)静态函数: 普通静态函数、 静态成员函数一、静态变量在变量前加上关键字static,变量就定义成静态变量。内存中位置:数据区(全局区)初始化:未经初始化的静态变量会被自动初始化为0生命周期:初始化后,在整个程序运行期间一直存在1、全局静态变...

2019-07-12 17:46:27 114

原创 虚析构函数的作用

总的来说,虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用的到。也就是说虚析构函数使得,在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,从而防止内存泄露。基类使用虚析构函数 --> 当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被使用。所以,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给...

2019-06-24 15:53:11 2276

原创 typedef的用法

typedef的4种常见用法:1、给已定义的变量类型起个别名;2、定义函数指针类型;3、定义数组指针类型;4、定义数组类型。没加typedef之前如果是个数组,那么加typedef之后就是数组类型;没加typedef之前如果是个函数指针,那么加typedef之后就是指针类型;没加typedef之前如果是个指针数组,那么加typedef之后就是指针数组类型;typedef char ...

2019-06-20 22:26:11 812

原创 二叉树遍历(前序、中序、后序、层次)

四种遍历的基本思想:前序遍历:根节点 --> 左子树 --> 右子树中序遍历:左子树 --> 根节点 --> 右子树后序遍历:左子树 --> 右子树 --> 根节点层次遍历:由上到下,由左到右依次遍历例子:前序遍历:1 2 4 5 3 6 7中序遍历:4 2 5 1 6 3 7后序遍历:4 5 2 6 7 3 ...

2019-03-30 12:09:47 153

原创 进程终止的方式

进程有5种正常终止及3中异常终止方式。5种正常终止方式具体如下:(1)在main函数内执行return语句。等效于调用exit。(2)调用exit函数。此函数由ISOC定义,其操作包括调用个终止处理程序,然后关闭所有标准I/O流等。(3)调用_exit或_Exit函数。ISOC定义_Exit,其目的是为进程提供一种无须运行终止处理程序或信号处理程序而终止的方法。对标准I/O流是否进行冲洗,...

2018-12-29 20:14:18 520

原创 丑数

题目:我们把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z,我们发现一个丑数一定由另一个丑数乘以2或者乘以3或者乘以5得到,那么我们从1开始...

2018-12-17 10:23:15 76

原创 静态成员&&静态成员函数

reference to non-static member function must be called sort(numbers.begin(),numbers.end(),cmp);做算法题的时候遇到的一个问题,和成员函数相关,这里记录一下备忘。首先上代码:class Solution {public: bool cmp(int a,int b) { ...

2018-12-16 09:58:53 452

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除