自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hualicuan的专栏

坚持不懈,水滴石穿

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

原创 (激励自己学习)努力吧,现在也不晚(转)

努力吧,现在也不晚来自http://blog.csdn.net/shuaihj/article/details/8586101或许这再一次印证任何人每一次的成功背后都有不为人知的付出和汗水。       哈佛老师经常给学生这样的告诫:如果你想在进入社会后,在任何时候任何场合下都能得心应手并且得到应有的评价,那么你在哈佛的学习期间,就没有晒太阳的时间。  作为闻名于世的学府,

2013-09-17 15:56:32 796

原创 POSIX 多线程程序设计完整入门学习(转载)

目录表 摘要  译者序Pthreads 概述  什么是线程?  什么是Pthreads?  为什么使用Pthreads?  使用线程设计程序  Pthreads API编译多线程程序  线程管理  创建和终止线程  向线程传递参数  连接(Joining)和分离( Detaching)线程  栈管理  其它函数  互斥量(Mutex Variables)

2013-09-12 17:07:22 2444

原创 TCP状态迁移图浅析

一.TCP简介     TCP提供一种面向连接的,可靠的字节流服务。面对连接意味着两个使用TCP的应用,在彼此交换数据之前必须先建立一个连接。TCP通过以下方式提供可靠性:     1. 应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位成为报文段。      2. 当TCP发出一个段后,它就启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认

2013-09-12 09:35:05 3140

原创 linux网络服务器模型(转)

转自:http://blog.csdn.net/weiwangchao_/article/details/6938874Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。 

2013-09-11 21:06:42 889

原创 C++ 虚函数表解析(转载)

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

2013-09-05 10:11:34 562

转载 UNIX网络编程初步

1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令 

2013-09-25 21:54:44 583

原创 IP地址分类

基本的IP地址是分成8位一个单元(称为8 位位组)的32位二进制数。二进制与十进制大家都懂吧。为了方便人们的使用,对机器友好的二进制地址转变为人们更熟悉的十进制地址。IP地址中的每一个8位位组用0~255之间的一个十进制数表示。这些数之间用点(.)隔开,这是所谓的点-十进制格式。因此,最小的IPv4地址值为0.0.0.0,最大的地址值为255.255.255.255,然而这两个值是保留的,没有分配

2013-09-23 11:39:39 980

原创 黑盒测试用例设计方法

黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。一、等价类划分法       等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条

2013-09-21 00:26:36 705

转载 软件开发模式

软件的开发模式包括:大棒开发法、边写边改法、瀑布法、快速原型法和螺旋模式法,它们的定义及特点如下:第一,大棒开发法。       它是源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正确的排列和组合,形成的将不是预先期望的事物;大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件

2013-09-20 17:04:07 737

转载 如何成为一名优秀的软件测试工程师

现在软件测试工作越来越收到企业的重视,许多人员也投入到软件测试的行列中来,软件测试工程师的队伍越来越壮大。但是如何成为一名优秀的软件测试工程师呢?这是大家比较关注的一个问题,尤其是初入这个行当的莱鸟更想了解这个问题的答案。本文根据自己多年来在IT公司从事软件测试的经验总结了一些东西给大家共享,同时也希望大家提出宝贵的意见和建议。一、三年以上开发经验       起码有三年以上的软件开发经验

2013-09-20 16:14:36 1250

转载 软件测试工程师相关知识网站

如果你要从事测试行业,本人感觉有必要看一下这个:测试工程师:http://baike.baidu.com/view/746132.htm缺陷管理:http://softtest.chinaitlab.com/Special/bug/index.html从用户关心的角度对软件BUG进行分类http://www.51t

2013-09-18 15:35:47 811

转载 unix环境高级编程-5.4-缓冲

其实缓冲在unix的操作系统里,就是为了减少read和write的调用次数。在第三章中,对不同缓冲区的长度设置,执行IO所要的cpu时间量是不一样的。他也对每个io流自动的进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是他的缓冲。标准I/O缓冲提供了三种类型的:(1)全缓冲。这种情况下,是在填满了标准的IO缓冲区后才进行实际的I/O

2013-09-18 10:52:39 488

转载 epoll使用入门学习

处理大并发之二对epoll的理解,epoll客户端服务端代码序言:该博客是一系列的博客,首先从最基础的epoll说起,然后研究libevent源码及使用方法,最后研究nginx和node.js,关于select,poll这里不做说明,只说明其相对于epoll的不足,其实select和poll我也没用过,因为我选择了epoll。说起epoll,做过大并发的估计都不陌生,之

2013-09-17 16:17:44 818

原创 共享内存IPC入门学习

系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,否则 -

2013-09-17 15:28:00 760 1

转载 setsockopt()函数用法

1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历

2013-09-17 15:11:21 736

转载 Unix网络编程中的的五种I/O模型

1. 阻塞I/O模型例如UDP函数recvfrom的内核到应用层、应用层到内核的调用过程是这样的:首先把描述符、接受数据缓冲地址、大小传递给内核,但是如果此时该与该套接口相应的缓冲区没有数据,这个时候就recvfrom就会卡(阻塞)在这里,知道数据到来的时候,再把数据拷贝到应用层,也就是传进来的地址空间,如果没有数据到来,就会使该函数阻塞在那里,这就叫做阻塞I/O模型,如下图:

2013-09-16 10:36:53 1084

原创 Vector容器删除元素

使用vector容器也有一段时间了,但是对于他的删除操作还是有点疑问,今天就总结一下。vector数据存储是一段预先分配好大小的内存连续的空间,插入数据和删除数据都会引起后面数据内存的整体移动。今天就说说删除操作吧1、删除最后的元素         直接使用pop_back()就可以了,这个没什么好说的;2、删除指定的元素       使用函数erase

2013-09-16 09:28:26 1037

原创 桥接(Bridge)模式详解

桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现分离的办法就是增加一个类,11.1.解释main(),客户IProduct,产品接口CHouse,房子CIPod,ipodCClothes,服装CNewCorp,桥梁类,MakeMoney()是桥梁方法CNewHouseCorp,只能生产房子,所以构造函数是CHous

2013-09-15 20:57:54 777

原创 Epoll介绍和程序实例(转)

1. Epoll 是何方神圣?Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Connection ,简称 PPC),

2013-09-15 00:14:30 613

转载 集群式游戏服务器架构方案设计开发

自从2003年开发VOIP Radius Server以及修改Gnugk以来,从事服务器开发已经近五年了,对服务器开发也有一些自己独到的看法以及见解。当摆脱了技术本身的束缚之后,才理解重要的并不是某种技术的运用,而是整体设计的考虑,也慢慢明白了设计是开发的灵魂的道理。从技术层面来看,各个平台都有一些自己特有的东西,比如Windows 平台下面的IOCP技术,可以说为了支持大的并发,IOCP

2013-09-14 23:43:42 1660

转载 Linux 进程通信 和 IO模型

主要内容: 第一部分 信号 第二部分 PIPE 和 FIFO 第三部分 消息队列 第四部分 信号量 第五部分 共享内存 第六部分 I/O模型   概念: 在先了解Linux进程间通讯时,需要首先了解几个概念: 1)随进程持续:IPC一直存在,直到打开IPC的最后一个进程关闭 2)随内核持续:IPC一直存在,直到系统重启或删除该对象为止 3)随文件系统

2013-09-11 22:16:49 1056

原创 C++构造函数的调用顺序

C++继承类的构造函数的调用顺序有以下三个步骤①先调用继承的基类构造函数,调用顺序是按照他们继承的顺序;②调用自身的内嵌成员对象,调用顺序是按照他们声明时的顺序,因为类在初始化时先初始化内部成员;③调用自身的构造函数;为了理解,上代码#include using namespace std;class Base{public: Base() {cout<<"

2013-09-11 21:52:36 744

原创 C++的继承方式

C++支持多种程序设计风格,其中就包括对面向对象设计的支持。我们今天在这里将会为大家详细介绍一下各种C++继承方式的具体应用方法,希望能够帮助大家对这方面的知识有一个深入的认识。C++继承方式总共分为以下几种:public、private、protected三种(它们直接影响到派生类的成员、及其对象对基类成员访问的规则)。(1)public(公有继承):继承时保持基类中各成员属性不变,

2013-09-09 11:04:49 854

原创 static关键字详解

在说明static之前,先说说计算机的内存存储分式1、计算机存储分式计算机内存存储分式主要分为以下5种①静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。②栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很

2013-09-08 22:06:50 588

原创 观察者模式

定义      定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也就是将不同观察者注册到被观察者内部,被观察者做了什么动作,都会通知到被观察者。代码借用别人的;[cpp] view plaincopy// Observer.cpp : 定义控制台应用程序的入口点。  //

2013-09-08 16:51:25 387

转载 PreTranslateMessage作用和使用方法

PreTranslateMessage作用和使用方法 PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码.         MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数

2013-09-05 21:18:13 619

原创 PostMessage和Sendmessage区别

1、 PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。这点大家应该都明白。 2、 如果在

2013-09-05 20:58:14 853

转载 GDB调试程序

用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:  

2013-09-02 22:06:07 391

转载 valgrind 的使用简介

一  valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构

2013-09-02 21:19:44 495

原创 Exists和In的区别

1、In和Exists用法  In用法Select * from T1 where x in ( select y from T2 )  Exist用法select * from T1 where exists ( select null from T2 where y = x )2、区别①通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一

2013-09-01 16:09:42 463

Unix常用命令

Unix常用命令,非常齐全的命令手册,能够当手册使用

2014-01-07

Unix系统DBX调试工具

Unix系统DBX调试工具,强大的代码调试工具。

2014-01-07

C++设计模式学习附上源码

全面解析21种设计模式,附上C++源码解释,并通过说明各种模式的用途

2014-01-07

Perl 简易教程

学习Perl入门的好帮手,perl的简易教程

2013-04-30

空空如也

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

TA关注的人

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