一文详解golang延时任务的实现
目录前言你可以收获正文思维导图实现思路步步为营1、数据流2、数据结构3、初始化延时任务对象4、生产者推送任务5、任务推送信号的处理6、生产者删除任务7、任务删除信号的处理8、任务执行信号的处理9、完整代码头脑风暴小结 前言 在实际业务场景中,我们有时候会碰到一些延时的需求:例如,在电商平台,...[2023/3/22]
Golang实现简单http服务器的示例详解
目录一、基本描述二 、具体方法2.1 连接的建立2.2 http请求解析2.3 http请求处理2.4 http请求响应三、完整示例 一、基本描述 完成一个http请求的处理和响应,主要有以下几个步骤: 监听端口建立连接解析http请求处理请求返回http响应 完成上面几个步骤,便能够实现...[2023/3/22]
简单聊聊Go?for?range中容易踩的坑
目录前言1. for+传值2. for+传址3.for+闭包4. for+goroutine总结 前言 为了让大家更好的理解本期知识点,先介绍以下几个知识点:线性结构、非线性结构、循环、迭代、遍历、递归。 线性结构:数组、队列 非线性结构:树、图 循环(loop):最基础的概念,所有...[2023/3/22]
优雅管理Go?Project生命周期
目录写在前面 一、什么时候要注意管理应用的生命周期?二、我们是如何做的(1)利用面向对象的方式来管理应用的生命周期(2)处理start(3)处理stop1、什么时候才去Stop?2、Dousheng的应用场景3、代码实现三、什么是优雅关闭(1)没有优雅关闭(2)有了优雅关闭 写在前面&nb...[2023/3/22]
Go Slice扩容的这些坑你踩过哪些
目录前言知识重温案例1:传值+未扩容案例2:传值+扩容案例3:传址+不关心扩容总结 前言 之前对Go语言for循环做了一次踩坑经验分享《Go for range 一不小心就掉坑里了》,大家直呼有用。 今天对切片Slice的append操作也做一次踩坑经验分享,希望对朋友们有所帮助,有用请三连...[2023/3/22]
最近写了一个demo,想看看java和go语言是怎么写的
最近写了一个demo:demo的github地址 一. 简单介绍 1. Server端 它是一个WebApi服务,把它当成一个黑盒就行了。 2. MiddleServer端 是重点,它是一个WebApi服务,包含一个GetValues接口和一个Query2接口。 Query2接口是一个简单...[2023/3/17]
浅谈Go语言不提供隐式数字转换的原因
什么是隐式转换 在 C 语言中,隐式数字转换是指在某些情况下,编译器会自动将一个数据类型转换为另一个数据类型,而不需要明确地进行类型转换操作。 以下是一些常见的隐式数字转换规则: 当一个整数类型和一个浮点数类型进行运算时,整数类型会被自动转换为浮点数类型。 当一个表达式中包含两种不同...[2023/3/15]
一文带你了解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的教程分享
目录一、介绍二、代码实现 -对称加密 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操作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中函数的使用细节与注意事项详解
目录细节汇总值传递和指针传递什么是重载函数类型的变量函数作为形参传入自定义数据类型返回值命名可变参数总结练习 细节汇总 函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写表示该函数...[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]