本系列讲解了 Linux-PAM 的工作机制和配置方式,并利用几个 Linux-PAM 模块做一些有趣的小实验。附录中介绍了一些常用的 Linux-PAM 模块。 本文的目标...
引言 系统运维时,经常会使用top或者free查看服务器的内存使用情况,一般情况下,显示结果中的buffer/cache都比较大,查阅各种资料也无法得到比较明确的答案。阅读本...
skynet 中的服务都是由消息来负责驱动的,即便是 lua 服务也不例外。本文讨论的主题为 skynet 框架下,同一 skynet 节点内不同的lua 服务之间是如何通过...
在上一篇文章中《skynet 源码阅读笔记 —— 引导服务 bootstrap 的启动》[https://www.jianshu.com/p/1eb22d418087],我们...
引导服务 bootstrap 的启动 skynet 在启动的初期,在 skynet_start 函数中创建了两个服务 logger 和 bootstrap。其中 bootst...
基本数据结构 要了解 skynet 的定时器机制,需要先了解 skynet 中的 timer 的数据结构及初始化代码(skynet 中所有 timer 相关的代码都存放于 s...
skynet 中 main 函数的流程 skynet 的 main 函数位于 skynet_main.c 文件当中,其定义如下: 使用过 skynet 的人都知道,skyne...
1.基本概念:模块与服务 模块(module):在skynet中,模块是指符合规范的 C 共享库文件。一个符合规范的 C 共享库应当具备 *_create、*_signal、...
基本数据结构之消息队列 skynet 采用了二级消息队列模式,其中顶层消息队列为 global_queue,而底层的消息队列为 message_queue,它们的具体定义如下...
在 CMake 中使用 Google-Test 示例目录的源码树: 测试通过: 测试失败: 具体的测试信息会保存在 build/Testing/Temporary/LastT...
宏的意义 一些编译器宏的使用方法(clang 的线程安全注解 —— Thread Safety Annotation):修饰类的宏//CAPABILITY 表明某个类对象可以...
问题描述 给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对...
Libevent 如何定义自己的日志输出格式 Libevent 的日志系统中定义了四个日志的输出等级,默认情况下会将日志信息输出到终端。不过 Libevent 允许用户设置自...
阅读本文之前请确保你看过上一篇文章:Libevent 源码阅读笔记(一)、从一个简单例子开始(上) 在上一篇文章中,我们提到了关于 Libevent 使用的一个基本逻辑: 调...
什么是 Libevent Libevent 是一款基于 Reactor 模式实现,由事件驱动的高性能开源 I/O 框架库,它提供一组 API 并允许开发者为事件注册回调函数。...