2018年12月20日
摘要: 在一次公开课上,听别人讲过全局分布式uuid的设计,听过twitter的snowflake的设计。也听过,如果使用单独的计数器服务,不可能每次都保存当前计数器到文本,自己想到应该可以每隔一些数,例如1万次,10万次,反正64位的空间比较大,然后保存起来,那么就没有每次保存,对硬盘的写入压力。当出现故 阅读全文
posted @ 2018-12-20 22:53 月落无影 阅读(595) 评论(0) 推荐(0) 编辑
  2018年7月15日
摘要: 最近在安装zookeeper的时候遇到了一个问题:调用./zkServer.sh start之后,使用命令telnet localhost 2181,显示访问被拒绝。然后使用netstat查看监听2181的端口,无法查到。通过ps -aux指令可以查到zookeeper进程,不过查看监听端口,218 阅读全文
posted @ 2018-07-15 10:36 月落无影 阅读(1454) 评论(0) 推荐(0) 编辑
  2018年7月14日
摘要: 首先引入一篇博客: 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明: 阅读全文
posted @ 2018-07-14 11:35 月落无影 阅读(486) 评论(0) 推荐(0) 编辑
  2018年7月4日
摘要: 现在假设有如下构建的游戏服务器,游戏服务器有一组gate服务器,用来验证客户端,并且通过gate服务器来与一组主服务器,然后主服务器与关系服务器进行通信。 其中relation服务器用来处理各种关系,例如好友关系,师徒关系等。现在有一个玩家A添加玩家B为好友,那么客户端发送给服务端的消息流程如上所示 阅读全文
posted @ 2018-07-04 23:05 月落无影 阅读(404) 评论(0) 推荐(0) 编辑
  2018年6月16日
摘要: 在C++中,各种数值类型的转化是C++编译过程中警告的主要来源,但是,很多时候,我们需要使用各种数值类型,例如我们用数组的某一位表示大小为对应序号的值,这种情况下,经常会涉及多种数值类型。根据C++ Programming Language中的建议,在数值类型转换时,使用narrow_cast来实现 阅读全文
posted @ 2018-06-16 11:51 月落无影 阅读(1987) 评论(0) 推荐(0) 编辑
  2018年6月8日
摘要: google的protobuf是一种轻便高效的结构化数据存储格式,在通信协议和数据存储等领域中使用比较多。protobuf对于结构中的每个成员,会提供set系列函数和get系列函数。 但是,对于使用来说,需要根据传入的参数考虑需要调用的函数名,在使用这个比较多的情况,还是会让人觉得有些麻烦。而且,对 阅读全文
posted @ 2018-06-08 21:45 月落无影 阅读(4886) 评论(0) 推荐(0) 编辑
  2018年6月7日
摘要: 在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码。虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面三种解析xml采用相同的原理,所以就算你不是学习qt,也可以大致参看一下代码,对三种解析方式有一种大 阅读全文
posted @ 2018-06-07 21:50 月落无影 阅读(37360) 评论(0) 推荐(3) 编辑
  2018年6月5日
摘要: Item 26. Prefer iterator to const iterator, reverse_iterator, and const_reverse_iterator. 上面一段话,是《Effective STL》中的一节。我在下面简单摘抄了一下: 我之所以要将上述图片贴在这里,是因为,我 阅读全文
posted @ 2018-06-05 22:03 月落无影 阅读(423) 评论(0) 推荐(0) 编辑
  2018年6月3日
摘要: 之前,我在描述我所采用的设计模式时,一直在Strategy和State之间犹豫,略微有些拿捏不准,说哪种设计模式好。结果到最后,会根据自己所想,觉得是State就是State,觉得Strategy就是Strategy,不过,说的时候,还是会带有些犹豫。最近看Martin Fowler的《重构,改善既 阅读全文
posted @ 2018-06-03 22:24 月落无影 阅读(234) 评论(0) 推荐(0) 编辑
  2018年5月23日
摘要: 我在之前的随笔中介绍了function如何保存参数,如何实现调用相关知识。对于一个函数对象或者函数指针来说,应该很容易理解。不过对于如何在function中保存类的成员函数,这个还是值得一说的。 还是按照之前的方式,通过boost的type_index,我们可以比较容易的知道function的父类是 阅读全文
posted @ 2018-05-23 00:15 月落无影 阅读(390) 评论(0) 推荐(0) 编辑