自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

勇敢无畏的活着

只有成为狼 才有资格与狼共舞

  • 博客(133)
  • 资源 (14)
  • 收藏
  • 关注

原创 类型安全 与 线程安全 、异常安全、事务安全

(1)类型安全类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。类型安全的编程语言与类型安全的程序之间,没有必然联系。好的程序员可以使用类型不那么安全的语言写出类型相当安全的程序,相反的,差一点儿的

2015-07-17 11:27:57 3291

转载 C++中const、volatile、mutable的用法

const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。例如:co

2015-07-03 16:39:35 413

转载 std::sort函数中的陷阱

前几天收到游戏中一个很严重的bug,执行某项操作的时候会出现卡死的现象。最后调试的时候定位到std的sort函数,发现一进这个函数就出不来了,很可能在里面出现了死循环。刚开始,我还是很诧异。大名鼎鼎,久经考验的的STL算法也会出现死循环?于是baidu了一下,果然在网上也发现不少人碰到过类似情况。出现死循环大多是由于在sort函数中的比较函数里面相等元素返回了true。 std的sort函

2015-06-11 08:32:01 2921

转载 死锁的原因、条件和避免死锁的方法

产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。产生死锁的四个必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的

2015-06-09 20:54:38 609

原创 是否有初始化列表、参数是否为引用时调用构造函数和析构函数的执行顺序

下面以例子说明参数为类对象,是否有初始化列表时构造与析构函数的执行顺序:#include using namespace std;   classA {public: A(){ cout"A"<<endl; }        A(constA& other){ cout"copy A"<<endl;}        ~A() { cout"~

2015-06-02 17:11:09 493

原创 C++中虚函数工作原理和(虚)继承类的内存占用大小计算

一、虚继承情况下类的内存大小计算当每个基类中有多个虚函数时,并且在虚继承的情况下,内存是如何分配的,如何计算类的大小,下面举例说明:#includeusing namespace std;class A{    public:    int a;    virtual void aa(){};};class D{public:

2015-06-01 09:50:07 810

转载 C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非整型)    常量和引用,必须通过参数列表进行初始化。    静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的代码以及其中注释:#in

2015-05-25 12:16:43 526

转载 C++ explicit关键字详解

首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString  // 没有使用explicit关键字的

2015-05-23 15:54:20 511

转载 fork两次如何避免僵尸进程收藏

[cpp] view plaincopy#include   #include   #include   #include     int main(void)     {        pid_t pid;             if ((pid = fork())     {             fprintf(

2015-04-23 22:16:53 710

转载 为何要fork()两次来避免产生僵尸进程?

当我们只fork()一次后,存在父进程和子进程。这时有两种方法来避免产生僵尸进程:父进程调用waitpid()等函数来接收子进程退出状态。父进程先结束,子进程则自动托管到Init进程(pid = 1)。      目前先考虑子进程先于父进程结束的情况:     若父进程未处理子进程退出状态,在父进程退出前,子进程一直处于僵尸进程状态。若父进程调用waitpid()(这里使用

2015-04-23 22:06:47 409

转载 Linux中的 僵尸进程 和 孤儿进程

在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。操作系统内核以进程标识符(Process Identifier,即PID)来识别进程。进程0是

2015-04-23 20:57:13 512

转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。  堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动

2015-08-13 15:57:17 492

原创 malloc、calloc、realloc、new以及alloca函数区别

malloc、calloc、realloc、new以及alloca函数一、综合叙述1) malloc 函数: void *malloc(unsigned int size)     在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。2)calloc 函数: void *calloc

2015-08-12 15:33:21 1143

转载 三种快速排序以及快速排序的优化

一、 快速排序的三种方法1、快速排序的基本思想:   快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)(2)分割操作:以该基准在序列中的实际位置

2015-07-08 21:47:59 645

原创 B-树、B+树、红黑树

B-树B-tree树即B树,B即Balanced,平衡的意思,B-树又称为多路平衡查找树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。一、定义B-树是一种多路搜索树(并不一定是二叉的)1970年,R.Bayer和

2015-07-08 17:59:17 4419

原创 堆、栈的区别

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati

2015-07-08 16:46:13 389

转载 设计模式大全

Longronglin之设计模式:Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。模式描述为:在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境。阅读类图和对象图请先学习UML创建模式 结构模式 行为模式创建模式:对类的

2015-07-08 11:24:33 493

转载 Heap corruption detected error

最近写程序忽然发现了一些错误,运行总是报Heap corruption detected. 断点单步发现总是在delete的时候出错。 以前也出现过,不过没啥注意,现在想留着是个大大的心病!于是上网查了相关资料: 下面是转载资料: http://www.cppblog.com/kerlw/archive/2007/04/10/21604.aspx今天写程序的时候到一个问题,

2015-07-03 16:40:47 696

转载 标准非STL容器 : bitset

1. 概念什么是“标准非STL容器”?标准非STL容器是指“可以认为它们是容器,但是他们并不满足STL容器的所有要求”。前文提到的容器适配器stack、queue及priority_queue都是标准非STL容器的一部分。此外,valarray也是标准非STL容器。bitset:一种高效位集合操作容器。2. APIbitset提供的api:(constructor)    Co

2015-06-11 08:30:29 451

转载 线程安全和线程不安全理解

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据===========================================================

2015-05-25 20:41:35 392

转载 C++类中成员变量的初始化总结

1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。 class CA{public:int data;……public:CA();…… }; CA::CA():data(0)//……#1……初始化列表方式{//da

2015-05-25 14:31:44 447

转载 C++类中的静态成员变量和静态成员函数的作用

数据成员可以分静态变量、非静态变量两种.静态成员:静态类中的成员加入 static 修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.非成静态员:所有没有加 Static 的成员都是非静态成员,当类被实例

2015-05-25 12:17:28 631

转载 【编程之美】给定一个整数N,求N!末尾有多少个0

问题:给定一个整数N,求N!末尾有多少个0         这个题目不能直接求出N!的值,这样可能会溢出。首先考虑N!=K*10^M,并且K不能被10整除,那么N!末尾有M个0。再考虑对N!进行质因数分解,N!=(2^X)*(3^Y)*(5^Z)...,由于10=2*5,所以M只和X和Z有关,每一对2和5相乘都可以得到一个10,于是M=min(X,Z);不能看出X>=Z.所以把公式简化为M=Z

2015-05-24 20:41:50 2200

转载 C/C++中const关键字

首先,一看到const关键字,我们的第一反应就是定义常量。的确,这没有错,const就是constant的缩写嘛,但是事实上他的用法远不止这些。接下来我们一一来讲解。    在C程序中,const的用法主要有定义常量、修饰函数参数和修饰函数返回值。而在C++程序中,它除了上述功能外,还可以修饰函数的定义体,定义类中某个成员函数为恒态函数,即不改变类中的数据成员。对于定义常量的用法,这里就不

2015-05-23 20:40:59 370

转载 等概率数字筛选问题

如何等概率的从N个元素中选取出K个元素?从1....n中随机输出m个不重复的数。(迅雷2011.10.21笔试题)算法1[cpp] view plaincopyknuth(int n, int m)  {         for (int i=0; i       {                   if ( rand_n()// rand_n()为生成[0

2015-05-19 21:42:58 513

转载 Linux进程的用户id,有效用户id与文件对应的所有者id,组id

进程对应的id:1. 实际用户id(uid),即登陆机器或运行进程的id。标识我们是谁。2. 有效用户id(euid),该进程能访问哪些文件,检查有效用户id与文件的访问权限(所有者ID,组ID:所有者访问权限,组访问权限,其它访问权限),以判别进程是否能够访问该文件3. 保存的设置用户id,由exec函数保存当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组

2015-04-29 20:56:29 1453

转载 头文件string与string.h的区别

在C++中,#include与#include的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态的编译器)。喔,原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头文件转化为C++的头文件后,有时加上c的前缀表示来自于c,例如cmath就是由math.h变来的。using na

2015-04-24 10:36:04 445

原创 几种常见的排序算法对比

排序法                         平均时间                                  最差情形                                              稳定度                            额外 空 间           

2015-04-07 21:21:52 477

原创 几种常见的数据结构的操作性能对比

数组、有序数组、链表、有序链表、二叉树(一般情况)、二叉树(最坏情况)、平衡树(一般情况和最坏情况)、哈希表等查找、插入、删除、遍历等过程的时间复杂度总结如下表:

2015-04-07 20:22:53 679

转载 【查找结构3】平衡二叉查找树 [AVL]

在上一个专题中,我们在谈论二叉查找树的效率的时候。不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找)。如何解决这个问题呢?关键在于如何最大限度的减小树的深度。正是基于这个想法,平衡二叉树出现了。 平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis) 平衡二叉查找树,又称 AVL树。 它除了具备

2015-04-07 20:14:32 361

转载 【腾讯】10G整数文件中寻找中位数

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。  分析: 既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行的方法 (请见《桶排序》):思想:将整形的每1byte作为一个关键字,也就是说一个整形可以

2015-04-07 20:03:07 491

转载 【腾讯】1亿个数据取前1万大的整数

数据规模分析 不考虑操作系统的区别,通常将C++中的一个整型变量认为4bytes。那么1亿整型需要400M左右的内存空间。当然,就现代PC机而言,连续开辟400M的内存空间还是可行的。因此,下面的讨论只考虑在内存中的情况。为了讨论方便,假设M=1亿,N=1万。  用大拇指想想略微考虑一下,使用选择排序。循环1万次,每次选择最大的元素。源代码如下:

2015-04-07 19:51:29 559

转载 sizeof运算符和strlen函数的区别

1、sizeof是运算符,而strlen是函数。2、sizeof操作符的运算结果为size_t,他在头文件中的typedef为unsigned int。该类型保证能容纳所操作对象的最大字节大小。3、sizeof可以用类型做参数,而strlen只能用char*做参数,且必须是以‘\0’结尾。4、数组做sizeof参数不退化,而做strlen就退化成指针。5、大部分编译

2015-04-06 17:38:06 658

转载 C++/C语言的标准库函数malloc/free与运算符new/delete的区别

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。下面来看他们的区别。一、操作对象有所不同malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函

2015-04-06 17:37:22 1047

转载 数组指针和指针数组的区别

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;      

2015-04-05 23:16:26 294

转载 ++i和i++效率谁高

在内建数据类型的情况下,效率没有区别;在自定义数据类型的情况下,++i效率更高! 分析:(自定义数据类型的情况下)++i返回对象的引用;i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。(重载这两个运算符如下)class Integer{public:    Integer(long data):m_data

2015-04-01 21:03:37 464

转载 数据结构的选择-“数组、链表、树、哈希表”选哪个(性能比较)?

通用数据结构貌似包括:数组、链表、树(二叉树、平衡树)、哈希表。之所以称之为通用数据结构是因为它们通过关键字的值来存储、查找数据。现实中,要想存储人事记录、货存记录、合同表或销售业绩表等数据,则只需要一般用途的数据结构,即通用数据结构即可。至于具体使用哪一种数据结构,可以参考(哥,只是参考)下图:请不要从上图中得出“平衡树”是最好的结论。咱还是要坚持“具体问题,具体分析”的

2015-04-01 10:22:31 1179

转载 线程同步之利器(2)——区域锁(Scoped locking)

什么是区域锁确切的说,区域锁(Scoped locking)不是一种锁的类型,而是一种锁的使用模式(pattern)。这个名词是Douglas C. Schmidt于1998年在其论文Scoped Locking提出,并在ACE框架里面使用。但作为一种设计思想,这种锁模式应该在更早之前就被业界广泛使用了。区域锁实际上是RAII模式在锁上面的具体应用。RAII(Resource

2015-04-01 10:15:11 483

转载 线程同步之利器(1)——可递归锁与非递归锁

概述最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical Section)和事件对象(Event)也是常用的同步方法。 简单的说,互斥锁保护了一个临界区,在这个临界区中,一次最多只能进入一个线程。如果有多个进程在同一个临界区内活动,就有可能产生竞态

2015-04-01 10:13:54 490

转载 半秒内筛一亿以内的所有素数

【问题描述】:   试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。【问题分析】:   这个问题可以有两种解法:一种是用“筛子法”,另一种是“除余法”。   如果要了解“除余法”,请看另一篇文章连接http://blog.csdn.net/lingling_1/article/details/44459423 《求质数 之 除余法(C语言描述)》。

2015-03-19 18:40:00 7239 3

求一元高次多项式的加、减、乘运算数据结构课程设计

有关于数据结构的课程设计。这是求一元高次多项式的加、减、乘运算数据结构课程设计,可以直接粘贴复制到代码中使用。各个函数和主函数都有!

2021-10-12

数据库系统概论第四版复习试题及答案

数据库期末考试可用

2021-10-12

opengl库的配置.rar

适用于OpenGL开发,配置库中包括了.dll、.gl、.lib文件,很齐全。

2021-10-09

PowerBuilder.9.0实用教程资源.rar

里面三本教程,本人学习收获很大,都是很基础的教程,希望可以帮到更多的人!

2021-05-19

利用ffmpeg在Qt环境下开发的视频播放器

Windows环境下,利用编码器ffmpeg在Qt下开发的视频播放器,里面加入了声音输出。供大家参考

2020-02-26

winio资料合集.zip

WinIO资料的全部合集,里面包括32位和64位需要的.dll文件和.sys文件;WinIO的帮助文档;WinIO的多种语言源代码(C、C#、VB)。

2020-01-13

Qt5开发及实例(第3版)(包含书籍+程序源码+PPT)

Qt是诺基亚公司的C++可视化开发平台,目前最新版本为Qt 5。本书以Qt 5作为平台,每个章节在简单介绍开发环境的基础上,用一个小实例,介绍Qt 5应用程序开发各个方面,然后系统介绍Qt 5应用程序的开发技术,一般均通过实例介绍和讲解内容。最后通过三个大实例,系统介绍Qt 5综合应用开发。光盘中包含本书及教学课件和书中所有实例源代码及其相关文件。

2019-04-09

MySQL_5.5中文参考手册

新版的中文MySQL手册,对于初学者十分有帮助!~~

2014-11-27

数据结构与STL.pdf

这本书强烈推荐,相当不错,对数据结构分析很到位,而且STL里面的容器进行了详细的介绍,还有代码的解析,十分利用初学者~~

2014-11-14

你必须知道的495个C语言问题.pdf

C语言一些的经典问题,里面对我们经常疑惑或者想不到的问题进行了详细的解答~

2014-11-14

Kinect应用开发实战用最自然的方式与机器对话.pdf

在对Kinect有了初步了解之后,适合提升一下自己的思路,开拓一下自己的视野,有助于自己产生新的想法!

2014-11-10

Kinect人机交互开发实践

对于Kinect初学者是一本十分不错的书籍!~

2014-11-10

空空如也

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

TA关注的人

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