摘要:
前言 当我们在linux下使用c/c++开发时,可以通过gdb来调试我们编译后的elf文件。gdb支持了attch、单步运行(单行、单指令)、设置断点等非常实用的功能来辅助我们调试。当使用lua开发的时候,一般可能会使用print(打印到屏幕)或是输出日志等稍微简陋的调试方式,但如果日志输出不能满足 阅读全文
摘要:
这段时间研究了一下资源表的优化方案,算是有了一些成果,在此记录下来。 先交代一下背景吧:我们的服务器把资源表放在共享内存上。这么做的原因主要是,进程core掉后再拉起时不需要重新再构建一遍资源表(构建资源表主要就是构建索引查询的数据结构,比如构建一个哈希表用于根据HeroID查询英雄配置这种)。然后 阅读全文
摘要:
最近总有一些问题困扰着我,而这些问题又是那么的相似。所以我决定要在这里把它记录下来,顺便再把自己的想法清清楚楚的表达出来。 这个问题源自于一次和同事的闲聊。他以前所在的组是做一个基础的通用组件,这个组件维护起来甚是心累。不仅要修以前的bug,还要为使用方增加新功能。我当时一听,就忍不住和他吹嘘了一下 阅读全文
摘要:
今天在饭堂排队时看到了一篇文章《程序的核心--复杂度》,再加上最近开始做起了游戏客户端的开发。二者交错,似乎是把之前感觉有型却又说不清的东西想明白了。 简单来说程序的复杂度就是字面意思,复杂度越高说明代码越混乱,复杂度越低则越简单。受限于程序员的理解能力、记忆力等因素,程序的维护成本与复杂度成正相关 阅读全文
摘要:
最近项目使用的C++的版本到C++11了,但是由于有些静态库(.a)没有源码,因此链接时还在使用非C++11版本的库文件。目前跑了几天,似乎是没出什么问题,但是我还是想说一下这样做有哪些潜在的风险。 首先需要说明的是,升级到C++11之后,部分std的数据结构的内存布局有可能发生改变(待考究)。最开 阅读全文
摘要:
上一篇blog我阐述了一种实现非嵌入式的反射的基本思路。相比于通过宏和模板实现,这种非嵌入的反射的优点是不需要写额外的代码来记录meta信息。 首先,为了在c++中实现反射系统,我认为需要解决以下两个问题: (1)根据一个给定符号,获取符号对应的地址信息。 (2)根据地址信息,能够对其进行相应操作。 阅读全文
摘要:
最近在思考如何在c++中实现反射。事情的起因是这样的:我们服务器是用c++开发的,如果需要写一些测试用的GM指令的话,需要编写完GM代码后重新编译并且重启进程,工序繁琐且比较耗时。因此就有了想用脚本(lua或py)来写GM的想法。用脚本来做这事我觉得还挺适合的。首先可以免去编译、重启(通过脚本的re 阅读全文
摘要:
在上一篇文章里我简单的谈了一下比特币的原理。考虑到主要是为了写给策划看的,因此很多技术细节都没提及。因此我想在这篇文章里继续说说那些被忽略,但是却是很有意思的细节。 Merkle Tree 区块链中的每一个节点其实是使用Merkle Tree这种数据结构来存储交易数据的。点击查看Merkle Tre 阅读全文
摘要:
写这篇文章是为了让我的一位策划同事能够理解比特币、区块链这些概念。他并不是计算机相关专业的,因此我需要写的尽可能简单,这是个很大的挑战。 另外,本人学识有限,若有问题望指出。 什么是比特币? 什么是货币? 货币是用于衡量物体价值的东西。在进行交易的时候,我们并不是以物易物,而是将物品换算成等价的货币 阅读全文
摘要:
今日下午,听到同事讨论一个问题感觉十分有趣。晚上下班回家后,又想起了这个问题,心里稍微有一些想法,遂将其记录下来。 这个问题大致如下: 假设有一个规则的矩形地图,其大小为n*m(即由n*m个格子组成)。在这地图上,又有k个区域,其中每个区域里格子是连续的,并且同一个格子仅会唯一的属于一个区域(每一个 阅读全文