游戏服务器端开发的基本大纲

摘要:
专业基础1.1网络1.1.1了解TCP/IP协议网络传输模型滑动窗口技术三次握手用于连接建立和四次握手用于断开连接建立和断开连接期间各种状态下TCP/IP协议的传输效率1)请解释DOS攻击和DRDOS攻击的基本原理2) 100Byte数据包,边缘触发器和平台起点之间的差异,应用程序Select和Epoll之间的差异以及应用程序1.2存储计算机系统运行程序计算机文件系统的内存结构。

一 专业基础

1.1 网络

1.1.1 理解TCP/IP协议

网络传输模型

滑动窗口技术

建立连接的三次握手与断开连接的四次握手

连接建立与断开过程中的各种状态

TCP/IP协议的传输效率

思考

1)请解释DOS攻击与DRDOS攻击的基本原理

2)一个100Byte数据包,精简到50Byte, 其传输效率提高了50%

3)TIMEWAIT状态怎么解释?

1.1.2 掌握常用的网络通信模型

Select

Epoll,边缘触发与平台出发点区别与应用

Select与Epoll的区别及应用

1.2 存储

计算机系统存储体系

程序运行时的内存结构

计算机文件系统,页表结构

内存池与对象池的实现原理,应用场景与区别

关系数据库MySQL的使用

共享内存

1.3 程序

对C/C++语言有较深的理解

深刻理解接口,封装与多态,并且有实践经验

深刻理解常用的数据结构:数组,链表,二叉树,哈希表

熟悉常用的算法及相关复杂度:冒泡排序,快速排序

二 游戏开发入门

2.1防御式编程

不要相信客户端数据,一定要检验。作为服务器端你无法确定你的客户端是谁,你也不能假定它是善意的,请做好自我保护。(这是判断一个服务器端程序员是否入门的基本标准)

务必对于函数的传人参数和返回值进行合法性判断,内部子系统,功能模块之间不要太过信任,要求低耦合,高内聚

插件式的模块设计,模块功能的健壮性应该是内建的,尽量减少模块间耦合

2.2 设计模式

道法自然。不要迷信,迷恋设计模式,更不要生搬硬套

简化,简化,再简化,用最简单的办法解决问题

借大宝一句话:设计本天成,妙手偶得之

2.3 网络模型

自造轮子: Select, Epoll, Epoll一定比Select高效吗?

开源框架: Libevent, libev, ACE

2.4 数据持久化

自定义文件存储,如《梦幻西游》

关系数据库: MySQL

NO-SQL数据库: MongoDB

选择存储系统要考虑到因素:稳定性,性能,可扩展性

2.5 内存管理

使用内存池和对象池,禁止运行期间动态分配内存

对于输入输出的指针参数,严格检查,宁滥勿缺

写内存保护。使用带内存保护的函数(strncpy, memcpy, snprintf, vsnprintf等),严防数组下标越界

防止读内存溢出,确保字符串以’

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mac 设置 MySQL 数据库默认编码(字符集)为 UTF-8学习GIT个人笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一千行MySQL学习笔记

以下为本人当年初学MySQL时做的笔记,也从那时起没再更新过,但还是囊括了基本的知识点,有时还翻出来查查。是不是干货,就看亲们了~ 如果哪天笔记有更新了,我还是会更新该文章滴,其实笔记已经放到了GitHub上,只是没告诉你们而已,嚯嚯!  PHP笔记也贴出来了哈~ http://www.cnblogs.com/shockerli/p/2000-plus-l...

批量插入数据(基于Mybatis的实现-Oracle)

前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能。 项目DB框架:Mybatis。DataBase:Oracle。 ---------------------------------------------------------------------------- 批量插入数据方式: 一、Mybatis 全局设置批处理; 二、Myb...

An error occurred while attempting to initialize the Borland Database Engine (error $2108)

转载:http://hi.baidu.com/hbxjzlq/blog/item/592c6bae9e39fefdfbed5008.html BDE初始化失败 解决方法:重新安装BDE BDE简介. 要开发数据库应用程序首先要解决数据源的问题,那么什么是数据源呢?简单来讲数据源就是实实在在的数据,通常是各种数据表。 有了数据源我们就有了开发程序的依据,然而...

jprofiler主要功能简介及内存泄漏分析示例

转:https://blog.csdn.net/huangjin0507/article/details/52452946 一、安装JProfiler        从http://www.ej-technologies.com/下载5.1.2并申请试用序列号   二、主要功能简介 1.内存剖析 Memory profiler JProfiler 的内...

docker基础---数据卷volumes

1、数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 卷会一直存在,直到没有容器使用 *数据卷的使用,类似于 Linux 下对目录或文件进行 mount。 1.1 创建一个数据卷 在用 docker run 命令的时候...

python dlib学习(六):训练模型

前言前面的博客都是使用dlib官方提供的训练好的模型,进行目标识别。- python dlib学习(一):人脸检测- python dlib学习(二):人脸特征点标定- python dlib学习(三):调用cnn人脸检测- python dlib学习(四):单目标跟踪- python dlib学习(五):比对人脸直接进入主题吧,这次我们要自己训练一个模型...