手把手带你写一个 Web 框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
22731 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
特别放送 (1讲)
手把手带你写一个 Web 框架
15
15
1.0x
00:00/00:00
登录|注册

08|自研or借力(上):集成Gin替换已有核心

思考题
站在巨人的肩膀
框架对比
总结

该思维导图由 AI 生成,仅供参考

你好,我是轩脉刃。
之前我们从零开始研发了一个有控制器、路由、中间件等组件的 Web 服务器框架,这个服务器框架可以说是麻雀虽小,但五脏俱全。上节课我们还介绍了目前最主流的一些框架 Gin、Echo 和 Beego。
这里不知道你有没有这些疑问,我们的框架和这些顶级的框架相比,差了什么呢?如何才能快速地把我们的框架可用性,和这些框架提升到同一个级别?我们做这个框架除了演示每个实现细节,它的优势是什么呢?
不妨带着这些问题,把我们新出炉的框架和 GitHub 上 star 数最高的Gin 框架比对一下,思考下之间的差距到底是什么。

和 Gin 对比

Gin 框架无疑是现在最火的框架,你能想出很多它的好处,但是在我看来,它之所以那么成功,最主要的原因在于两点:细节和生态
其实框架之间的实现原理都差不多,但是生产级别的框架和我们写的示例级别的框架相比,差别就在于细节,这个细节是需要很多人、很多时间去不断打磨的。
如果你的 Golang 经验积累到一定时间,那肯定能很轻松实现一个示例级别的框架,但是往往是没有开源市场的,因为你的框架,在细节上的设计没有经过很多人验证,也没有经过在生产环境中的实战。这些都需要一个较为庞大的使用群体和较长时间才能慢慢打磨出来。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Gin框架的细节处理和生态优势是本文的重点。文章通过对比自研框架和Gin框架的代码实现,特别是在异常捕获方面的细节处理,展示了Gin框架在细节上的优势。作者强调了细节对于框架的重要性,以及Gin框架在细节处理上的精妙之处。Gin框架在异常信息打印、请求内容输出、堆栈信息打印等方面展现了其技术特点和优势。通过对Gin框架的细节处理进行深入分析,读者能够快速了解Gin框架的技术特点和优势,为他们在实际工作中的调试提供了丰富的帮助。 此外,文章还强调了Gin框架的生态优势。Gin的生态环境非常优质,拥有多个开源共享者为其共享了开源中间件,社区活跃度高,对于已有的问题能够迅速找到解决办法。这些优势使Gin框架成为生产环境中首选的框架。作者还指出,站在巨人的肩膀才能做得更好,强调了使用开源社区的优秀开源库来提升解决问题的效率的重要性。 总之,本文通过对Gin框架的细节处理和生态优势进行深入分析,展现了Gin框架在技术特点和实用性上的突出表现,为读者提供了对Gin框架的全面了解和认识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • 老师我准备慢下来 我要把 trie树给优化一下 之前写leetcode的时候这种压缩的情况我比较清楚 我可以尝试一下

    作者回复: 赞,期待

    2021-12-03
    2
    2
  • 我是熊大
    看完第六讲时,看到地下的评论,为作者捏了一把汗,直到第八讲,才松了一口气,每个框架都是无数次优化得到完善的,优秀的人的贡献存在才能让社区更强大

    作者回复: 感谢

    2022-11-28归属地:北京
    1
  • 只有站在巨人的肩膀才能做得更好。 这个就是吸取前人经验,自己可以站在巨人肩膀上把事情做的更好或许会让这个巨人更高让别人站在自己肩膀上继续增高

    作者回复: 是的,什么都自己再造一遍轮子,就没有办法形成一个合力了,哈哈

    2021-12-03
    2
    1
  • 感觉老师讲解源码让我会看的很入神

    作者回复: 感谢

    2021-12-03
    1
  • Geek_d217a5
    indices作用是什么?源码是遍历indices数组找到对应的字符,不能直接遍历childnode的path吗?

    作者回复: 其实也是可以便利childnode的path,但是那样的效率就没有indeces高了,毕竟indexes是一个内存数组,这个是最快的,不需要根据指针寻址啥的。所以indices顾名思义就是一个索引,加速查找的目的

    2021-12-10
  • Eloquent ORM 是真的方便好用,laravel框架本身我就觉得是符合创业公司开发的利器。只不过我个人从刚刚学习听过很多php的言论导致 潜移默化的不喜欢php

    作者回复: 语言没有好坏,只有流行与否。我也是laravel爱好者

    2021-12-03
  • 芒果少侠
    gin的query方法,通过本地内存cache缓存了请求的query参数。后续每次读query参数时,都会从内存中直接读,减少了每次都要调用request.Query()方法的计算开销。
    2021-10-08
    1
    10
  • Geek_5244fa
    众人拾柴火焰高,这个课程这么多人学习,可以一起做一个框架。
    2021-09-29
    4
  • 王博
    前面的读了好几遍了,真的受益匪浅,期待后续
    2021-09-29
    3
  • xl666
    老师请教下,错误拦截的那个底层连接异常,如果服务器异常,不应该都建立不了tcp连接吗,怎么还能在业务代码中拦截呢。
    2023-03-17归属地:北京
    1
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部