自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wei.zhou的专栏

We are drowning in information and starving for knowledge.

  • 博客(104)
  • 资源 (4)
  • 收藏
  • 关注

转载 技术揭秘二:探讨12306两地三中心混合云架构

前言2015年春节最大的特色就是“摇一摇”,微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福。支付宝钱包在除夕晚上8点达峰值,首页被点击的次数为8.832亿次/分钟。表面上来看“摇一摇”是在送红包,但从深层次的互联网思维来看,摇一摇的目的是要创造和凸显“移动支付”在互联网金融的价值链,甚至一带一路,将“移动支付”模式的业务,带出国门推向全球,此

2015-08-31 14:14:30 688 1

转载 技术揭秘一:12306是如何实现高流量高并发的关键技术?

12306网站曾被认为是“全球最忙碌的网站”,在应对高并发访问处理方面,曾备受网民诟病。因此记者在第一时间联系到一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式,指出原因所在,并根据他的经验进一步说明12306是如何实现高流量高并发的关键技术,与大家共享。以下为正文:前言:12306互联网售票系统在2011年下半年开始上线使用,但在2012年春运期间引发无

2015-08-31 14:13:25 4302

转载 分布式Web服务器架构

分布式Web服务器架构 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出

2015-08-31 14:10:29 539

转载 在服务器端采用同步处理模式和异步处理模式的分析

同步服务为每个请求创建单一线程,由此线程完成整个请求的处理:接收消息,处理消息,返回数据;这种情况下服务器资源对所有入栈请求开放,服务器资源被所有入栈请求竞争使用,如果入栈请求过多就会导致服务器资源耗尽宕机,或者导致竞争加剧,资源调度频繁,服务器资源利用效率降低。异步服务则可以分别设置两个线程队列,一个专门负责接收消息,另一个专门负责处理消息并返回数据,另有一些值守线程负责任务派发和超时监控等

2015-08-31 14:09:40 1340

转载 linux中mmap系统调用原理分析与实现

转自:http://blog.chinaunix.net/uid-26215986-id-3360380.html1、mmap系统调用(功能)      void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )      内存映射函数mmap, 负责把文件内容映射到进程的虚

2015-08-31 13:58:20 630

转载 Linux内存管理之mmap详解

Linux内存管理之mmap详解一. mmap系统调用1. mmap系统调用        mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用re

2015-08-31 13:54:17 357

转载 Linux进程间通信之消息队列(二)

前言:   消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数:     key:可以认为是一个端口号

2015-08-31 13:50:12 289

转载 Linux进程间通信之消息队列(一)

转自:http://blog.csdn.net/ljianhui/article/details/10287879下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为

2015-08-31 13:47:34 433

转载 Linux进程间通信之命名管道

转自:http://blog.csdn.net/ljianhui/article/details/10202699在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决

2015-08-31 13:43:22 285

转载 Linux进程间通信之匿名管道

转自:http://blog.csdn.net/ljianhui/article/details/10287879在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这

2015-08-31 13:41:55 441

转载 Linux进程间通信之信号

转自:http://blog.csdn.net/ljianhui/article/details/10128731一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。

2015-08-31 13:37:45 254

转载 Linux进程间通信之信号量

转自:http://blog.csdn.net/ljianhui/article/details/10243617一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一

2015-08-31 13:34:29 443

转载 Linux进程间通信之共享内存(二)

Linux共享内存(二)Linux共享内存编程实例原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119/*共享内存允许两个或多个进程进程共享同一块内存(这块内存会映射到各个进程自己独立的地址空间) 从而使得这些进程可以相互通信。 在GNU/Linux中所有的进程都有唯一的虚拟地址空间,而共享内

2015-08-31 13:26:24 375

转载 Linux进程间通信之共享内存(一)

Linux共享内存(一)Linux系统编程我一直看 ,只是讲的太简单了,通常是书和网络上的资料结合着来掌握才比较全面 .在掌握了书上的内容后,再来都其他资料 .原文链接 http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/ke

2015-08-31 13:25:11 1391 1

原创 二叉树常见算法总结(一)

一、在二叉树中,找到距离最远的两个节点的距离在二叉树中,找到距离最远的两个节点的距离。在上面的二叉树中,最远的节点的距离是:4(路径是2-3-13-5-2)。解决思路:遍历每个节点,找出以当前节点为根的最长路径,然后找出所有最长路径中的最大值。思路类似于最大路径和。下面直接给出代码。void longestPathUtil(Node* root, int& le

2015-08-30 18:53:47 8789 1

转载 C++拷贝构造函数详解

原文链接:http://blog.csdn.net/lwbeyond/article/details/6202256一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyprint?int a = 100;  int b = a;   int a = 100;in

2015-08-27 15:44:23 313

转载 C++ 异常

转自:http://www.cnblogs.com/nzbbody/p/3418989.html一、什么是异常处理        一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想        C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测

2015-08-27 14:48:09 267

转载 C++编译器无法捕捉到的8种错误

C++是一种复杂的编程语言,其中充满了各种微妙的陷阱。在C++中几乎有数不清的方式能把事情搞砸。幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错误或编译警告来通知程序员。最终,如果处理得当的话,任何编译器能检查到的错误都不会是什么大问题,因为它们在编译时会被捕捉到,并在程序真正运行前得到解决。最坏的情况下,一个编译器能够捕获到的错误只会造成程序员一些时间上的损失,

2015-08-27 14:45:58 522

转载 C++ 常见崩溃问题分析

一、前言从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序;由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用;二、C++ 崩溃分类

2015-08-27 14:44:22 854

转载 C++ 虚函数表解析

C++ 虚函数表解析陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTT

2015-08-27 13:38:09 219

转载 C++ 对象的内存布局(下)

C++ 对象的内存布局(下) 陈皓http://blog.csdn.net/haoel 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。  其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己

2015-08-26 00:02:17 221

转载 C++ 对象的内存布局(上)

C++ 对象的内存布局(上) 陈皓http://blog.csdn.net/haoel 前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章中,我用了的示例都是非常简单的,主要是为了

2015-08-26 00:01:58 263

转载 异常安全的C++类

转自:http://m.blog.csdn.net/blog/crazy_programmer_p/38518283题目:类CMyString的声明如下:class CMyString{public:CMyString(char* pData = NULL);CMyString(const CMyString& str);~CMyString(void);CMy

2015-08-26 00:01:35 327

转载 C++ 单例模式

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这

2015-08-26 00:01:11 263

转载 C++ 之类型转换操作符

传统C语言的内部类型转换:C语言传统的转化很简单。比如:double d=5.0;int a=(int)d;这个感觉和java差不多。C++有四个内部类型转换操作符:const_cast,reinterpret_cast,static_cast,dynamic_cast。const_cast用法:const_cast (expression)该运算符用来修改类型

2015-08-26 00:00:54 575

转载 const 成员 static 成员 const static int 成员初始化

有关const成员、static成员、const static成员的初始化:1、const成员:只能在构造函数后的初始化列表中初始化2、static成员:初始化在类外,且不加static修饰3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化(仅限const static int),也可以像static在类外初始化,在类之外进行初始

2015-08-25 17:14:31 635

转载 操作系统内存管理之内部碎片 与外部碎片

“碎片的内存”描述一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。internal fragmentation:when memory alloca

2015-08-25 17:10:34 2972

转载 C++ 关键字typeid 运行时类型检查

在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。    dynam

2015-08-25 17:08:49 472

转载 构造函数不能是虚函数的原因

1,从存储空间角度    虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度        虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身

2015-08-25 17:06:20 240

转载 为什么静态成员函数不能是const

static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。   不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而类中的static函数本质上是全局函数,调用规约是

2015-08-25 17:04:59 543

转载 各种特殊函数为什么不能是虚函数

> 内联函数内联函数是在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾,不能定义内联函数为虚函数。2> 构造函数构造函数用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造函数定义为虚函数。3> 静态成员函数静态成员函数属于一个类而非某一对象,没有this指针,它无法进行对象的判别。

2015-08-25 17:04:02 327

转载 C/C++的编译与运行

原文链接:http://www.cnblogs.com/eVCrow/articles/1870961.html      C/C++编译前,首先要对源代码执行预处理。预处理器(preprocessor)是一个简单的程序,它用程序员(利用预处理器指令)定义好的模式代替源代码中的模式(删除注释、包含其他文件以及执行宏),预处理后生成中间文件.i(文本)。接下来对于.i文件进行语法分析。编译器

2015-08-25 17:02:43 549

转载 C++中类对象所占空间的大小

C++中类对象所占空间的大小http://www.cnblogs.com/easonpan/archive/2012/04/25/2470177.html  首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。计算一个类对象的大小时的规律:空类、单一继承的空类

2015-08-25 17:01:08 632

转载 【深入理解C++】从初始化列表和构造函数谈C++的初始化机制

前段时间被人问及“初始化列表和构造有什么区别?”我竟一时语塞,只好回头拿起几本C++的大部头书,打开VS2012和vim开始倒腾。最后总结出如下几点,希望对大家理解C++能有些帮助。(题外话:我认为好的技术书籍和师者对人最大的帮助就是:帮助学者节省时间。)综合而言,C++中类的初始化操作有四个部分组成:1.初始化列表:所有类非静态数据成员都可以在这里初始化,         

2015-08-25 16:59:13 268

转载 C++初始化列表

何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。struct foo{ string name ; int id ; foo(s

2015-08-25 16:56:22 194

转载 虚函数初始化顺序

虚函数初始化顺序#include using namespace std;class furniture{public: furniture( int nWeight ) { m_nWeight = nWeight; cout << "家具的构造" << endl; } int m_nWeight;}; //虚继

2015-08-25 16:54:49 425

转载 C++类对象创建过程揭密

介绍        初看到这个题目,你可能会有些疑惑:C++类对象的创建还有什么好说的,不就是调用构造函数么?实际上情况并不是想象中的那么简单,大量的细节被隐藏或者被忽略了,而这些细节又是解决一些其他问题的关键,所以我们很有必要深入到这块"神秘"的区域,去探索鲜为人知的秘密。 分配空间(Allocation)        创建C++类对象的第一步就是为其分配内存空间。对于全局对象

2015-08-25 16:52:00 282

转载 分配内存时如何减少内存碎片(四)

malloc/free或new/delete大量使用后回造成内存碎片,那么这种碎片形成的机理是什么?      如果机理是申请的内存空间大小(太小)所形成的,那么,申请多大的区域能够最大限度的避免内存碎片呢?(这里的避免不是绝对的避免,只是一种概率)    内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。产生内存碎片的方法很简单,举个例:      假设有

2015-08-25 00:24:48 997

转载 分配内存时如何减少内存碎片(三)

如何减少频繁分配内存(malloc或者new)造成的内存碎片?高性能之内存池(频繁使用malloc和new会降低性能)内存池(Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般

2015-08-25 00:24:33 845

转载 分配内存时如何减少内存碎片(二)

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

2015-08-25 00:24:16 4426

哈夫曼(最优二叉树)C语言版

哈夫曼编码,最优二叉树的生成及各种算法遍历,非常有用哦,C语言版的哦

2011-01-21

二叉树(生成,遍历,树形输出等等)

二叉树的生成,先序,中序,后续遍历,以及树形输出,很实用哦,这个是C语言版的

2011-01-21

基于vc的KTV点歌系统(SQL SEVER 2000)

基于vc的KTV点歌系统,数据库是SQL SEVER 2000,内有管理员设置,开户,注销,按姓名,地区,数字号查询等,我们以前课程设计做过的

2011-01-21

空空如也

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

TA关注的人

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