摘要:
本篇我们继续改进Lua调试器,在钩子中引入call和return事件的处理,尝试对性能进行优化。 阅读全文
摘要:
本篇将继续给我们的Lua调试器新增两个辅助的调试接口:调用栈回溯打印接口、通用变量设置接口。前者打印调用栈的回溯信息,后者可以方便地修改变量的值,支持局部变量、upvalue以及全局的`_ENV`中的变量。 阅读全文
摘要:
在前一篇的基础上,为了提升调试的方便性,封装了一个通用的变量打印函数,可以通过变量名查找到对应变量的值进行打印。支持局部变量、upvalue以及全局的`_ENV`中的变量。 阅读全文
摘要:
本文将从零开始编写一个Lua调试器,实现类似gdb的断点调试功能。 阅读全文
摘要:
SSL协议是现代网络通信中重要的一环,它提供了传输层上的数据安全。为了方便大家的理解,本文将先从加密学的基础知识入手,然后展开对SSL协议原理、流程以及一些重要的特性的详解,最后会扩展介绍一下国密SSL协议的差异、安全性以及TLS 1.3的关键新特性。 阅读全文
摘要:
最近在看《自己动手实现Lua—虚拟机、编译器和标准库》。这是本挺不错的书,通过学习此书能够对Lua语言有比较深刻的理解,此外还可以对如何自己实现一门脚本语言有直观的认识。对于想学习Lua的同学,安利一下这本书。废话不多说,书中留了一个作业,让读者自己实现`TAILCALL`指令,实现尾调用的优化。本文就算是交作业吧。 阅读全文
摘要:
本篇将通过一个例子,完整介绍OpenResty中Lua钩子的调用流程,包括初始化阶段的工作、新连接进来时如何进入钩子、I/O等待时如何出去、事件触发时如何恢复、钩子正常执行结束时的操作、钩子内出错的情况。 阅读全文
摘要:
OR最大的特点就是,将Lua协程与Nginx事件驱动模型及非阻塞I/O结合起来。使用户可以在handler中使用 **同步但是依然是非阻塞** 的方式编写其应用代码,而无需关心底层的协程调度以及与Nginx事件驱动模型的交互。
本文将先从总体上介绍OR的协程调度机制,然后结合源码以及Lua栈的情况来详细了解各个部分是如何实现的,包括其异常保护、协程初始化、协程的恢复和执行、协程的挂起、协程的执行结束、协程出错的情况。 阅读全文
摘要:
在工作中经常碰到需要写一些多进程/多线程的测试程序,用来测试接口的性能。本文将会从零开始一点点增加代码,最终完成一个简易的多进程测试程序编写。该程序支持实时打印测试进结果和最终测试结果的统计。 阅读全文
摘要:
编写类似cp(1)的程序,它复制包含空洞的文件,但是不将字节0写到输出文件中去。 阅读全文