skynet学习笔记02— skynet介绍、skynet基础API与环境变量
01、Skynet与Actor模型
在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客
- https://github.com/cloudwu/skynet/wiki/GettingStarted
- https://blog.csdn.net/qq769651718/article/details/79432793
02、Skynet基础API
start(func): 用 func函数初始化服务,并将消息处理函数注册到 C 层,让该服务可以工作。init(func):若服务尚未初始化完成,则注册一个函数等服务初始化阶段再执行;若服务已经初始化完成,则立刻运行该函数。setenv(key,value):向当前进程内注册表添加一项(不可以重置已有配置项)。skynet.getenv(key) :conf配置信息已经写入到注册表中,通过该函数获取注册表的变量值skynet.exit():结束当前服务skynet.error(str):打印函数
全部API列表:https://github.com/cloudwu/skynet/wiki/APIList
03、Demo
配置
project = "../project/"thread = 8
cpath = "./cservice/?.so"
bootstrap = "snlua bootstrap"
start = "01baskAPI"
-- 可以是 1-255 间的任意整数。一个 skynet 网络最多支持 255 个节点。每个节点有必须有一个唯一的编号。
-- 如果 harbor 为 0 ,skynet 工作在单节点模式下。此时 master 和 address 以及 standalone 都不必设置。
harbor = 0
lualoader = "./lualib/loader.lua"
luaservice = "./service/?.lua;"..project.."?.lua;"
lua_path = "./lualib/?.lua;" .. "./lualib/?/init.lua;"
lua_cpath = "./luaclib/?.so"-- 自定义的变量
myname = "mhzzj"
myage = 9999
代码
local skynet = require "skynet"skynet.init(function ()local name = skynet.getenv("myname") local age = skynet.getenv("myage") skynet.error("01baskAPI [init] name",name,"age",age,"newKey",skynet.getenv("newKey")) skynet.setenv("newKey","newValue");skynet.error("01baskAPI [init] name",name,"age",age,"newKey",skynet.getenv("newKey")) -- skynet.setenv("newKey","newValue2"); 对已经存在的key赋值会导致报错-- skynet.setenv("myname","myname");
end)skynet.start(function()local name = skynet.getenv("myname") local age = skynet.getenv("myage") skynet.error("01baskAPI [start main] name ",name,"age",age,"newKey",skynet.getenv("newKey"))skynet.exit()
end)
运行结果

04、相关代码
https://gitee.com/mhz-zzj/skynet-study

相关文章:
skynet学习笔记02— skynet介绍、skynet基础API与环境变量
01、Skynet与Actor模型 在系统Skynet之前,先了解一下Skynet与Actor模型,下列是风云大佬的介绍以及一个大佬的博客 https://github.com/cloudwu/skynet/wiki/GettingStartedhttps://blog.csdn.net/qq769651718/article/details/79432793 02、Skynet基础…...
Android---App 崩溃
崩溃问题是衡量 App 质量的决定性考核标准。Android 系统会输出各种相应的 log 日志,很大程度上降低了工程师 debug 崩溃问题的难度。如果要给 crash 日志进行分类,可以分为2大类:JVM 异常(Exception)堆栈信息和 nativ…...
DocTemplateTool - 可根据模板生成word或pdf文件的工具
你是否经常遇到这样的场景:产品运营有着大量的报告需求,或者给客户领导展现每周的运营报告?这些文档类的任务可以交给运营同事,他们负责文档排版和样式,你作为开发人员你只需要提供数据源,和一个映射表&…...
Python+reuqests自动化接口测试
1.最近自己在摸索Pythonreuqests自动化接口测试,要实现某个功能,首先自己得有清晰的逻辑思路!这样效率才会很快! 思路--1.通过python读取Excel中的接口用例,2.通过python的函数调用,get/Post 进行测试&…...
【Java 进阶篇】保护你的应用:Java 过滤器实现敏感词汇过滤
在开发 Web 应用程序时,安全性是至关重要的一环。保护用户免受恶意内容的侵害是开发者义不容辞的责任之一。在这篇博客中,我们将深入研究如何使用 Java 过滤器来过滤敏感词汇,确保用户输入的内容不包含不良信息。我们将采用简单而实用的方法&…...
目标检测网络系列——YOLO V4
文章目录 目标检测技术总结两种优化方向Bag of freebiesBag of specialsYOLO4网络结构网络架构(architecture)的选择基础网络结构的选择网络"插件"的选择。BoF和BoS的选择(Selection of BoF and BoS)YOLO4的其他改进点对比实验不同的特征(数据增强方法)之间的对比det…...
如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…...
CentOS系统安装vsftpd
下载并安装vsftpd apt-get install vsftpd 安装后检查 service vsftpd status 修改配置文件(被动/匿名用户模式) vi /etc/vsftpd.conf anonymous_enableNO listenYES listen_port21 ascii_upload_enableYES ascii_download_enableYES local_enableYES guest_enable…...
手握“发展密钥”,TCL科技或迎价值重估?
在高度竞争且快速变化的泛半导体产业,每一次周期性或结构性的变化,都会对企业经营策略带来深远的影响。 2023年前三季度,泛半导体产业迎来结构性复苏。其中,主流显示领域供需关系趋向健康化,半导体显示行业整体上量价…...
A star算法
1. 算法的理解 1.2 a 星算法的基本的原理 a 星 是一种启发式搜索算法, 用于在地图中的两个目标点之间寻找最短的路径,它结合了最优先搜索和Dijkstra算法的特点,通过考虑从起点到当前点的距离(或者代价 g(n) ) 和估算…...
node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)
文章目录 前言(1)问题:安装的mongoose 库版本不应该过高导致的问题(2)重新安装低版本 一、插入文档1. 代码2. node终端效果3. 使用mongo.exe查询数据库的内容 二、删除文档1. 删除一条2. 批量删除3. 代码 三、修改文档…...
JavaFX入门和网格布局面板的使用,Dao层交互,舞台与场景切换以及其他控件的使用
网格布局 将整个面板划分为若干个格子 , 每个格子的大小是一样的 , 每个格子中可以放置一个控件(布局) , 类似于表格的方式。在网格布局 中放入控件的时候 , 还需要指定位置。 GridPane gridPane new GridPane(); 我们将要排出这个布局 , 也就是登陆页…...
数据中台之数据分析
效果界面 技术方案 Notebook集成 在您的数据平台上,创建一个能够与Jupyter Notebook通讯的服务。通过Jupyter Notebook的HTTP API与Notebook实例进行交互,执行代码、获取输出等。用户界面 在数据开发/数据分析的代码框右上方,添加一个机器人样式的图标,用户点击后可以调起…...
龙芯loongarch64服务器编译安装scipy
前言 根据我之前的文章介绍,龙芯loongarch64服务器中的很多python依赖包安装有问题,发现其中安装的"scikit-learn"就无法正常使用,所有这里在 pip3 install scikit-learn -U -i https://pypi.tuna.tsinghua.edu.cn/simple 的时候发现"scipy"就无法正常…...
ubuntu(18.04)中安装open babel docker镜像并在php项目中调用容器中的obabel命令解析结果使用
使用软件: obabel镜像:informaticsmatters/obabel docker:http:// https://www.docker.com/ 安装docker #卸载旧版本sudo apt-get remove docker docker-engine docker-ce docker.io#更新索引包sudo apt-get update#安装 apt 依赖包&…...
02-PostgreSQL的基本使用
一、数据库操作 ①: 登录到数据库 psql -U postgres -d postgres -h 127.0.0.1②:查看所有数据库 \l③: 创建数据库 # 创建一个名为 mydb 的数据库 create database mydb;④:切换数据库 # \c 数据库名 \c mydb⑤:删除数据库 # 删除前 先确保数据库没有被连接 drop databa…...
uniapp 实现路线规划
UniApp是一个跨平台的应用开发框架,可以帮助开发者快速地在多个平台上构建应用程序。其中,实现路线规划是一个常见的需求,特别是对于地图类应用或者出行类应用来说,路线规划功能是非常重要的。 首先引入QQMapWX; impo…...
C语言C位出道心法(五):内存管理
C语言C位出道心法(一):基础语法 C语言C位出道心法(二):结构体|结构体指针|链表 C语言C位出道心法(三):共用体|枚举 C语言C位出道心法(四):文件操作 C语言C位出道心法(五):内存管理 一:C语言内存管理认知 二:C语言中内存堆|栈认知 三:C语言中引用内存丢失认知...
Flink之SQL客户端与DDL操作
SQL客户端与DDL操作 Flink SQLSQL客户端1.启动Flink2.启动Flink的SQL客户端3.HELP命令4.验证连接5.结果显示模式6.执行配置 数据库操作1.创建数据库2.查询数据库3.修改数据库4.删除数据库 表操作1.创建表表列属性表Watermark属性列PRIMARY KEY属性列PARTITIONED BY属性列WITH选…...
记录第一次银行测试岗面试【总结几点面试不要犯得错误】
LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作。 18线地区,测试工作并不多。最好的差不多就是LZ目前待着的公司了。遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人来讲,这意味着…...
离线部署不求人:手把手教你用Deb包在Ubuntu 22.04搭建自己的‘本地软件仓库’
离线部署实战:在Ubuntu 22.04构建高可用本地软件仓库 在企业级IT环境中,服务器集群往往部署在内网隔离环境,无法直接访问互联网软件仓库。这种场景下,如何实现批量软件部署、版本控制和依赖管理?本文将带你从零构建一个…...
别再裸跑容器了!1份经37家头部云厂商联合验证的Docker沙箱基线配置(含YAML/Ansible/Terraform三版本)
第一章:Docker沙箱安全基线的演进与行业共识Docker沙箱安全基线并非静态规范,而是随容器运行时漏洞披露、Kubernetes生态演进及合规要求升级持续迭代的技术契约。早期Docker默认配置(如root用户运行、共享宿主机命名空间、未限制capabilities…...
SymPyBotics实战:如何为你的Scara或Delta机器人快速生成最小惯性参数集?
SymPyBotics实战:Scara与Delta机器人最小惯性参数集生成指南 在机器人动力学参数辨识领域,工程师们常常面临一个核心挑战:如何从复杂的全参数模型中提取出真正影响系统行为的核心参数集?这个问题对于Scara和Delta这类高速精密机器…...
拆解一个古董设备,发现了宝藏芯片MB85RC64:聊聊FRAM那些被低估的应用场景
从MB85RC64芯片拆解看FRAM技术的隐形战场 拆开一台90年代的工业流量计,灰尘中露出指甲盖大小的MB85RC64芯片——这枚富士通生产的FRAM存储器,在当年可是身价不菲的"贵族器件"。如今当我们重新审视这种铁电存储技术,会发现它在那些&…...
STM32的‘防拆保险箱’:手把手教你用BKP备份寄存器保存关键数据(附VBAT供电电路设计)
STM32的‘防拆保险箱’:手把手教你用BKP备份寄存器保存关键数据(附VBAT供电电路设计) 在智能硬件和消费电子领域,数据安全正成为开发者面临的核心挑战之一。想象这样一个场景:你的智能门锁被物理拆解时,如何…...
Layui-admin后台管理系统:3倍开发效率的企业级解决方案
Layui-admin后台管理系统:3倍开发效率的企业级解决方案 【免费下载链接】Layui-admin 一个现成的 LayuiVue的后台系统模板,开箱即用 项目地址: https://gitcode.com/gh_mirrors/layu/Layui-admin 在当今快速迭代的商业环境中,企业后台…...
用强化学习优化CI/CD流水线:部署效率提升300%实录
测试工程师的困境与智能化的曙光在现代软件开发的快节奏战场上,持续集成与持续部署(CI/CD)流水线已成为保障软件质量与加速交付的生命线。对于软件测试从业者而言,这套流程的每一次构建、测试与部署,都是我们捍卫产品质…...
告别Office依赖!用Qt和QXlsx 1.4.3独立读写Excel的保姆级教程
告别Office依赖!用Qt和QXlsx 1.4.3独立读写Excel的保姆级教程 在跨平台应用开发中,处理Excel文件一直是个令人头疼的问题。传统方案依赖Office或WPS组件,不仅增加部署复杂度,在Linux服务器、嵌入式设备等环境中更是难以实现。本文…...
水下机器人开发3大技术瓶颈与UUV Simulator解决方案
水下机器人开发3大技术瓶颈与UUV Simulator解决方案 【免费下载链接】uuv_simulator Gazebo/ROS packages for underwater robotics simulation 项目地址: https://gitcode.com/gh_mirrors/uu/uuv_simulator 水下机器人开发面临动力学建模复杂、传感器数据稀缺、控制算法…...
告别Samba和FTP:用Java NFS-Client 1.0.3实现跨平台文件操作,SpringBoot项目实战
告别Samba和FTP:用Java NFS-Client 1.0.3实现跨平台文件操作,SpringBoot项目实战 在分布式系统和云原生架构日益普及的今天,传统的文件共享方案如Samba和FTP逐渐暴露出性能瓶颈和兼容性问题。本文将带你探索一种更现代、更高效的替代方案——…...
