摘要:启用内存泄漏检测 检测内存泄漏是 C/c + + 调试器和 C 运行时库 (CRT) 的主要工具调试堆函数。 若要启用调试堆的所有函数,在 c + + 程序中,按以下顺序包含以下语句: C++复制 #define 语句将 CRT 堆函数的基础版本映射到对应的调试版本。 如果您忽略#define语句,
阅读全文
摘要:起因 接收到一个UNITY文件处理的任务(c#逻辑代码存放的Assembly-CSharp.dll可热更等需求) 需要重新编译UNITY的mono模块 用于安卓环境下对DLL的定制处理 上网查阅了一些资料,经过多次尝试,得出以下编译成功的环境 ubuntu 16 32位(32位推荐 似乎脚本在X64
阅读全文
摘要:随着运行时间的增加,memtable会慢慢 转化成 sstable。 sstable会越来越多 我们就需要进行整合 compact 代码会在写入查询key值 db写入时等多出位置调用MaybeScheduleCompaction () 检测是否需要进行compact 实际进行compact的函数是
阅读全文
摘要:使用TableBuilder构造一个Table TableBuilder头文件 主要是按照格式填充 这里做了简单的注释 参考 https://blog.csdn.net/tankles/article/details/7663918 《leveldb实现解析》淘宝 那岩
阅读全文
摘要:block结构示意图 sstable中Block 头文件如下: 重启点在上个章节已经介绍过了 "“重启点”是干什么的呢?简单来说就是进行数据压缩,减少存储空间。我们一再强调,Block内容里的KV记录是按照Key大小有序的,这样的话,相邻的两条记录很可能Key部分存在重叠,比如key i=“the
阅读全文
摘要:本节主要记录SSTable的结构 为下一步代码阅读打好基础,考虑到已经有大量优秀博客解析透彻 就不再编写了 这里推荐 https://blog.csdn.net/tankles/article/details/7663905 levelDB源码分析-SSTable SSTable是Bigtable中
阅读全文
摘要:前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtableleveldb 学习记录(四) skiplist补完 KV数据库中 大部分是采用内存存储,如果中途发生意外情况
阅读全文
摘要:终于抽出时间来进行 BITTORRENT的学习了 BT想必大家都很熟悉了,是一种文件分发协议。每个下载者在下载的同时也在向其他下载者分享文件。 相对于FTP HTTP协议,BT并不是从某一个或者几个指定的点进行文件下载,而是用户之间进行交互,每个用户既是下载者也是上传者. BT并不会出现提供下载的服
阅读全文
摘要:由于时间安排上的原因,这次的代码写的稍微有些简略,只能算是自己对RAFT协议的一个巩固。 实现定义2个节点,使用读取配置文件来获取IP和端口以及节点ID 网络使用boost同步流程 一个线程收 一个线程发送 1 收的线程根据接受的数据 判断是心跳包还是选举请求还是选举请求回复 来更新自己的时间逻辑编
阅读全文
摘要:一旦Leader选定之后,我们将复制所有的操作到每个节点上。 这个是通过心跳包中的Append Entries message结构体来进行实现的 客户端发送一个操作到Leader中(即使客户端发送操作到Follower,操作也会被转发到Leader处理) Leader将操作附加到自己的Log日志中
阅读全文
摘要:Raft官网 官方可视化动画1 官方可视化动画2 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓。 有了这些详细的资料甚至是动画演示在前 起始都没多少好说的,本篇知识作为记录下学习
阅读全文
摘要:redis在游戏服务器中的使用初探(一) 环境搭建redis在游戏服务器中的使用初探(二) 客户端开源库选择redis在游戏服务器中的使用初探(三) 信息存储redis在游戏服务器中的使用初探(四) redis应用 在学习分布式对象存储的期间,有这么一个需求 "多个接口服务(本文当作客户端Cline
阅读全文
摘要:入遇到这样的需求 “有不定数量的游戏选项和不定的游戏人数选项给用户选择,我们按照 游戏人数<<24 | 游戏规则A<<16 | 游戏规则B<<8 | 游戏规则C 游戏规则D<<24 | 游戏规则E<<16 | 游戏规则F<<8 | 游戏规则G ........ 来生成所有规则可能选中和未选中的游戏码
阅读全文
摘要:todo 差不多看到第二章 环境和代码编译验证 已经确认到了第四章节 全书能正常编译测试执行完毕应该是没问题了,剩下的就是消化吸收的问题了 近日开始着手编写验证日志 读书笔记 该书籍使用的GO语言作为示例 经过验证 windows下运行curl rabbitmq ElasticSearch 等软件都
阅读全文
摘要:四处寻觅开源代码学习,适合的代码非常稀少,不适合的原因却千奇百怪。 不是使用语言特性过于老旧(c++03) 就是使用的冷僻语法(template<T> enable_share_from_this<T> 居然还搞个继承) 要么就是需要强大的系统背景知识(图形引擎,加密代码等) 或者无法但不调试,不能
阅读全文
摘要:文章系列先介绍环境搭建 介绍redis操作和代码编写运行 这是典型的实战工程过程。那么我们为何要使用redis而不是常规的数据库比如 mysql呢? 因为KV内存数据库最大的优势所有数据全部存储在内存中,速度快,而且key-value的特点也决定了他良好的扩展性. 以下几点作为游戏服务器中的应用示例
阅读全文
摘要:摘要: 搭建了服务器环境 有了客户端 我们来假想下以下应用场景:我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:用户ID,为查找的key,存储的value用户对象包含姓名userName,密码校验值passwordMD5,手机号码telephoneNum
阅读全文
摘要:上文提到 搭建完成后 我们选择客户端的开源库进行连接 有以下三种选择 1 acl-redis 原因是支持VC 国产 作者博客 acl 框架库简介 用 acl 库编写高效的 C++ redis 客户端应用 代码支持VC编译 最好使用vc2008-vc2012编译,这样工程包含redis的示例。 我选择
阅读全文
摘要:这里我们尝试在游戏服务器中的数据处理中使用redis 通过该系列文章能够学习 redis的基本操作 源码编译 客户端开源库的编译和使用 以及在游戏服务器中的缓存使用 作为初次摸索 尽量使得环境简单 我们在windows中运行redis进行学习 本来redis是不支持windows的网络模型 但是还是
阅读全文
摘要:Merkle 树 完整的比特币数据库(也就是区块链)需要超过 140 Gb 的磁盘空间。因为比特币的去中心化特性,网络中的每个节点必须是独立,自给自足的,也就是每个节点必须存储一个区块链的完整副本。随着越来越多的人使用比特币,这条规则变得越来越难以遵守:因为不太可能每个人都去运行一个全节点。并且,由
阅读全文