forthxu 发布的文章
lua调用so动态库
今天,我给我的测试软件框架添加了一个 C 模块,里面封装了一个 sleep 的系统调用。我的目的是在用 Lua 时,要延时的话,不用执行 os.execute("sleep 5") 之类的蹩脚语句,而替之以 mt.sleep(5) 之类的就行了。
skynet目录和文件分析
- 根目录
README.md 简单介绍了怎么编译和测试Skynet
LICENSE 许可证信息,采用MIT,很宽松的协议。
Makefile 编译规则文件,用于编译Skynet
platform.mk 编译与平台相关的设置
3rd 第三方的代码,有lua和jemalloc等
examples 附带的例子
lualib 使用lua写的库
lualib-src 使用C写并封装给lua使用的库
service 使用lua写的Skynet的服务模块
service-src 使用C写的Skynet的服务模块
skynet-src Skynet的核心代码
test 使用lua写的一些测试代码
skynet简介
skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言。
skynet默认开启_timer线程、socket线程、_monitor线程以及可配置个数的多个_worker线程,启动skynet服务就是向skynet注册由c编写的so模块实例也就是服务。
skynet主要工作是通过模块注册管理服务,并协调服务之间的调用和通讯。
skynet自带的模块中有一个重要的模块是snlua.so模块,通过snlua.so和指定lua脚本文件可以启动多个lua编写的服务,不用每个服务都是用c来编写,而且大部分逻辑都是在 lua 脚本下开发,只有需要考虑性能的模块才用 C 语言开发成库,直接提供给 lua 调用。 现在 Skynet提供给 lua 使用的库还不多,期望以后这些库多了,可以方便、简单的完成一个网络游戏服务端的开发。
Skynet是服务端的最底层框架,和游戏有关的各种服务都是基于架构之上开发的。服务启动后skynet一般由socket接受外部msg传入内部服务做处理。
PPT简介:http://pan.baidu.com/s/1i3qp7b3
深入理解PHP ob_flush和flush的区别
buffer是一个内存地址空间,Linux系统默认大小一般为4096(1kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的 设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。
这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入 一个字符,操作系统并不会立即把这个字符直接写入到磁盘,而是先写入到buffer,当写满了一个buffer的时候,才会把buffer中的数据写入磁 盘,当然当调用内核函数flush()的时候,强制要求把buffer中的脏数据写回磁盘。
PHP开启gzip压缩并缓存以加速网站
说明
- 在服务器缓存了压缩过的文件,再次访问减少再压缩时间,降低CPU占用率。
- 通过设置客户端文件缓存时间,降低再次请求次数,可降低85%以上。
- 图片因为已经是压缩格式,只是设置客户端缓存时间,不做压缩处理。
神奇的13种思维方式
有个老人爱清静,可附近常有小孩玩,吵得他要命,于是他把小孩召集过来,说:我这很冷清,谢谢你们让这更热闹,说完每人发三颗糖。孩子们很开心,天天来玩。几天后,每人只给2颗,再后来给1颗,最后就不给了。孩子们生气说:以后再也不来这给你热闹了。老人清静了。
【境界思维】抓住人性的弱点,无事不成。两马各拉一货车。一马走得快,一马慢吞吞。于是主人把后面的货全搬到前面。后面的马笑了:“切!越努力越遭折磨!”谁知主人后来想:既然一匹马就能拉车,干嘛养两匹?最后懒马被宰掉吃了。这就是经济学中的懒马效应。
【境界思维】如果让你的老板觉得你已经可有可无,那你已经站在即将离去的边缘。
欢迎使用 Typecho
如果您看到这篇文章,表示您的 blog 已经安装成功.