前面两篇我们对性能做了一个优化,接下来继续来丰富调试器的特性。我们前面提到过,函数内并不是所有行都是有效行,空行和注释行就不是有效行。我们之前在添加断点的时候,并没有对行号进行检查,任何行号都能成功添加断点。所以如果添加的断点行号是无效的,那么永远也不会断到那里。但是钩子里并不知道它是无效的,call事件仍然会以为函数有断点从而启动line事件,造成CPU的浪费。所以本篇,我们将对断点的行号进行检
转载 4月前
26阅读
在所有的服务器编程当中,定时任务永远是一个不可或缺的需求。最直接的需求就是,每天凌晨0点0分的时候总是有一大堆的各种精力重置。怎么来设计这个接口呢,想了几个方案:每秒触发每分钟触发每整点触发每天触发每个月触发oh no!不靠谱啊,如果这接口真设计成这样,得有多烂,灵光一现,unix下的crontab表达式非常完美的解决了这个问题。附上crontab表达式的语法说明如下:crontab特殊的符号说明
定时任务在 OpenResty 中,有时候需要在后台定期地执行某些任务,比如同步数据、清理日志等。最容易想到的方法,便是对外提供一个 API 接口,在接口中完成这些任务;然后用系统的 crontab 定时调用 curl,来访问这个接口,进而曲线地实现这个需求。不过,这样会给运维带来更高的复杂度。所以, OpenResty 提供了 ngx.timer 来解决这类需求。可以把ngx.timer看作是
    在开发过程中,经常需要有每隔多少分钟就执行一次任务的需求,本文讲的就是在yaf下使用命令行的形式(cli模式)定时运行脚本文件,换而言之就是在cli模式下运行模块控制器的方法。例如在linux环境下通过/usr/local/php/bin/php /home/wwwroot/swoole-yaf/cli.php Cli~Test/index这条指令就可以运行我的Cli模
转载 13天前
4阅读
基本时序先把分析一下上一笔记中的代码function LedRunning() --do something sys.timerStart(LedRunning,200) --200ms定时执行此函数 end LedRunning()首先是定义了一个功能函数,这个功能函数里面可以做一些事情,然后会发现里面有一个被注释为200ms定时执行此函数的一句,这个自瞄上看起来也很容易
定时任务场景在 OpenResty 中,有时候需要在后台定期地执行某些任务,比如同步数据、清理日志等。OpenResty 提供了 ngx.timer 来解决这类需求,可以把ngx.timer看作是 OpenResty 模拟的客户端请求,用以触发对应的回调函数。OpenResty 的定时任务可以在任意处理阶段发起任意多个定时器,执行任意的功能。分为下面两种:ngx.timer.at,用来执行一次性的
Spring Cloud Gateway是使用令牌桶算法来实现限流的,并采用Redis结合lua脚本的方式来实现分布式限流。lua脚本地址:request_rate_limiter.luaRedisRateLimiter:RedisRateLimiter.javalua脚本如下:--入参部分 local tokens_key = KEYS[1] local timestamp_key = KEYS
第一:Lua函数调用的总体流程非保护性调用的流程更加简单,请追踪lua_call函数int docall (lua_State *L, int narg, int nres) | —— int lua_pcallk (lua_State *L, int nargs, int nresults, int errfunc ...) | —— luaD_pcall (lua_State *
--dofile("helper_util.lua") AI_Helper = {} AI_Helper.Player = {} AI_Helper.ValidNum = 2 AI_Helper.GlobalFlag = 0math.randomseed(os.time()) math.random()function AI_Helper:Copy(sPlayer) if sPla
Valgrind简介Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O’Reilly开源大奖的Julian Seward,它包含一个内核 —— 一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等,内存检测,我们可以使用它的工具:Memcheck。 Valgrind安装方法 1. valgrind
无论是 lua_dostring 或者是 lua_dofile,都调用了语法分析 lua_parse。在 lua 里面语法分析器是用 yacc 生成的,就是y.tab.c 文件,lua.stx 就是 yacc 的输入文件。这里说的东西基本上编译原理书里都有介绍,如需要进一步了解,请自行参阅。在说语法分析之前,说下词法分析。lua 的词法分析是手写的,手写的词法分析性能比较好,这个在 lua1.1
编写更高效的 lua 代码我们不能靠臆想和凭空猜测来决定优化哪个部分,代码的运行效率必须是可测量的。我们需要借助于分析器来测定性能的瓶颈,然后着手优化。优化后,我们仍然要借助于分析器来测量所做的优化是否真的有效。我认为最好的方式是在首次编写的时候按照最佳实践去写出高性能的代码,而不是编写了一堆垃圾代码后,再考虑优化。相信工作后大家都会对事后的优化的繁琐都深有体会。使用local在代码运行前,Lua
lua os库提供了简单的跟操作系统有关的功能1.os.clock()返回程序所运行使用的时间local nowTime = os.clock() print("now time is ",nowTime) local s = 0 for i = 1,100000000 do s =s+i end spendTime = os.clock() - nowTime print(string
转载 4月前
561阅读
对于一些命令我们并不是想让其马上执行,而是等待一定时间或者到某个时间再执行,我们需要怎么做?at命令:延时执行一个程序(通过:apt-get install at 进行安装)命令使用方法:1、输入:at 【时间】   这个时间可以是具体的时间,例如:at  15:32 12/1/15  意思是在2015年12月1日15点32分执行。又或者:at now +1
前言:编译实践系列将以lua的词法,语法和语意为标准,用C++实现lua的解释器,这其中也会参考lua解释器官方实现,但重点在于理清编译系统的基本框架和每个环节最基本的实现。 一般的编译系统结构: 1 从源码文件读入字符,词法分析阶段即按给定的标准(标识符,分隔符,数字)组装成token,进而形成token流; 2 语法分析阶段,会将token按照编程语言给定的语法模式,组合成节点,最后形成抽象语
1、lua代码提示功能:ctags lua增强, 配置参考ctags FILESctags for sublime textctags for atom2、lua定时器实现public static void UnityCoroutine(YieldInstruction ins, LuaFunct...
转载 2014-09-09 19:26:00
1814阅读
2评论
规则引擎的应用场景 规则引擎项目的结构及运行原理 使用lua作为规则语言的优点与缺点 1 规则引擎的应用场景  我们知道,一切万物都是在不断发展,当然也包括我们的任何计算机系统,商业规则在不断的改变,而我们也要跟着改变,往往是由业务来驱动系统的改变。这就造成我们非常的被动,商业规则可能是一月一变,甚至于可能是一日一变,而我们的业务系统显然不可能这么跟着如此频率变化。生活中常见的超市打
CloudCompare 是用Qt 写的,Qt 有个配套的翻译软件叫Linguist,非常好用。生成对应的翻译文件主要涉及两个exe:lupdate和lrelease,它们在Qt的bin目录下(类似这个:C:\Qt\Qt5.8.0\5.8\msvc2015_64\bin)下面就讲讲官网上lupdate和lrelease这两个exe的使用方法。官网链接:https://doc.qt.io/qt-5/
转载 3月前
88阅读
单片机之定时器电路1. 写在前面 本人是一名西南交通大学2020级自动化专业的学生,由于本人最近正在学习单片机,遂想在此陈述一下对单片机(主要是STC89C52系列)的个人理解。这个系列的博客主要关于单片机的硬件部分,即单片机是由什么组成的,单片机运行起来部分必不可少,我在博客的很多地方补充了一些个人理解,读起来不那么官方和专业,如有不当之处希望各位大佬们多多指教。2.单片机的介绍 首先明白一个问
制作网线过后,如何测试是否做通,我们就需要用到“网络测试仪”了。本经验就教大家如何使用普通的网络测试仪测网线。网络测试仪通常也称专业网络测试仪或网络检测仪,是一种可以检测OSI模型定义的物理层、数据链路层、网络层运行状况的便携、可视的智能检测设备,主要适用于局域网故障检测、维护和综合布线施工中,网络测试仪的功能涵盖物理层、数据链路层和网络层。网线测试仪怎么用将网线两端的水晶头分别插入主测试仪和远程
  • 1
  • 2
  • 3
  • 4
  • 5