自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

洛寒

放下执念,微笑现在。

  • 博客(74)
  • 资源 (7)
  • 收藏
  • 关注

原创 python操作excel导入数据到mysql

需求:excel的兑换码导入mysql中,总共有30W条数据。Navicat有自带功能,可以直接将excel的数据导入到mysql中,数据库太多,手动操作非常麻烦,使用python写了一个脚本。使用pip导入xlrd,pymysql库。第一版:import xlrdimport pymysqlimport math# book = xlrd.open_workbook('a...

2018-02-09 18:03:32 10703 4

原创 mysql my.cnf 详细注释

my.cnf的详细注释

2017-03-24 14:49:03 528

原创 STL 容器总结(一)

STL 容器总结(一)

2017-03-12 15:14:32 297

原创 C++ 高效编程之代码规范

本文将一些常用的代码注释、命名等规范总结下,良好的代码规范不仅让自己

2017-01-02 16:55:56 1077

原创 win7与VM的linux共享文件

1、打开虚拟机中的linux系统;然后选择虚拟机菜单上的”虚拟机”选项中的”安装VMware Tools. win7与虚拟机中的linux共享文件的(详细)方法2、在任意位置,新建一个目录 /mnt/cdrom, 用于挂载虚拟光驱(cd): $ mkdir /mnt/cdrom3、将目录 /mnt/cdrom挂载在虚拟光驱 /dev/cdrom: $ mount /dev/cdrom /mnt

2015-11-11 12:02:03 427

原创 CentOS 6.3 下安装配置GO 1.2.1

步骤1:保持联网状态,命令 # wget http://go.googlecode.com/files/go1.2.linux-amd64.tar.gz这里下载的是64位,wget这里默认下载到当前目录下,比如 /目录下。 注意:需翻墙,不然网络无法连通,局域网,你懂得。步骤2:本目录下命令直接解压 #tar-C /usr/local -xzf go1.2.linux-amd64.tar.gz步

2015-11-11 11:08:55 380

转载 游戏定时器的设计与实现

尽管如今游戏类型多种多样,各种玩法层出不穷,各种平台不断延伸,从游戏后台程序的角度来看,还是可以发现很多相通的地方。从数学模型上讲,任何程序都是一个状态机,准确的说是一个图灵机,总是在一边读写纸带一边机械地改变自身状态。驱动游戏Server这台“机器”不断运转的因素,主要有两个方面,一个是消息,一个是时间。消息主要体现于客户端侧的玩家操作,同时也有Server之间的交互,以及对进程的信号控制等。时

2015-10-14 16:30:12 2760

转载 弱网络下的游戏服务器设计

1、背景随着手游市场的到来,越来越多的手机游戏通过移动网络和游戏后台通信。移动网络相对传统有线网络存在网速低、不稳定的特点,而且目前是没有技术可以规避这个问题。因此发生在手机游戏上最常见的问题就是网络延迟高、频繁的掉线,为了提升游戏的玩家体验,目前客户端的主要做法有:(1) 网络超时机制:当网络回包超过一定时间后,客户端不会一直等待,当做超时处理;(2) 消息重发机制:如果有消息发送,但是一直没有收

2015-10-14 10:02:40 2426

原创 Cocos2d-x _String

//Cocos2d-x _String//创建的主要静态函数static _String* create(const std::string& str);static _String* createWithFormat(const char* format, ...);//Cocos2d-x _String 转化为 const char* _String* name = _String::c

2015-10-13 12:04:17 365

原创 cocos2d-x win32 log 中文乱码解决办法

// gbk_2_utf8string My_gbk_two_utf8(const string text){ #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) wstring tes = [=]() { setlocale(LC_ALL, "chs"); const char* _tsur = te

2015-10-13 11:59:37 624

原创 cocos2d-x Node

Node:Cocos2d-x采用层级树形结构管理场景。1、创建节点 Node* childnode = Node::create()2、增加新的子节点 node->addChild(childnode, 0, 123)3、查找子节点 Node* node = node->getChildByTag(123)4、删除子节点,并删除节点上的一切动作 node->removeChildByTag(

2015-10-12 11:51:40 384

原创 VS中lib和dll的使用

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤:1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---

2015-10-09 14:32:15 323

转载 LIB和DLL的区别与使用

共有两种库: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。 共有两种链接方式: 动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包

2015-10-09 14:28:32 302

转载 移动端网络游戏服务器架构

移动端网络游戏主要分为两种类型,一种是弱联网的,一种是强联网的。 弱联网的游戏,主要是指对游戏数据实时性要求比较低的联网游戏,比如卡牌游戏,休闲游戏等。 强联网的游戏,主要是指对游戏数据实时性要求比较高的联网游戏,比如MMORPG,ARPG等。 要求客户端与服务器之间进行实时通信。 在这里主要是跟大家讨论一下如何架设具有负载均衡的游戏服务器,对于游戏服务器开发,自然而然就会涉及到分区,跨服,

2015-09-25 13:59:55 945

原创 Cocos2d-x项目脚本的创建

1、首先安装python2.7版本的,比较稳定。2、加入到环境变量中,在cmd中,输入python,安装成功后显示。 3、切换到cocos的目录下,打开控制台,输入setup.py,安装cocos。 一直确定即可。安装后,重启控制台。4、安装成功后,输入cocos显示 5、创建.bat文件。@echo offset /p projectName = 请输入项目名称:if "%proje

2015-09-18 12:48:36 407

转载 游戏服务器框架

游戏服务器框架 平台: linux, windows 语言: c++ 协议: tcp1,网络 支持的网络模式: (windows: select, iocp), (linux: select, epoll) 在Windows下iocp是首选,在Linux下epoll是首选当前主流的开源网络库: boost asio asio without boost lib

2015-09-11 10:05:50 737

转载 游戏服务器开发

登陆服务器判断账户合法性,如果合法的话,把session信息写入memcache,网关服务器收到玩家连接请求后,在memcache里查找是否合法玩家,防止非法连接。网关服务器要管理玩家连接,需要高并发,可以开多个scene mgr纯粹的转发消息功能数据库服务器纯粹的查询修改数据功能,如果成为瓶颈,则加缓存数据库服务器:屏蔽其他服务器的sql操作,或者把他叫做存储服务器。当期游戏主流的存储服务器是直接

2015-09-11 09:45:42 411

转载 谈游戏服务端开发(2 )

在浅(1)中,关于游戏世界管理模块和通讯模块我没有详细说明,本篇中将补充介绍。游戏世界管理模块: 本模块专门管理游戏世界里的数据模型,也就意味着,所有游戏里的对象基本上都由他来管理所以,此模块极为复杂,甚至在大型系统里,也可以把它再划分成很多子模块来协同工作。这个模块该怎么封装呢?首先,自然是需要一个消息处理类,因为游戏世界管理模块同样是需要消息驱动的,此模块每收到一个消息后,就察看消息类型,

2015-09-11 09:42:23 454

转载 浅谈游戏服务器端编程(1)

本游戏服务器端操作系统采用UNIX,因为UNIX是标准的服务器操作系统,可保证网络游戏的稳定性。因此,以下所有的编程都将针对UNIX进行。   服务器端的整体构架如下:通讯模块,消息传递模块,游戏规则模块,线程管理模块,游戏世界管理模块。  通讯模块:  通讯模块主要实现与客户端的通讯功能,实际上,通讯模块就是对套结字Socket的封装。Socket是UNIX下的网络通讯基础,对于一个Socke

2015-09-10 15:28:21 898

转载 浅谈MMORPG游戏服务器端的设计

MMORPG不同于其它的局域网的网络游戏,它是一个面向整个Internet的连接人数过万的网络游戏,因此他的服务器端设计则极为重要 服务器的基本设置  在大型网络游戏里,通常设计为C/S结构,客户端不再对数据进行逻辑处理,而只是一个收发装置,从玩家那里接受到操作信息,然后反馈给服务器,再由服务器进行处理后发回客户端,经客户端通过图形化处理,给玩家呈现出一个缤纷的游戏世界。登陆服务器   在这里也

2015-09-10 15:27:32 1096

转载 Mangos源码分析(15):游戏对象的实现

狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。  在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、游戏对象(GameObject)

2015-09-10 15:26:53 1211

转载 Mangos源码分析(14):Mangos预编译头文件及模块划分随想

其中game工程生成的库文件game.lib居然有近四百兆之巨,mangosd和realmd在连接这个库的时候也要花上好长一段时间。当然,mangos现在的代码量也确实不少了,这也就要考虑到大的工程项目的源代码管理及模块工程划分,至少,像mangos现在这样,代码全部放入game目录中,并且就做为一个大的工程的方式,其弊端是已经显现了。另外还有功能模块划分的问题,需要找一个功能的实现时,不知道该到哪

2015-09-10 15:26:10 388

转载 Mangos源码分析(13):再谈登录服的实现

关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。 GateWay/WorldServer GateWay/WodlServer LoginServer LoginServer DNSServer WorldServerMgr | |

2015-09-10 15:25:27 613

转载 Mangos源码分析(12):服务器公共组件实现之事件与信号

有些类似于QT中的event与signal,我将一些动作请求消息定义为事件,而将状态改变消息定义为信号。比如在QT应用程序中,用户的一次鼠标点击会产生一个鼠标点击事件加入到事件队列中,当处理此事件时可能会导致某个按钮控件产生一个clicked()信号。对应到我们的服务器上的一个例子,玩家登录时会发给服务器一个请求登录的数据包,服务器可将其当作一个用户登录事件,该事件处理完后可能会产生一个用户已登录信

2015-09-10 15:23:29 375

转载 Mangos源码分析(11):服务器公共组件实现之状态机

有关State模式的设计意图及实现就不从设计模式中摘抄了,我们只来看看游戏服务器编程中如何使用State设计模式。  首先还是从mangos的代码开始看起,我们注意到登录服在处理客户端发来的消息时用到了这样一个结构体:  struct AuthHandler   {     eAuthCmd cmd;     uint32 status;     bool (AuthSocket::*han

2015-09-10 15:22:30 389

转载 .Mangos源码分析(10):服务器公共组件实现之发包的方式

前面一直都在说接收数据时的处理方法,我们应该用专门的IO线程,接收到完整的消息包后加入到主线程的消息队列,但是主线程如何发送数据还没有探讨过。  一般来说最直接的方法就是逻辑线程什么时候想发数据了就直接调用相关的socket API发送,这要求服务器的玩家对象中保存其连接的socket句柄。但是直接send调用有时候有会存在一些问题,比如遇到系统的发送缓冲区满而阻塞住的情况,或者只发送了一部分数据的

2015-09-10 15:21:49 406

转载 Mangos源码分析(9):服务器公共组件实现之环形缓冲区

消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mangos

2015-09-10 15:19:31 478

转载 Mangos源码分析(8):服务器公共组件实现之消息队列

既然说到了消息队列,那我们继续来稍微多聊一点吧。  我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个message返回,同时在getMessage和putMessage之前都要求先获取锁资源。  实现虽然简单,但功能是绝对满足需求的,只是性能上可能稍

2015-09-10 15:18:32 485

转载 Mangos源码分析(7):服务器公共组件实现之游戏主循环

当阅读一项工程的源码时,我们大概会选择从main函数开始,而当开始一项新的工程时,第一个写下的函数大多也是main。那我们就先来看看,游戏服务器代码实现中,main函数都做了些什么。  由于我在读技术文章时最不喜看到的就是大段大段的代码,特别是那些直接Ctrl+C再Ctrl+V后未做任何修改的代码,用句时髦的话说,一点技术含量都没有!所以在我们今后所要讨论的内容中,尽量会避免出现直接的代码,在有些地

2015-09-10 12:03:13 1636

转载 Mangos源码分析(6):登录服的设计之功能需求

正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。  想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服务器,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。  这个方法存在的安全隐患实在太大,明文的密码传输太容易被截

2015-09-10 12:01:52 531

转载 服务器结构探讨(5) -- 最终的结构

如果我们就此打住,可能马上就会有人要嗤之以鼻了,就这点古董级的技术也敢出来现。好吧,我们还是把之前留下的问题拿出来解决掉吧。  一般来说,当某一部分能力达不到我们的要求时,最简单的解决方法就是在此多投入一点资源。既然想要更多的连接数,那就再加一台网关服务器吧。新增加了网关服后需要在大区服上做相应的支持,或者再简单点,有一台主要的网关服,当其负载较高时,主动将新到达的连接重定向到其他网关服上。  而对

2015-09-10 12:01:04 443

转载 Mangos源码分析(4):服务器结构探讨之继续世界服

都已经看出来了,这种每切换一次地图就要重新连接服务器的方式实在是不够优雅,而且在实际游戏运营中也发现,地图切换导致的卡号,复制装备等问题非常多,这里完全就是一个事故多发地段,如何避免这种频繁的连接操作呢?  最直接的方法就是把那个图倒转过来就行了。客户端只需要连接到中心服上,所有到地图服务器的数据都由中心服来转发。很完美的解决方案,不是吗?  这种结构在实际的部署中也遇到了一些挑战。对于一般的MMO

2015-09-10 12:00:24 568

转载 Mangos源码分析(3):简单的世界服实现

讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。  对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场和副本等,这些都是通过基本逻辑功能组合或扩展而成。  在所有这些基础逻辑中,与我们要讨论的服务器结构关系最紧密的当属地图管理方式。决定了地

2015-09-10 11:54:20 609

转载 Mangos源码分析(2):服务器结构探讨之登录服的负载均衡

回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏…  可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。  我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所描述过的那样,登录服在

2015-09-10 11:51:34 513

转载 Mangos源码分析(1):服务器结构探讨之最简单的结构

好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。  对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:  client —

2015-09-10 11:48:49 714

转载 游戏服务器注意问题

关于服务器中玩家数据缓存:服务器在启动的时候会从数据库中导入大量的信息,包括玩家的基本信息,玩家的活动信息,邮件,好友,组队等等。问题:哪些信息是必须在服务器初始化时导入的?考虑这个问题的因素:并不是所有的玩家角色活动频繁,有一部分的玩家长时间是不登陆的,全部导入会增加服务器的内存,而且查询服务器数据也会带来效率的影响。考虑的方案:服务器启动初始化时,仅仅从数据库获取一些经常需要用到的数据,如玩家角

2015-09-10 11:45:53 366

转载 游戏程序流、状态处理机、进程管理器、数据包系统的实现

要在游戏开发最初清楚地知道需要做些什么,就必须构造程序的操作流,并确保能够很容易地对程序进行修改。 一个典型的程序,首先要初始化所有的系统和数据,然后进入主循环,大部分事情都出现在主循环中,根据游戏状态(标题画面,菜单画面,游戏画面等),需要对输入和输出进行不同的处理。 下面是一个标准游戏应用程序应该遵循的步骤:1、初始化系统(Windows,图形,输入等)。 2、准备数据(加载配置文件)。

2015-09-10 11:40:23 401

转载 游戏中的位运算

在实际的工作中,通常会有一些状态需要表示。我们这些状态又想节约一点空间。于是我们选择了用一个32位的无符号整数来存放这些状态。比如: 在游戏里面,某个玩家的一些状态也就是我们经常说的BUFF,比如:持续加血,持续加蓝,持续加体力,经脉受伤,被点穴等等。于是我们就有一个枚举: enum EPLAYER_STATE { EPST_NONE = 0x00000000, //

2015-09-10 11:31:39 572

转载 网络游戏服务器架构设计

有一天,我突然不想做游戏了。于是写点开发总结,于是就有了这篇文档。入手 假如,我现在接手一个新项目,我的身份还是主程序。在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题:1、服务器跑在什么样的操作系统环境下? 2、采用哪几种语言开发?主要是什么? 3、服务器和客户端以什么样的接口通讯? 4、采用哪些第三方的类库?除了技术背景之外,考虑这些问题的时候一定要充分考

2015-09-08 15:47:53 1242

转载 游戏服务器架构设计(2)

登录服的设计 – 功能需求  正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。  想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码直接发给登录服,服务器根据帐号从数据库中取出密码,与用户输入的密码相比较。  这个方法存在的安全隐患实在太大

2015-09-08 11:55:37 498

libevent深入浅出,libevent参考手册,libevent源码深度剖析,libevent实战项目。

libevent资源合集,包括libevnet深入浅出,文字版PDF。libevent参考手册,文字版PDF。libevent源码深度剖析,文字版PDF。基于libevent打车移动解决方案,libevent实战项目。学习libevent可以下载参考学习。

2018-02-19

编写高质量代码改善 Python 程序的91个建议(超清pdf)

编写高质量代码改善 Python 程序的91个建议,机械工业出版社,超清文字版PDF。

2018-02-13

流畅的python(中文)超清完整版PDF(文字版)

流畅的python中文完整版pdf,人民邮电出版社,文字版超清PDF,python进阶必备。

2018-02-12

C++11:C++11新特性解析与应用

C++11 提高开发效率,学习C++,使用C++开发人员必读。高清PDF扫描版。

2015-01-06

C++编程思想(1、2合卷)高清PDF

高清、完整版本C++编程思想,一二合卷。学习C++必读书。

2014-11-03

C/C++代码精粹 高效 指针

你的C、C++代码写的真的很高效?看完这本书,如果你可以将书中代码灵活应用到实际开发中,将使你的代码质量提高一个等级。将减少开发中80%的错误。高清PDF,完整扫描版本。

2014-10-30

空空如也

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

TA关注的人

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