自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (9)
  • 收藏
  • 关注

原创 C++ 多态

多态性:即把具有继承关系的多个类型(不同派生类)称为多态类型,因为我们能使用这些类型的”多种形式”而无需在意他们的差异。指针和引用的静态类型和动态类型不同是C++支持多态性的本质。 当我们使用基类的指针或引用调用基类中定义的一个函数时,我们并不知道该函数真正作用的对象是什么类型,因为他可能是一个基类的对象,也可能是一个派生类的对象。如果该函数是虚函数,则直到运行时才会决定到底执行哪个版

2016-03-31 21:52:48 222

原创 基类和派生类

如果基类base中有虚函数,派生类sub继承基类,在初始化时: 1、通过类定义的基类对象,用派生类去初始化基类时,基类对象不会转化为派生类对象,即基类对象调用的函数还是自己内部写的; 2、通过指针,定义的基类对象,用派生类去初始化时,会将此基类对象转化为派生类对象,即调用的重载函数是派生类内部的函数,和基类的函数无关。即:基类的指针或引用可以绑定的派生类对象上,这也就对于工厂模式最好的利用。可以

2016-03-31 21:16:19 858

转载 如何解决内存碎片

内存碎片的产生: 内存分配有静态分配和动态分配两种 静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。 因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用

2016-03-29 22:20:20 1656

转载 n&(n-1)

n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子: n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000 可以看到原本最低位为1的那位变为0。 弄明白了n&(n-1)的作用,那它有哪些应用? 1. 求某一个数的二进制表示中1的个数 while (n >0 ) { count ++; n &

2016-03-28 22:12:23 304

原创 lamabda表达式

定义:可以理解为一个未命名的内联函数。他一般定义在某个函数的内部。其具体形式如下: [capture list] (parameter list) -> return type {function body;} 其中:capture list是捕获列表,捕获lamabda所在函数定义的局部变量,可以为空,如果有,则在函数体中会用到此变量,此变量的值是调用此lamabda之前最后一次改变的值。pa

2016-03-27 21:52:15 1839

原创 指针和引用

引用:本质是一个变量的别名,它和该变量绑定在一起,在定义引用时,必须使用相应的变量进行初始化,否则会编译错误。例如: int &a;这样就会编译错误,int &a = ival;ival为整型这样正确。 指针:其本身就是一个对象,它占用地址空间, 区别是:第一,本身是对象,允许对指针进行赋值和拷贝,在其生命周期内可以指向不同的对象,而引用则不能;第二:指针无须在定义时赋初值,而引用必须付初值。

2016-03-27 21:41:53 208

原创 constexpr和decltype

constexpr:将变量声明为constexpr类型以便编译器来验证变量的值是否是一个常量表达式,C++11允许定义consexpr函数,这种函数要足够简单以使得编译时就可以计算其结果. decltype:类型指示符,作用是选择并返回操作数的数据类型。例如decltype(f()) sum = x;sum的类型就是函数f的返回类型。参数可以是一个变量或函数,注意:decltype((variab

2016-03-27 21:36:33 341

原创 迭代器类型

除了原生指针如int*等之外,迭代器总共有5种: Input Iterator:只读迭代器:这种迭代器所指的对象不允许外界改变,支持operator++; Output Iterator:只写迭代器:只能写,支持operator++; Forward Iterator:允许在其所形成的区间内进行读写操作,支持operator++; Bidirectional Iterator:双向迭代器:支

2016-03-27 21:12:09 388

原创 vector 和list

面试:为什么在字符串编程时用vector而不用list? vector和list的区别: vector适用:对象数量变化少,简单对象,随机访问元素频繁,它维护的是一个线性连续控件,所以普通指针就可以作为vector的迭代器。迭代器类型是随机迭代器 Random Acess Itrator.迭代器是普通指针。所以对于要随机存取的数据中的子数据来说,vector比list好用。 list适用:对象

2016-03-27 21:02:41 293

原创 char,short,int,long等数据类型

char:占一个字节,8位 short:占两个字节,16位 int:一般占一个机器字节,对于16位操作系统,则占16位,即2个字节,32位操作系统则占32位,即4个字节,64位操作系统为了向下兼容,也是32位。 long:只是规定了最小和int型一样大一般占1个或2个机器字节

2016-03-27 20:48:06 661

原创 C++ 内存

C++中内存的分配有:内存池,静态内存和栈内存。 静态内存:用来保存局部static对象,类中static变量,以及全局变量; 栈内存:保存定义在函数内部的非static变量,对象。 分配在静态内存或栈内存中的对象和变量由编译器自动创建和销毁,对于栈对象和变量,仅在所定义的程序块运行时才存在,离开该代码块,则自动销毁。而对于静态内存中的变量和对象,则在使用之前就对之分配内存,在整个程序结束时才

2016-03-25 14:51:31 221

原创 继承、重载、多态

在C++中,重载和多态是一个概念:都是可以有多个同名函数,只是参数类型和参数个数不一样。 继承:是针对类来说,子类继承父类,函数是一个纵向过程,子类的函数可以对父类的函数进行重写,可以针对不同的子类函数实现不同的具体功能。而多态则是一个横向过程,同一函数可以表现出不同的行为。 什么是面向对象:面向对象主要有四大特征: 1、抽象性:是对一个类的行为的功能抽象。 2、继承性:类可以被继承 3、

2016-03-24 21:47:03 408

原创 CPU调度准则

相关概念: CPU使用率:使CPU尽可能的忙,即忙的时间/CPU运行时间; 吞吐量:单位时间内完成的进程数; 周转时间:从进程提交到进程完成的时间。包括所有时间段之和,包括进入内存、在就绪队列中等待、在CPU上执行和I/O上执行; 等待时间:就绪队列中等待所花时间之和。 响应时间:提交请求到产生第一响应的时间。

2016-03-23 09:55:43 3362

转载 KMP算法

引用一篇非常经典的KMP算法解析,转载一下,记录下来,并稍作修改。谢谢这位大牛: 这里写链接内容 自己理解的代码如下:#include<iostream>#include<string>#include<vector>using namespace std;vector<int> coll;void makeNext(const char P[],i

2016-03-16 17:02:05 257

转载 trie树

根据网易题库,对trie树的理解如下:trie树又称为字典查找树,主要用于统计和查询,可以统计单词前缀的个数。其解决问题的思路主要来源于: http://blog.csdn.net/hackbuteer1/article/details/7964147,十分感谢,并对之进行稍微的修改。使之以C++的方式进行实现。 Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(

2016-03-15 22:32:59 279

原创 HTTP解析

http超文本传送协议:是利用传输层tcp实现的,但其协议本身是无连接,即当每当服务器响应一次以后,该tcp连接就会被释放,不会记忆此连接,当下次再以统一网址进行请求时,服务器将之当做一个新的请求。http通过url来访问资源,url的格式为: http://<主机名(ip)>:<端口>/<路径> http工作流程: 1、解析此url; 2、想DNS解析出主机名的ip地址; 3、与服务

2016-03-15 09:55:34 390

原创 关联式容器

容器分为序列式容器和关联式容器,而关联式容器主体有set,map,hashtable为主,而mutiset,multimap,hash_set, hash_map,hash_multiset,hash_multimap都是其扩充。 set:其键值和实值都是同一个值,注意:set并没有什么机制,因为其底层是由RB-tree实现的,由于rb-tree的节点值不能有重复,所以set中的值在实现的时候就不

2016-03-14 22:49:09 372

原创 红黑树

红黑树是关联式容器的底层结构(set,map等),它是一颗二叉搜索树,即左子树的值小于该节点,右子树的值大于该节点,除此之外,满足一下规则: 1、每个节点不是红色就是黑色; 2、根节点为黑色; 3、若节点为红色,则其子节点必为黑色; 4、任一节点到叶子节点的任何路径,所含的黑节点数必须相同。 注意:并不一定要满足平衡二叉树的左右子树高度相差最多为1,因为其本身就由很好的平衡度。 对于新增

2016-03-13 22:24:27 242

原创 序列式容器

序列式容器先掌握有vector,list,deque.现在一一讲述。 vector:分配空间是一种线性空间,迭代器属于普通指针(即原生指针),由于是普通指针,所以是一种随机存取的迭代器。由于是线性空间,所以操作速度很快,虽然是可增长的,但在实际分配空间时,是按照定义所指定大小的2倍空间进行分配,如果后续增加的元素大于了此容量空间,那就需要按一下步骤进行操作: 1、重新找一块新的空间,是此容量的2

2016-03-13 16:36:02 453

原创 为什么银行有取号机而超市结账的时候没有

个人理解如下: 银行有取号机的原因:柜台的人员相当于共享资源,而每一个客户相当于一个进程,取号的原因是共享资源一次只能使一个进程占用,由于每个进程占用的时间不同,这样就设置了一个优先级,所以当排队进程看到共享资源被占用,则该进程可以去处理其他业务,当共享资源被释放,唤醒优先级较高的进程,使之占用该共享资源,这样就能够有效得利用CPU。 超市结账时没有:此处每个客户占用的时间都差不多,所以并不需要

2016-03-13 10:35:06 1234

原创 TCP/IP解析

TCP:属于运输层,IP:属于网络层。 IP层只提供无连接,尽最大能力交付的数据服务。如果要保证可靠数据传输,就需要传输层的TCP协议来维护(比如差错处理,流量控制等)。TCP/IP中网络层IP提供的是数据报服务。运输层向应用层提供通信服务。IP层虽然能够将数据发送到目的主机,但是只是停留在网络层而没有交付给主机中的应用进程,TCP就提供应用进程之间的逻辑通信。 TCP建立: 客户端A和服务器

2016-03-10 10:20:36 397

原创 分页置换算法

常用的有三种:先进先出算法,最佳置换法,最近最少使用置换法。 先进先出算法:由于认为最早调入内存的页不再被使用的可能性要大于刚调入内存的页,因此,先进先出法总是淘汰在内存中停留时间最长的一页,即先进入内存的页,先被换出。先进先出法把一个进程所有在内存中的页按进入内存的次序排队,淘汰页面总是在队首进行。如果一个页面刚被放入内存,就把它插在队尾。 最佳置换法:最佳置换算法(OPT)在为调入新页面而必

2016-03-09 22:24:09 1607

原创 观察者模式

在设计模式中,首先有一个开放-封闭原则:开放是指可以被扩展,封闭是指原有的代码不能被修改。 观察者模式定义为:观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一对象,当该对象在状态发生变化时,会通知所有的观察者,是它们能够自动更新自己。 注意,观察者类与监听的对象的类不能有耦合,可以利用抽象类和接口来实现解耦合。将观察者类和监听的对象类都分别抽象为两个抽象类,在监听抽象类中的某个动作

2016-03-08 20:57:40 401

原创 线程死锁问题

有如下两个问题: 第一:线程死锁后CPU和内存的状况如何? 答:内存使用量不变,因为死锁后双方线程除了占用到自己的资源以外,并没有申请到其他内存资源。CPU应该分为两种情况:第一,在申请不到资源时一直处于等待,则会占用CPU的资源,导致CPU使用增加。第二:如果申请不到CPU资源时,就进入休眠状态,退出等待队列,就不会占用CPU资源。 第二:发生死锁以后,如何快速定位死锁线程,

2016-03-08 17:31:11 1011

gdi+ 9图类

在win32下利用gdi+绘制的9图类,纯手工制作,内含使用方式,只需要在9图类初始化时传入9图路径,在事件处理函数的WM_SIZE事件中调用draw函数即可,且支持阴影,亲测可用,便于集成

2018-08-06

boost API 中文库

中文的boost库开发手册,对于刚开始使用boost库的新手,英语不怎么好的,具有较好的指南

2017-12-29

C++标准程序库 侯捷版

侯捷版的C++标准程序库,适合STL的入门学习者

2017-03-05

vtk之体绘制

利用vtk实现的体绘制代码,绝对能跑,且代码解释详细,流程清楚,亲册

2016-12-12

vtk文件转obj文件

本程序可以将.vtk文件格式转化为.obj文件格式。

2016-11-01

ADO,ORACLE

实现对ORACLE数据的连接和操作,值得入门学习

2015-05-30

C/C++代码学习

此代码能实现BMP基本操作,读取、缩放、任意角度旋转,值得学习图像处理的基本入门

2015-05-30

空空如也

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

TA关注的人

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