2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目

本文主要是介绍2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

────────────────────────────────────

┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…

────────────────────────────────────
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
https://ke.qq.com/course/417774?flowToken=1042807

────────────────────────────────────

skynet重要组件以及手撕游戏项目

  • 前言
  • 消息与事件关系?
  • 消息与actor如何绑定?具体的绑定接口流程是什么?
  • 消息与协程的关系
  • 同学展示才艺阶段
  • 栈空间
  • 虚表指针
  • 总结

前言

写博客是一个很好的学习习惯,不管今天真的有没有学到知识,坐在电脑前絮絮叨叨记录写下今天所学的知识,哪怕一丁点生活感悟,心情也会变得非常开心。
好的,开始今天的学习。
本节课的主要目标就是掌握框架的开发思路。

消息与事件关系?

在这里插入图片描述

typedef union epoll_data
{void * ptr;  		//skynet使用的方式int fd;  			//redis使用的方式uint32_t u32;uint64_t u46;
}epoll_data_t;

指向一个socket关联对象,id是标记着socket的标识。

sp_add,sp_del,sp_enable是对epoll_ctl事件控制的封装。

学到这里我似乎长大了,认识到了计算机世界的奇妙,曾经的年少无知都仿佛发生在刚刚。

消息与actor如何绑定?具体的绑定接口流程是什么?

感觉就像是一堆缜密的结构体用指针指来指去,却从未指出回家的方向。

线程与线程通信,不加锁有没有更好的方式?
管道你值得拥有!少量数据,不要一次发太多的数据。

当事件触发,做相对应的IO操作,把处理的事件包装成消息推送到相对应的actor消息队列。

消息与协程的关系

确定读事件时候,先把数据读出来。问题是如何把事件转为消息?
读事件被触发,从网络事件中读取数据包装成消息,然后推到消息队列当中去。

同学展示才艺阶段

在reactor网络编程中,对于客户端来说什么表示网络建立成功?

  • connect非阻塞
  • fd可写
    但是对于服务器来说,又是怎么样的?
  • listenfd交由epoll进行管理
  • fd可读

这个问题当时只有 @麻利小超人 回答正确了,得到了Mark老师的青睐,估计他内心一定回很骄傲。但是从内容本质上来看这并不是一道很难的问题,我也同样能回答出来,只是当时已经在摸鱼ING了。

  • yield 主动让出协程
  • resume 唤醒协程
    我们的lua协程是通过手动的方式,和King老师讲的不一样,没有借助任何中间件,走的的是自强的道路。

条件满足进行唤醒,条件不满足就要让出。

栈空间

在这里插入图片描述

虚表指针

在这里插入图片描述

总结

通过今天的学习mark老师的skynet组件,并且真正的参与到了游戏环节,感觉真正的学习到了skynet。直播时,没有回答出老师提的问题有些遗憾,心有不甘,但是现在感觉也能铺着胸脯说掌握了三分了。
学了2遍也只能掌握到现在这个程度了,好了,废话就不多说了。
不管经历什么。努力成为最好的自己。

这篇关于2022年4月9日记:Linux服务器开发,Mark,skynet重要组件以及手撕游戏项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521246

相关文章

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文