自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 大数据处理

海量数据处理问题汇总及方法总结面试题中总是有好多海量数据的处理问题,在这里列出一些常见问题,便于以后查阅: 类型1:hash映射+hash统计+堆排序1、 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。       可以估计每个文件安的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完

2013-10-29 13:36:16 678

转载 http://g.51cto.com/flower454/56725

转自:http://g.51cto.com/flower454/56725在windows系列上做编程,gdi是一个很重要的技术点,有很多程序在运行多次后出现异常,除了众所周知的内存泄露以外,gdi资源泄露也是一个很直接的原因.今天就把我自己在编程中总结的一些经验给大家分享,欢迎高手补充.1.Create出来的gdi对象,一定要用DeleteObject来释放,释放顺序是先Create的后

2013-10-23 10:31:43 1190

转载 GDI的内存泄露问题

GDI的内存泄露问题    对于不停的获得和释放绘图设备句柄(DC)可能会导致GDI内存泄露。本文从一个实际项目中总结出以下几条经验防止内存泄露。尽量使用HDC和DeleteDC组合,不要用CDC HDC imageHDC =::CreateCompatibleDC( NULL );HBITMAP hOldBMP = (HBITMAP)::SelectObject(imageH

2013-10-23 10:23:22 1092

转载 关于MFC下检查和消除内存泄露的技巧

转自:http://www.cnblogs.com/BeyondTechnology/archive/2011/03/27/1996735.html摘要本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。关键词:VC++;CRT 调试堆函数;试探法。编译环境VC++6.0技术原理检测

2013-10-23 09:59:43 568

转载 关于MFC下检查和消除内存泄露的技巧

摘要  本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。   关键词:VC++;CRT 调试堆函数;试探法。  技术原理  检测内存泄漏的主要工具是调试器和 CRT 调试堆函数。若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_A

2013-10-23 09:58:08 741

转载 MFC内存泄露检测

转自:http://blog.sina.com.cn/s/blog_62d15fb60100y0h8.html这几天一直在检查程序内存泄露的问题,今天终于告一段落。内存泄露在编制小型应用程序时看不出其危害,但如果是编制24小时运行的大型平台应用程序时,如果有内存泄露,则随着程序的运行,其占用的内存会越来越多,最终导致系统崩溃。因此,内存泄露不容小觑。下面是几天来检查内存泄露的一点经验小结。

2013-10-23 09:49:35 671

转载 关于HASH和MD5

看来很多人对Hash算法还不是很理解。在这里,我简单的讲解一下。我也不在希望以后再有人问关于MD5,SHA1如何解密了!首先简单的讲一下Hash算法和他的通途!可能大家看了以后,很多人可能都会发现自己目前在使用Hash算法的目的都是和Hash算法本身的设计目的不一样的 :DHash算法不管是MD5也好SHA1也好. 他们都是一种散列算法,其算法的特点是,可以把任意长度的字符串经过运

2013-10-21 21:18:42 780

转载 魔术新手综合症

魔术新手综合症,Sorcerer's Apprentice Syndrome(简称SAS)。SAS是一个糟糕的网络协议瑕疵,在原先的TFTP(RFC 783)版本里发现。会被如此命名是因为SAS的细节很像奇幻故事魔术士的学徒中学徒所引发的灾难:造成在传送的过程封包不断的被复制增长。这个问题的产生是因为一个在网络上已知的错误,由于协定的设计者在设计协定时没有考虑到,与TFTP的机制细节互相影响而

2013-10-21 21:10:16 830

转载 海量数据处理方法(转)

大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。 1

2013-10-20 21:21:18 544

转载 STL源码剖析---迭代器失效小结

转自:http://blog.csdn.net/hackbuteer1/article/details/7734382迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterat

2013-10-19 19:05:14 573

转载 从B树、B+树、B*树谈到R 树

从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.csdn.net/v_JULY_v 。 第一节、B树、B+树、B*

2013-10-19 18:33:14 538

转载 红黑树

介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,

2013-10-19 13:29:37 538

转载 浅谈C++中的内存管理

摘要:   大家都知道变量的生存周期这个概念,可是有的时候变量生存周期已经结束,但是所分配的那块内存空间还是存在的。文章举了四个不同的例子,来说明这其中的原因。  前言  前一段时间在一个好友的的博客论坛上看到他学习C++时遇到的一小点问题,是关于C++中最基本的内存分配方面的。其实对于内存这东西,除了知道我自己用的是256M的内存以外,我也不太清楚他到底里面是怎么工作的。看了

2013-10-18 20:00:56 511

转载 控制C++的内存分配

在嵌入式系统中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控。  具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全。具体地说,当一个对象被消除时,它的析构函数能够安全的释放所分配的内存。  这当然是个好事情,但是这种使用的简单性使得程序员们过度使用new 和 delete,而不注意在嵌入式C++环境中的因果关系。并且,在嵌入式系统中,由于

2013-10-18 19:58:51 484

转载 明晰C++内存分配的五种方法的区别

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。   栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。   堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统

2013-10-18 19:58:18 446

转载 踏入C++中的雷区——C++内存管理详解

伟大的Bill Gates 曾经失言:  640K ought to be enough for everybody — Bill Gates 1981   程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。  1、内存分配方式

2013-10-18 19:57:39 450

转载 菜鸟也能搞定C++内存泄漏

背景  C++内存分配与释放均由用户代码自行控制,灵活的机制有如潘多拉之盒,即让程序员有了更广的发挥空间,也产生了代代相传的内存泄漏问题。对于新手来说,最常犯的错误就是new出一个对象而忘记释放,对于一般小应用程序来说,一点内存空间不算什么。但是当内存泄漏问题出现在需要24小时运行的平台类程序上的时候,将会使系统可用内存飞速减少,最后耗尽系统资源,导致系统崩溃。  所以学会如何防止

2013-10-18 19:56:23 531

转载 Bjarne:如何对付内存泄漏?

写出那些不会导致任何内存泄漏的代码。很明显,当你的代码中到处充满了new 操作、delete操作和指针运算的话,你将会在某个地方搞晕了头,导致内存泄漏,指针引用错误,以及诸如此类的问题。这和你如何小心地对待内存分配工作其实完全没有关系:代码的复杂性最终总是会超过你能够付出的时间和努力。于是随后产生了一些成功的技巧,它们依赖于将内存分配(allocations)与重新分配(deallocat

2013-10-18 19:55:46 465

转载 C++中动态内存分配引发问题的解决方案

假设我们要开发一个String类,它可以方便地处理字符串数据。我们可以在类中声明一个数组,考虑到有时候字符串极长,我们可以把数组大小设为200,但一般的情况下又不需要这么多的空间,这样是浪费了内存。对了,我们可以使用new操作符,这样是十分灵活的,但在类中就会出现许多意想不到的问题,本文就是针对这一现象而写的。现在,我们先来开发一个Wrong类,从名称上看出,它是一个不完善的类。的确,我们要刻意地

2013-10-18 19:55:18 490

转载 浅谈C/C++内存泄漏及其检测工具

对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟

2013-10-18 08:50:37 439

转载 C++ 关键字typeid

转载网址:http://www.cppblog.com/smagle/archive/2010/05/14/115286.aspx在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或

2013-10-17 15:21:40 481

转载 http://blog.sina.com.cn/s/blog_53828e460100mv0d.html

转自:http://blog.sina.com.cn/s/blog_53828e460100mv0d.htmlC/C++都是非常贴近最终汇编实现的语言,它们可以很容易地和汇编共存。通常一个函数会被编译成一段汇编代码,函数指针就是指向这段代码的地址。函数参数是通过把数据压入堆栈传递给函数的,在C++里,为了提高效率,通常会把this指针置入ECX寄存器来传入函数,因为寄存器的访问速度要优于内存。

2013-10-17 13:53:35 2151

转载 C++与汇编的混合编程

转自:http://blog.csdn.net/yegong168/article/details/1566060一个人不应该用猜的方式,或是等待某大师的宣判,才确定"何时提供一个copy construtor而何时不需要"。--- Stanley B.Lippman之所以用到汇编,一是关键程序需要极高的效率,需要用汇编来优化;二是有些功能高级语言是做不到的。混合汇编一般有两种形式:内

2013-10-17 13:51:49 1186

转载 VirtualAlloc函数使用总结

如果我们的程序需要动态内存的话,则迟早会调用Win32函数VirtualAlloc。但是程序也可以不调用VirtualAlloc,而是直接调用Windows堆函数或者CRT堆函数。不过,知道VirtualAlloc如何工作,可以帮助我们更好地理解这些调用函数。    首先,必须知道保留(Reserved)内存和占用(Committed)内存的含义。当内存放保留时,一段连续虚拟地址空间被留出。例

2013-10-16 07:56:03 3036

转载 面向对象的三个基本特征和五种设计原则

面向对象的三个基本特征和五种设计原则  2012-10-23 19:18:09|  分类: 设计模式|字号 订阅一、三个基本特征面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可

2013-10-15 18:34:07 672

原创 高速缓冲行带来的数据对齐问题

windows核心编程写道:1、我们应该根据高速缓冲行的大小来将应用程序的数据组织在一起,并将数据与缓冲行的边界对齐。 2、我们应该把只读数据(或不经常使用的数据)与可读写数据分别存放。3、我们应该把差不多会在同一时间访问的数据组织在一起。这样做的目的是为了确保不同的CPU能够各自访问不同的内存地址,而且这些地址不在同一高速缓冲行中。此外,我们应该把只读数据(或不经常使用的数据

2013-10-10 18:58:34 658

原创 读者-写者问题的 有一个写者等待,后面的读者就阻塞直到写者完成的代码

RT,最近完成

2013-10-10 10:37:28 627

转载 死锁与活锁

一、活锁如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,...,T2有可能永远等待,这就是活锁的情形,如图8.4(a)所示。 避免活锁的简单方法是采用先来先服务的策略。二、死锁如果事务T1封锁了数据

2013-10-10 10:16:20 834

转载 网上找得哲学家就餐问题的一段据说不错的代码

这个段程序并不是我写的,在思考问题上参考了这个,觉得很不错,简单易懂。所以上传仅供大家学习。我忘记这个程序是从哪里得到的,但是感谢提供者。#include #include #include #include using namespace std;enum State {THINK,WAIT,EAT,END};//哲学家所处状态bool p(int &a)

2013-10-10 10:10:29 937

转载 哲学家就餐问题

操作系统并发和互斥:哲学家进餐问题和理发师问题 1. 哲学家进餐问题: (1) 在什么情况下5 个哲学家全部吃不上饭? 考虑两种实现的方式,如下: A. 算法描述: void philosopher(int i) /*i:哲学家编号,从0 到4*/ { while (TRUE) { think( ); /*哲学家正在思考*/ take_fork(i)

2013-10-10 10:05:53 871

空空如也

空空如也

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

TA关注的人

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