golang游戏服务器方案 protoactor-go actor模式框架 plugin 热更新,发送热更消息,加载动态链接库,替换回调函数 根据负载情况调整actor分布进程,默认一个进程,如遇瓶颈可迁移部分actor至其它进程
skynet火焰图 最近项目的skynet的CPU占用比较高,经常触发告警。用systemtap工具来跑一跑,找出性能热点蛮好。网上找了个库,使用了一下,有几个问题改了下。1、lua 5.4的结构体加深了一层,所以几个 p->func->value_都需要修改为p->func->val->value_2、获取函数在原文件行数的计算不对,我加了个C函数在stap脚本中来获取行数%{#include "/root/skynet/3rd/lua/lua.h"#include "...
mongodb 4.0事务使用 前题事务必须用在副本集情景下否则会报错:Multi-document transactions are available for replica sets only.mongodb版本在4.0以上.使用事务步骤:获取session:session = db.getMongo().startSession()开启事务:session.startTransaction()获得col...
lua代码加密策略 1、使用类似cocos的加密方式,对文件打上加密标记头,然后文件内容呢,加密后存放。需要修改lua加载文件的部分代码。安全性:基于算法保密+密钥保密,对于很多cocos程序来说,密钥是写死在代码里,所以通过反编译代码很容易获取到2、luac编译后使用,luac编译后的代码,采用工具能够恢复一部分,可读性不强,可以作为一般应用的加密方式3、将加密解密的函数,由服务端传入。客户端执行这个函数...
libevent概述 libevent概述libevent提供了一种机制,当特定的事件(文件读写、定时器触发)发生时,调用一个回调函数进行处理。事件类型也支持信号或周期定时器。它的目标是替换掉网络程序中的事件循环处理,这样开发程序时,只需要调用event_dispatch(),然后动态地增加、移除事件而不需要处理循环逻辑。现在libevent支持/dev/poll, kqueue(2), event ports, ...
秒杀系统实现思路 秒杀系统有请求量巨大,重复请求多的特点。我们可以请流量分步进行过滤1、在客户端进行过滤,比如在客户端进行随机,90%的概念直接丢弃这次请求,直接跳转到失败页面。2、在业务服务器中,90%的请求直接返回失败。3、真正处理秒杀业务。 ...
memcached介绍与使用 Memcached是什么? Memcached是一个免费、开源、高性能的分布式内存对象缓存系统。通常用来增强web服务器的性能(通过缓存减轻数据库负担)。当然也可以用途其它系统的缓存。 Memcached是一个内存key-value存储,主要用来存储从数据库、API调用、页面渲染获取的小对象(字符串、其它对象)。 Memcached简单却强大。为了方便快速部署,易用而设计简...
memcached文本协议 memcache通信协议协议关键字 Keys命令Commands超时时间 Expiration times错误信息 Error strings存储命令 Storage commands读取命令 Retrieval command:删除 Deletion增加/减少 Increment/Decrement统计 Statistics多用途统计 General-...
基于概率与胡牌表的麻将AI算法 github项目链接:https://github.com/yuanfengyun/mj_ai麻将概率问题:1、已经四个玩家每人有13张手牌2、桌上已经打出的牌3、玩家A有1个确定的胡牌目标问: 玩家A摸入5张牌胡牌的概率?公式见图:概率计算公式.jpg整体思路1、当我手上有14张牌时,如果能胡,直接胡掉。 如果不能胡,我需要知道打出哪张牌以后,我胡牌的概率大2、分别计算打出每张牌以后的胡牌概...
lua结构精要 -- 单行注释--[[ [多行注释]--]] ----------- 1. 变量 & 控制流----------num = 23 -- 数字都是双精度str = 'aspythonstring' -- 像 Python 一样不可变str = "aspythonuse" -- 可以双引号str = [[ 像 Python 的多行注释可用于 表示多行字符串一样...
跑胡子胡牌算法 腾讯课堂视频讲解:https://ke.qq.com/course/360581?tuin=104cb0e21、 基于查表的lua版跑胡子判胡算法 将所有能胡的牌型和其对应的胡息放入表中 判断胡牌时,只需要查表得到胡息,如果表中没有此项,则不能胡,如果有,得到表中的胡息,加上跑、提、碰、偎的胡息,如果大于最低胡息,就能判断是否胡牌。 代码:https://gith...
常见lua报错类型 类型1,索引nil值1、attempt to index a nil value (global 'a')a.name = "haha"2、attempt to index a nil value (field 'name')a.name.first = "haha"3、attempt to perform arithmetic on a nil value (global
监控服务器程序,挂掉后自动重启 1、定时调用ps,检查程序是否活着。如果不在了就启动程序#!/bin/bashname=$1while true do c=`ps -x | grep $name | grep -v grep | wc -l` if [ $c -e 0 ]; then $name fi s
带赖子的超高效麻将、跑胡子胡牌算法 速度: 每秒处理100万次四个赖子判胡文档 github地址 https://github.com/yuanfengyun/qipai/tree/master/doclua版 https://github.com/yuanfengyun/qipai/tree/master/mjlib_luac++版 https://github.com/yuanfengyun/qipai/tree/master/mjlib_c%2B%2Bgolang版 https://github.com/yuanfengy
网游英语词汇 网络游戏专业术语中英文对照版中英对照的网络游戏术语AC – Armor Class,盔甲等级、级别Account – 账号,与密码Password相对Add – 一只玩家加入到组队中,如果请求别人组队,可说Add me pls.AOE – Area Effect Damage,区域作用魔法,指的是一个可以伤害一个区域中的一群怪物的魔法,即所谓的群攻,现并非魔
lua协程 lua的协程接口简单、功能强大能方便地处理一些非常规的功能需求。 1、创建协程接口:coroutine.create(f) 参数f是一个函数,创建成功会返回一个协程对象,该协程处于挂起状态。 2、运行协程接口:coroutine.resume(co,...) co是处于挂起状态的协程。 第一次运行该协程时,指令