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

相关文章

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx