当前位置: 首页 > news >正文

Go语言实现长连接并发框架 - 任务执行流

文章目录

  • 前言
  • 接口
  • 结构体
  • 接口实现
  • 项目地址
  • 最后

前言

你好,我是醉墨居士,上篇博客中我们实现了客户端的请求的实现,接下来我们要去实现对请求任务的处理,我们需要定义任务执行的流程

接口

trait/task.go

type TaskFunc interface {Execute(ctx Context)
}type TaskFlow interface {Extend(...TaskFunc)Append(fs ...TaskFunc) TaskFlowExecute(idx int, ctx Context)Len() intFuncs() []TaskFunc
}

结构体

gcore/task.go

// TaskFunc 任务处理函数
type TaskFunc func(trait.Context)// TaskFlow 任务处理流
type TaskFlow []trait.TaskFunc// NewTaskFlow 创建任务流
func NewTaskFlow(fs ...trait.TaskFunc) trait.TaskFlow {flow := TaskFlow(fs)return &flow
}

接口实现

gcore/task.go

// Execute 执行任务
func (h TaskFunc) Execute(ctx trait.Context) {h(ctx)
}// Extend 扩展任务处理流
func (h *TaskFlow) Extend(fs ...trait.TaskFunc) {*h = append(*h, fs...)
}// Append 追加任务处理流
func (h *TaskFlow) Append(fs ...trait.TaskFunc) trait.TaskFlow {flow := make([]trait.TaskFunc, h.Len() + len(fs))copy(flow[:h.Len()], *h)copy(flow[h.Len():], fs)return NewTaskFlow(flow...)
}// Execute 执行任务
func (h *TaskFlow) Execute(idx int, ctx trait.Context) {(*h)[idx].Execute(ctx)
}// Len 任务处理流长度
func (h *TaskFlow) Len() int {return len(*h)
}// Funcs 获取所有任务执行逻辑
func (h *TaskFlow) Funcs() []trait.TaskFunc {return *h
}

项目地址

Github:https://github.com/zm50/gte
Giee:https://gitee.com/zm50/gte

最后

我是醉墨居士,我们完成对请求的任务执行流的定义,下篇博客我们实现一下任务执行流的上下文

相关文章:

Go语言实现长连接并发框架 - 任务执行流

文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,上篇博客中我们实现了客户端的请求的实现,接下来我们要去实现对请求任务的处理,我们需要定义任务执行的流程 接口 trait/task.go type TaskFunc interfa…...

Flutter与原生代码通信

文章目录 1. 知识回顾2. 示例代码3. 经验总结我们在上一章回中介绍了通道相关的内容,本章回中将介绍其中的一种通道:MethodChannnel.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中介绍了通道的概念和作用,并且提到了通道有不同的类型,本章回将其中一…...

每日读则推(三)

n.(事件的)发生地点,(活动的)场所 n.雄性大园丁鸟 n.多细枝的,苗条的 v.放大,扩大(声音);增强,加强 Male great bowerbirds build twiggy concert venues that amplify their raucous songs and n.园丁鸟 …...

Android Studio | 无法识别Icons.Default.Spa中的Spa

编写底部导航栏&#xff0c;涉及到Spa部分出现报红&#xff1a; 解决办法&#xff1a;在build.gradle.kts中引入图标依赖 dependencies {implementation "androidx.compose.material:material-icons-extended:<version>" }...

SKD4(note上)

微软提供了图形的界面API&#xff0c;叫GDI 如果你想画某个窗口&#xff0c;你必须拿到此窗口的HDC #include <windows.h> #include<tchar.h> #include <stdio.h> #include <strsafe.h> #include <string>/*鼠标消息 * 键盘消息 * Onkeydown * …...

rabbitmq----数据管理模块

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 交换机数据管理管理的字段持久化管理类内存管理类申明交换机删除交换机获取指定交换机 队列数据管理管理的字段持久化管理类内存管理类申明/删除/获取指定队列获取所…...

【人工智能深度学习应用】妙笔API最佳实践

AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品&#xff0c;专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识&#xff0c;能够生成高质量的专业内容&#xff0c;能覆盖各行业常见的文体类型&#xff0c;写作文体丰富多样&a…...

SOMEIP_ETS_150: SD_Send_triggerEventUINT8Multicast_Eventgroup_6

测试目的&#xff1a; 验证DUT在Tester订阅事件组后&#xff0c;能够响应Tester触发的triggerEventUINT8Multicast方法&#xff0c;并将TestEventUINT8Multicast事件发送到订阅请求中端点选项指定的IP地址和端口。 描述 本测试用例旨在确保DUT能够正确处理事件组的订阅请求&…...

【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和常规型数字格式的区别

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和…...

Vxe UI vue vxe-table vxe-text-ellipsis 如何实现单元格多行文本超出、多行文本溢出省略

Vxe UI vue vxe-table 如何实现单元格多行文本超出、多行文本溢出省略 代码 配合 vxe-text-ellipsis 组件实现多行文本溢出省略 <template><div><vxe-grid v-bind"gridOptions"><template #defaultAddress"{ row }"><vxe-te…...

FFmpeg源码:avio_feof函数分析

AVIOContext结构体和其相关的函数分析&#xff1a; FFmpeg源码&#xff1a;avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码&#xff1a;read_packet_wrapper、fill_buffer函数分析 FFmpeg源码&#xff1a;avio_read函数分析 FFmpeg源码&#xff…...

各省-城镇化率(2001-2022年)

数据收集各省-城镇化率&#xff08;2001-2022年&#xff09;.zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89465885 相关指标&#xff1a; 包括省份、年份、年末总人口数(万人)、年末城镇人口数(万人)、城镇化率等。 数据集构建&#xff1a; 数据集通…...

飞创龙门双驱XYZ直线模组高精度应用实例

飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体&#xff0c;适用于电子制造行业&#xff08;点胶、组装、检测&#xff09;、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等&#xff0c;满足高精度、高动态的三维定位需求&…...

Prompt 初级版:构建高效对话的基础指南

Prompt 初级版&#xff1a;构建高效对话的基础指南 文章目录 Prompt 初级版&#xff1a;构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型&#xff0c;帮助用户更好地理解如何在对话中构建有效的…...

餐饮重点企业在AI领域的布局,看方大的AI实践

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…...

Axure PR 9 开关切换 设计交互

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来探讨Axure开关按钮设计与交互技巧​。 创建切换开关所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.将“圆形”元件拖到画布上&#xff0c;在样式窗格中将高度和宽度设置为35&#xff0c;线段宽度…...

ruoyi-python 若依python版本部署及新增模块

ruoyi spring版本支持一键导出前后端代码&#xff0c;且b站上有很多教程&#xff0c;但是发现python版本的教程并不多&#xff0c;于是自己尝试创建一个简易的CRUD模块 1.各版本bug 主要尝试了1.1.2版本和vue2的版本&#xff0c;链接如下&#xff1a; v1.1.2 vue2 两个版本…...

【理论】负载均衡

目录 1. 定义2. 主要作用3. 实现方法4. 实现原理 1. 定义 负载均衡&#xff08;Load Balancing&#xff09;将网络流量、请求等输入分发到后端服务器&#xff0c;为后端服务器提供负载均衡&#xff0c;实现高可用和容错。 2. 主要作用 1. 高并发 通过将请求均匀分配到多个服务…...

流行前端框架Vue.js详细学习要点

Vue.js是一款流行的JavaScript前端框架&#xff0c;用于构建用户界面&#xff0c;特别是在构建交互式Web应用程序时表现出色。以下是Vue.js详细学习的一些要点&#xff1a; 1. Vue.js基础 定义与特点&#xff1a;Vue.js是一款渐进式JavaScript框架&#xff0c;提供响应式数据…...

Java.数据结构.TreeMap

一、什么是TreeMap TreeMap是Java集合框架中的一部分&#xff0c;并且基于红黑树数据结构。这说明TreeMap能够高效地执行键值对的存储、检索、排序等操作。 二、TreeMap的特点 有序性&#xff1a;TreeMap会根据键的自然顺序进行排序&#xff0c;当然&#xff0c;你也可以通过…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...