封装Lua for C#】的更多相关文章

原文:http://blog.csdn.net/rcfalcon/article/details/5583095 为了搞懂LUA在我们的GDEX中到底怎么用,我决定研究一下如何比较好的在WPF里封装一个基于lua的APP  framework. 今天先对Lua for C#进行了一次简单的封装. 在C#下用过Lua的人都知道,用C#实现一个函数之后和LUA绑定,需要用到Lua类的RegisterFunction方法. 在函数很少的情况下很好用,但是若需要绑定C#里成百上千个函数,则麻烦了,添加一…
http://blog.csdn.net/rcfalcon/article/details/5583095…
一,限流有哪些环节? 1,为什么要限流? 目的:通过对并发请求进行限速或者一个时间单位内的的请求进行限速,目的是保护系统可正常提供服务,避免被压力太大无法响应服务. 如果达到限制速率则可以采取预定的处理: 例如: 拒绝服务(定向到错误页面或返回错误提示信息) 排队或等待(秒杀/评论/下单) 降级(只返回兜底数据或默认数据) 2,需要应用限流的环节 防火墙:firewalld/iptables层的限流,针对每台机器 接入层:nginx的limit_req模块,对每单位时间的平均速率限流,针对某个站…
一,什么是幂等性? 1,幂等: 幂等操作:不管执行多少次,所产生的影响都和一次执行的影响相同. 幂等函数或幂等方法:可以使用相同的参数重复执行,并能获得相同的结果的函数/方法. 这些函数/方法不用担心重复执行会对系统造成改变. 2,幂等操作的一些例子: 前端重复提交相同的数据,后台只产生对应这个数据的一个相同的反应结果 发送验证码短信:应该只发一次,相同的验证短信不能多次发送. 生成订单:一个业务请求只能创建一个订单,不能重复创建相同的订单 用户付款:只能扣用户一次钱,不能重复扣费 3,实现幂等…
这是什么东西 前阵子刚刚集成xlua到项目,目的只有一个:对线上游戏C#逻辑有Bug的地方执行修复,通过考察了xlua和tolua,最终选择了xlua,原因如下: 1)项目已经到了后期,线上版本迭代了好几次,所以引入Lua的目的不是为了开发新版本模块,而是修复旧版本Bug. 2)修复Bug针对的是iOS平台,总所周知,安卓平台是可以通过更新DLL去修复的,而修复Bug直接改写C#代码肯定要比整个函数翻译为Lua来得简单,实际上最后由于xlua注入和我们项目的安卓代码加密流程冲突,我们对安卓保留了…
转: Redisson实现分布式锁 Redisson文档参考:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 redis是实现分布式锁的一种方式,其他还可以基于数据库,zookeeper等方式实现:这里拿出redis单说一下,redis从原理上大概有两种实现方式,要么是调用redis原生的原子性命令,要么是通过eval执行封装好的lua脚本:而从使用上来讲也有两种方式,要么自己动手实现(参考:https://www.cnb…
Unity3D游戏轻量级xlua热修复框架   一 这是什么东西 前阵子刚刚集成xlua到项目,目的只有一个:对线上游戏C#逻辑有Bug的地方执行修复,通过考察xlua和tolua,最终选择了xlua,很大部分原因是因为项目已经到了后期,线上版本迭代了好几次,所以引入Lua的目的不是为了开发新版本模块.xlua在我们的这种情况下很是适用,如xlua作者所说,用C#开发,用lua热更,xlua这套框架为我们提供了诸多便利,至少我可以说,在面临同样的情况下,你用tolua去做同样的事情是很费心的.但…
这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所有功能都是我需要的,并且还要为此引入庞大boost.最终还是决定 按需求编写一个简单的封装库. 首先简单列一下我的需求: 1)可以注册任意类型的C++函数到lua中 2)可以方便的调用lua函数,方便的访问lua中的表 3)可以访问lua中创建的对象,调用lua对象提供的方法 4)注册C++类型到l…
Lua本身是没有面向对象支持的,但面向对象编程在逻辑复杂的大型工程却很有用.于是很多人用Lua本身的数据结构table来模拟面向对象.最简单的一种方法是把对象的方法.成员都放到table中.如: -- file:test.lua local test = {} function test:get_x() end function test:set_x( _x ) self.x = _x end local test_module = {} function test_module.new() l…
hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows .Linux 下仍是 redis/hiredis.hiredis-for-windows 是以 hiredis 0.13.3 为基础移植的.hiredis-for-windows 需要稍加修正:    * 去除 inline 宏    * TCP_NODELAY 改在连接之前设置.详见其Issue…