自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 关于 list 迭代器的小技巧

自己写过list 的人都知道, list 中的 节点在删除的时候 只会影响相邻的节点, 也并不会影响指向相邻节点的指针使用。 std标准模板库 引入的迭代器提供了对 容器元素统一 的访问 遍历 模型。其中很多迭代器都只能是临时持有, 做完访问使用后就得析构掉。即便持有也无法保证下次使用时访问的正...

2015-01-30 17:44:04 1621 0

原创 简单实现linux下的循环进度条

最近做加载输出的时候遇到的一个需求, 要求像linux安装包程序那样显示进度, 既按百分比显示读条。 做个windows或者控制台程序的对这个需求都不陌生。 linux其实也不复杂。  需要注意2点 1 linux下的输出有缓存,如果需要回调的显示函数计数显示, 需要调用用下 fflush 2 循...

2014-12-26 10:10:47 1513 0

转载 Google Protocol Buffer 的使用和原理

最近在做移动平台协议的重构,搜到的这篇文章介绍得挺清楚的 http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ 简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google ...

2014-11-30 12:08:49 588 0

转载 SSL/TLS协议详解

http://www.cnblogs.com/adforce/archive/2012/11/27/2790937.html

2014-10-22 16:32:46 560 0

原创 windows下的协程

协程coroutine的作用主要是 在用户管理并行逻辑间的切换, 不像线程thread那样, 交由系统控制运行下 需要 锁 唤醒 条件栅栏 这中同步方式组织协作。  协程可以让用户精确控制在某个时刻下运行那块逻辑, 因为相关联的协程都在一个thread里运行, 所以不需要考虑资源互斥的那些东西...

2014-09-23 14:27:11 2114 1

原创 写模板代码时需要注意头文件引入顺序

最近修改一处模板代码的时候遇到一个问题, 就是里面的全局接口buren

2014-08-25 15:36:26 1020 0

转载 八个常用的并行设计模式

dddzz

2014-07-18 14:31:14 1502 0

原创 一个值得注意的const问题

注意检查下类似的代码:

2014-06-23 12:14:56 576 0

原创 游戏逻辑里常用的设计模式

1 工厂方法 游戏对象

2014-05-20 15:02:57 1239 0

原创 cpu处理结构浅谈

最近要换个cpu ,为了不被坑, 专门bu

2014-04-19 17:39:18 631 0

转载 MVC 框架下的中文乱码问题

最近在处理一个中文乱码问题时网上收罗了不少资料,虽然最终没能直接解决问题, 不过也提供了不少MVC模式下选择编码值得注意的地方 -----------------------------------------------------------------------------------...

2014-03-13 14:25:21 5724 0

原创 无需重编 修改程序的静态变量初始值

目前的具体应用环境就是要给发布版本的程序标记发布状态,程序经过发布工具 标记出当前的状态为  测试组版本 体验版 正式运营版 和 海外版 。 程序从研发部门出去以后理论上会通过不同部门之间的配合最后跑到正式运营的环境中,能可控的限制版本的使用对发布过程很有利。 一般发布以后想要在程序内部添加或修改...

2014-02-10 11:54:36 1590 0

转载 GDB 调试指令

1. 列出源程序 1.1 不带参数的list命令:   (gdb) list 或 l 1.2 带一个参数的list命令:(gdb) list 1.3 带两个参数的list命令:(gdb) list 参数line1为显示的起始行,line2为结束行 2. 运行程序命令:(...

2014-01-16 11:08:52 836 0

原创 如何定义 0 size 的 struct

假定定义一个文件结构时会有这种需求: 某个块的数据在当前版本是不存在的,但需要标记一下便于后期版本的扩展 (以下的数据都按 1 字节对齐) struct File { Head _h; SecHead _sh; Body _b; Tail _t; }; 而 SecHead 的结构暂时没用 会想这么...

2013-12-18 16:36:04 657 0

原创 C++在运行状态下修改替换函数逻辑

调试代码时非常期望有改动后直接生效的函数,保持当前的环境 不用程序终止运行 重新编译 这让人自然联想起脚本函数,运行时解析 这点特征使得其 在做到这点上游刃有余 但今天要说的不是用脚本来实现这点,虽然过程有点曲折但纯C++代码一样也能做到这点 介绍一下要用到的几个东西 1 系统API void...

2013-11-21 18:11:12 1999 0

转载 makefile 中常见变量及函数

常用变量 $(filter-out $(PHONY) $(wildcard $^),$^) 常用用法为$(wildcard *.c) 表示列举当前目录下的所有.c文件 这里$^因为会包含依赖的文件名,如果包含的该文件存在,那么将返回其含路径的文件名 所以$(wildcard $^)就是用来过滤$^...

2013-10-06 16:16:46 728 0

原创 自旋锁 互斥锁 读写锁 递归锁

这几个锁的概念各有交叉,容易混淆 互斥锁: 最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒 自旋锁: 同样用来标记只能有一个线程访问该对象,在同一线...

2013-09-18 18:06:45 4612 0

转载 MySQL与MongoDB复制群集分片设计及原理

分布式数据库能实现高安全、高性能、高可用等特征,当然也带来了高成本(固定成本及运营成本),我们通过MongoDB及MySQL Cluster从实现上来分析其中的设计思路,用以抽象我们在设计数据库时,可以引用的部分设计方法,应用于我们的生产系统。   首先说说关系及非关系数据库的特征:   My...

2013-08-24 18:09:13 718 0

原创 ACE_Recursive_Thread_Mutex 死锁bug

ACE_Recursive_Thread_Mutex 的设计目的是为了避免代码中某个线程自己递归对互斥体进行申请而变成死锁的情况 但通过对其介绍文章的阅读 (参考 10.6 ACE条件变量类) 发现实现上也可能会因为线程间的竞争ACE_Thread_Mutex 和 ACE_Condition_Th...

2013-07-02 20:35:54 3446 0

原创 Thread Specific Storage

最近有空翻看了一下ace的网络编程卷1 ,发现ACE在针对线程私有全局变量(TLS)  有更方便使用和移植的一套设计, 命名上稍有区别Thread Specific Storage(TSS) 在原有各OS TSS API的封装基础上 ,增加了使用上的方便 使用C++ 的 委托(delegatio...

2013-06-19 15:06:05 681 0

原创 stl:vector erase 时的元素析构问题

先看一下 /user/include/c++/4.1.2/vector.tcc对 erase的实现 templatetypename vector::iterator vector::erase(iterator __postion) { if (__postion + 1 != end...

2013-05-15 16:31:57 2364 0

转载 Cocos2D家族的前世今生

Cocos2D,这款用于开发2D游戏的开发框架以及由其衍生的Cocos2D-X跨平台开发框架和众多分支,正在帮助越来越多的开发者实现高效稳定的游戏开发。《程序员》近日专访了Cocos2D-iPhone作者Ricardo Quesada,请他分享Cocos2D家族的发展历程与未来方向。 1...

2013-04-18 11:28:35 913 0

原创 轻松升级lua_tinker支持lua5.2

lua_tinker自从lua5.0出来以后就鲜有更新 ,好在5.1没有对接口作大的修改让lua_tinker平稳的过渡,但到了lua5.2 发布以后 再执行tinker 能得到的也就只有报错的提示了。 关于5.2的修改 网上总结了不少,有不少宏都不用了而tinker恰好用到了其中的几个,比如L...

2013-03-22 15:04:54 4591 3

原创 利用模板隐藏代码中依赖关系

一个同构的逻辑在多数时候会遇到下面类似的问题:工程里面有一个系统 同时在另一个工程里面 有一个针对此系统提供的工具 并且需要实现一个简易的模拟流程。 多数的数据结构一致,业务流程也差不多一样,  最大区别在于 模拟的流程 里面不需要提供实际流程中复杂的逻辑。 应对这种问题一般的方法是提供 该系统...

2013-01-10 16:29:18 529 0

原创 ucs2 和 utf16

最近在处理一个跨国版本问题时 接触到 ucs2 这种字符集, unicode 的 utf8 utf16 utf32 倒是经常听说, 但工程里用的 ucs2这种倒是第一次了解。  找了一些资料发现原来 这是 不同标准制定委员会 之间产生的 命名差异 , 虽然内容一样但并没有因此废除掉其中一个,而且...

2012-12-21 10:56:28 5207 3

原创 Thread Local Storage

Instance(单件)机制原本是让代码执行时只有一个实例,但有的时候又希望每个线程各自能有自己的"单件"相互不影响,处理类似的需求最先想到的就是全局表,然后按线程id或是管理线程的key索引到对应的单件上,取全局表的时候需要加锁。 虽然这样也能实现目的,但是代码看上去很不自然...

2012-11-16 16:43:14 4688 0

转载 模型驱动开发的误解和挑战

http://www.infoq.com/articles/mdd-misperceptions-challenges 多年以来,采用模型驱动开发(MDD)的水平似乎仍没预期的那么好。阻碍、限制MDD使用的因素有很多,例如对实际的MDD成功案例缺乏认知、不确定如何在平常使用MDD、缺少预...

2012-10-19 13:42:21 1325 0

原创 服务器开发的环境

最近由于项目原因,从原有的windows开发平台 转移到 linux下面开发, 虽然工作内容没有发生太大的改变,但原本熟悉的开发工具和调试环境通通都没有了,换来的是单调的黑屏字符一屏。 可能老早就有人说过开发服务器端的代码 终究linux才是正统。 这句话浅含的立脚点在于 服务器的程序 极少数是在...

2012-09-25 14:53:13 856 0

原创 通过栈恢复脚本函数间参数传递

最近处理了一个客户端同事的需求,大体上是这样的: 在一个脚本里调用另一个窗口的 方法 button_down 一类的, 但如果所调用窗口没有被初始化过则需要先绕到c里面去初始化这个窗口,并且通过窗口对象加载其相应的脚本( 即包含 button_down 定义 的脚本) ,然后再调用 此脚本函数。 ...

2012-08-11 11:24:52 663 0

转载 ACE的陷阱 转

ACE的陷阱 坦白说,使用这个标题无非是希望能够吸引你的眼球,这篇文章的目的仅仅是为了揭示一些ACE缺陷的。文章适合的读者是对ACE(ADAPTIVE Communication Environment)有一定研究,或者正在使用ACE从事项目开发的人士参考。如果你对C++还是新手,甚至包括ACE...

2012-07-02 11:33:02 2353 0

原创 写给自己的备忘录

缺乏经验确实是导致工作需要重构的合理理由,但这并不代表这是个在工作开始前不去严谨设计的合理理由。当后续问题发生时,是否经过周密的思考就代表了这种问题能合理解决的可能性。这周这种问题越发的让人感觉明显起来。。。 记得项目初期的时候和策划的头头争论过这点,那时策划的想法是公司要给3年的时间做个游戏,...

2012-06-09 16:48:02 1445 1

原创 利用保护页检测内存访问越界

当处理内存越界时,如果追不到越界修改内存的地方,往往崩的时候剩下的信息都是无用的了,就算你时刻对即将出问题的数据进行监控输出,一样只能知道时间而不知道到底哪个模块引起的。 vs有个数据断点的功能,但是这个功能在处理这种问题时往往不能彻底,要命的问题是 只能放 4个 ! 而且还是 4字节一个的这种...

2012-05-04 17:16:59 1675 1

原创 实现简易的LUA嵌套表 读写接口

最近在做副本的脚本复用机制,之前想到的是用fork 这种方式从副本的静态数据里的state下得到一个一模一样的state,从此一来省掉 open 基础的脚本库和脚本文件的操作。 实现这种方案的时候发现能省的操作还真少,网上提到的lua rings这个库事实上只能给新建了个带 基础库 的new st...

2012-04-16 11:57:15 2929 0

原创 如何用C++ union 来 实现一个 C# object

C#的 object 相信用过的人都能体会出它的优点, 可以  实现 任意类型的boxed,unboxed , 如下  int n = 10;   object o = n;    int m = (int) o;   在类型的传递中可以起到一个自适配的容器, 这种写法 在接口的统一 上  能起到...

2012-03-15 18:51:08 1491 0

原创 itownsdk初探

最近网易的itownsdk对外发布。闲下来看看不得不说这个平台的sdk能体现针对游戏开发爱好者的耐心。友好的安装引导过后,展开的sdkbrowser事无巨细的把一个个的例子文档约定都给将来的开发者展现了出来,包括如何避免设计出不合格的游戏在内的期望也明确提出,相信能吸引到一些爱好者能融入这个开发平...

2012-02-27 16:13:48 1087 1

转载 缺陷与出路

-- 专业从业者应该首先把自己从玩家的身份中升华出来,能总结玩家的反应,能将玩家眼中混沌的系统分离成为清晰的个体,能将实际抽象为理论,能将感受量化成数据。如果一个从业者的作用只是传递玩家的信息或把自己作为玩家感受的信息整理出来,那么这个从业者实质上对于整个团队是没有价值的。如果你做的仅仅是玩家能做...

2012-01-31 16:23:11 1337 0

原创 ace allocator 和 singleton 的线程安全

最近因为需要,继承实现了一个 ace_cached_allocator的分配器,理由是原本的ace_cached_allocator的实现不提供自增长的功能,当申请超过预分配的大小个数时,内存池将返回NULL。而提供动态增长的ace_local_memory_pool由于支持动态长度而显得不那么高...

2012-01-18 14:43:54 790 0

原创 不太吸引人的成就系统

成就系统这个舶来品,成为了继副本系统之后又一个被策划要求的标配了,最近的讨论愈发觉得成就系统本身的吸引力绝大部分取决于玩家自身素质。 成就在游戏里的地位,可以说是似有似无,但有充斥于任何一个边边角角的地方。说它可有可无是因为它本身的定位就是不能影响到玩家的游戏主线:比如打怪练级接任务下副本进工会搞...

2011-12-24 17:58:23 741 0

转载 Lua的function、closure和upvalue

Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包...

2011-11-08 10:08:57 999 0

原创 一步步进行 LUA的OOD封装 (二)

概要介绍了如何将lua面向过程的封装方式向面向对象的方向靠拢,这里开始逐步介绍其做法。还是以lua_tinker为主 首先我们知道lua中最接近c中类概念的就是它的表,在上一页里已经介绍过他们的相似之处了,这里也就不再继续扯这个了。 总体的目标是把一个C中类表述到lua中,让脚本能够识别传入的...

2011-10-22 16:25:31 2340 0

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