随笔分类 -  Golang

摘要:1. go语言未提供获取指定区间范围内的随机数方法,只有一个参数获取(0, n)的随机数。 2. 可根据此方法获取指定区间随机数,先随机0到(m-n),再用加 n 的方式解决 例:[5, 10], 先生成[0,5], 再加5 package main import ( "fmt" "math/ran 阅读全文
posted @ 2023-05-23 19:32 李若盛开 阅读(759) 评论(0) 推荐(0)
摘要:问题:修改了一次,而执行了两次这个函数 解决方案 把配置文件进行md5,保存其md5值。在调用这个函数时,再次读取文件进行md5。两者比对,如果相等就不执行下面的逻辑。 这样就解决了,一模一样的配置文件,保存多次,不会执行后续的逻辑。 但是,杜绝了大部分的场景,比如修改了一次,保存了两次,依旧会有看 阅读全文
posted @ 2023-05-20 23:15 李若盛开 阅读(301) 评论(0) 推荐(0)
摘要:代码含有viper独立方式和go embed方式 package main import ( "bytes" "embed" "fmt" "time" "github.com/spf13/viper" ) //go:embed config.yaml var f []byte func main() 阅读全文
posted @ 2023-05-18 23:27 李若盛开 阅读(238) 评论(0) 推荐(0)
摘要:简介 在Go语言应用程序中包含任何文件、目录的内容,都打包到生成的Go语言应用程序中,部署时直接执行一个二进制文件就可以,不用再包含一些静态文件,因为它们已经被打包到生成的应用程序。 基本用法 通过//go:embed指令即可 package main import ( "embed" "fmt" 阅读全文
posted @ 2023-05-18 22:51 李若盛开 阅读(867) 评论(0) 推荐(0)
摘要:一、介绍 github.com/spf13/viper Viper是一个方便Go语言应用程序处理配置信息的库,可以处理多种格式的配置。其支持的特性有: 设置默认值 从JSON、TOML、YAML、HCL和Java properties文件中读取配置数据 可以监视配置文件的变动、重新读取配置文件【热更 阅读全文
posted @ 2023-05-18 12:13 李若盛开 阅读(827) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/qq_34801169/article/details/114374827 一、幂等性: 幂等性,是分布式环境下的一个常见问题,一般是指我们在进行多次操作时,所得到的结果是一样的,即多次运算结果是一致的。也就是说,用户对于同一操作,无论是发起一次请求还是多 阅读全文
posted @ 2023-05-10 21:02 李若盛开 阅读(226) 评论(0) 推荐(0)
摘要:string:可以是一个空字符串,但不能为nil,使用时比较安全 (字符串类型) *string:可以为nil,使用的时候需要判断是否有值(字符串指针类型) 注意: Go 对每个原始数据类型都有默认值。int -> 0, string -> "", bool -> false 同样。所以如果需要添加 阅读全文
posted @ 2023-05-08 16:12 李若盛开 阅读(465) 评论(0) 推荐(0)
摘要:在go中,如果服务端开启了https的SSL/TLS证书,这时客户端用http.get()方法访问就会报错: tls: failed to verify certificate: x509: certificate has expired or is not yet valid: 解决方案: 1)服 阅读全文
posted @ 2023-05-04 11:36 李若盛开 阅读(186) 评论(0) 推荐(0)
摘要:二者区别: break:退出所有的循环 break用于完全结束一个循环,跳出循环体执行循环后面的语句。 continue:跳出当前的一次循环 continue只是终止本次循环剩下的语句,接着执行下一次循环。 共同点: break和continue都是用来控制循环结构的,主要是停止循环。 阅读全文
posted @ 2023-04-28 20:12 李若盛开 阅读(183) 评论(0) 推荐(0)
摘要:获取时间对象 package main import ( "fmt" "time" ) // 24小时制 const LAYOUT = "2006-01-02 15:04:05" //只能用这个日期,据说这是golang的诞生时间 func main() { // 获取当前日期 now := tim 阅读全文
posted @ 2023-04-26 09:22 李若盛开 阅读(338) 评论(0) 推荐(0)
摘要:package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) type Product struct { gorm.Model Code string Price uint } func main() { dsn := "ro 阅读全文
posted @ 2023-04-17 16:13 李若盛开 阅读(29) 评论(0) 推荐(0)
摘要:函数式选项模式(Functional Options Pattern) 函数式选项模式是一种在 Go 中构造结构体的模式,它通过设计一组非常有表现力和灵活的 API 来帮助配置和初始化结构体。 优缺点 优点: (1)支持传递多个参数并且在参数发生变化时保持兼容性; (2)支持任意顺序传递参数; (3 阅读全文
posted @ 2023-04-16 17:08 李若盛开 阅读(309) 评论(0) 推荐(0)
摘要:函数式选项模式(Functional Options Pattern) Option模式的专业术语为:Functional Options Pattern(函数式选项模式)Option模式为golang的开发者提供了将一个函数的参数设置为可选的功能,也就是说可以选择参数中的某几个,并且可以按任意顺序 阅读全文
posted @ 2023-04-16 16:53 李若盛开 阅读(122) 评论(0) 推荐(0)
摘要:1)安装chocolatey: Windows PowerShell 使用管理员身份 运行 官网下载:https://chocolatey.org/install Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.Servic 阅读全文
posted @ 2022-09-16 16:30 李若盛开 阅读(523) 评论(0) 推荐(0)
摘要:区分类型别名与类型定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定:TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类型,就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本 阅读全文
posted @ 2022-09-16 12:56 李若盛开 阅读(206) 评论(0) 推荐(0)
摘要:核心架构:[Gin 应用] (Go暴露/metrics端点)-> [Prometheus] (抓取/存储) -> [Grafana] (可视化) 第一阶段:Gin 应用开发(指标暴露) Go服务代码: package main import ( "net/http" "time" "github.c 阅读全文
posted @ 2022-09-13 23:30 李若盛开 阅读(63) 评论(0) 推荐(0)
摘要:底层结构 使用哈希表作为底层实现 一个哈希表里可以有多个哈希表节点,也叫bucket(哈希桶) 每个bucket就保存了map中的一个或一组键值对 哈希冲突 当有两个或以上数量的键被哈希到了同一个bucket时,就称这些键发生了冲突 Go使用链地址法来解决键冲突【具体操作就是插入key到map中时, 阅读全文
posted @ 2022-05-13 11:30 李若盛开 阅读(87) 评论(0) 推荐(0)
摘要:函数和方法是我们迈向代码复用、多人协作开发的第一步。通过函数,可以把开发任务分解成一个个小的单元,这些小单元可以被其他单元复用,进而提高开发效率、降低代码重合度。再加上现成的函数已经被充分测试和使用过,所以其他函数在使用这个函数时也更安全,比你自己重新写一个相似功能的函数 Bug 率更低。 这节课, 阅读全文
posted @ 2022-05-07 18:08 李若盛开 阅读(201) 评论(0) 推荐(0)
摘要:代码: // 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" 阅读全文
posted @ 2022-05-06 23:53 李若盛开 阅读(631) 评论(0) 推荐(0)
摘要:之前咱们学习过原生的Go连接MYSQL的方法,使用Go自带的"database/sql"数据库连接api,"github.com/go-sql-driver/mysql"MYSQL驱动,通过比较原生的写法去写sql和处理事务。目前开源界也有很多封装好的orm操作框架,帮我们简省一些重复的操作,提高代 阅读全文
posted @ 2022-04-30 19:49 李若盛开 阅读(1471) 评论(0) 推荐(0)