7days-golang README

The project's README from github.com/geektutu/7days-golang. As one markdown file: README.md.

7 days golang programs from scratch

CodeSize LICENSE

README 中文版本

7天用Go从零实现系列

7天能写什么呢?类似 gin 的 web 框架?类似 groupcache 的分布式缓存?或者一个简单的 Python 解释器?希望这个仓库能给你答案。

推荐先阅读 Go 语言简明教程,一篇文章了解Go的基本语法、并发编程,依赖管理等内容。

推荐 Go 语言笔试面试题,加深对 Go 语言的理解。

推荐 Go 语言高性能编程(项目地址),写出高性能的 Go 代码。

期待关注我的「知乎专栏」和「微博」,查看最近的文章和动态。

7天用Go从零实现Web框架 - Gee

Gee 是一个模仿 gin 实现的 Web 框架,Go Gin简明教程可以快速入门。

7天用Go从零实现分布式缓存 GeeCache

GeeCache 是一个模仿 groupcache 实现的分布式缓存系统

7天用Go从零实现ORM框架 GeeORM

GeeORM 是一个模仿 gorm 和 xorm 的 ORM 框架

gorm 准备推出完全重写的 v2 版本(目前还在开发中),相对 gorm-v1 来说,xorm 的设计更容易理解,所以 geeorm 接口设计上主要参考了 xorm,一些细节实现上参考了 gorm。

7天用Go从零实现RPC框架 GeeRPC

GeeRPC 是一个基于 net/rpc 开发的 RPC 框架 GeeRPC 是基于 Go 语言标准库 net/rpc 实现的,添加了协议交换、服务注册与发现、负载均衡等功能,代码约 1k。

WebAssembly 使用示例

具体的实践过程记录在 Go WebAssembly 简明教程。

  • 示例一:Hello World | Code
  • 示例二:注册函数 | Code
  • 示例三:操作 DOM | Code
  • 示例四:回调函数 | Code

What can be accomplished in 7 days? A gin-like web framework? A distributed cache like groupcache? Or a simple Python interpreter? Hope this repo can give you the answer.

Web Framework - Gee

Gee is a gin-like framework

Distributed Cache - GeeCache

GeeCache is a groupcache-like distributed cache

Object Relational Mapping - GeeORM

GeeORM is a gorm-like and xorm-like object relational mapping library

Xorm's desgin is easier to understand than gorm-v1, so the main designs references xorm and some detailed implementions references gorm-v1.

RPC Framework - GeeRPC

GeeRPC is a net/rpc-like RPC framework

Based on golang standard library net/rpc, GeeRPC implements more features. eg, protocol exchange, service registration and discovery, load balance, etc.

Golang WebAssembly Demo

7days-golang (geektutu/7days-golang)

Searching Database…

这是什么?这是一个学习型仓库,带你用七天时间,从零重写四个 Go 项目:一个类似 gin 的 Web 框架(Gee)、一个类似 groupcache 的分布式缓存(GeeCache)、一个类似 gorm/xorm 的 ORM(GeeORM),以及一个类似 net/rpc 的 RPC 框架(GeeRPC),另外还有一些 Go WebAssembly 演示。
这是现成可用的框架,还是教程系列?这是一套附带源代码的教程系列,不是可以直接导入使用的生产级框架。四条路线各分为七节每日课程,每节都有简短的文章和对应的代码快照。
我该怎么跟着学?选择四条路线之一(Gee、GeeCache、GeeORM 或 GeeRPC),从第 1 天开始,按顺序学习每天链接的代码;另外还有一个独立的 WebAssembly 演示文件夹。
学习这个需要先安装 Go 吗?需要,你得有一套可用的 Go 工具链,因为每节课都是纯 Go 源代码;不需要任何外部服务或 API 密钥。
Gee、GeeCache、GeeORM 和 GeeRPC 是用于生产环境的吗?不是,它们是刻意简化的仿写版本,目的是帮助学习 gin、groupcache、gorm/xorm 和 net/rpc 的内部原理,并不是经过强化的生产库。
GeeCache 第 6 天的课程讲什么?讲解如何使用 singleflight 技术防止缓存击穿,使同一个缺失键的并发请求只触发一次获取。
GeeRPC 和 Go 标准库的 net/rpc 有什么不同?它基于 net/rpc 构建,但额外加入了协议交换、服务注册与发现以及负载均衡,代码量约 1000 行。
为什么 GeeORM 更多参考 xorm 而不是 gorm?作者觉得 xorm 的设计比 gorm v1 更容易理解,因此 GeeORM 的接口主要沿用 xorm,同时借鉴了 gorm 的一些实现细节。
除了这四个七天系列之外,还有别的内容吗?有,还有四个小型 Go WebAssembly 演示,分别涵盖 Hello World、函数注册、DOM 操作和回调。
Creator
geektutu
Size
1.1 MB
Stars
17K
Updated
CommitSep 05
Age
7y
Commits · 90 Days