摘要: 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端输入的选择条件动态的实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 但是简单工厂方法违背了开放——封闭模式。 1、意图 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 2、核心思想 核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给了子类去做,成为一个... 阅读全文
posted @ 2010-05-29 21:34 红脸书生 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 一、基本的HTTP服务器1、简介对于一个服务器应用程序,有四方面的内容是需要了解:客户端、服务器端、客户端与服务器端的协议,服务器端能够提供的资源客户端 通过HTTP协议发送URI 到服务器端,服务器端 通过HTTP协议返回响应内容 给客户端2、HTTP服务器功能根据客户端请求,响应本地文件或者使用本地应用程序(即CGI程序)生成响应内容,返回给客户端一个WEB服务器的基本内部流程如下:(1)初始化:即启动服务器程序,启动时向运行主机请求将端口80作为服务器端口(2)请求——响应循环:1)等待并接受一个客户端请求2)对请求进行检查3)将请求的URL映射为特定的文件(存在则返回给客户端,不存在则 阅读全文
posted @ 2010-05-29 20:05 红脸书生 阅读(2223) 评论(0) 推荐(0) 编辑
摘要: libev:libevent的挑战者 收藏 http://blog.csdn.net/heiyeshuwu/archive/2008/09/02/2865201.aspx libev 是高性能事件循环/事件模型的网络库,并且包含大量新特性。它是继lievent和Event perl module之后的一套全新网络库。它追求的目标:速度更快,bug更少,特性更多,体积更小。它和libevent很像,... 阅读全文
posted @ 2010-05-29 17:08 红脸书生 阅读(6140) 评论(0) 推荐(0) 编辑
摘要: UDT协议-基于UDP的可靠数据传输协议 1. 介绍 随着网络带宽时延产品(BDP)的增加,通常的TCP协议开始变的低效。这是因为它的AIMD(additive increase multiplicative decrease)算法彻底减少了TCP拥塞窗口,但不能快速的恢复可用带宽。理论上的流量分析表明TCP在BDP增加到很高的时候比较容易受包损失攻击。 另外,继承自TCP拥塞控制的不公平的RT... 阅读全文
posted @ 2010-05-29 15:50 红脸书生 阅读(2983) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/gddsky/archive/2007/10/18/1831688.aspx 要描述一项技术或是一个行业,一般都会从其最古老的历史开始说起,我本也想按着这个套路走,无奈本人乃一八零后小辈,没有经历过那些苦涩的却令人羡慕的单机游戏开发,也没有响当当的拿的出手的优秀作品,所以也就只能就我所了解的一些技术做些简单的描述。一来算是敦促自己对知识做个梳理,二来与大家... 阅读全文
posted @ 2010-05-29 15:26 红脸书生 阅读(7135) 评论(0) 推荐(1) 编辑
摘要: 本文描述了一个我所设计的游戏服务器体系结构,其目的是实现游戏服务器的动态负载平衡,将对象从繁忙的服务器转移到相对空闲的服务器中.设计并没有经过具体的测试与验证,仅仅是将自己目前的一些想法记录下来.随着新构思的出现,可能会有所变化. 以下是服务器的逻辑视图,其中忽略了管理和监控模块 --------------------------------------------------------|逻辑... 阅读全文
posted @ 2010-05-29 15:25 红脸书生 阅读(2370) 评论(0) 推荐(1) 编辑
摘要: 原文地址:http://dev.gameres.com/Program/Abstract/Thinking/online_g_4.htm 在这一章节,我想谈谈关于服务器端的脚本的相关设计。因为在上一章节里面,谈NPC智能相关的时候已经接触到一些脚本相关的东东了。还是先来谈谈脚本的作用吧。  在基于编译的服务器端程序中,是无法在程序的运行过程中构建一些东西的,那么这个时候就需要脚本语言的支持了,由于... 阅读全文
posted @ 2010-05-29 15:22 红脸书生 阅读(1642) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://dev.gameres.com/Program/Abstract/Thinking/online_g_1_2.htm 谈这个话题之前,首先要让大家知道,什么是服务器。在网络游戏中,服务器所扮演的角色是同步,广播和服务器主动的一些行为,比如说天气,NPC AI之类的,之所以现在的很多网络游戏服务器都需要负担一些游戏逻辑上的运算是因为为了防止客户端的作弊行为。了解到这一点,那么... 阅读全文
posted @ 2010-05-29 15:20 红脸书生 阅读(3379) 评论(0) 推荐(1) 编辑
摘要: 原文地址:http://dev.gameres.com/Program/Abstract/Thinking/online_g_3.htm  下面我想来谈谈关于服务器上NPC的设计以及NPC智能等一些方面涉及到的问题。首先,我们需要知道什么是NPC,NPC需要做什么。NPC的全称是(Non-Player Character),很显然,他是一个character,但不是玩家,那么从这点上可以知道,NP... 阅读全文
posted @ 2010-05-29 15:19 红脸书生 阅读(1617) 评论(0) 推荐(1) 编辑
摘要: 撰文/ 曾毅 陶文最后更新:2004年6月12日声明:.本文2004年5月首发于《CSDN开发高手》,版权归该杂志与《程序员》杂志社所有。杂志限于篇幅部分内容有所删节,此处版本为相对完整版本。本文为介绍性文章,会随笔者学习C++语言不断更新。 前言无数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippman先生曾在《C++ Primer》一... 阅读全文
posted @ 2010-05-29 15:08 红脸书生 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 参考资料: 1、《Apache源代码全景分析》 2、《鸟哥服务器架设篇》 一、不同的开发人员应该关注的知识点 Apache管理员 配置文件、配置指令 模块开发人员 全部内容 服务器开发人员 MPM并发处理框架 普通人员 模块化体系结构 二、需要的技术基础 1、C、C++ 2、了解HTTP协议相关的内容 3、了解Apache配置文件和配置指令体系(因为Apache启动的时候将构建配置树,在对请求处... 阅读全文
posted @ 2010-05-29 15:04 红脸书生 阅读(6491) 评论(0) 推荐(1) 编辑
摘要: 这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架 构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环 境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须... 阅读全文
posted @ 2010-05-29 13:21 红脸书生 阅读(1108) 评论(0) 推荐(0) 编辑
摘要: 1: #include <stdio.h> 2: #include <math.h> 3: #include <stdlib.h> 4: #define STACK_INIT_SIZE 20 5: #define STACKINCREMENT 10 6: 7: typedef int ElemType; 8: typedef struct { 9: ElemT... 阅读全文
posted @ 2010-05-29 12:34 红脸书生 阅读(1320) 评论(1) 推荐(0) 编辑
摘要: 使用动态栈结构 阅读全文
posted @ 2010-05-29 12:33 红脸书生 阅读(1805) 评论(0) 推荐(0) 编辑
摘要: 1: #include "stdio.h" 2: 3: typedef struct BiTNode { 4: char data; /*结点的数据域*/ 5: struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/ 6: } BiTNode , *BiTree; 7: 8: /*创建一棵二叉树*/ 9: void CreatBiTree(BiTree *... 阅读全文
posted @ 2010-05-29 12:06 红脸书生 阅读(1163) 评论(1) 推荐(1) 编辑
摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: typedef struct node { 5: int data; 6: int freq; 7: struct node *prior; 8: struct node *next; 9: } dbLNode, *dbLinkList; 10: 11: /*创建一个双向... 阅读全文
posted @ 2010-05-29 11:57 红脸书生 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: #define STACK_INIT_SIZE 20 4: #define STACKINCREMENT 10 5: 6: typedef char ElemType; /*将char类型定义为ElemType*/ 7: typedef struct { /*定义一个栈类型*/ ... 阅读全文
posted @ 2010-05-29 11:46 红脸书生 阅读(585) 评论(0) 推荐(0) 编辑