自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 资源 (7)
  • 收藏
  • 关注

原创 基于概率与胡牌表的麻将AI算法

github项目链接:https://github.com/yuanfengyun/mj_ai麻将概率问题:1、已经四个玩家每人有13张手牌2、桌上已经打出的牌3、玩家A有1个确定的胡牌目标问: 玩家A摸入5张牌胡牌的概率?公式见图:概率计算公式.jpg整体思路1、当我手上有14张牌时,如果能胡,直接胡掉。   如果不能胡,我需要知道打出哪张牌以后,我胡牌的概率大2、分别计算打出每张牌以后的胡牌概...

2018-05-16 15:25:13 17624 10

原创 跑胡子胡牌算法

腾讯课堂视频讲解:https://ke.qq.com/course/360581?tuin=104cb0e21、 基于查表的lua版跑胡子判胡算法    将所有能胡的牌型和其对应的胡息放入表中    判断胡牌时,只需要查表得到胡息,如果表中没有此项,则不能胡,如果有,得到表中的胡息,加上跑、提、碰、偎的胡息,如果大于最低胡息,就能判断是否胡牌。    代码:https://gith...

2017-10-12 16:15:37 20677 2

原创 带赖子的超高效麻将、跑胡子胡牌算法

速度: 每秒处理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

2017-06-24 10:30:24 22847 31

原创 golang游戏服务器方案

protoactor-go actor模式框架 plugin 热更新,发送热更消息,加载动态链接库,替换回调函数 根据负载情况调整actor分布进程,默认一个进程,如遇瓶颈可迁移部分actor至其它进程

2023-08-16 10:13:09 231

原创 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 "...

2022-03-28 19:05:47 526

原创 mongodb 4.0事务使用

前题事务必须用在副本集情景下否则会报错:Multi-document transactions are available for replica sets only.mongodb版本在4.0以上.使用事务步骤:获取session:session = db.getMongo().startSession()开启事务:session.startTransaction()获得col...

2018-11-07 11:00:28 6122

原创 lua代码加密策略

1、使用类似cocos的加密方式,对文件打上加密标记头,然后文件内容呢,加密后存放。需要修改lua加载文件的部分代码。安全性:基于算法保密+密钥保密,对于很多cocos程序来说,密钥是写死在代码里,所以通过反编译代码很容易获取到2、luac编译后使用,luac编译后的代码,采用工具能够恢复一部分,可读性不强,可以作为一般应用的加密方式3、将加密解密的函数,由服务端传入。客户端执行这个函数...

2018-10-28 03:20:31 4847

原创 libevent概述

libevent概述libevent提供了一种机制,当特定的事件(文件读写、定时器触发)发生时,调用一个回调函数进行处理。事件类型也支持信号或周期定时器。它的目标是替换掉网络程序中的事件循环处理,这样开发程序时,只需要调用event_dispatch(),然后动态地增加、移除事件而不需要处理循环逻辑。现在libevent支持/dev/poll, kqueue(2), event ports, ...

2018-10-20 20:44:33 996

原创 秒杀系统实现思路

秒杀系统有请求量巨大,重复请求多的特点。我们可以请流量分步进行过滤1、在客户端进行过滤,比如在客户端进行随机,90%的概念直接丢弃这次请求,直接跳转到失败页面。2、在业务服务器中,90%的请求直接返回失败。3、真正处理秒杀业务。 ...

2018-10-20 16:52:26 752

原创 memcached介绍与使用

Memcached是什么?   Memcached是一个免费、开源、高性能的分布式内存对象缓存系统。通常用来增强web服务器的性能(通过缓存减轻数据库负担)。当然也可以用途其它系统的缓存。   Memcached是一个内存key-value存储,主要用来存储从数据库、API调用、页面渲染获取的小对象(字符串、其它对象)。   Memcached简单却强大。为了方便快速部署,易用而设计简...

2018-10-20 16:16:25 294

转载 memcached文本协议

memcache通信协议协议关键字 Keys命令Commands超时时间 Expiration times错误信息 Error strings存储命令 Storage commands读取命令 Retrieval command:删除 Deletion增加/减少 Increment/Decrement统计 Statistics多用途统计 General-...

2018-10-20 14:17:35 378

原创 全网首发 skynet 服务器框架 视频教程

视频在手,天下我有。https://ke.qq.com/course/310360?tuin=104cb0e2

2018-06-23 15:46:31 3396

转载 lua结构精要

-- 单行注释--[[    [多行注释]--]] ----------- 1. 变量 & 控制流----------num = 23 -- 数字都是双精度str = 'aspythonstring' -- 像 Python 一样不可变str = "aspythonuse" -- 可以双引号str = [[        像 Python 的多行注释可用于        表示多行字符串一样...

2018-03-08 13:48:23 464

原创 常见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

2017-09-16 11:19:07 25230

原创 监控服务器程序,挂掉后自动重启

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

2017-07-22 17:37:40 4771

转载 网游英语词汇

网络游戏专业术语中英文对照版中英对照的网络游戏术语AC – Armor Class,盔甲等级、级别Account – 账号,与密码Password相对Add – 一只玩家加入到组队中,如果请求别人组队,可说Add me pls.AOE – Area Effect Damage,区域作用魔法,指的是一个可以伤害一个区域中的一群怪物的魔法,即所谓的群攻,现并非魔

2017-05-09 19:01:24 2859 1

原创 电子书网站

___-------___ _-~~ ~~-_ _-~ /~-_ /^\__/^\ ...

2017-01-24 10:58:28 1261

原创 寻路总结

JSP(跳点搜索)http://www.36haojie.com/index.php/2013/08/jumppointsearch/

2017-01-09 11:27:15 908

原创 lua协程

lua的协程接口简单、功能强大能方便地处理一些非常规的功能需求。    1、创建协程接口:coroutine.create(f)          参数f是一个函数,创建成功会返回一个协程对象,该协程处于挂起状态。     2、运行协程接口:coroutine.resume(co,...)          co是处于挂起状态的协程。          第一次运行该协程时,指令

2016-12-05 22:47:04 1199

原创 lua5.3异常机制

lua本质上利用C函数来操作LUA虚拟机。LUA虚拟机对于C来说只是在堆上的内存对象。    lua有自己的运行对象(协程),每个协程有自己的调用栈。    比如下面的函数:    function add(x, y)        return x + y    end    如果x或y不能进行加法操作,在调用中就会产生异常。产生了异常,虚拟机需要对异常进行处理,最简单粗

2016-12-04 16:18:11 4477

原创 无系统 nasm汇编贪吃蛇demo草稿

开发系统centos 6.5 64位,利用系统时钟中断和键盘中断源码文件snake.sorg 7c00hglobal startstart: jmp entry# db 0x00# db "helloOSX"# dw 512# db 1# dw 1# db 2# dw 224# dw 2880#

2016-08-23 11:03:18 1692

翻译 nasm教程一:helloworld

http://www.asmtutor.com/#lesson1

2016-08-19 19:59:43 5578

原创 自己写个操作系统《一》制作启动U盘,真机启动

1、一台centos linux物理机2、as86、ld86工具 下载地址 ftp://rpmfind.net/linux/centos/6.8/os/x86_64/Packages/dev86-0.16.17-15.1.el6.x86_64.rpm安装  rpm -ivh dev86-0.16.17-15.1.el6.x86_64.rpm3、新建汇编文件 boot.s

2016-08-08 01:02:23 4519 4

原创 lua的数据对象表示

#define CommonHeader GCObject *next; lu_byte tt; lu_byte markedstruct GCObject { CommonHeader;};typedef union Value { GCObject *gc; /* collectable objects */ void *p; /* light us

2016-08-01 10:47:55 1110

原创 skynet特性

结构:有若干个服务,每个服务有一个消息队列queue和一个回调函数cb。所有服务的消息队列连成一个全局的链表G1、多线程monitor线程:worker线程:若干个工作线程,工作流程:从G中取出一个消息队列q,处理q中的若干个消息(处理的数量为:消息长度 》优先级),将q放回G中。注意:每个服务同时只会被一个线程进行处理,但每次不确定是哪个工作线程,所以根线程有关的函数需要

2016-07-21 14:49:46 1438 2

原创 mysql存储引擎之CSV

文件:.frm表结构描述.csv数据.csm表状态、当前记录数量等特点:没有索引、不能为NULL、不能自增应用场景 :数据存储为CSV文件格式,不用进行转换

2016-07-08 17:14:31 2403

原创 mysql存储引擎之achieve

引擎特点1、记录数无限制2、每个记录是定长的,不能删除,只能新增和replace3、存储的记录是压缩的4、索引查询是通过遍历,对比key找到记录适合场景:1、日志记录2、流水记录

2016-07-08 16:40:42 717

原创 erlang模块化对象用法

定义了一个player的类用法P = player:new()P:set_name("myname").Name = P:get_name().

2016-07-06 21:03:35 1133

原创 linux网络编程之poll

#include#include#include#include#include#define FD_SIZE 1024struct pollfd fds[FD_SIZE];int fd_num = 0; int add(int fd,short events){    int i=0;    for(;i    {       

2016-06-12 17:00:51 539

原创 linux网络编程之select

#include#include#include#include#include#include#includevoid main(){        struct sockaddr_in addr;    addr.sin_family = AF_INET;    addr.sin_addr.s_addr = inet_addr("127.0.

2016-06-12 16:16:42 383

原创 lua CRC32校验码生成

普通文件(如压缩文件)的crc32校验码计算方法:生成多项式采用0xEDB88320,所生成的表为:This polynomial ( 0xEDB88320L) DOES generate the same CRC values as ZMODEM and PKZIP

2016-06-02 15:02:03 6936

原创 skynet热更新方案

普通程序lua的更更新:    lua的热更新一般是比较方便的,比如下面一个模块module.lualocal module = {}function module:func() print("module:func()")end    通常实现更新会这样做:    local old_module = require("module")    package.load

2016-05-16 10:31:32 5541

原创 如何判断lua是不是一个纯数组类的table

这种方式只用遍历table一次,效果不错

2016-05-05 14:25:08 10895 2

原创 记录lua的table转string一个问题

最近的项目开发中发现原有代码的table2Str函数实现不对,一时偷懒从网上百度了一下。选中了http://blog.csdn.net/xiaodan007/article/details/7096718这个地址的代码用到了项目中。    在项目中的使用,将table转化为string后,数据有丢失,追踪,发现是这个实现有问题。    在形如 { {aaa=1},{bbb=2}}  这

2016-04-28 21:55:38 1889

原创 mnesia的锁机制

一、基本概念1、mnesia的锁不是操作系统级别的锁;2、一个mnesia结点中,所有的锁由单独的mnesia_locker进程进行管理;3、其它进程对锁的申请和释放通过发送消息到mnesia_locker进程实现;4、A进程请求锁时,发送的同步消息如果当时获取到了锁,则返回获取到的锁消息;如果没有,则将锁请求加入等待队列,A进程阻塞等待返回;5、B进程进行释放锁时,发送同步消

2016-04-06 00:49:08 850

转载 ejabberd源码分析《三》客户端数据处理

参考 http://www.cnblogs.com/yjl49/archive/2011/09/02/2371964.html1.客户端连接服务器后,发送消息给服务器的xml数据处理在ejabberd_c2s中。   ejabberd_c2s 是一个gen_fsm 状态机,在socket连接建立之后创建。   初始状态为 wait_for_stream,接受形为 {xm

2016-04-05 19:32:09 1314

原创 ejabberd源码分析《二》客户端网络监听

在配置文件ejabberd.cfg的listen配置项里,可以配置监听模块由ejabberd_listener.erl负责启动监听1、客户端的连接生成一个套接字以后,由ejabberd_c2s.erl调用ejabberd_frontend_socket:startejabberd_receiver:start 生成一个gen_server处理套接字数据在ejab

2016-04-05 17:30:12 1077

原创 ejabberd源码分析《一》application启动

什么都别说,直接看启动函数start(normal, _Args) %% ejabberd_logger主要是读取application的配置文件,然后启动lager,设置lager参数。 ejabberd_logger:start(), %% 将本进程的pid写入配置文件指定的文件名中 write_pid_file(), %% 新建jid ets jid:start(), %% 启动其它app

2016-04-03 01:42:04 1512

原创 OpenGL入门博文精选

http://www.twinklingstar.cn/2015/1532/introduce-to-opengl/

2016-04-01 18:52:47 448

原创 OpenGL的矩阵

OpenGL在进行坐标变换时有三个矩阵在变换开始时,观察者坐标为世界坐标的原点(0,0,0),他看向 -z 方向模型矩阵   描述模型在世界坐标系下的变换,矩阵为A视图矩阵   描述观察者在世界坐标系下的变换,矩阵为B投影矩阵   将模型相对于观察者的坐标变换成一个视口的坐标(-1,-1)到(1,1),矩阵为C整个过程就是C * B * A * Posi

2016-04-01 02:09:02 568

视频聊天 x.264编码 ffmpeg解码

x.264 ffmpeg 视频聊天 源代码 使用开源的X264编码压缩摄相头采集到的图像,通过网络传输,在另一端进行解码。显示。

2013-09-29

GNU的自平衡二叉查找树(AVL tree、redblack tree等)源代码

GNU的自平衡叉查找树的源代码库,包括AVL teee和红黑树 redblack tree、二叉查找树。还有PDF的原理说明及HTML的源代码函数解释。

2012-03-14

C语言详细入门手册而特瑞

C语言详细入门手册,一定要好好看,不要浪费了

2010-11-22

星际译王官方软件 最好的翻译软件

星际译王星际译王官方软件 最好的翻译软件

2010-07-09

简历模板,C++,ORACLE

这是我个人求职的模板,你们觉得好就用吧。

2010-07-09

中国象棋源码 vc不是吧,带来的多少

c++实现的中国象棋人机对战系统。达到了一般人的水平。

2010-07-02

C语言(教程与实例)

C语言的东西,包括教程与其它的一些东西,要的下吧

2009-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除