掘友等级
获得徽章 0
什么是「并发组合模式」?
组合模式的概念:
一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成。
并发组合模式的概念:
一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成,子对象即可被串行执行,也可被并发执行
并发组合模式的优势:
原本串行的业务(存在阻塞的部分,比如网络IO等)可以被并发执行,利用多核优势提升性能。
使用 Go 语言的小伙伴们应该也对 Go语言官网 被墙感到苦恼,很多文档和第三方包还得通过一些第三方渠道获得;尤其是 golang.org/x 使用广泛,但是被墙了。。。
Go 在 1.11 版本中放出了 mod 管理机制,在涉及到 第三方库 和 第三方库里用 golang.org/x 的时候,真是让人不爽。。。
下面来介绍一下 GOPROXY 方式去正常使用这些工具。
GORM介绍和快速入门
功能概览
全功能ORM(无限接近)
关联(Has One, Has Many, Belongs To, Many To Many, 多态)
钩子函数Hook(在创建/保存/更新/删除/查找之前或之后)
预加载
事务
复合主键
SQL 生成器
数据库自动迁移
自定义日志
可扩展性, 可基于 GORM 回调编写插件
所有功能都被测试覆盖
开发者友好
1.1职责链模式
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
001. HTTP 报文结构是怎样的?
对于 TCP 而言,在传输的时候分为两个部分:TCP头和数据部分。
而 HTTP 类似,也是header + body的结构,具体而言:
复制代码
起始行 + 头部 + 空行 + 实体
由于 http 请求报文和响应报文是有一定区别,因此我们分开介绍。
短路运算
Javascript 的逻辑或 || 的短路运算有时候可以用来代替一些比较简单的 if else
逻辑或 || 的短路运算:若左边能转成true,返回左边式子的值,反之返回右边式子的值。
Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。它支持以下特性:
• 设置默认值
• 从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息
• 实时监控和重新读取配置文件(可选)
• 从环境变量中读取
• 从远程配置系统(etcd或Consul)读取并监控配置变化
• 从命令行参数读取配置
• 从buffer读取配置
• 显式配置值
安装
我们都知道,在golang中需要使用一些驱动包来对指定数据库进行操作,比如MySQL需要使用github.com/go-sql-driver/mysql库,而Sqlite需要使用github.com/mattn/go-sqlite3库来支持,不过好在gorm框架中对各个驱动包进行了简单包装,可以让我们在写程序时可以更方便的管理驱动库.
go test 命令介绍
这里我们用到了 go test 命令,这个命令会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。
性能测试系统可以给出代码的性能数据,帮助测试者分析性能问题。
go test 参数说明:
-bench regexp 执行相应的 benchmarks,例如:-bench=.
-cover 可以查看覆盖率
-run regexp 只运行 regexp 匹配的函数,例如:-run Array 那么就执行包含有 Array 开头的函数,该参数支持通配符 *,和部分正则表达式,例如 ^、$
-v 显示测试的详细信息
下一页