- 博客(42)
- 收藏
- 关注
转载 Dota2游戏布局
来源:正在进入启动模式 现在离Dota 2限号测试已经快两周年,我们感觉我们已经准备好让任何想要尝试Dota 2的人都能玩到这个游戏了。对Dota 2而言,或者说对所有大规模后端支持的游戏而言,这不仅仅是直接发布并坐享其成那么简单,因为这些游戏的基础配套设施非常庞大。 于是,我们将会对Dota 2的开放采取不同的方式。我们的目标是对现有的Dota 2用户造成尽可能小
2015-08-22 14:54:03
1050
转载 水果忍者划痕效果
转自:http://blog.csdn.net/u012945598/article/details/17609281网上找的一个关于水果忍者划痕的,效果还算凑合。其原理就是基于OpenGL绘制直线,由于版本过老,此处笔者修改了一些方法,粘贴后可直接使用适用于Cocos2d-x 2.2.1.h文件中需要加入的代码: void draw();
2014-11-12 20:44:53
1101
原创 RSA 不起作用
我有两台机子 hostA和hostB,hostA需要远程通过ssh连接到hostB的user用户,然后不想要每次都输入密码,于是用RSA密钥的方式。生成密钥对,将公钥拷贝到 hostB的authorized_keys文件,然后连接hostB出乎意料,仍然让我输入密码!!!!以为是这对密钥有问题,不匹配或者什么的。。然后把公钥放到了另一台电脑hostC上,从hostA连接hostC,成功
2013-08-01 17:32:11
757
原创 crontab
需求:用户xiaoming 需要自己的用户下建立crontab事件,该事件是每个小时的0分和30分执行脚本UserScript来进行某项操作。于是root用户为xiaoming 添加了该事件: crontab -u xiaoming -f /home/xiaoming/UserScript然后用crontab查看已经添加成功 ~ # crontab -u xiaoming -l
2013-07-15 17:35:30
1266
转载 xml
来源: 百度文库1. SAX和DOM 目前XML的解析主要有两大模型:SAX和DOM。 其中SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应事件,并调用相应的用户处理函数。这种方式占用内存少,速度快,但用户程序相应得会比较复杂。而DOM(文档对象模型),则是在分析时,一次性的将整个XML文档进行分析,并在内存中形成对应的树结构
2013-07-12 15:23:49
350
原创 ado和odbc读取excel总结
因为项目需要,最近在做一个读取excel的工具,最开始是把excel转成tab分割的txt文本,然后当做文本文件来读取,然后有人嫌转换太麻烦,要求直接读excel,没办法,整! 我只尝试了ado和com两种方式,过程中也遇到很多的问题,所以决定总结下供需要的人参考。这里不详细说明读取的方法,这些在msdn都能查到,只说说在调用过程中我碰到的一些麻烦事。 因为读取的表格过
2013-01-24 17:10:34
5763
4
转载 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
转自:http://blog.csdn.net/fmddlmyy/article/details/372148这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big end
2012-12-27 17:14:16
256
转载 LIBXML2库使用指南
转自:点击打开链接写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没有详细介绍如何在window
2012-12-26 14:14:28
628
转载 恼人的函数指针:指向类成员的指针
指向类成员的指针总的来讲可以分为两大类四小类(指向数据成员还是成员函数,指向普通成员还是静态成员),下面一一做介绍:一、指向类的普通成员的指针(非静态)1、指向类成员函数的指针简单的讲,指向类成员函数的指针与普通函数指针的区别在于,前者不仅要匹配函数的参数类型和个数以及返回值类型,还要匹配该函数指针所属的类类型。总结一下,比较以下几点:a)参数类型和个数b)返回值类型c)所
2012-11-07 21:30:41
289
原创 一个矛盾的人
从来没有见过这样一个矛盾的人,既真诚也虚伪,既认真负责也虚与委蛇,这个人就是我的小爸,也就是我老爸的弟弟。 虽然是俩兄弟,可是他们却是俩个完全不同世界的人,可能是因为家里兄弟姐妹太多,小爸是在长辈的宠爱下长大的,顺利的上了高中、大学,然后参加工作。而我的爸爸呢,因为家庭条件不好,只能早早的参加工作挣钱供弟弟读书。虽然后来也闯出了自己的一片天地,可是却养成了和小爸完全不同的性格。我
2012-02-03 15:36:38
1148
原创 流量都耗在哪里了
随着玩家数量的增长,流量的消耗也是突飞猛进,机房的带宽可不便宜啊,呵呵,看看到底流量都消耗在那些地方呢,有没有可能节省一点。分析结果:a.移动 差不多消耗了25%b.九屏内的数据同步消耗了25%(包括玩家,npc,宠物等各种各样的数据)c.攻击消耗10%d.还有各种各样的公告,特别是全世界播放的公告,也占用了5%甚至更多。 怎么样才能把流量省下来呢,先
2012-01-09 15:28:47
585
1
原创 历史数据的保存
随着运营时间的增加,玩家的历史数据越来越庞大,都有哪些数据呢,玩家的消耗记录,充值记录,还有玩家在游戏过程中的各种数据。到底会有多大呢,粗略的计算一下看看
2011-12-30 17:57:46
730
原创 关于技能,buff,装备的属性计算和更新的思考
游戏走上正轨了,不需要没日没夜的垒代码,今天很闲啊,顺便总结一下对玩家属性更新这个流程的想法吧。 属性更新就是当玩家的属性发生变化时,重新计算各项属性的值并更新到客户端,因为属性变化实在是太频繁了,技能、装备、buff、使用道具.....,所以计算属性值的目标是: 1尽量简单,虽然现在这个计算操作对cpu来说已经是小菜一碟,但是还是尽量不要造成cpu的额外负担
2011-12-20 18:29:39
1634
原创 lua脚本加载问题
游戏中逻辑部分有很大部分都是通过lua脚本来实现的,脚本中的代码量甚至有可能超过游戏程序本身的代码量。这就涉及到大堆脚本的管理问题。 所有的脚本不是在程序启动时自动加载的,而是在需要调用到这个脚本的时候才加载。这是因为脚本数量庞大,可能还有很多是旧的已经弃用的游戏逻辑,如果全部加载,增加程序负担,不划算也没有必要。 可是用了延迟加载以后,另一个问题又出现了。lu
2011-12-15 20:54:23
3027
转载 OpenSSH 密钥管理:RSA/DSA 认证
OpenSSH 密钥管理:RSA/DSA 认证ZDNet 安全频道频道 更新时间:2008-06-12作者:Daniel Robbins 来源:IBM 我们中有许多人把优秀的 OpenSSH用作古老的 telnet和 rsh命令的替代品,OpenSSH 不仅是安全的而且是加密的。 OpenSSH 更加吸引人的特性之一是它能够使用基于一对互补的数字式密钥的
2011-12-05 14:23:43
519
原创 玩家需要流畅的移动
游戏虽然完成了,但是玩家体验很差,特别是走路的时候,总是很卡,这肯定是我们设计上的缺陷。 最开始用的办法是玩家每移动一步,都向服务器提出申请,服务器检查玩家是否可以移动,如果移动速度和服务器这边的数据不匹配,或者正处于某些不能移动的状态下,则忽略客户端的移动请求,反之,同意玩家的移动,在服务器端设置新的坐标,并通知玩家自己和同屏内其他对象将其坐标更新到玩家移动后的位置。
2011-11-22 17:56:47
553
原创 数据包大小多少最合适
服务器和客户端的数据交互,刚开始的办法是逐个数据包发送,并且是实时的,这样保证了数据能在最快的时间内到达,可是随着玩家数量的增加,弊端越来越明显,最大的弊端就是流量太大,这和数据包的压缩有关系。数据包的压缩比例与这个数据包的实际大小又有很大关系,数据包越大,重复数据越多,压缩比例就越大,反之,如果数据包很小,压缩后的大小没有减少很多,反而增加了压缩头,整个包的大小有可能反而增大了。并且,压缩和解压
2011-11-01 15:20:04
3567
原创 mysql 的table合并
mysql 在合并2个表格的时候没有检查2个表格字段是否一致,这回导致合并后的数据与原来的出现很大差异比如有2个表 `CharacterA`( `ID` int(10) unsigned NOT NULL, `NAME` varchar(32) CHARACTER SET latin1 NOT NULL, `LEVEL` tinyint(3) unsigned NO
2011-10-28 12:07:10
563
转载 linux线程同步——条件变量
来源:http://www.yuanma.org/data/2006/0721/article_1195.htm 如果现在在等待一个信号。如果该信号被设置,则继续运行。如果没有条件变量,我们将会不停的去查询该信号是否被设置,这样就会浪费大量的cpu。而通过使用条件变量,我们就可以将等待信号的线程阻塞,直到有信号的时候再去唤醒它。 条件变量的类型是pt
2011-10-26 11:49:21
251
转载 crontab
来源:http://www.chinaunix.net/jh/6/271992.htmlcrontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。crontab命令有三种形式的命令行结构:crontab [-u user] [file]cro
2011-10-26 11:14:58
196
转载 Linux之线程同步-互斥量
来源:http://www.yuanma.org/data/2006/0721/article_1195.htm 进行多线程编程,最头疼的就是那些共享的数据。因为你无法知道哪个线程会在哪个时候对它进行操作,你也无法得知那个线程会先运行,哪个线程会后运行。下面介绍一些技术,通过他们,你会合理安排你的线程之间对资源的竞争。l 互斥体Mutexl
2011-10-24 11:03:13
263
原创 防止内存全部耗完
出现了好几次服务器内存耗完导致进程宕机的问题,虽然主要问题是服务器管理不当,但是还是需要一个办法,在内存耗完了的时候,能自动保存全部数据以后再退出,而不是直接宕机。 解决办法暂时这样,在进程启动的时候预先申请一小块内存,当机器的内存耗光时,把这一小块内存释放出来,
2011-10-19 15:40:41
258
转载 operator new 和 operator delete
来源: http://topic.csdn.net/u/20081204/11/5848283a-c1b9-4efc-8a26-0878aed14a5c.htmlC++里允许用户通过自定义operator new的方式来更改new表达式的行为,这给了程序员定制内存
2011-10-14 17:54:37
279
转载 vim之 命令行操作
1 字符串替换俩种方法:g/search-string/s//replace-string/g第一个g:是所有的行,:/search-string/s//replace-string/g 会替换光标所在行的所有列search-string:是被替换的字符串,s是替换的意思replace-string:是要替换的字符串最后一个g:是所有的列,:g/search-s
2011-09-29 17:07:33
429
原创 vim之 字符串编辑
如果不知道查哪里,可以求助于vim自己的帮助:help pattern\ 取消后面所跟字符的特殊含义。比如 \[vim\] 匹配字符串“[vim]”[] 匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母[^] 匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字
2011-09-29 16:43:39
375
原创 版本核对很重要
客户端下载的最新版本,因为各种各样的原因,很有可能不是当前发布的最新版本,而服务器的版本,却始终是保持最新的。 内测刚开始的时候,为了尽一切努力挽留玩家,避免因为版本不符或者其他原因登录不上服务器,没有核对客户端的版本,玩家即使下载旧的客户端也能登录最新的服务器。
2011-09-27 16:26:56
338
原创 数据库-要注意
项目使用的mysql数据库,至于其他数据库,如oracle另当别论1 mysql 默认:表名是大小写敏感的,而列明则不是,这往往与我们期望的相反。2 注意选自字符编码集,考虑是否支持繁体等等。
2011-08-31 15:44:58
199
转载 vim使用收藏
移动: h、j、k和l键将光标分别向左、下、上和右侧移动· 按0(零)跳到行首,$跳到行末· F 和B向前后一次移动一整页· 下一个单词的第一个字母,按w键。到下一个单词的最后一个字母,按e键。移动到前一个单词的第一个字母,按b键· 使用大写的单词移动命令在长单词之间跳跃移动。W跳到下一个长单词的第一个字母,E跳到最后一个字母,B移动到前一个单词的第一个字母
2011-08-31 15:44:34
241
原创 数据库中插入字符串
最近邮件系统出了bug,是将邮件插入数据库失败,导致玩家的邮件丢失。本来sql语句是:insert into mail(ID,SOURNAME,DESTNAME,TAXT) values(1,"aaa","bbb","祝贺升级!!!!");这样当然没有问题,可是有
2011-08-31 15:44:02
2713
原创 单例模式的自动析构
总所周知,单例模式如果不主动调用,在进程结束时是不会析构的,而是仅仅把内存释放掉而已所以,如果希望在析构时进行某些操作,在进程结束前,可以主动调用析构函数,如下面类中的delMe函数(xSingleton::getMe().delMe();)可是,如果每定义这样一个类,都
2011-08-31 15:43:11
5253
原创 简单使用ssh密钥认证
转自:http://phoenix007.iteye.com/blog/709455A机器(ssh连接发起端,即客户端): 添加一个测试用户aaa [root@A ~]# useradd aaa su成aaa [root@A ~]# s
2011-08-31 15:42:38
528
原创 单例模式与多线程
困惑ingClass A{ public: ~A(){} static A* getInstance() { if(_instance==NULL)
2011-08-31 15:40:54
319
原创 多线程啊多线程
最近饱受多线程的折磨 -_-,大概在多线程编程方面太缺乏经验了,经历了一个痛苦的转变。。。常常会发现服务器宕机了,在一个莫名其妙,看起来永远不会宕机的地方,苦苦思索几天几夜也找不到原因,最后发现是多线程在捣鬼服务器进程架构是这样的,每个进程都由2个线程组成:
2011-08-31 15:40:22
461
原创 多线程和多核的关系
1 多核是物理层的,多线程是OS层的,需要OS的支持2 一个物理CPU也可以应用多线程3 多核技术可以看成是一种CPU的集成技术,是指在一个CPU的处理模块上,集成了2个或多个物理CPU。 多线程是指单一物理处理器能够同时分发来自多于一个硬件线程上下文的指令,可以
2011-08-31 15:38:20
486
原创 lua与c++数据交换之表和数组
一 数组的操作数组其实是一种特殊的表格。int LuaArray(lua_State* L){ lua_newtable(L); //新建一个表,并压入栈顶 lua_pushnumber(L,-1);
2011-08-31 15:37:32
4686
2
原创 关于宠物
记得以前面试的时候,曾被问过一个问题,如果让你设计一只宠物,该如何实现?当时还只是小菜鸟一只(嘿嘿,其实现在仍然是菜鸟),我回答的是让npc静止,玩家移动的同时把宠物强行拉到自己附近。(如果现在问,我一定能答得更好) 答案虽然不尽完善,但是也是有可行性的,嘿嘿,
2011-08-31 15:36:50
519
1
原创 头疼的死循环
如果一个人写的代码还好,自己的孩子毕竟自己了解,到底是哪里有死循环,多看几次代码也就看出来了。 可是。。。当一个项目有多个人组成时,不知道究竟是谁提交的代码在哪个部分有了死循环,没有高效的办法,一个一个的排除,实在很痛苦!!! 真的没有一个办法
2011-08-31 15:34:52
237
转载 对于圆桌理论和经典概率判断算法的分析(转)
作者:sewalker来源:http://wow.17173.com/content/2008-04-16/20080416112747089.shtml《QS区精华贴读后感:面对战士,我们开闪避带来的是什么?》一文显然引发了一场争论,可以清楚地看到某些玩家坚持原
2011-08-31 15:33:49
2125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人