Skip to content

Latest commit

 

History

History
61 lines (38 loc) · 2.34 KB

7-底层实现.md

File metadata and controls

61 lines (38 loc) · 2.34 KB

Golang 第七轮考核

目的

  • 掌握Web底层工作原理
  • 掌握Orm库的底层工作原理
  • 掌握缓存库的设计原理

任务

以下内容三选一进行完成即可

基于net/http库实现类似Gin框架的Gout Web框架

该Web框架具备以下功能

  • 路由支持GET、POST、DELETE、PUT功能
  • 实现Context功能
  • 嵌入log、cors、recovery等middleware

使用Gout库实现简单的HTTP的请求与响应

基于database/sql库实现类似Gorm框架的go-orm框架

该orm框架具备以下功能

  • 能进行表的结构映射
  • 实现简单的create、update、find、delete等等api接口
  • 支持事务

使用go-orm对数据库表进行处理

针对mysql的业务操作使用redis实现一个cache中间件

该cache用于提高mysql的查询速度,缓存库具备一下功能

  • 当查询数据在redis中存在时,就在redis中读取,否则在mysql中读取并写入redis
  • 当进行增加、删除和修改操作时,redis数据进行更新
  • 需要保证mysql与redis的双写一致性

benchmark进行测试,至少保证10k的并发读写量

提示

如果感到困难,可以选择退而求其次,完成对Gin、Gorm、Redis源码的学习,需要你提交一份学习报告

如果你选择提交学习报告,你可以选择的源码就很多了,下面列举了你可以选择的源码: grpc-go、kitex、kratos、redis-go、gin、gorm

你可以按照如下步骤阅读源码,并编写你的报告

  1. 列出这个框架源码的目录结构,并对每个文件夹(或者重要的文件)进行注释
  2. 找出这个框架特特性、优点
  3. 为了实现这些特性、优点,这个框架做了什么
  4. 为了实现这些特性、优点,这个框架放弃了什么
  5. 这个框架涉及到了哪些数据结构/算法的内容
  6. 挑选一个相同/类似的框架,并对二者进行对比,找出其中的区别
  7. 为这个框架编写一个简易demo(以gin为例,我们实现一个简单的HTTP接口),并在这个基础上,按照代码流程编写一份流程报告(以Gin为例,我们可以从接收HTTP请求开始,一直分析代码到发送响应请求结束,分析这中间的代码跳转、数据封装、语言特性使用等)

同时,多在群里提问,主打的就是一个直言不讳