自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 c++ viod 函数

1.概述  许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。  2.void的含义  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。  void几乎只有“注释”和限制程序的作用,因为从

2013-07-08 00:14:15 4339

转载 [C/C++]结构体大小的计算方法

通常情况下,由于地址对齐(alignment)的需要,结构体各成员之间或结构体的尾部需要添补一些空白字节(padding),因而结构体的大小并不一定等于各成员大小之和。包含相同成员的结构体,如果成员声明的顺序不同,其占用的内存空间也可能不同。尽管在程序中可以利用sizeof获取当前编译条件下结构体所占内存空间的大小,但深入了解结构体中成员对齐所遵循的规则也很有必要。首先需要说明一下对齐的概

2013-07-05 11:57:41 1996

转载 有哪几种情况只能用intialization list 而不能用assignment?

无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表。还有一种情况就是,类的构造函数需要调用其基类的构造函数的时候。请看下面的代码:1 

2013-07-05 11:40:10 1859

转载 C++ 虚函数表解析

前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。  关于虚函数的使用

2013-07-05 09:51:43 638

转载 MMORPG的数据包系

#本文发表于08年12月《程序员》杂志,贴出以备遗失。 对!我想介绍的和你从标题中理解的是一样的东西:大型多人在线角色扮演游戏客户端和服务器端之间通讯的数据包!之所以加一个“系”,是因为我想包含围绕数据包展开工作的相关话题。下面我所提到的数据包系就是基于这个定义。在我看到的很多网络应用中,数据包系的设计千奇百怪。这么形容并不是贬意,数据包系的本身并没有一个固定的模式,也不可能有一个统一的模

2013-07-04 23:42:00 826

转载 游戏中的状态机

游戏中的状态机#本文发表于08年5月《程序员》杂志 贴出以备遗失 基本上所有的软件都是有限状态机(finite-state machine,FSM)。什么是FSM呢?它是一个有向图,由一组节点和一组相应的转移函数组成。这句话是在写作这篇文章前刚从书上抄来的。通俗一点讲,它是一个事件驱动系统的模型,这个模型由有限数目的状态,若干输入和状态与状态之间转换的规则组成。在某一时刻,有一个或

2013-07-04 23:40:36 1152

转载 简洁高效的LRU Map C++实现

LRU是缓存替换的一个重要原则。其思想可以广泛的应用于很多场合。通过维护一个Key和Timestamp之间的双向映射,可以实现一个简洁高效的通用LRU Map。 1: #include 2: #include 3: #include 4: using namespace std; 5:  6: template

2013-07-04 22:13:46 1563

转载 通过STL实现带LRU的CACHE

开发互联网的server系统,难免会用一些cache机制,通常在Linux下多使用共享内存机制,把分配的内存组织成一个特定的数据结构,用来缓存后端DB的数据,加速读写。但是对一些新手而言,共享内存的使用还是有一些门槛,与此同时STL的使用却是相对容易上手,所以可以通过STL的容器组合出一个cache来。        上网搜了一下,看到已经有人做了一些类似的事情,具体可以参看http://

2013-07-04 22:06:51 981

原创 腾讯公司后台服务器经典面试题

网上找的题目,自己作答1, 使用Linux epoll模型,水平触发模式(Level-Triggered);当socket可写时,会不停的触发socket可写的事件,如何处理?    第一种最普通的方式:      当需要向socket写数据时,将该socket加入到epoll模型(epoll_ctl);等待可写事件。    接收到socket可写事件后,调用write()

2013-07-04 20:53:51 1827

原创 linux C++服务器面试题

1.TCP/IP 建立连接的过程?(3-way shake)    Client与server建立TCP连接时:首先Client向server发SYN(请求),然后server回复(应答请求),最后Client回复,这样TCP就建立一次连接(三次握手)的过程就建立了2.使用udp和tcp进程网络传输,为什么tcp能保证包是发送顺序,而 udp无法保证?       1.

2013-07-04 20:41:35 2933

原创 实用面试题

1.C++ STL中判断list为空,size()==0和empty()有什么区别关于两个的区别,首先size()==0为bool表达式,empty()为函数调用,这一点很明显。查看源代码,[cpp] view plaincopybool empty() const { return _M_node->_M_next == _M_node

2013-07-04 19:13:18 760

原创 C/C++ 笔试、面试题目大汇总

这些东西有点烦,有点无聊。如果要去C++面试就看看吧。几年前网上搜索的。刚才看到,就整理一下,里面有些被我改了,感觉之前说的不对或不完善。 1.求下面函数的返回值( 微软)int func(x) { int countx =0; while(x) { countx ++; x = x&(x-1); } return countx; }

2013-07-04 16:55:33 758

原创 第一讲:大型MMO服务端基本架构

本文讲述的服务器架构,可以做大型MMO服务器的基本架构,  待续

2013-07-04 10:38:57 1506 2

转载 C++对象池技术剖析

对象池就是一定数量已经创建好的对象的集合。可以事先创建一批对象,放在一个链表中,以后每当程序要新的对象时,都从对象池中获取,每当程序用完该对象后,都把该对象归还给对象池。这样就少了很多的malloc/free操作,在一定程度上提高了系统的性能,尤其在动态内存分配比较频繁的程序中效果尤其明显。对象池的特征:1、对象池中有一定数量创建好的对象。2、对象池向用户提供获取对象的

2013-04-26 11:23:52 758

转载 深入浅出对象池(Object Pool)

在稍微大型一点的软件系统开发中,通常我们会用到内存池,对象池,线程池,连接池等各种各样的池(Pool),本文就来讲一讲对象池(Object Pool)。下面从四个方面来介绍一下对象池:1.什么是对象池(Object Pool) ?池(Poo), 与集合在某种意义上有些相似。 水池,是一定数量的水的集合;内存池,是一定数量的已经分配好的内存的集合;线程池,是一定数量的已经创建好的线程的集

2013-04-26 11:20:53 1226

空空如也

空空如也

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

TA关注的人

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