获得徽章 1
赞了这篇沸点
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
7月24日 打卡day10
今日学习《Go语言国内开源》:
这篇文章主要讨论了Go语言在国内的流行程度以及一些值得推崇的开源项目。作者首先指出,尽管Go语言在国内非常火,但是国内的开源项目并没有太多值得被推崇的。然后,作者从github的trending页面挑选了一些他认为有价值的Go语言项目,并进行了简单的介绍和评价。这些项目包括Yearning SQL审核平台,Cloudreve,Gorm,Beego,和TiDB。每个项目都有其独特的功能和优点,同时也存在一些需要改进的地方。总的来说,这篇文章为读者提供了一些有价值的Go语言项目的信息,对于想要了解或使用Go语言的人来说非常有帮助。
今日学习《Go语言国内开源》:
这篇文章主要讨论了Go语言在国内的流行程度以及一些值得推崇的开源项目。作者首先指出,尽管Go语言在国内非常火,但是国内的开源项目并没有太多值得被推崇的。然后,作者从github的trending页面挑选了一些他认为有价值的Go语言项目,并进行了简单的介绍和评价。这些项目包括Yearning SQL审核平台,Cloudreve,Gorm,Beego,和TiDB。每个项目都有其独特的功能和优点,同时也存在一些需要改进的地方。总的来说,这篇文章为读者提供了一些有价值的Go语言项目的信息,对于想要了解或使用Go语言的人来说非常有帮助。
展开
评论
点赞
7月23日 打卡day09
今日学习《Go微服务架构系列--gin框架》:
这篇文章是关于使用Golang进行微服务架构的教程。文章首先介绍了作者在项目重构中使用go-micro微服务架构,并用deno重写了node业务层,用go重构了Java的业务模块。接着,文章详细讲解了如何使用go-micro来做微服务,包括服务注册发现、通信、框架集成等方面。文章还介绍了如何使用gin框架,并给出了一个简单的例子。然后,文章讲解了如何改造路由,包括新建controller层、业务方法、处理路由等步骤。最后,文章介绍了如何搭建脚手架,解决规范性差、代码耦合性高、灵活性不够等问题,并给出了相关代码。文章的最后部分是关于Go设计模式之单例模式的介绍,包括最简单的单例模式、sync.Once单例模式和加锁机制的单例模式。
今日学习《Go微服务架构系列--gin框架》:
这篇文章是关于使用Golang进行微服务架构的教程。文章首先介绍了作者在项目重构中使用go-micro微服务架构,并用deno重写了node业务层,用go重构了Java的业务模块。接着,文章详细讲解了如何使用go-micro来做微服务,包括服务注册发现、通信、框架集成等方面。文章还介绍了如何使用gin框架,并给出了一个简单的例子。然后,文章讲解了如何改造路由,包括新建controller层、业务方法、处理路由等步骤。最后,文章介绍了如何搭建脚手架,解决规范性差、代码耦合性高、灵活性不够等问题,并给出了相关代码。文章的最后部分是关于Go设计模式之单例模式的介绍,包括最简单的单例模式、sync.Once单例模式和加锁机制的单例模式。
展开
评论
点赞
7月22日 打卡day08
今日学习《gin框架(2)- Viper配置管理》:
这篇文章是关于如何在Go语言的Gin框架中使用Viper处理YAML配置文件的教程。作者首先介绍了Viper的功能和特性,包括从各种格式的配置文件读取配置信息,实时监控和重新读取配置文件,从环境变量、远程配置系统、命令行参数和buffer读取配置等。然后,作者详细解释了如何安装Viper,如何分析服务需要的配置,如何编写YAML配置文件,如何定义配置的对应的结构体,如何使用Viper处理YAML配置,以及如何使用配置变量。最后,作者提出了一个问题,即如何区分线上环境和开发环境的配置。这篇文章对于学习如何在Go语言中处理配置文件非常有帮助。
今日学习《gin框架(2)- Viper配置管理》:
这篇文章是关于如何在Go语言的Gin框架中使用Viper处理YAML配置文件的教程。作者首先介绍了Viper的功能和特性,包括从各种格式的配置文件读取配置信息,实时监控和重新读取配置文件,从环境变量、远程配置系统、命令行参数和buffer读取配置等。然后,作者详细解释了如何安装Viper,如何分析服务需要的配置,如何编写YAML配置文件,如何定义配置的对应的结构体,如何使用Viper处理YAML配置,以及如何使用配置变量。最后,作者提出了一个问题,即如何区分线上环境和开发环境的配置。这篇文章对于学习如何在Go语言中处理配置文件非常有帮助。
展开
评论
点赞
7月21日 打卡day07
今日学习《发现了一款神仙级别的Go框架:GoFrame》:
GoFrame是一个可以协助Go开发的Web框架,设计思想借鉴Laravel框架,对于从PHP转Go的开发者使用上比较友好。
作者介绍了GoFrame的如下特点:
模块化设计,组件丰富
数据库ORM方便使用,类似于Laravel Eloquent
对象管理相关的类型定义模仿PHP,减少PHP转Go的学习成本
约定大于配置的设计思想
对开发者而言,理解GoFrame的设计思想和使用技巧比仅仅了解特性更重要。
对不同程度的Go开发者而言:
已有Go基础的开发者,可以先简单了解框架,然后重点学习核心组件,特别是数据库ORM
无Go基础的开发者,需要先学习Go语法基础,然后再使用GoFrame
作者还提醒在阅读文档时要注意查看当前文档的版本。
今日学习《发现了一款神仙级别的Go框架:GoFrame》:
GoFrame是一个可以协助Go开发的Web框架,设计思想借鉴Laravel框架,对于从PHP转Go的开发者使用上比较友好。
作者介绍了GoFrame的如下特点:
模块化设计,组件丰富
数据库ORM方便使用,类似于Laravel Eloquent
对象管理相关的类型定义模仿PHP,减少PHP转Go的学习成本
约定大于配置的设计思想
对开发者而言,理解GoFrame的设计思想和使用技巧比仅仅了解特性更重要。
对不同程度的Go开发者而言:
已有Go基础的开发者,可以先简单了解框架,然后重点学习核心组件,特别是数据库ORM
无Go基础的开发者,需要先学习Go语法基础,然后再使用GoFrame
作者还提醒在阅读文档时要注意查看当前文档的版本。
展开
评论
点赞
7月19日 打卡day06
今日学习《Golang 并发编程实战——协程、管道、select用法》:
文章首先介绍了goroutine的基本用法和使用chan来实现多个goroutine之间的通信,然后通过select关键字来处理超时等问题。文章中通过实例详细解释了如何使用goroutine和chan来实现并发编程,包括如何使用chan来实现多个goroutine之间的通信,如何使用select来处理超时等问题,以及如何模拟Google搜索服务等。文章的最后,作者希望这些高级并发编程技巧能给读者带来帮助,并引发读者的思考。
今日学习《Golang 并发编程实战——协程、管道、select用法》:
文章首先介绍了goroutine的基本用法和使用chan来实现多个goroutine之间的通信,然后通过select关键字来处理超时等问题。文章中通过实例详细解释了如何使用goroutine和chan来实现并发编程,包括如何使用chan来实现多个goroutine之间的通信,如何使用select来处理超时等问题,以及如何模拟Google搜索服务等。文章的最后,作者希望这些高级并发编程技巧能给读者带来帮助,并引发读者的思考。
展开
评论
点赞
赞了这篇文章
7月17日 打卡day05
今日学习《gRPC负载均衡》:
这篇文章主要介绍了如何在 Golang 中实现 gRPC 的负载均衡。首先,作者阐述了负载均衡的三种解决方案:集中式负载均衡(Proxy Model)、进程内负载均衡(Balancing-aware Client)和独立负载均衡进程(External Load Balancing Service)。接着,作者详细介绍了如何安装和使用 gRPC,以及如何使用 protobuf。此外,文章还列出了六种负载均衡算法,并通过一个实例展示了如何实现随机负载均衡。最后,作者展示了客户端不断随机访问三个服务端的效果,以及在关闭所有服务端后,客户端会进入阻塞状态的情况。
今日学习《gRPC负载均衡》:
这篇文章主要介绍了如何在 Golang 中实现 gRPC 的负载均衡。首先,作者阐述了负载均衡的三种解决方案:集中式负载均衡(Proxy Model)、进程内负载均衡(Balancing-aware Client)和独立负载均衡进程(External Load Balancing Service)。接着,作者详细介绍了如何安装和使用 gRPC,以及如何使用 protobuf。此外,文章还列出了六种负载均衡算法,并通过一个实例展示了如何实现随机负载均衡。最后,作者展示了客户端不断随机访问三个服务端的效果,以及在关闭所有服务端后,客户端会进入阻塞状态的情况。
展开
评论
点赞
7月11日 打卡day04
今日学习《Golang 单元测试之路漫漫》:
Golang 项目的结构应该包含测试文件,测试文件以*_test.go命名,和相应的业务逻辑文件同目录。例如calc.go对应calc_test.go。
测试用例使用testing包,格式为func TestName(t *testing.T)。如果测试不通过则使用t.Errorf报错。
可以使用go test命令执行测试用例。go test会自动找到*_test.go文件并执行。
go test有多种参数:
-bench 用于执行性能测试
-cover 用于查看覆盖率
-run 用于仅运行匹配的函数测试
-v 显示测试详情
可以通过go test fileName直接执行某个文件中的测试用例。使用-v参数可以显示更详细的信息。
今日学习《Golang 单元测试之路漫漫》:
Golang 项目的结构应该包含测试文件,测试文件以*_test.go命名,和相应的业务逻辑文件同目录。例如calc.go对应calc_test.go。
测试用例使用testing包,格式为func TestName(t *testing.T)。如果测试不通过则使用t.Errorf报错。
可以使用go test命令执行测试用例。go test会自动找到*_test.go文件并执行。
go test有多种参数:
-bench 用于执行性能测试
-cover 用于查看覆盖率
-run 用于仅运行匹配的函数测试
-v 显示测试详情
可以通过go test fileName直接执行某个文件中的测试用例。使用-v参数可以显示更详细的信息。
展开
评论
点赞
赞了这篇文章
赞了这篇文章
赞了这篇文章
6月26日 打卡day03
今日学习《Golang 零值、空值与空结构》:
文章主要讨论了Golang中的三个概念:
1. 零值(The zero value):当声明一个变量但不立即初始化时, Golang会自动为其赋予一个默认初始值,这称为零值。比如布尔类型为false,数值类型为0,字符串为空字符串""。引用类型如切片、映射、指针等的零值均为nil。
2. nil:nil是一个预声明的标识符,代表引用类型(指针、接口、函数、映射、切片和通道)的零值。nil不是一个值,它只表示这些引用类型当前没有指向任何对象。
3. 空结构(The empty struct):空结构是不含任何字段的结构类型,它占用0个字节的存储空间。空结构可用于传递信号、添加字段占位等。
这三个概念在Golang中比较基础和重要,理解它们有助于编写更优雅和健壮的代码。
今日学习《Golang 零值、空值与空结构》:
文章主要讨论了Golang中的三个概念:
1. 零值(The zero value):当声明一个变量但不立即初始化时, Golang会自动为其赋予一个默认初始值,这称为零值。比如布尔类型为false,数值类型为0,字符串为空字符串""。引用类型如切片、映射、指针等的零值均为nil。
2. nil:nil是一个预声明的标识符,代表引用类型(指针、接口、函数、映射、切片和通道)的零值。nil不是一个值,它只表示这些引用类型当前没有指向任何对象。
3. 空结构(The empty struct):空结构是不含任何字段的结构类型,它占用0个字节的存储空间。空结构可用于传递信号、添加字段占位等。
这三个概念在Golang中比较基础和重要,理解它们有助于编写更优雅和健壮的代码。
展开
评论
点赞
6月20日 打卡day02
今日学习《Go Web开发入门指南<前半>》:
首先学习原生的http包,创建一个原生的Web服务器。然后改进路由系统,使用第三方包gin,对原生服务器进行升级。
第一步,引入gin等第三方包作为项目依赖。
第二步,使用gin创建路由引擎,gin默认带有两个中间件Logger和Recovery,用于日志和恢复panic。
第三步,使用gin的路由系统配置路由,gin支持GET, POST, PUT, PATCH, DELETE, OPTIONS等请求方法,并使用gin.Context绑定URL模板中的参数。
第四步,使用gin.Engine.Run()启动Web服务器。
第五步,学习gin的参数解析和绑定,使用Context.Params绑定路径中的参数,使用Context.**Bind()
方法绑定QUERYSTRING, FORM, HEADER等参数。Context.Param()获取单个参数,使用type assertion转化参数类型。
通过对Go Web开发入门指南的学习,了解了原生Web服务器的工作流程,学会使用gin第三方框架简化Web开发,掌握了gin的路由,中间件,参数解析等概念和用法。
今日学习《Go Web开发入门指南<前半>》:
首先学习原生的http包,创建一个原生的Web服务器。然后改进路由系统,使用第三方包gin,对原生服务器进行升级。
第一步,引入gin等第三方包作为项目依赖。
第二步,使用gin创建路由引擎,gin默认带有两个中间件Logger和Recovery,用于日志和恢复panic。
第三步,使用gin的路由系统配置路由,gin支持GET, POST, PUT, PATCH, DELETE, OPTIONS等请求方法,并使用gin.Context绑定URL模板中的参数。
第四步,使用gin.Engine.Run()启动Web服务器。
第五步,学习gin的参数解析和绑定,使用Context.Params绑定路径中的参数,使用Context.**Bind()
方法绑定QUERYSTRING, FORM, HEADER等参数。Context.Param()获取单个参数,使用type assertion转化参数类型。
通过对Go Web开发入门指南的学习,了解了原生Web服务器的工作流程,学会使用gin第三方框架简化Web开发,掌握了gin的路由,中间件,参数解析等概念和用法。
展开
评论
点赞
![[红脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_63.c32f5b5.png)