获得徽章 0
#青训营 x 字节后端训练营# day11
Gin 特性
快速:路由不使用反射,基于Radix树,内存占用少。
中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的 Koa 框架很像。中间件机制也极大地提高了框架的可扩展性。
异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
JSON:Gin可以解析并验证请求的JSON。这个特性对Restful API的开发尤其有用。
路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
渲染内置:原生支持JSON,XML和HTML的渲染
Gin 特性
快速:路由不使用反射,基于Radix树,内存占用少。
中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的 Koa 框架很像。中间件机制也极大地提高了框架的可扩展性。
异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
JSON:Gin可以解析并验证请求的JSON。这个特性对Restful API的开发尤其有用。
路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
渲染内置:原生支持JSON,XML和HTML的渲染
展开
评论
点赞
#青训营 x 字节后端训练营# day5
对于程序中出现的大多数异常情况,errors就足够了,但也有一些情况,程序在出现异常情况后无法继续执行,这时,我们使用panic来提前终止程序
- 当函数遇到panic时,执行将停止,所有defer函数都将执行,然后控制返回到caller
如果存在defer调用,则执行defer调用后再返回控制到其调用方,直到到达顶级调用方再打印panic
- 这个过程一直持续到当前goroutine的所有函数都返回,此时程序打印出panic信息和stack trace信息,最后终止
- 可以使用recover重新控制panic程序
只有在defer函数内部调用时,recover才有效
通过恢复正常执行来停止panic序列,并检索传递给panic函数调用的错误消息
如果在deferred函数之外调用recover,它将不会停止panic序列
对于程序中出现的大多数异常情况,errors就足够了,但也有一些情况,程序在出现异常情况后无法继续执行,这时,我们使用panic来提前终止程序
- 当函数遇到panic时,执行将停止,所有defer函数都将执行,然后控制返回到caller
如果存在defer调用,则执行defer调用后再返回控制到其调用方,直到到达顶级调用方再打印panic
- 这个过程一直持续到当前goroutine的所有函数都返回,此时程序打印出panic信息和stack trace信息,最后终止
- 可以使用recover重新控制panic程序
只有在defer函数内部调用时,recover才有效
通过恢复正常执行来停止panic序列,并检索传递给panic函数调用的错误消息
如果在deferred函数之外调用recover,它将不会停止panic序列
展开
评论
点赞
#青训营 x 字节后端训练营# day3
Go并发
原来并发中还有个术语叫协程,Goroutine就是协程:用户态,轻量级线程,栈KB级别
Go提倡通过 通信实现共享内存,因为通过共享内存实现通信,会发生数据竞争的问题,影响程序性能(可以用`go run -race` 检测是否有数据竞争)
缓冲channel:解决 生产or消费速度不均衡带来的执行效率问题
依赖管理没太听懂
测试
主要有单元测试、mock测试、基准测试
重要的衡量标准是覆盖率,一般达到50~60%,主要的需求就没有问题了
mock测试是利用打桩,比如用新的A函数代替原本的B函数,摆脱对指定文件的依赖来测试
基准测试主要是看程序的性能、对CPU消耗程度
Go并发
原来并发中还有个术语叫协程,Goroutine就是协程:用户态,轻量级线程,栈KB级别
Go提倡通过 通信实现共享内存,因为通过共享内存实现通信,会发生数据竞争的问题,影响程序性能(可以用`go run -race` 检测是否有数据竞争)
缓冲channel:解决 生产or消费速度不均衡带来的执行效率问题
依赖管理没太听懂
测试
主要有单元测试、mock测试、基准测试
重要的衡量标准是覆盖率,一般达到50~60%,主要的需求就没有问题了
mock测试是利用打桩,比如用新的A函数代替原本的B函数,摆脱对指定文件的依赖来测试
基准测试主要是看程序的性能、对CPU消耗程度
展开
评论
点赞
Go