03 2019 档案

摘要:Redis上踩过的一些坑 https://blog.csdn.net/chenleixing/article/details/50530419 mysql常见故障诊断 https://blog.csdn.net/u010230971/article/details/80335578 MySQL 故障 阅读全文
posted @ 2019-03-28 10:58 _raindrop 编辑
摘要:https://www.cnblogs.com/kevonyang/p/5927995.html https://blog.csdn.net/qq_31766907/article/details/83782192 阅读全文
posted @ 2019-03-28 10:35 _raindrop 编辑
摘要:https://www.cnblogs.com/sybboy/p/5754096.html https://www.cnblogs.com/zhoug2020/p/6396194.html https://www.cnblogs.com/index-html/p/trusted-lottery-al 阅读全文
posted @ 2019-03-28 10:17 _raindrop 编辑
摘要:先看看lambda表达式变量截取的方式[] 不截取任何变量[&] 截取外部作用域中所有变量,并作为引用在函数体中使用[=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用[=, &foo] 截取外部作用域中所有变量,并拷贝一份在函数体中使用,但是对foo变量使用引用[bar] 截取bar变量并且 阅读全文
posted @ 2019-03-26 16:54 _raindrop 编辑
摘要:c++11中Universal Reference类型的模板参数的推导规则? Universal References in C++11 简单来说就是type&& + syntax + type deduction,即可以引用左值,也可以引用右值。 template<typename T> void 阅读全文
posted @ 2019-03-26 12:51 _raindrop 编辑
摘要:一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右值”。 还有一个说法,就是可以取地址的、有名字的就是左传,反之,不能取地址的、没有名字的就是右值。 右值又分将亡值(xvalue),纯右值。 用右值引用变量声明,就会少一次对象的析构及一次对象的构造。 阅读全文
posted @ 2019-03-26 00:08 _raindrop 编辑
摘要:开发语言的选择 业界主要的是c/c++ + Python/lua模式做游戏服务器。c/c++做网络通讯数据传输,python/lua做业务逻辑。这样既保持了网络传输的效率(c++),又提升开发效率(Python/lua),同时也支持热更新。 当然,也有其他服务器开发语言,erlang(页游公司用的多 阅读全文
posted @ 2019-03-25 11:48 _raindrop 编辑
摘要:现在比较流行的游戏角色AI开发方法,无外乎“状态机”和“行为树”两种,而这两种在数据结构上,是可以无损转换的,也就是说本质上是一样。这两个技术,都是为了帮游戏开发者,更准确、更完整的表述AI逻辑判断的数据结构。 而机器学习的程序,就好像录像机一样,可以通过记录我们操控的角色的行为,去学习如何模仿我们 阅读全文
posted @ 2019-03-24 18:38 _raindrop 编辑
摘要:0.gateserver负责所有与客户端的直接连接 m_conns[10000]也就是一个gateserver最多可以维持10000条socket连接,蓝月采用的是tcp行走各种消息都是tcp,不存在丢包一说,只会延迟 每个客户端点击登录时会做以下事情建立socket tcp连接,向gateserv 阅读全文
posted @ 2019-03-23 17:04 _raindrop 编辑
摘要:本机ip、127.0.0.1和0.0.0.0区别 IP地址的记法: IP地址由四个字节构成,为了方便阅读和书写,每个字节用0-255的数字表示,字节之间用’.'分割,如: 10.10.152.235 有时候我们会看到这样的IP: 10.10.152.235/24, 后面的/24表示子网掩码,24表示 阅读全文
posted @ 2019-03-23 14:26 _raindrop 编辑
摘要:Wireshark(windows) Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 tcpdump(linux) TcpDump 阅读全文
posted @ 2019-03-22 22:57 _raindrop 编辑
摘要:1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。 2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就 阅读全文
posted @ 2019-03-22 22:56 _raindrop 编辑
摘要:对端滑动窗口一直为0时如何处理? 接收端通告的窗口大小变成0,发送端会发一个1字节的段(就是下一字节的数据,没新的数据段发送的时候发一个ack)(TCP零窗口探测),强制接收端重新宣告下一个期望的字节和窗口大小。如果接收方回复窗口大小仍然为零,则发送方的探测定时器加倍。没有收到ACK时,发送探测包的 阅读全文
posted @ 2019-03-22 22:54 _raindrop 编辑
摘要:光速:3×10^8m/s,300000km/s 中国东西约5200公里,南北约5500公里(玩家最大相距按5000km计算) 16 ms 只够光信号在 2500 km 的距离上跑一个来回 状态同步(Server同步) 服务器负责计算全部的游戏逻辑,并且广播这些计算的结果,客户端仅仅负责发送玩家的操作 阅读全文
posted @ 2019-03-22 19:30 _raindrop 编辑
摘要:内排 外排 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。 游戏中排行榜算法实现 https://blog.csdn.net/boshuzhang/article/details/515 阅读全文
posted @ 2019-03-22 15:55 _raindrop 编辑
摘要:RAII(Resource Acquisition Is Initialization) “资源获取就是初始化”,简单的说,RAII 的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时候释放资源。 阅读全文
posted @ 2019-03-21 16:39 _raindrop 编辑
摘要:从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace)。表空间又由段(segment)、区(extent)、页(page)组成。页在一些文档中有时也称为块(block)。 InnoDB存储引擎的逻辑存储结构 表空间 表空间可以看做是InnoD 阅读全文
posted @ 2019-03-16 17:23 _raindrop 编辑
摘要:引用: 高性能mysql 阅读全文
posted @ 2019-03-13 22:33 _raindrop 编辑
摘要:KBEngine调研报告 阅读全文
posted @ 2019-03-13 14:27 _raindrop 编辑
摘要:skynet线上使用的数据,解答性能问题 记录一下MMZB的运维运营数据 陌陌争霸已经运行9个多月,记录一下现在的运维运营数据: 总用户460万,集群服务器共30台,其中Game Server 9台,redis集群内存占用接近900G,mongo集群磁盘占用接近5T(定时删除旧数据,所以增长速度趋缓 阅读全文
posted @ 2019-03-13 13:54 _raindrop 编辑
摘要:Linux学习—LVM快照功能 阅读全文
posted @ 2019-03-12 16:29 _raindrop 编辑
摘要:跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不 阅读全文
posted @ 2019-03-12 16:01 _raindrop 编辑
摘要:今天在公司问老大,公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了——关于TCP掉包的问题,TCP是基于不可靠的网络实现可靠的传输,肯定也会存在掉包的情况。 如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程 阅读全文
posted @ 2019-03-12 10:09 _raindrop 编辑
摘要:背景:线上有一个推荐服务,日志量比较大,想确认下是不是qps过高 问题:如何根据日志查看一个服务的qps tail -f XXX.log,可以发现日志格式如下: [8708-10 14:51:44 638 INFO ] [async task worker[61]] recommend.compon 阅读全文
posted @ 2019-03-11 13:55 _raindrop 编辑
摘要:将指定数据库备份到某dump文件(转储文件)中: mysqldump -uroot -p123 test > test.dump 从备份文件恢复数据库: mysql -uroot -p123 test < test.dump 复制: mysql支持两种复制方式:基于行的复制和基于语句的复制。基于语句 阅读全文
posted @ 2019-03-10 22:00 _raindrop 编辑
摘要:redis为什么要集群 https://blog.csdn.net/shenjianxz/article/details/59775212 为什么要实现服务器集群 https://www.jianshu.com/p/7b5c1e413874 将应用部署到Azure Service Fabric 团队 阅读全文
posted @ 2019-03-09 23:34 _raindrop 编辑
摘要:众所周知redis是单进程单线程模型(不完全是单进程单线程,还有若干后端线程主要做刷脏数据,关闭文件描述符等后台清理工作)。redis中负责主要工作的是主线程,主线程的工作包括但不限:接收客户端连接,处理连接读写事件,解析请求,处理命令,处理定时器事件,数据同步等相关工作。单进程单线程只能跑满一个C 阅读全文
posted @ 2019-03-08 11:27 _raindrop 编辑
摘要:主从复制 2.8版本之前是主发送rdb文件给从实现复制的。效率较低。重连后同步,耗时。 新版本分完整同步和部分同步。完整同步和旧版一样,而部分同步则处理断线后重复制情况。 分部同步由三部分组成: offset偏移量 复制积压缓冲区 服务器运行id struct redisServer { char 阅读全文
posted @ 2019-03-07 14:27 _raindrop 编辑
摘要:redis服务器将所有数据库都保存在服务器状态db数组中。 dbnum由conf文件database选项决定。 struct redisServer { char *configfile; // 配置文件的绝对路径 int hz; // serverCron() 每秒调用的次数 redisDb *d 阅读全文
posted @ 2019-03-07 14:26 _raindrop 编辑
摘要:redis.conf中的默认的过期策略是 volatile-lru maxmemory-policy 六种方式 1、volatile-lru:只对设置了过期时间的key进行LRU(默认值) 2、allkeys-lru : 删除lru算法的key 3、volatile-random:随机删除即将过期k 阅读全文
posted @ 2019-03-06 14:49 _raindrop 编辑