随笔分类 - 技术
一些较为系统的个人对技术的探索
摘要:所谓语法解析,就是将文本中符合既定规则的子串提取出来。欲解析,先要找出文本的既定规则;欲写出代码,先要将规则从抽象域转为自然语言的形式域,就像人们把数学概念用符号固化下来。这种符号,先辈们早已给出了方案,最常用的是BNF。lpeg便是自然地契合BNF的,这也是它与正则表达式等模式匹配库最大的不同,也
阅读全文
摘要:在c/s结构的程序中,客户端自动更新是简化部署的一个常见需求.更新实际上做的操作是: 与服务器当前的文件做diff,找出所有变动的文件 下载变动的文件,替换掉本地的文件 从这两个操作来看,服务器起码要向客户端提供两个功能: 当前有那些文件 下载文件 其实第一个功能也可以转为下载文件,只要提供描述当前
阅读全文
摘要:服务器程序,简单的说就是接收网络数据,处理后并返回结果数据。网络模块是其必不可少的部分,它本质上就是处理socket的五类事件:accept(客户端接入),connect(连接上服务器),read,write和error。socket接口有两种工作模式,一种是阻塞模式,一种是非阻塞模式。阻塞模式通常
阅读全文
摘要:前面四篇已经涵盖了skynet的c层核心,剩下的timer,socket模块本身和actor模型没什么关系,且比较独立,最后再看吧。光用skynet的c接口,是很难在这上面写业务逻辑的,所以要找一种更爽快的方式来使用。官方推荐的是lua,利用lua的协程对skynet的消息分发做了封装,使得acto
阅读全文
摘要:skynet是基于多线程的,每个actor都会被单独的线程调度,且每个actor可以杀死其它actor,给其它actor发送消息,创建actor,也就是一个actor可能被多个线程持有,那么就会面临三个问题: 框架使用的是handle映射与引用计数的手法,对外暴露sc(skynet_context)
阅读全文
摘要:从四个方面来说: 1、消息发送 2、工作线程控制 3、信箱调度 4、消息分发 与调度相关的代码实现在/skynet-src/skynet_mq.c,/skynet-src/skynet_start.c,/skynet-src/skynet_server.c三个文件中,整体上是一个m:n的调度器。 消
阅读全文
摘要:actor在skynet中称为模块,每个模块由皮囊和骨骼组成。皮囊承载用户逻辑,骨骼承载内部框架逻辑。 皮囊(skynet_module) 皮囊在框架中用skynet_module对象表示,实现在skynet-src/skynet_module.c中,代表一个动态库.下文用sm来称呼. 先来看看sm
阅读全文
摘要:这一篇来分析libuv的四个特殊的持续请求(uv_handle_t族),uv_idle_t,uv_check_t,uv_prepare_t,uv_async_t。它们直接以强类型保存在uv_loop_t中,而不像其它的持续请求保存在handle_queue中,也是最简单的持续请求。 在实现中,lib
阅读全文
摘要:libuv我在今年四月份的时候开始接触,一开始也遇到了很多坑,但后来理解并遵守了它的设计思想,一切就变得很方便。这几天开始着手精读它的源码,本着记录自己的学习痕迹,也希望能增加别人搜索相关问题结果数的目的,因此就有了这些东西,这个系列至少会有四篇,后续再说吧。 那么它是什么,一个高效轻量的跨平台异步
阅读全文

浙公网安备 33010602011771号