toy-framework是sunist-c在学习和开发的过程中,萌发的项目,主要的目的是从零开始,逐渐搭建一个HTTP/RPC服务框架。
在早期,本仓库可能一直起灰,因为sunist-c可能在极度愤怒的情况下大删大改,revert很多次,所以sunist-c会在toy-framework快完成的时候,再将其提交到GitHub
本项目适用于新人从头开始使用go进行web后端开发
如果你需要一个能够生产的框架,请转到go-gin-api
如果你需要一些gin的开发样例,请转到go-gin-example
本项目的文档会在sunist-c's blog进行更新,本仓库的readme也会贴出相应的链接
部分内容会在SunistC - bilibili进行视频教学,本仓库的readme也会贴出相应的链接
暂时应该不会有
toy-kv是一个并发安全的,千万吞吐的kv存储数据结构,采用了分段分表锁进行并发控制
这一节主要使用了互斥锁、读写锁以及分段式读写锁进行并发控制,适合未接触过并发编程的小伙伴入门
博客文档
视频教学
- [Go] 从零开始实现一个每秒千万级操作的Key-Value存储 - Introduction
- [Go] 从零开始实现一个每秒千万级操作的Key-Value存储 - CommonMap
- [Go] 从零开始实现一个每秒千万级操作的Key-Value存储 - SimpleMap
- [Go] 从零开始实现一个每秒千万级操作的Key-Value存储 - RWMap
toy-rds是一个使用go实现的类redis服务,使用epoll作为底层网络实现,可以做到百万级TPS
这一节主要使用了chanel、wait-group来进行并发控制,使用的是共享内存方式在不同go程之间传输数据,同时使用TCP向外部系统暴露接口,使用epoll进行网络并发控制
toy-chan是一个并发安全的chanel,在原生chan的基础上增加了自动容量管理机制,支持自动扩容与自动释放多余容量
toy-http是一个基于gin的HTTP服务框架,在gin的基础上增加了依赖管理与参数管理,支持自动校验参数合法性,自动注入需要的依赖,自动生成状态与响应、编译时依赖检查、运行时动态依赖修改等功能
博客文档
- 暂未更新博客
视频教学
toy-rpc是一个基于json-rpc的远端调用服务框架
toy-mic是一个还没想好要怎么做的微服务框架
toy-crud是一个基于toy-http开发的基础CRUD应用,在给定Model的情况下可以快速生成CRUD接口与服务,除了定义Model以外无需任何额外代码
CeobeBot-Backend是对话机器人CeobeBot的HTTP后端,为使用Adachi-Bot的CeobeBot前端提供基于HTTP的数据处理服务,目前正在使用toy-http进行重构
虽然应该没人会找我的,但还是留一个邮箱吧: sunist's mail
- Southwest University ACM-Laboratory: 提供了私有git仓库与ci/cd流水线
- Southwest University Animal Science Research Institute: 基于toy-http前身开发后端服务,支持toy-http框架进行迭代开发
- Jecosine等: 为toy-framework提供测试与改进意见
MIT-LICENSE,你可以随便使用,但是还是希望你在使用本项目的相关内容的时候,能够带上项目链接或作者信息