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

加餐|阶段答疑:这些代码里的小知识点你都知道吗?

服务器TIME_WAIT的时间
性能提升
HTTP的keep-alive机制
查找源码
模拟关键步骤
go mod 指定版本格式
使用 go build 编译
缓存雪崩
重试加大流量
超时设置不合理
链路统一设置超时
链路通用内容传递
两层循环
画图方法
GitHub分支代码无法运行
服务雪崩
context作为函数参数
http.Server源码
思维导图
代码运行问题
阶段答疑

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

你好,我是轩脉刃。
上节课国庆特别放送,我们围绕业务架构和基础架构,聊了聊这两种方向在工作上以及在后续发展上的区别,也讲了做系统架构设计的一些术。今天就回归课程,特别整理了关于课程的五个共性问题来解答一下。

Q1、GitHub 分支代码跑不起来怎么办?

GitHub 中的每个分支代码都是可以跑起来的,我本人亲测过了。出现这个问题,可能是因为有的同学只使用 go run main.go。
go run main.go 只会运行编译运行的指定文件,而一旦当前目录下有其他文件,就不会运行到了,所以比如在 geekbang/02 或者 geekbang/03 分支中,根目录下有其他文件,就不能运行了。你需要使用 go build 先编译,然后使用./coredemo 来运行
另外因为最近 Go 版本更新了,有同学问到这个问题:go mod 能指定 1.xx.x 版本么?比如想要把 go.mod 中指定 go 版本的 go 1.17  修改为 go 1.17.1,希望我的项目最低要求 1.17.1。但是 Goland 老是把版本号修改回  go 1.17,是不是我哪里设置有问题?
这是一个小知识点,不过估计不是每个人都知道。其实这里不是设置有问题,而是 go.mod 要求就是如此。
指定 go 版本的地方叫 go directive 。它的格式是:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了代码运行、思维导图绘制和HTTP服务器源码等技术知识点。首先介绍了解决GitHub分支代码无法运行的方法,以及在go.mod中指定特定的Go版本的技巧。其次,讨论了如何使用思维导图快速区分主线和细节,并通过模拟步骤理解源码的方法。最后,解释了HTTP服务器源码中存在两层循环的原因,涉及到HTTP的keep-alive机制对性能和服务器TIME_WAIT时间的影响。文章内容涵盖了代码运行、源码分析和性能优化等多个方面,适合技术人员快速了解相关知识点。 此外,文章还涉及了context作为函数的第一个参数的实践意义,以及服务雪崩的原因和应对措施。其中,context作为第一个参数的好处在于链路通用内容传递和统一设置超时,而服务雪崩的原因包括超时设置不合理、重试加大流量和缓存雪崩等。这些内容对于技术人员在实际工作中具有重要的指导意义。 总之,本文内容丰富,涵盖了多个技术领域,对于读者快速了解相关知识点具有很高的参考价值。

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

全部留言(2)

  • 最新
  • 精选
  • Frankey
    go run main.go 改成 go run . 即可跑通

    作者回复: 是的,go eun main只是跑了main.go

    2021-10-06
    2
  • 牙小木
    http 层的keep alive 和 tcp层的keep alive 都是长连接必须设置的吗,两层区别和联系是神马
    2021-10-09
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部