一文带你了解Golang中的WaitGroups
目录什么是WaitGroups如何使用WaitGroups为什么使用WaitGroups而不是channel需要注意的一件事总结 什么是WaitGroups
WaitGroups是同步你的goroutines的一种有效方式。想象一下,你和你的家人一起驾车旅行。你的父亲在一个条形商场或快餐店停下来...[2023/3/15]
Golang使用反射的动态方法调用详解
Go是一种静态类型的语言,提供了大量的安全性和性能。静态类型的好处之一是,编译器可以在编译时捕获错误,防止在运行时发生。
在Go中,方法是用语法func(receiverName receiverType) methodName(args...) returnValues.... 在结构或类型...[2023/3/15]
GO语言学习笔记-工具链篇 Study for Go ! Chapter eleven - Tool Chain
持续更新 Go 语言学习进度中 ......
2023-03-14 GO语言学习笔记部分 已完结
GO语言学习笔记-类型篇 Study for Go! Chapter one - Type
GO语言学习笔记-表达式篇 Study for Go ! Chapter two - Expre io...[2023/3/14]
GO语言学习笔记-测试篇 Study for Go ! Chapter ten- Test
持续更新 Go 语言学习进度中 ......
GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs.com)
GO语言学习笔记-表达式篇 Study for Go ! Chapter two ...[2023/3/14]
Go语言struct要使用?tags的原因解析
目录struct tags 的使用使用反引号避免使用空格避免重复使用标准化的 tag 名称多个 tag 值struct tags 的原理struct tags 的优势常用的 struct tags 在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct ...[2023/3/14]
详解简单高效的Go?struct优化
目录前言先来看个例子内存对齐机制案例进一步分析总结 前言
结构体的定义,大家都很熟悉,但想要定义出更节省内存空间的结构体,可不是一件简单的事。
我们必须掌握了Go的结构体内存对齐机制,才能做出相应的优化(节省内存并提高性能)。
先来看个例子
下面定义两个结构体,字段都一样,只是部...[2023/3/8]
Golang实现简易的rpc调用
目录开始实现两点之间的通讯(transport)实现反射调用已注册的方法总结(自我pua) RPC(Remote Procedure Call Protocol)远程过程调用协议。 一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。...[2023/3/8]
一文吃透 Go 内置 RPC 原理
hello 大家好呀,我是小楼,这是系列文《Go底层原理剖析》的第三篇,依旧分析 Http 模块。我们今天来看 Go内置的 RPC。说起 RPC 大家想到的一般是框架,Go 作为编程语言竟然还内置了 RPC,着实让我有些吃鲸。
从一个 Demo 入手
为了快速进入状态,我们先搞一个 Dem...[2023/3/3]
Go语言中?Print?Printf和Println?的区别解析
一、Print和Println
这两个打印方式类似,只在格式上有区别,如下:
package main
import "fmt"
func main() {
fmt.Print("hello")
fmt.Print("world")
fmt.Pri...[2023/3/3]
go开源Hugo站点渲染之模板词法解析
目录正文了然于胸 - newTemplateExec时序图 词法解析 - parse 正文
Deps在准备好NewPathSpec,NewSpec,NewContentSpec,NewSourceSpec后,调用onCreate正式创建HugoSites,并在最后一步,...[2023/2/27]
go开源Hugo站点构建三步曲之集结渲染
目录A emblePageState动手实践 - Show Me the Code of Create a PageState Render 动手实践 - Show Me the Code of Publish A emble
A emble所做的事情很纯粹,那就是...[2023/2/27]
使用Golang快速构建出命令行应用程序
目录urfave/clispf13/cobra 在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工具,例如最常用的Git、Go、Docker等。
不管是做技术开发还是业务开发,都会有开发命令行程序的场景。例如如果是开发框...[2023/2/27]
golang使用JWX进行认证和加密
golang使用JWX进行认证和加密
最近看了一个名为go-auth的库,它将JWT作为HTTP cookie对用户进行验证,但这个例子中缺少了对JWT的保护,由此进行了一些针对JWX的研究。
下面描述来自golang-jwt的官方描述:
概述
JWT是一个签名的JSON对象,通常用作Oau...[2023/2/22]
golang拾遗:实现一个不可复制类型
这是golang拾遗系列的第六篇。这个系列主要用来记录一些平时不常见的知识点,偶尔也会实现些有意思的小功能,比如这篇。
golang拾遗系列目录:
golang拾遗:指针和接口
golang拾遗:为什么我们需要泛型
golang拾遗:嵌入类型
golang拾遗:内置函数len的小知识
gol...[2023/2/20]
向Rust学习Go考虑简单字符串插值特性示例解析
目录fmt.Printf 或 fmt.Sprintf 写拼装字符串业务简单字符串插值其他语言例子SwiftKotlinCRust争论矛盾点总结 fmt.Printf 或 fmt.Sprintf 写拼装字符串业务
在日常开发 Go 工...[2023/2/17]
Go语言工程实践单元测试基准测试示例详解
目录背景测试单元测试演示覆盖率依赖文件处理Mock基准测试小结 背景
测试的出现是为了避免项目中出现重大事故
测试是避免事故的最后一道屏障
测试
单元测试的覆盖率在一定程度上而言,决定了代码的质量
单元测试
通过测试单元的输出与期望值进行校对从而验证代码的正确...[2023/2/8]
教你利用Golang可选参数实现可选模式
目录从需求开始定义构造函数定义可选函数增强构造函数可选模式的优势直观清晰支持扩展参数顺序 本文讨论Golang函数可选参数及函数类型,以及如何利用可选函数类型实现可选模式。同时通过构造函数作为示例,实现强大带可选参数的构造函数,让代码更直观、灵活、支持扩展。
从需求开始
可选参数给函数传递额...[2023/1/30]
go微服务PolarisMesh源码解析服务端启动流程
目录前话前期准备正题polaris-server.yaml 认识源码组织Bootstrap功能模块启用APIServer 模块初始化数据缓存模块初始化资源鉴权模块初始化命名空间模块模块初始化服务注册发现、服务治理模块初始化配置中心模块初始化 前话
polaris-server 作为Polar...[2023/1/28]
详解如何使用Bazel构建Golang程序
目录使用Bazel构建Golang程序从头开始一个 Golang 项目将现有项目转换为 Bazel 构建密封测试(Hermetic tests) 使用Bazel构建Golang程序
在这篇简短的文章中,我们将介绍如何将 Golang 与 Bazel 构建系统结合使用。
具体来说,我们将讨论三...[2023/1/28]
(16)go-micro微服务jaeger链路追踪
目录一 jaeger链路追踪介绍什么是链路追踪:链路追踪主要功能:二 jaeger链路追踪作用三 jaeger链路追踪主要特性四 jaeger链路追踪原理图1.链路调用原理2. 一次调用链分析3.链路追踪存储与调用五 jaeger链路追踪五个重要组件六 jaeger链路追踪安装1.docker拉...[2023/1/20]
Caddy-用Go写的新一代可扩展WebServer
前几天用 Netmaker 的时候发现它用 Caddy 替换掉了 Nginx,用了后发现确实简单好用,就安利一下。
Caddy 是一个强大的、可扩展的平台,用 Go 编写,可以为你的站点、服务和应用程序提供服务。如果你是 Caddy 的新手,你服务网络的方式将会改变。
引言
大多数人使用 C...[2023/1/20]
Go经典面试题汇总(填空+判断)
目录填空题1. 【初级】声明一个整型变量i__________2. 【初级】声明一个含有10个元素的整型数组a__________3. 【初级】声明一个整型数组切片s__________4.&nbs...[2023/1/20]
Golang如何实现节假日不打扰用户?
?
1、场景
想象下以下场景,嘿嘿...!
一个iphone用户,闹钟是可以按节假日不响的!
每日新闻机器人,节假日是可以不打扰我的!
我的业务,节假日是可以...
2、思路
要实现识别节假日,大概有两种方式:
1、自己收集国家法定节假日数据,离线存储
优势:离线简单
劣势:...[2023/1/18]
Go语言学习之golang-jwt/jwt的教程分享Go语言学习之golang-jwt/jwt的教程分享
目录一、介绍二、代码实现 -对称加密 hsa(hash加密)2.1 加密生成token2.2 解密token得到原始数据三、代码实现 -非对称加密 rsa(我们这里使用rsa256)2.1 生成 rsa 私钥和公钥2.2 加密生成token2.2 解密token 一、介绍
jwt是 json w...[2023/1/16]
Golang中tinyrpc框架的源码解读详解
目录tinyrpc功能tinyrpc项目结构tinyrpc源码解读客户端和服务端构建压缩算法compre or序列化 serializer请求/响应头 header编码 codec客户端实现服务端实现总结 tinyrpc是一个高性能的基于protocol buffer的rpc框架。项目代码非常少,很...[2023/1/16]
Golang反射修改变量值
1. 前言
前面的随笔Golang反射获取变量类型和值分享了如何通过反射获取变量的类型和值,
也就是Golang反射三大定律中的前两个,即从interface{}到反射对象和从反射对象到interface{}。
这篇随笔主要分享通过反射修改各种类型变量值的方法。
2. 判断是...[2022/12/5]
go操作Kfakago操作Kfaka
目录1. Kafka介绍1.1.1. Kafka是什么1.1.2. Kafka的特点1.1.3. 常用的场景1.1.4. Kafka中包含以下基础概念1.1.5. 消息1.1.6. 消息格式2. Kafka深层介绍2.1.1. 架构介绍2.1.2. ?作流程2.1.3. 选择partition的...[2022/12/5]
goioc:一个使用 Go 写的简易的 ioc 框架
目录goioc 介绍快速上手接口介绍使用 goioc如何使用生命周期实例化获取对象结构体字段依赖注入Dispose 接口反射形式使用 goioc如何使用接口、结构体、结构体指针不会自动注入本身
goioc 介绍
goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。
支持...[2022/11/28]
Go日常开发常用第三方库和工具介绍
这里我主要将这些库分为两类:
业务开发基础工具开发
业务开发
首先是业务开发,主要包含了 web、数据库、Redis 等。
Gin ??????????
首先是 Gin,一款 HTTP 框架,使用简单、性能优秀、资料众多;你还在犹豫选择哪款框架时,那就选择它吧,基本没错。
当然和...[2022/11/28]
Go中函数的使用细节与注意事项详解Go中函数的使用细节与注意事项详解
目录细节汇总值传递和指针传递什么是重载函数类型的变量函数作为形参传入自定义数据类型返回值命名可变参数总结练习 细节汇总
函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写表示该函数...[2022/11/28]
Golang中Channel实战技巧与一些说明
目录Channel 的一些实战说明关于 close Channelclose Channel 的一些说明v, ok := <-ch 判断是否 close优雅判断是否 close 的封装for-range 读取 Channel 数据select 读写 Channel 数据Channel 的读写超...[2022/11/28]
go程序员日常开发效率神器汇总
一. 开发工具
1)sql2go用于将 sql 语句转换为 golang 的 struct. 使用 ddl 语句即可。例如对于创建表的语句: show create table xxx. 将输出的语句,直接粘贴进去就行。http: tming.cn/tool ql2go.html
2)tom...[2022/11/28]
Golang实现组合模式和装饰模式实例详解
目录组合模式component.gofile.gofolder.go组合测试装饰模式pizza.goveggieMania.gotomatoTopping.gocheeseTopping.gomain.go 本文介绍组合模式和装饰模式,golang实现两种模式有共同之处,但在具体应用场景有差异。通过...[2022/11/28]
Go高效率开发Web参数校验三种方式实例
web开发中,你肯定见到过各种各样的表单或接口数据校验:
客户端参数校验:在数据提交到服务器之前,发生在浏览器端或者app应用端,相比服务器端校验,用户体验更好,能实时反馈用户的输入校验结果。 服务器端参数校验:发生在客户端提交数据并被服务器端程序接收之后,通常服务器端校验都是发生在将数据写入...[2022/11/28]
聊聊Go里面的闭包
以前写 Java 的时候,听到前端同学谈论闭包,觉得甚是新奇,后面自己写了一小段时间 JS,虽只学到皮毛,也大概了解到闭包的概念,现在工作常用语言是 Go,很多优雅的代码中总是有闭包的身影,看来不了解个透是不可能的了,本文让我来科普(按照自己水平随便瞎扯)一下:
1、什么是闭包?
在真正讲述闭...[2022/11/21]
Go1.20?arena新特性示例详解
目录正文快速背景最新进展总结 正文
大概半年前,我写过一篇文章《Go 要违背初心吗?新提案:手动管理内存》。有兴趣了深入解的同学,可以再回顾一下。
当时我们还想着 Go 团队应该不会接纳,至少不会那么快:
懒得翻也可以看我再次道来,本文提到的提案《proposal: arena...[2022/11/19]
go并发编程sync.Cond使用场景及实现原理
目录使用场景实现原理copyCheckerWaitSignalBroadcast 使用场景
sync.Cond是go标准库提供的一个条件变量,用于控制一组goroutine在满足特定条件下被唤醒。
sync.Cond常用于一组goroutine等待,一个goroutine通知(事件发生)的场...[2022/8/31]
Go 热加载之fresh详解
正文
热加载是指可以在不重启服务的情况下,保存后即可让更改的代码生效的一种开发模式。热加载可以显著的提升开发和调试的效率,有了热加载后,说明你不用重新再编译、再执行了。
特别是涉及到效果渲染,如前端的开发中,如果每次改了代码后都要重新编译再执行,那开发效率太低了。
最完美的就是:代码改了...[2022/8/23]
golang中使用匿名结构体的方法
目录转化为map定义具名结构体定义匿名结构体 在一些项目中, 我们会使用json 来将字符串转为结构体,但是很多时候,这种结构体只会用一次,基本上只会用于反序列化, 对于这种只用到一次的结构体, 我们可以使用匿名结构体. 在gin 接收参数的时候会非常有用, 如我们将要接收的json 参数为
{...[2022/8/23]
Go语言如何高效的进行字符串拼接(6种方式对比分析)
目录前言string类型字符串拼接的6种方式及原理原生拼接方式"+"字符串格式化函数fmt.SprintfStrings.builderbytes.Bufferstrings.join切片appendBenchmark对比结论总结 前言
日常业务开发中离不开字符串的拼接操作,...[2022/8/22]
go日志库中的logrus
一、安装
go get github.com irupsen/logrus
二、使用
1、当做标准库使用
logrus实现了标准库log的方法,可以用标准库的方法用于logrus,例如
import (
log "github.com irupsen/logrus"
)
...[2022/8/22]
go语言中的json与map相互转换实现
主要是引入 "encoding/json" 包;用到的也就是其中的两个函数json.Marshal和json.Unmarshal。
1、json.Marshal
#函数定义位于GOROOT or GOPATH的 rc/encoding/json/encode.go 中
...[2022/8/16]
GO语言基本类型String和Slice,Map操作详解
目录本文大纲1、字符串StringString常用操作:获取长度和遍历字符串的strings包字符串的strconv包:2、切片Slice3、集合Map 本文大纲
本文继续学习GO语言基础知识点。
1、字符串String
String是Go语言的基本类型,在初始化后不能修改,Go字...[2022/8/1]
Go?select使用与底层原理讲解
目录1. select的使用2. 底层原理3. 数据结构4. 几种常见 casecase 1case2case3case4 1. select的使用
select 是 Go 提供的 IO 多路复用机制,可以用多个 case 同时监听多个 channl 的读写状态:
case: 可以监听 cha...[2022/8/1]
快速掌握Go 语言 HTTP 标准库的实现方法
目录HTTP clientClient 结构体初始化请求NewRequest 初始化请求Request准备 http 发送请求Transport获取空闲连接 queueForIdleConn建立连接 queueForDial等待响应http server监听处理请求Reference 本篇文章来分析...[2022/7/25]
go mock server的简易实现示例go mock server的简易实现示例
目录前言代码步骤1步骤2步骤3步骤4最终效果最后 前言
学习golang也一段时间了,看了一些书,上周又看了一本入门级的《Go语言趣学指南》,是时候检验成果了。
目的:通过读取本地mock数据,发起http请求,返回给前端,实现mock功能。
代码
整体代码只在50行左右,是一个极其...[2022/7/25]
Golang 模块引入及表格读写业务快速实现示例
目录介绍正文配置模块引入环境引入excelize库创建表格读取表格写入表格结语 介绍
在很多管理系统下都有不少让后端进行表格进行操作的业务需求,本期就带大家了解一下Golang中如何使用模块引入的,以及讲解怎么快速的使用excelize库,对表格进行读写创建的。
正文
配置模块引入环境
...[2022/7/25]
Go实现文件分片上传
Go语言在写HTTP服务程序时,会经常用到文件上传和文件下载,文件上传和文件下载都可以用http包,默认的功能基本上够用了。http包支持文件下载的断点续传和进度显示,文件上传貌似不支持断点续传,不知道是不是要web端来实现。
然后我自己配合web端实现了大文件分片上传,来完成断点续传和进度显...[2022/7/25]
go单体日志采集zincsearch方案实现
目录前言一 构架二 zinsearch 安装二 logbeat三 zincsearch 使用经验1 关于删除2 关于日期date类型3 关于检索中时间选项结语 前言
微服务中的日志采集方案ELK(EFK)已经是基本事实标准了,但是单体服务中却没有像ELK这样的成熟采集方案,这与单体性质有关,单体...[2022/7/25]
Go语言学习笔记之错误和异常详解
目录错误异常总结 错误
Go 语言通过内置的错误接口提供了非常简单的错误处理机制,Error 类型是一个接口类型。
type error interface {
Error() string
}
可以在编码中通过实现 error 接口类型来生成错误信息。
函数通常在最后的...[2022/7/25]