skynet学习笔记01— skynet开发环境搭建(超详细)与第一个skynet程序

00、参考资料

  • https://blog.csdn.net/qq769651718/category_7480207.html

01、前置准备

开发所在目录

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ pwd
/home/mhzzj/work/skynetStudy

前置准备

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ sudo apt install lua5.3
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ apt install git
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ sudo apt-get install git build-essential readline-dev autoconfmhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ git clone https://github.com/cloudwu/skynet.git          
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ git clone https://github.com/jemalloc/jemalloc.git       
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ cp -r jemalloc/* skynet/3rd/jemalloc/		

02、编译Skynet

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy$ cd skynet/# 编译前的skynet文件夹
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  examples  HISTORY.md  LICENSE  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet-src  test# 编译
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ make linux# 编译后的文件夹
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  cservice  examples  HISTORY.md  LICENSE  luaclib  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet  skynet-src  test

03、Skynet运行

服务端

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./skynet examples/config

在这里插入图片描述

客户端

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ./3rd/lua/lua examples/client.lua

在这里插入图片描述

04、skynet目录介绍与配置说明

目录结构

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ ls
3rd  examples  HISTORY.md  LICENSE  lualib  lualib-src  Makefile  platform.mk  README.md  service  service-src  skynet-src  test
  • 3rd #第三方支持库,包括LUA虚拟机,jmalloc等
  • lualib #lua语言封装的常用库,包括http、md5
  • lualib-src #将c语言实现的插件捆绑成lua库,例如数据库驱动、bson、加密算法等
  • service #使用lua写的Skynet的服务模块
  • service-src #使用C写的Skynet的服务模块
  • skynet-src #skynet核心代码目录
  • test #使用lua写的一些测试代码

配置说明

/home/mhzzj/work/skynetStudy/skynet/examples/config

include "config.path"
thread = 8 -- 启用的工作线程数量,一般配置为CPU核心数
logger = nil
logpath = "."
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "main"	-- 主服务入口
bootstrap = "snlua bootstrap"	-- The service for bootstrap
standalone = "0.0.0.0:2013"
-- 用C语言编写的服务模块的路径
cpath = root.."cservice/?.so"

/home/mhzzj/work/skynetStudy/skynet/examples/config.path

root = "./"
--服务脚本路径,包括skynet框架自带的一些服务和自己写的服务
luaservice = root.."service/?.lua;"..root.."test/?.lua;"..root.."examples/?.lua;"..root.."test/?/init.lua"
-- lua脚本加载器,指定skynet的loader.lua
lualoader = root .. "lualib/loader.lua"
-- 程序加载lua脚本时,会搜索这个lua_path配置的路径
lua_path = root.."lualib/?.lua;"..root.."lualib/?/init.lua"
-- 用C语言编写的程序库(.so文件)的路径
lua_cpath = root .. "luaclib/?.so"
snax = root.."examples/?.lua;"..root.."test/?.lua"

05、hello world

项目结构
:

myMain.lua

local skynet = require "skynet"skynet.start(function()skynet.error("[start main] hello world")-- TODO 启动其他服务skynet.exit()
end)

配置文件

mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ cp examples/config examples/myconfig
mhzzj@mhzzj-virtual-machine:~/work/skynetStudy/skynet$ cp examples/config.path examples/myconfig.path

myconfig配置如下:

include "myconfig.path" --更改路径文件
thread = 8
harbor = 1
address = "127.0.0.1:2526"
master = "127.0.0.1:2013"
start = "myMain"	-- 更改启动文件
bootstrap = "snlua bootstrap"	-- The service for bootstrap
standalone = "0.0.0.0:2013"

myconfig.pat配置如下:

在这里插入图片描述

启动hellworld

在这里插入图片描述

06、源码

https://gitee.com/mhz-zzj/skynet-study

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS示例001:鼠标放div上,实现旋转、放大、移动等效果

GPT能够很好的应用到我们的代码开发中,能够提高开发速度。你可以利用其代码,做出一定的更改,然后实现效能。 css实战中,经常会看到这样的场景,鼠标放到一个图片或者一个div块状时候,会出现旋转、放大、移动…

QtC++与QToolButton详解

介绍 QToolButton 是 Qt 中的一个控件类,用于创建工具按钮,它有以下主要作用和特点: 工具按钮: QToolButton 用于创建工具按钮,允许用户执行各种操作,如启动功能、弹出菜单、打开文件等。工具按钮通常用于…

地址的层次性

地址的层次性 当地址总数并不是很多的情况下,有了唯一地址就可以定位相互通信的主体。然而当地址的总数越来越多时,如何高效地从中找出通信的目标地址将成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。其实,在使用电…

基于跳蛛算法的无人机航迹规划-附代码

基于跳蛛算法的无人机航迹规划 文章目录 基于跳蛛算法的无人机航迹规划1.跳蛛搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用跳蛛算法来优化无人机航迹规划。 1.跳蛛搜索算法 …

react配置二级路由

1.在createBrowserRouter上添加basename属性&#xff0c;比如 const RouterRender createBrowserRouter([{path: /,element: <App><Login></Login></App>},...SystemRouter,...InventoryRouter,...FlowManageRouter,{path: "*",element: &…

Verilog 基础知识(一) Verilog 基础语法与注意事项

基础知识 0.1 模块(Module) Verilog中的module可以看成一个具有输入输出端口的黑盒子&#xff0c;该黑盒子有输入和输出接口(信号)&#xff0c;通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1 模块示意图 0.1.1 模块描述 图1 所示的顶层模块(top…

UNI-APP_获取手机品牌

在uni-app中&#xff0c;使用uni.getSystemInfoSync().brand可以获取设备的品牌信息。根据不同设备的品牌&#xff0c;uni.getSystemInfoSync().brand可能返回以下一些常见值 “Apple” - 苹果 “Samsung” - 三星 “Huawei” - 华为 “Xiaomi” - 小米 “OPPO” - OPPO “Vivo…

PaddleX数据集规范

目录 1、图像分类任务 2、目标检测任务 3、主体检测任务 4、图像分割任务 5、特征检索任务 6、文本检测任务 7、文本识别任务 8、版面分析任务 9、表格识别任务 10、关键信息抽取任务 11、点云3D目标检测任务 12、多目3D目标检测任务 13、单目3D目标检测任务 14、长…

CSS鼠标悬浮变小手

当我们在网页设计中需要用户点击或者选择某个元素时&#xff0c;很多时候会使用鼠标悬浮变小手的效果&#xff0c;这种效果可以让用户更快速的完成操作&#xff0c;提高用户体验。 在CSS中设置鼠标悬浮变小手效果非常简单&#xff0c;只需要使用cursor属性即可。以下是具体步骤…

理德外汇: 美元暴跌创近一个半月新低

10月30日-11月3日市场综述&#xff1a;央行超级周果然名不虚传&#xff01;上周美联储鸽派暂停升息令全球股债疯狂暴拉&#xff0c;加上非农就业数据疲弱&#xff0c;市场对美联储再加息的预期降温&#xff0c;美股创下今年最大单周增幅&#xff0c;美元持续下滑&#xff0c;与…

【Redis】Redis整合SSMRedis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)

目录&#xff1a; 目录 一&#xff0c;SSM整合redis 二&#xff0c;redis注解式缓存 三&#xff0c;Redis中的缓存穿透、雪崩、击穿的原因以及解决方案&#xff08;附图&#xff09; 一&#xff0c;SSM整合redis 1.原因&#xff1a; 整合SSM和Redis可以提升系统的性能、可…

2023 年如何学习编程

在当今的数字时代&#xff0c;程序员的角色比以往任何时候都更加重要。编程技能几乎在每个行业都受到高度重视和追捧。从科技初创公司到成熟企业&#xff0c;对具有适当技术能力的开发人员的需求巨大。 无论是考虑转行还是开始&#xff0c;现在都是成为一名程序员的激动人心的…

2023世界传感器大会开幕,汉威科技多领域创新产品引瞩目

11月5日&#xff0c;2023世界传感器大会在郑州国际会展中心正式拉开帷幕。据悉&#xff0c;本次大会由河南省人民政府、中国科学技术协会主办&#xff0c;郑州市人民政府、河南省工业和信息化厅、河南省科学技术协会、中国仪器仪表学会承办。 大会由“一会一赛一展”组成&#…

【Liunx系统编程】命令模式3

目录 一&#xff0c;zip/unzip压缩指令 二&#xff0c;tar打包/压缩/解包指令 三&#xff0c;uname获取系统信息指令 四&#xff0c;Liunx下常用且重要的按键和关机指令 五&#xff0c;文件之间的互传 1&#xff0c;Windows与Linux之间的互传 2&#xff0c;Linux系统之间…

3.22每日一题(二重积分求平面区域面积)

先复习求平面积分的公式 注&#xff1a;面对平面积分直接使用二重积分对1求积分即可&#xff1b;所以只需要背二重积分的两个公式&#xff1a; 1、直角坐标下对1积分 2、极坐标下对1积分 xy-1是等轴双曲线&#xff01;&#xff01; 1、先画图定区域 2、选择先对x积分还是先对…

深入了解Typescript中type和interface具体区别?

前言 新手刚开始学习 TypeScript 时&#xff0c;往往会对 type 和 interface 的使用场景和方式感到困惑。因此&#xff0c;本文旨在总结 type 和 interface 的概念和用法。 一、概念 type&#xff1a;类型别名 概念&#xff1a;允许为一个或多个数据类型&#xff08;例如 str…

android studio app红叉无法编译

1.起源 今天前台小姐姐穿了一个白色的超短裙,和小姐姐聊了聊人生梦想,聊生活趣事,回到工位你马....报了一个这错误,无法运行了,明天就要打包测试了,顿时菊花一紧,急了一头汗,这你马咋回事,看了旁边的产品肥仔,迷着小眼露出了银建的笑容.开始排雷.... 意思就是说gradle初始化失…

WARNING: tokenization mismatch: 403 vs. 406. (ignored) LLaVa

LLaVa换BaiChuan底座报错 WARNING: tokenization mismatch: 403 vs. 406. (ignored) 解决 cd ~/.cache/huggingface/hub/models--baichuan-inc--Baichuan2-7B-Base/snapshots/0cc6a61c06cd0734270151109d07cf86ef0ace53 vim tokenizer_config.json把bos_token改成true&#…

(四) Python 使用Pandas生成日报

一、介绍 Pandas是Python中一个强大的数据处理库&#xff0c;它提供了许多功能强大的数据结构和数据分析工具。在本文中&#xff0c;我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件。 Pandas提供了大量的数据结构和数据分析工…

RK3568平台 内存的基本概念

一.Linux的Page Cache page cache&#xff0c;又称pcache&#xff0c;其中文名称为页高速缓冲存储器&#xff0c;简称页高缓。page cache的大小为一页&#xff0c;通常为4K。在linux读写文件时&#xff0c;它用于缓存文件的逻辑内容&#xff0c;从而加快对磁盘上映像和数据的访…