
游戏服务端
cbbbc
这个作者很懒,什么都没留下…
展开
-
用RMI实现基于Java的分布式计算
概述随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。在当今的编程术语里,分布式计算已经成为很常见的词,它将企转载 2016-02-15 20:37:57 · 2327 阅读 · 0 评论 -
游戏服务端之C++网络库对外接口
大多数的情况下,游戏的服务端都是在Linux下运行,但是Linux下做开发C/C++的开发相对来说是比较困难的。所以一般来说,游戏的服务端都是做成可移植的,这样方便在Windows下做开发。也就是说,服务端既可在Windows下运行,也可以在Linux下运行。说了这么多,看似与网络链接半毛钱关系都没有。其实不是这样的,就像Lua一样,既可以在Windows下调用它,也可以在Linux调用它,关转载 2017-02-15 20:05:40 · 2032 阅读 · 0 评论 -
游戏服务端之xml类型转换
上一篇博文我已经说明了服务端添加tinyxml的基本操作及基本用法。我的服务端之添加xml解释器http://blog.csdn.net/yitouhan/article/details/17453159但是可以看出tinyxml读出的数据是不做类型匹配的,也就是说tinyxml读出的数据都是字符串。但是在实际应用中,我还需要其它的数据类型,例如整型和浮点型。实现类型转换的关键在ist转载 2017-02-15 20:02:34 · 492 阅读 · 0 评论 -
游戏服务端之C++封装Mysql
很多缺少实际工作经验的同学会认为,操作MySQL还需要封装?!直接写sql语句操作就可以了。其实封装Mysql有以下的好处:1、更加安全。即使你是相当谨慎的一个程序员,就算在几百处甚至几千处地方写sql操作Mysql也避免不了会出现写错表名,字段名写错了或者写少写多了,符号写错等等。封装可以解决这些问题。2、更好的移植性。封装其实就是一些共性的集合,这样当然具有更好的移植性了(这样能方便像转载 2017-02-15 19:56:39 · 1189 阅读 · 0 评论 -
我的服务端之有限制使用Thread
前言:多线程是一把双刃剑,不要盲目使用多线程!使用多线程的优点:1、支持并发。2、提高程序执行效率,这里又可以分为两种情况:单线程情况下,I/O操作会让CPU处于"等待"状态,因此多线程能更好利用CPU;多核CPU的出现,让多线程程序有更好的执行效率。缺点:1、造成一定的线程切换开销。2、资源容易出现竞争,甚至死锁。3、多个线程"同时"对某块内存进行读写,容转载 2017-02-15 19:41:29 · 329 阅读 · 0 评论 -
序列化的作用
前言:本文以C++语言作为讲解序列化的作用。序列化是什么?一般说到序列化,其实是包含了反序列化。以C++为例,序列化就是将结构体(或者是类)等复杂的数据结构的各个属性有序地保存到字符数组。而反序列化就是将有序的字符数组还原回结构体(或者是类)等复杂的数据结构。序列化作用1、方便网络传输我们都知道,socket的数据都是以字符串进行传输,而序列化的作用就是转载 2017-02-15 19:33:01 · 4401 阅读 · 0 评论 -
游戏服务端之内存池
内存池(Memory Pool)一、前言1、操作系统的内存分配方式1.1、连续分配方式顾名思义,这种分配方式,会将进程分配在连续的空间。连续分配方式一般可以分为固定分配方式、动态分配方式和伙伴系统(固定分配方式与动态分配方式的折衷方案)。1.2、基本分页存储管理方式1.3、基本分段存储管理方式注:以上说的分配方式,自个可以到网上去搜索一下,方便理解以下内容。转载 2017-02-15 19:15:26 · 380 阅读 · 0 评论 -
游戏中的随机--转换思维
文章中的标题是“游戏中的随机--转换思维”,有一个关键词是“随机”;但是随机这个说法过于笼统,因此我主要说一个具体化实例:随机坐标。随机坐标在游戏中相当常见,例如掉落、怪物生成、采集生成或者是一些活动中的藏宝地点。随机出一个坐标不难。那随机出一个不重复的坐标呢?其实也不难!还能好好说话吗?就是要讲述如何做出一个高效及简洁的随机坐标模块!我知道相当一部分人设计随机坐标模块的思转载 2017-02-15 17:34:51 · 325 阅读 · 0 评论 -
游戏中的离线玩家
一般的游戏架构都有数据库 + 缓存 这样的存储机制,而这个机制决定了离线玩家的实现方式。其中一种很常用的做法是将所有玩家的信息全部都加载到内存中,当要查找离线玩家信息时,直接可以在内存中获得,不需要再到数据库中查找。其实我一直觉得这其中有一些问题,那就是随着时间的推移,内存的有效利用率越来越低。原因很简单,(从趋势上来讲)整个游戏的玩家活跃度会随时间慢慢降低。特别是合服之后,这种负面效果将转载 2017-02-15 17:27:34 · 789 阅读 · 0 评论 -
游戏服务端为什么需要登录服
注:这篇文章不仅会说登录服,还会说一些其它游戏相关的事哦!我们都知道,很多游戏在上线时,都会大肆宣传,最近宣传比较多的就是《激战2》了。(当然我不是《激战2》的水军)很多玩家都会提前坐在电脑前,等候游戏官方给出的开服时间,抢点进入游戏,因为这样能占据时间的红利,可以在游戏中占个好排名。当我们创建角色,进入游戏的时候都会有一个出生点。我们游戏之旅一般都是从这个出生点开始。伴随着游戏的开始,一般都转载 2017-02-15 17:20:21 · 527 阅读 · 0 评论 -
游戏服务端之AOI概述
AOI(Area Of Interest),中文就是感兴趣区域。通俗一点说,感兴趣区域就是玩家在场景实时看到的区域;也就是AOI会随着英雄的移动改变而改变。一般在游戏的中,游戏的世界都是由各种场景组成,场景中有着各种各样的Obj(英雄、怪物、NPC和掉落物品等等)。当英雄在移动的时候,玩家需要看到其它在自己视野内玩家的英雄;需要看到在自己视野内的怪物;需要看到打BOSS掉落的物品;……。有转载 2017-02-15 17:12:19 · 1043 阅读 · 0 评论 -
Java RMI之HelloWorld篇
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开转载 2016-02-16 15:59:34 · 536 阅读 · 0 评论 -
RPC原理详解
RPC 功能目标RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化 stub 结构的实现。RPC 调用分类RPC 调用分以下两种:同步调用客户方等待调用执行完成并返回结果。异步调用客户方调用后不用等待转载 2016-02-16 15:52:29 · 550 阅读 · 0 评论 -
你应该知道的RPC原理
在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队转载 2016-02-16 15:33:08 · 402 阅读 · 0 评论 -
RPC调用框架比较分析
什么是RPC: RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。 比较关键的一些方面包括,通讯协议,序列化,资源(接口)描述,服务框架,性能,语言支持等。 典型RPC调用框架: RP转载 2016-02-16 15:26:54 · 1535 阅读 · 0 评论 -
几种通讯协议的比较RMI > Httpinvoker >= Hessian >> Burlap >> web service
一、综述本文比较了RMI、Hessian、Burlap、Httpinvoker、WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以转载 2016-02-16 13:02:43 · 489 阅读 · 0 评论 -
用gdb调试游戏服务端
前言说说gdb的重要性一般来说,提到gdb,都是用命令来调试。“命令”,这个对于用户来说几乎等同于繁杂的词语。尽管事实确实如此,但实际的开发调试必须用到gdb。现在,大多数Linux系统是存在于服务器当中。我们想操作这些系统时,一般是通过Terminal来操作。也就是说这些Linux系统不具有图形界面。而调试一般分两部分,开发时调试和运行时调试。当我们的程序部署到Linux上时,那就需要忘转载 2017-02-15 20:12:03 · 377 阅读 · 0 评论