自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wintree的专栏

专注于Linux系统编程,网络编程,高性能服务器技术,c/c++技术学习

  • 博客(422)
  • 资源 (5)
  • 收藏
  • 关注

转载 linux下安装protobuf教程+示例(详细)

1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。安装步骤如下所示: tar -xzf protobuf-2.1.0.tar.gz  cd protobuf-2.1.0  ./configure --prefix=/usr/local/p

2013-09-10 00:10:20 8512 2

原创 priority_queue 复习学习

#include "stdafx.h"#include #include #include #include #include using namespace std;class myClass{public: myClass() { cout<<"myClass()"<<endl; } ~myClass() { cout<<"~myClass()"<<en

2013-09-06 12:01:13 1066

转载 MMORPG服务器架构

一.摘要1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等。3.网络游戏的场景管理,AI,脚本的应用等。4.开源的网络服务器引擎5.参考书籍,博客二.关键词网络协议 网络IO 消息 广播 同步 CS TCP/UDP IP 集群 负载均衡 分布式 网关服

2013-08-30 00:42:56 3008

转载 游戏服务器架构探讨

有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。   另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关的中文网页,很少有讲游戏服务器相关技

2013-08-23 16:39:01 3294 1

转载 linux的信号实践

当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。   根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN

2013-08-19 16:57:08 1416

转载 函数inet_addr和inet_ntoa

函数inet_addr和inet_ntoaPosted on 2010-08-13 17:46 kongkongzi 阅读(3808) 评论(0)  编辑 收藏 引用 所属分类: network programming inet_addr 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序的相反inet_ntoa把类型为struct

2013-08-12 19:05:33 2593

转载 gcc同时使用动态和静态链接

最近因为项目的makefile同时使用了静态动态的连接库,所以,就要同事的链接进去我们知道gcc的-static选项可以使链接器执行静态链接。但简单地使用-static显得有些’暴力’,因为他会把命令行中-static后面的所有-l指明的库都静态链接,更主要的是,有些库可能并没有提供静态库(.a),而只提供了动态库(.so)。这样的话,使用-static就会造成链接错误。之前的

2013-07-09 00:11:35 4032

转载 SO_KEEPALIVE选项

SO_KEEPALIVE在《UNIX网络编程第1卷》中也有详细的阐述:SO_KEEPALIVE 保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入。设置该选项后,如果2小时内在此套接口的任一方向都没有数据交换,TCP就自 动给对方 发一个保持存活探测分节(keepalive probe)。这是一个对方必须响应的TCP分节.它会导致以下三种情况:对方接收一切正常:

2013-06-25 00:25:27 2973

转载 TCP滑动窗口和socket缓冲区之间的关系(记录)

一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在connet之后再设置缓冲区,

2013-06-04 09:49:11 3345

转载 epoll的内核实现

epoll是由一组系统调用组成。     int epoll_create(int size);     int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);     int epoll_wait(int epfd, struct epoll_event *events,int maxevents, in

2013-05-27 20:19:36 2857 2

转载 服务器端开发的一些建议

摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态TCP/IP协

2013-05-27 19:08:17 6951

转载 epoll基本模型案例实现

这两天在看项目的数据结构定义及关系,遇到一些关于socket的知识点,还有一些C++的知识点,下面总结下:1. struct epoll_event    结构体epoll_event 被用于注册所感兴趣的事件和回传所发生待处理的事件,定义如下:    typedef union epoll_data {        void *ptr;         int

2013-05-12 23:44:22 2602 1

转载 getsockopt和setsockopt介绍

本文只讲解socket编程中的setsockopt、getsockopt两个函数。关于其它函数的介绍可以参考下面链接:http://blog.sina.com.cn/s/blog_a459dcf5010155nf.html一、 int PASCAL FAR setsockopt( SOCKET s, int level, int optname, const char FAR* opt

2013-05-10 00:12:49 1906

翻译 剖析共享内存

共享内存共享内存可以被描述成内存一个区域(段)的映射,这个区域可以被更多的进程所共享。这是IPC机制中最快的一种形式,因为它不需要中间环节,而是把信息直接从一个内存段映射到调用进程的地址空间。 一个段可以直接由一个进程创建,随后,可以有任意多的进程对其读和写。但是,一旦内存被共享之后,对共享内存的访问同步需要由其他 IPC 机制,例如信号量来实现。象所有的System V IPC 对象一样,L

2013-05-08 00:48:50 1650 1

原创 mmorpg游戏,如何具体搭载游戏

对于我们的游戏后台器系统,上一篇文章,我已经大概的描述了我们的游戏后台的整体架构。    具体参见这片文章:http://blog.csdn.net/wallwind/article/details/8743802当我们确定好了基本的框架,和游戏中通信机制后,我们就要开始一步步完善我们的游戏了。      首先,我们要知道,游戏里的所有东西,包括地图,玩家,道具,怪物,

2013-05-02 23:53:02 1812

原创 linux下C开发中几点技术小总结

最近一致致力于linux下的C开发,因为老大是某讯出来的。因此,使用的主要技术都是某讯的基本的后台架构思想。在这段时间,学习到了很多,然后佩服某讯的技术果然很厉害。因此,自我感觉,从头开发我们这个项目,到现在,跟着我这个大牛级的老大学到了不少东西。目前在游戏里的公会系统,任务系统,邮件系统,地图,商城,等等很多大大小小的系统,都是由我来负责了。下面是我最近总结的一点点东西而已,

2013-04-15 00:40:24 16291 25

原创 心血来潮----曝光一下我开发的游戏项目的日报周报

以下是我最近几个月开发的《美人三国》游戏的一个大概过程。记录每天做了什么,开发了什么代码,等等。就目前我所经历的这个项目,我学习到了很多东西。包括游戏的架构,游戏的业务开发。游戏的地图,副本,技能,任务,公会,等等的开发,当然这是具体到业务上。具体到技术上,我们使用的是linux下的C+lua开发。因为我们的系统架构是程序启动,,预分配内存,因此我们使用的技术是共享内存,内存池,多进程交互

2013-04-15 00:10:01 13004 13

原创 我的游戏开发记录----开篇

哈哈,很早就想将每天搞的东西记录下来了。因为目前在从新开发一款arpg游戏项目。所以对于我来说,从头跟着这个项目进行开发,会学到不少东西。把我能记录下来能学习到的东西都记录下来。建立自己的一个心路历程吧。       9-10月经历了一个游戏项目,主要语言是C++开发。配以LUA脚本工具,针对那些策划经常改动的配置表需求。该项目是星形的系统架构。性能上感觉不是非常完美,但是还有很多值得学习

2013-02-04 00:28:12 3028 1

原创 记录最近生活吧

N久没写博客了。打算写一个博客专栏《我的后台架构之路》。因为目前我使用的这套后台蛮优秀的。所以,我打算把这个后台架构进行分解,分析。然后根据个人的能力,还有综合方面来进行自我开发学习。完善自己的系统开发能力和知识。因为我的技术还不是很健全,因此贵在坚持吧。我们的后台技术应该算是比较先进的技术了。呵呵,今天调了位置,距离主程远了一些。嗨,问问题不方

2013-01-14 13:38:00 1506

转载 共享内存的常用函数原理剖析

共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这块共享虚拟内存的页面,出现在每一个共享该页面的进程的页表中。但是它不需要在所有进程的虚拟内存中都有相同

2012-12-10 19:45:12 4226 1

转载 C语言中函数参数入栈的顺序

转载自http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420158.html先通过一个小程序来看一看:#includevoid foo(int x, int y, int z){printf("x = %d at [%X]n", x, &x);printf("y = %d at [%X]n", y

2012-12-07 17:07:14 1067

原创 memccpy() -- string字符串的拷贝

相关函数: bcopy(), memcpy(), memmove(), strcpy(), strncpy()表头文件: #include 定义函数: void *memccpy(void *dest, const void *src, int c, size_t n);函数说明: memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。与memcp

2012-12-06 09:18:03 3462

原创 c++ stl vector 删除操作

今天写了一个程序,需要把一个vector中的一些元素删除。我是用earse进行对迭代器删除,但是,通过gdb调试发现。没有完全删除。后台通过查资料,才知道vector每次删除时候,内存已经变化了。但是迭代器指向了别的元素,没有指向下一个。或者说,指向了下下一个。 比如,删除vector忠中1,2,3,4,5,6。当你删除1的时候,后边的元素会顶替上来,然后迭代器指向了2的位置,但是

2012-11-27 00:27:40 2727 1

原创 lua和c语言互相调用的例子

之前都是看的lua脚本怎么写的,还有就是在之前的工作室仿照着写。没有真正懂LUA和C语言如何之间交互的。今天写了一个例子       首先我要实现的功能计算两个整数的和,就是x+y了。因为x和y是随时变化的,我又不想在C程序里修改,那么就把这两个参数放到lua脚本来传递。那么我是如何实现的呢?      第一步:搭建window环境,使用vs2005 这个东西在网上搜索一下吧,很多

2012-11-16 12:37:39 14277 4

转载 GDB的使用方法(推荐)

调试程序,快捷的方法就是使用gdb,功能超级强悍。下面一篇文章为经典文章。看了之后,肯定收获不小 一、GDB的静态调试启动方法:1、当需要在命令行通过gdb来启动可执行程序的时候,可使用一下命令:   gdb    这个时候gdb会加载可执行程序的符号表和堆栈,并为启动程序作好准备;   接下来,需要设置可执行程序的命令行参数:   set args    然后设置

2012-11-13 17:21:35 2693 1

原创 用代码和UML图化解设计模式之《责任链模式》

责任链模式,用我的理解就是动作的处理链表。根据请求的不同类型,在链表查找相应类型的处理者。处理者是一个链表。wiki上说明wikipedia的定义为:CoR pattern consists of a source of command objects and a series of processing objects. Each processing object contains a

2012-11-06 20:20:47 2597 2

原创 用代码和UML图化解设计模式之《观察者模式》

观察者模式应该说比较简单,就是将不同观察者注册到被观察者内部,被观察者做了什么动作,都会通知到被观察者。。。 代码中,被观察者也可以形成接口,有不同的子类,被观察,更灵活一些。。。 下面代码 // Observer.cpp : 定义控制台应用程序的入口点。//********************************************************

2012-11-02 14:31:42 4214 1

原创 linux线程之线程私有数据 pthread_key_create方法的学习

因为项目中需要用到主线程类共享所有数据,而主线程又要生成几个线程,而几个线程要用到主线程的数据, 因此每个线程要保存一个主线程类指针,类似于自己的私有资源。因此就要用到 用到这个类的主要是因为如果用多线程对同样的资源同步的话,就要对资源进行加锁,,,多线程就要同步 那么同步就会涉及到线程的切换问题,而频繁切换就会导致cpu工作压力增大,因此,根据适合的清苦啊利用适合的方法很

2012-11-01 12:05:29 6024 1

原创 用代码和UML图化解设计模式之《迭代器模式》

这个模式在stl中是非常之常见,因为迭代器进行元素输出的时候基本都是用这个。。。。。不多说上图  自己实现一个简单的栈,内部友元类是iterator 迭代器初始化mystack; // Iterator.cpp : 定义控制台应用程序的入口点。//************************************************************

2012-10-31 23:29:43 2011

原创 用代码和UML图化解设计模式之《装饰模式》

这个模式看了两次,因为我有点不太理解,其实到现在也不太理解。通过写代码,自我理解就是把对象重新装饰了一遍。通过继承同一个基类。而不用添加额外的类了。。。。上图吧通过修饰类达到我们想要的效果。修饰类通常初始化了基类。// Decorator.cpp : 定义控制台应用程序的入口点。//****************************************

2012-10-29 23:30:30 2227

原创 用代码和UML图化解设计模式之《命令模式》

一、建立命令队列;二、可以将命令记入日志;三、接收请求的一方可以拒绝;四、添加一个新命令类不影响其它类;命令模式把请求一个操作的对象与知道怎么操行一个操作的对象分开命令模式感觉就是一个领导接受客户端的命令,让底下的人去做,但是比较特殊。继承命令 上图  上代码 // Command.cpp : 定义控制台应用程序的入口点。////************

2012-10-25 22:55:28 3699

原创 用代码和UML图化解设计模式之《桥接模式》

桥接模式就是 独立和实现相分离。不同的厂家生产不同的产品。。。。产品和厂家有这组合的关系。上代码// Bridge.cpp : 定义控制台应用程序的入口点。/////************************************************************************/ /* @filename Bridge

2012-10-25 00:44:54 2905

原创 用代码和UML图化解设计模式之《创建者模式》

今天学习了建造者模式,目前较为复杂的一个模式之一。但是思考起来就觉得她很像抽象工厂的生产者模式。 但是比生产者多了一个导演着的身份,这个指挥着建造者去生产谁。。。 所以,这个模式还是挺有意思的。直接上UML图。 我们生产两种商品,两种商品是有厂家决定,商品只决定具有哪些。因此,这时候是有生产者说了算。 但是还有一个更高级的指挥者,那就是 导演类。安排生产。

2012-10-24 00:27:43 2165

原创 用代码和UML图化解设计模式之《模板方法模式》

今天学习了模板方法模式,让我恍然大悟,似曾相识。因为之前自己再设计项目的时候,就用到了这个模式。当时还不知道自己用的是个模式,只是觉得非常好。很给力。所以,今天学起来很有感受。 这个模式就是利用了面向对象的多态,抽象哪些公用的方法,就不用实现了,其他的按照业务逻辑来独自实现。等到调用就ok了 今天只能上代码了// TemplateMethod.cpp : 定义控制台应用

2012-10-23 00:46:24 2372 2

原创 用代码和UML图化解设计模式之《适配器模式》

所谓适配器模式,就是为了解决或者叫融合系统之间的差异,通过提供一个类,来融合这种差异。这让我想起来读《UNIX 编程艺术》里一个名词  就是胶合层。 胶合层也算是一种适配上层鱼下层之间的差异和出现的一种处理方式。   这个是解决系统差异的一个具体表现, 下面上图吧   代码片段 // Adapter.cpp : 定义控制台应用程序的入口点。///***

2012-10-22 10:12:25 4673

原创 用代码和UML图化解设计模式之《门面模式》

看了门面模式的一些资料。觉得门面模式就是为了解决实体类过多,而这些实体类就是为了做一件事情,组合起来。 因此门面模式出现了,他就是解决很多类的协调关系。用另个一类聚合这些类之间的事情。因此,当我们调用一个类的时候,所有的事情完成了 这个看起来就像一个门面一样。 图呢,和策略模式差不多,但是本质思想的功能是不一样的。我在这里是用去征政府部门办事情,必须先去部门A,然后再去

2012-10-21 23:26:42 1821

原创 用代码和UML图化解设计模式之《抽象工厂模式》

抽象工厂模式,就是把工厂类也给他多态了。 根据需求不同的工厂生产不品种的实体。比如在游戏中。 纯在vip用户对应的vip的宠物对应的vip的怪物,或者vip任务。因此,vip工厂就生产vip这些东西了。但是普通的也要生产。因此 就抽象出来两个类了。 下面我是根据游戏中,不同的角色来定义的一些实体类。直接上图,大家就看明白了  也就是特殊对象特殊对待。因此工厂就要特殊

2012-10-21 01:45:16 3898

原创 用代码和UML图化解设计模式之《工厂模式》

所谓工厂模式,其实就是用来产生实例的地方。生产某一类型的产品。因此也是利用了类管理和类多态的一个特性吧。 下面直接上图 在Factory 中产生human的实例, 然后通过实例来调用方法。// Factory.cpp : 定义控制台应用程序的入口点。/*********************************************************

2012-10-20 11:06:13 5577

原创 用代码和UML图化解设计模式之《代理模式》

代理模式,就是相同的两个类,一个类做另一个类的代理人。出头露面的是第一个人,实际做事情的是第二人。 但是第一个人怎么知道第二个人能做那些事情。就继承了同一个父类。  CMon类代理他所有女儿的事情。 而不用他们女儿亲自出马,但是呢实际做事情的还是他们女儿。下面上代码 // Proxy.cpp : 定义控制台应用程序的入口点。//#include "stda

2012-10-19 10:08:53 3319

原创 用代码和UML图化解设计模式之《策略模式》

什么是策略模式,用我个人的定义就是利用了面向对象的多态等特性,通过一个类来管理实体类的一种编程技巧。这种模式在项目中是经常用到的。 通过建模大家可以清晰的看到这些类层次关系。下面就用代码来实现一下。我使用的是VS2005的,大家可以根据需要修改部分代码。 #include "stdafx.h"#include using namespace std;clas

2012-10-18 09:44:10 3330

标准库boost程序库导论(中文版).chm

标准库boost程序库导论(中文版).chm标准库boost程序库导论(中文版).chm标准库boost程序库导论(中文版).chm

2011-08-23

C++ static 用法总结

C++ static 用法总结C++ static 用法总结

2011-08-23

关于c++ 继承多态的深度思考

c++ 继承多态 深度思考c++ 继承多态 深度思考c++ 继承多态 深度思考c++ 继承多态 深度思考

2011-08-23

毕业论文(设计)排版模式

毕业论文(设计)排版模式 毕业论文(设计)排版模式 毕业论文(设计)排版模式

2011-07-20

空空如也

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

TA关注的人

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