获得徽章 0
#青训营 x 字节后端训练营# day14
RPC 是远程过程调用的缩写(Remote Procedure Call),是分布式系统中不同节点间流行的通信方式; Protobuf 支持多种不同的语言(甚至不支持的语言也可以扩展支持),其本身特性也非常方便描述服务的接口(也就是方法列表),因此非常适合作为 RPC 世界的接口交流语言
展开
评论
#青训营 x 字节后端训练营# day13
text/template和html/template等模板包,提供了一个将变量值填充到一个文本或HTML格式的模板的机制,可以将格式化代码分离出来以便更安全地修改
评论
#青训营 x 字节后端训练营# day12
JSON是对JavaScript中各种类型的值——字符串、数字、布尔值和对象——Unicode本文编码。它可以用有效可读的方式表示第三章的基础数据类型和本章的数组、slice、结构体和map等聚合数据类型
评论
#青训营 x 字节后端训练营# day11
Gin 特性
快速:路由不使用反射,基于Radix树,内存占用少。
中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的 Koa 框架很像。中间件机制也极大地提高了框架的可扩展性。
异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
JSON:Gin可以解析并验证请求的JSON。这个特性对Restful API的开发尤其有用。
路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
渲染内置:原生支持JSON,XML和HTML的渲染
展开
评论
#青训营 x 字节后端训练营# day10
瀑布模型(Waterfall Model)最早强调软件或系统开发应有完整之周期,且必须完整的经历周期之每一开发阶段,并系统化的考量分析与设计的技术、时间与资源之投入等。
评论
#青训营 x 字节后端训练营# day9
无论我们是使用接收者类型的值来调用这个方法,还是使用接收者类型值的指针来调用这个 方法,编译器都会正确地引用或者解引用对应的值
如果通过接口类型的值调用方法,规则有很大不同
- 使用指针作为接收者声明的方法,只能在接口类型的值是一个指针的时 候被调用
- 使用值作为接收者声明的方法,在接口类型的值为值或者指针时,都可以被调用
展开
评论
#青训营 x 字节后端训练营# day8
duck type——如果它叫起来像鸭子,那它可能就是只鸭子
如果一个类型实现了一个接口的所有方法,那么这个类型的实 例就可以存储在这个接口类型的实例中,不需要额外声明
评论
#青训营 x 字节后端训练营# day7
golang语法最后一节,读文件
使用绝对路径:
将文件路径作为命令行参数:导入flag包,flag.String(flag名字,默认值,描述)
将文件与可执行文件绑定在一起:导入embed包,使用//go:embed xxx读取xxx的内容并将xxx赋给下边的变量(导入包时用_"")
展开
评论
#青训营 x 字节后端训练营# day6
【一阶函数】允许函数被赋值给变量
匿名函数:可以赋给函数变量,也可以直接调用,可以传参
定义函数类型
高阶函数:满足 作为参数传递给其他函数,或作为其他函数的返回值
闭包:访问 在函数体外部定义的变量 的匿名函数,每个闭包都和它自己周围的变量绑定
展开
评论
关注了标签 Go Go
#青训营 x 字节后端训练营# day5
对于程序中出现的大多数异常情况,errors就足够了,但也有一些情况,程序在出现异常情况后无法继续执行,这时,我们使用panic来提前终止程序
- 当函数遇到panic时,执行将停止,所有defer函数都将执行,然后控制返回到caller
如果存在defer调用,则执行defer调用后再返回控制到其调用方,直到到达顶级调用方再打印panic
- 这个过程一直持续到当前goroutine的所有函数都返回,此时程序打印出panic信息和stack trace信息,最后终止

- 可以使用recover重新控制panic程序
只有在defer函数内部调用时,recover才有效
通过恢复正常执行来停止panic序列,并检索传递给panic函数调用的错误消息
如果在deferred函数之外调用recover,它将不会停止panic序列
展开
评论
#青训营 x 字节后端训练营# day4
Go不是一种纯粹的面向对象的编程语言
Go用Structs 代替 Classes
用New() 代替 构造函数
用Composition 代替 继承,通过嵌入结构实现,当嵌入切片时不允许匿名
Go中的多态通过接口实现,当一个接口被不同类型实现时,根据接口变量的实际类型调用对应类型实现的方法
展开
评论
#青训营 x 字节后端训练营# day3
Go并发
原来并发中还有个术语叫协程,Goroutine就是协程:用户态,轻量级线程,栈KB级别
Go提倡通过 通信实现共享内存,因为通过共享内存实现通信,会发生数据竞争的问题,影响程序性能(可以用`go run -race` 检测是否有数据竞争)
缓冲channel:解决 生产or消费速度不均衡带来的执行效率问题



依赖管理没太听懂


测试
主要有单元测试、mock测试、基准测试
重要的衡量标准是覆盖率,一般达到50~60%,主要的需求就没有问题了
mock测试是利用打桩,比如用新的A函数代替原本的B函数,摆脱对指定文件的依赖来测试
基准测试主要是看程序的性能、对CPU消耗程度
展开
评论
#青训营 x 字节后端训练营#
打卡02day
今天课程的第二个(因为第三个看不懂)案例:在线字典,比较有意思,梳理一下大概流程
1)首先去翻译网站抓包,network->从下往上找请求是post的dict,复制json代码
2)然后去自动生成对应的go代码,现在这个代码可以让我们发出请求,但它是固定的,我们借助json处理的方法,创建和json结构对应的结构体,利用序列化,让变量发送http请求
3)请求后会收到相应,接下来要解析响应体,还是去自动生成代码。现在可以定义响应变量打印响应体,修改代码从命令行接收参数,打印其发音,中文意思即可
展开
1
#青训营 x 字节后端训练营#

第一天,原来结营证书还得要参加打卡
学习资料:golangbot
今天学到并发了,并行性并不总是有更快的执行时间,因为并行运行的组件可能需要彼此通信。例如,在我们的浏览器的情况下,当文件下载完成时,这应该传达给用户,比如使用弹出窗口。这种通信发生在 负责下载 的组件和 负责呈现UI 的组件之间。这种通信开销在并发系统中很低;若组件在多核中并行运行的情况下,这种通信开销很高
在Go语言中,并发是通过Goroutines和channels来处理的
展开
评论