获得徽章 0
- #青训营 x 字节后端训练营# 组合模式的概念:
一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成。
并发组合模式的概念:
一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成,子对象即可被串行执行,也可被并发执行
并发组合模式的优势:
原本串行的业务(存在阻塞的部分,比如网络IO等)可以被并发执行,利用多核优势提升性能
「并发组合模式」的核心还是Component组件接口
相对于「组合模式」,引入并发之后需要着重关注如下几点:
并发子组件需要设置超时时间:防止子组件执行时间过长,解决方案关键字context.WithTimeout
区分普通组件和并发组件:合成复用基础组件,封装为并发基础组件
拥有并发子组件的父组件需要等待并发子组件执行完毕(包含超时),解决方案关键字sync.WaitGroup
并发子组件执行自身业务逻辑是需检测超时:防止子组件内部执行业务逻辑时间过长,解决方案关键字select和<-ctx.Done()展开评论点赞 - #青训营 x 字节后端训练营# 2023年6月3日打卡 go test 命令,这个命令会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。
性能测试系统可以给出代码的性能数据,帮助测试者分析性能问题
go test 参数说明:
-bench regexp 执行相应的 benchmarks,例如:-bench=.
-cover 可以查看覆盖率
-run regexp 只运行 regexp 匹配的函数,例如:-run Array 那么就执行包含有 Array 开头的函数,该参数支持通配符 *,和部分正则表达式,例如 ^、$
-v 显示测试的详细信息展开评论点赞 - #青训营 x 字节后端训练营# 2023年6月1日打卡 为Go配置JSON JSON,即JavaScript对象符号,是一种用于存储、发送和接收信息的流行文本格式。在Go中读取JSON文件,我们将使用ioutil包中的ReadFile 来读取JSON文件并打印数据。在Go结构中解码JSON,不能直接对JSON数据执行Go操作。相反,您必须将JSON数据映射到Go结构中,使其能够执行其他操作。
package jsonGo中提供了Unmarshal 函数,帮助我们将数据解析为结构体。从Go结构中编码JSON
我们还想从Go应用程序中写入JSON数据,因此让我们将创建的结构转换为JSON数据。Go 的package json 提供了Marshal 函数来帮助将结构编码为 JSON 数据。Marshal 需要一个接口,我们将从中编码JSON数据。让我们把我们的User 对象编码成JSON。展开评论点赞 - #青训营 x 字节后端训练营# 5月26打卡 学习了解GoFrame GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame不是一款WEB/RPC框架,而是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。展开评论点赞
- #青训营 x 字节后端训练营# 负载均衡三种解决方案
构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:
1、集中式LB(Proxy Model)
2、进程内LB(Balancing-aware Client)
3、独立 LB 进程(External Load Balancing Service)
6种负载均衡算法
1、轮询法
2、随机法
3、源地址哈希法
4、加权轮询法
5、加权随机法
6、最小连接数法展开评论点赞 - #青训营 x 字节后端训练营# go语言中使用高级并发技巧之使用select关键字来处理超时
select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。
select 随机执行一个可运行的 case。如果没有 case 可运行,那么会执行 default 里的操作,如果没有 default,那么它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。展开评论点赞 - #青训营 x 字节后端训练营# 5月14打卡 完成go语言基础课程 学习了go的基础语法 从变量到语句到函数到一些JSON操作等等 然后做了三个小项目 猜谜游戏 在线词典 Socket代理 根据课后作业在此基础上做些修改 下一步计划 完成go进阶课程 继续看入门和实践书籍评论点赞
- #青训营 x 字节后端训练营# 5月12打卡,学习了解go语言 编辑器我选vs code 制定接下来的计划:完成训练营课程,看go语言优质文章,自己找本入门书籍观看。今天看一篇go语言包的导入与导出,导入关键字import,在 Go 中,如果一个名字以大写字母开头,那么它就是已导出的,math.Pi而不是math.pi评论点赞