精通Docker第三版第九章更新中...

Go语言实战流媒体视频网站

学习笔记 Alan 3周前 (03-31) 157次浏览 0个评论

Golang 常用命令

本文参考代码见 GitHub 仓库:https://github.com/alanhou/golang-streaming

Test的写法

  • 每一个 test 文件必须 import 一个 testing
  • test 文件下的每一个 test case 均必以 Test 开头并且符合 TestXxx 形式,否则 go test 会直接跳过测试不执行
  • test case 的入参为 t *testing.T 或 b *testing.B
  • t.Errorf 为打印错误信息,并且当前 test case 会被跳过
  • t.SkipNow()为跳过当前 test,并且直接按 PASS 处理继续下一个 test
  • Go 的 test 不会保证多个 TestXxx 是顺序执行,但是通常会按顺序执行
  • 使用 t.Run 来执行 subtests 可以做到控制 test 输出以及 test 的顺序
  • 使用 TestMain 作为初始化 test, 并且使用 m.Run()来调用其它 tests 可以完成一些需要初始化操作的 testing,比如数据库连接、文件打开、REST服务登录等
  • 如果没有在 TestMain 中调用 m.Run()则除了 TestMain 以外的其它 tests 都不会被执行

Test之 benchmark

  • benchmark 函数一般以 Benchmark 开头
  • benchmark 的 case 一般会跟 b.N 次,而且每次执行都会如此
  • 在执行过程中会根据实际 case 的执行时间是否稳定会增加 b.N 的次数以达到稳态

Go语言实战流媒体视频网站

什么是前后端解耦

  • 前后端解耦是时下流行的 web 网站架构
  • 前端页面和服务通过普通的 web 引擎渲染
  • 后端数据通过渲染后的页面脚本调用后处理和呈现

前后端解耦的优势

  • 解放生产力,提高合作效率
  • 松耦合的架构更灵活,部署更方便,更符合微服务的设计特征
  • 性能的提升,可靠性的提升

前后端解耦的缺点

  • 工作量大
  • 前后端分享带来的团队成本以及学习成本
  • 系统复杂度加大

API

  • REST(Representational Status Transfer) API
  • REST是一种设计风格,不是任何架构标准
  • 当今 RESTful API通常使用 HTTP 作为通信协议,JSON 作为数据格式
  • 特点
    • 统一接口(Uniform Interface)
    • 无状态(Stateless)
    • 可缓存(Cachable)
    • 分层(Layered System)
    • CS 模式(Client-server Architecture)
  • 设计原则
    • 以 URL(统一资源定位符)风格设计 API
    • 通过不同的 METHOD(GET, POST, PUT, DELETE)来区分对资源的 CRUD
    • 返回码(Status Code)符合 HTTP 资源描述的规定

Go语言实战流媒体视频网站

API设计:用户

  • 创建(注册)用户:URL: /user Method: POST, SC: 201, 400, 500
  • 用户登录:URL: /user/:username Method: POST, SC: 200, 400, 500
  • 获取用户基本信息:URL: /user/:username Method: GET, SC: 200, 400, 401, 403, 500
  • 用户注销:URL: /user/:username Method: DELETE, SC: 204, 400, 401, 403, 500

 

延后更新:先整理学习 Go 语言框架: Google资深工程师深度讲解Go语言

更新中…

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址