![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go基础案例
文章平均质量分 63
比猪聪明
这个作者很懒,什么都没留下…
展开
-
Go 使用sync.Mutex或sync.RWMutex进行并发安全访问
使用RWMutex的时候,一旦调用了Lock方法,就不能再把该锁复制到其他地方使用,否则可能会出现各种问题。这是由于锁的状态(被哪个协程持有,是否已经被锁定等)是存储在RWMutex的结构体中,如果复制了RWMutex,那么复制后的RWMutex就会有一个全新的状态,锁的行为就会变得不可预测。sync.RWMutex是Go语言提供的一个基础同步原语,它是Reader/Writer Mutual Exclusion Lock的缩写,通常被称为"读写锁"。原创 2024-06-21 00:20:38 · 362 阅读 · 0 评论 -
Go 发送邮件的两种方式
【代码】Go 发送邮件的两种方式。原创 2024-06-05 10:49:14 · 182 阅读 · 0 评论 -
Go 文件压缩解压
在Go语言中,archive/zip包提供了创建、读取和解压缩ZIP格式文件的功能。原创 2024-06-05 10:38:54 · 311 阅读 · 0 评论 -
Go 使用Base64Captcha生成数字字母验证码实现安全校验
Base64Captcha可以在服务端生成验证码,以base64的格式返回。原创 2024-06-04 15:35:45 · 314 阅读 · 1 评论 -
Go 线程同步
通常在 Go 语言中有两种方法可以用来做线程同步sync.Condchannelchannel 的很好理解,当我们从一个 channel 中接收数据的时候,如果里面没有数据,那我们直接就阻塞在那里了。在 Go 语言中,如果你尝试在已经持有某个锁(例如sync.Mutex或)的情况下再次获取这个锁,这种行为被称为递归锁定或重入锁定。Go 的标准库中的sync.Mutex是不可递归的,这意味着你不能在已经持有该锁的 goroutine 中再次调用Lock()方法。如果尝试这样做,程序将导致死锁,因为。原创 2024-06-03 17:40:01 · 654 阅读 · 0 评论 -
Go Go-Simple-Mail包进行批量SMTP邮件发送
包提供了一种简便的方式来处理和发送邮件。这个包支持保持活动连接、TLS和SSL加密协议,非常适合批量SMTP邮件发送需求。原创 2024-06-03 12:38:30 · 393 阅读 · 0 评论 -
Go 雪花算法生成唯一ID(Snowflake)&分布式
实例时,你需要为每个节点配置一个不同的工作节点ID。这个ID通常在节点启动时配置,并在节点的整个生命周期内保持不变。:尽管雪花算法是线程安全的,可以在同一节点内被多个 Goroutine 安全地调用,但不同节点之间不应该共享同一个。:每个节点(或服务实例)都应该有一个唯一的工作节点ID(worker ID)。在使用 Go 语言实现的雪花算法(Snowflake)时,每个分布式系统中的节点通常都会有一个独立的。实例,并为其分配一个唯一的工作节点ID。实例会根据节点的配置生成唯一的ID。原创 2024-05-30 17:08:39 · 610 阅读 · 0 评论 -
Go 优雅的爬虫框架 - Colly
Colly 是一款用 Go 语言编写的优雅网络爬虫框架,速度快、灵活且易于使用配置可以写在里面,也可以写在外面。原创 2024-05-30 16:11:38 · 1390 阅读 · 0 评论 -
Go 错误日志处理
在编写Go代码时,请记住要么返回错误值,要么输出日志,不要两者都做。通过合理地处理错误,我们可以编写出更可靠、更易于调试的代码。原创 2024-05-28 17:15:54 · 461 阅读 · 0 评论 -
Go 超时退出
通过函数创建一个超时通道,当超时发生时,通道会发送一个信号。结合select语句,可以在超时时退出程序。原创 2024-05-28 16:57:01 · 286 阅读 · 0 评论 -
Go 高级日志记录库&集成Gin框架
将错误日志同时输出到文件首先,你需要定义一个实现了接口的结构体。Levels(), 和可选的。import ("os"// FileHook 将错误日志写入文件// NewFileHook 创建一个新的 FileHook 实例if err!= nil {// Levels 钩子关心的日志级别// Fire 当日志事件触发时被调用if err!= nil {return errreturn nil// 初始化日志// 创建并添加 FileHook} else {原创 2024-05-23 19:15:33 · 1167 阅读 · 0 评论 -
Go 秒读32GB大文件
在Go中,处理大文件时,一般采用分块读取的方式,以避免一次性加载整个文件到内存中。使用os.Open打开文件使用file.Stat获取文件的基本信息,包括文件大小为了提高读取效率,使用合适大小的缓冲区使用file.Read循环读取文件内容。原创 2024-05-22 17:54:06 · 372 阅读 · 0 评论 -
Go 实现程序优雅退出
在Go语言中,实现程序的优雅退出是一项重要的任务,特别是在涉及到HTTP服务器、gRPC服务器、以及其他后台工作的情况下。原创 2024-05-21 19:14:30 · 469 阅读 · 0 评论 -
Go 生成UUID唯一标识
因为使用了随机性,理论上只要随机数生成器是真随机的,生成的UUID就有极高的概率是唯一的。这是最常用的版本,尤其是在不需要基于时间或硬件特征的情况下。由于时间戳确保了随时间的递增,而MAC地址理论上是全球唯一的,两者的组合通常能确保UUID的唯一性。只要命名空间和名字的组合是唯一的,生成的UUID也是唯一的。这依赖于输入数据的唯一性。UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。这也需要命名空间和名字的唯一性来保证UUID的唯一性。原创 2024-05-21 18:04:29 · 608 阅读 · 0 评论 -
Go 使用bcrypt实现密码加密和和校验
在Go语言中,使用bcrypt算法进行密码的加密和校验是一种常见的做法,因为bcrypt算法可以提供强大的密码安全性。原创 2024-05-21 16:36:19 · 315 阅读 · 0 评论 -
Go 图像处理
Golang中的image包提供了基本的图像类型、颜色模型、以及用于处理图像的各种函数和接口。原创 2024-05-17 17:19:56 · 266 阅读 · 0 评论 -
Go Excel的处理
Excelize 是一个强大的库,支持复杂的Excel操作,包括样式、图片等。首先,确保你已经安装了Excelize库。对于简单的Excel导出需求,原创 2024-05-17 16:57:07 · 178 阅读 · 0 评论 -
Go 发送邮件的两种方式
【代码】Go 发送邮件的两种方式。原创 2024-05-17 16:42:10 · 183 阅读 · 0 评论 -
Go 反射 reflect
Go 语言的reflect包是一个非常强大的工具,它允许程序在运行时检查和处理其他对象的结构。使用reflect,你可以获取类型的信息,调用方法,以及读写结构体字段,即使这些信息在编译时是未知的。原创 2024-05-14 19:21:08 · 319 阅读 · 0 评论 -
Go 面向对象OOP思想
方法可以重名,只需要调用者不同如果调用者相同则不可重名func (方法调用者)(方法名)(){}原创 2024-05-14 18:50:52 · 466 阅读 · 0 评论 -
Go 处理错误&异常
在Go语言中错误和异常是两个完全不同的概念,错误指的是可能出现问题的地方出现了问题,而异常指的是不该出现问题的地方出现了问题从Go语言的机制上讲错误和异常就是error 和panic的区别错误(Error):程序中预期会发生的错误,预料之中异常(Panic):不该出现问题的地方出现了问题,预料之外错误是业务的一部分,而异常不是,异常是我们不想要的在自定义错误中,只需要定义结构体来实现Error()方法即可 异常(Panic)Go语言中没有try...catch语句,如果需要处理异常则需要使用pan原创 2024-05-14 16:28:52 · 338 阅读 · 0 评论 -
Go 语言IO操作(文件&文件内容增、删、改、查、复制。。。)
O_RDONLY: 以只读方式打开文件。文件指针可定位于文件的任意位置。当尝试写入时,会返回错误。O_WRONLY: 以只写方式打开文件。即使文件已存在,它也会被截断为零长度,除非同时使用了O_APPEND标志。文件指针总是在文件的开始位置。O_RDWR: 以读写方式打开文件。文件指针可定位于文件的任意位置。同时具有读写能力。O_APPEND: 设置文件指针于文件末尾。所有写入操作都会在文件末尾添加数据,而不是覆盖现有内容。O_CREATE: 如果文件不存在,则创建一个新文件。与O_TRUNC。原创 2024-05-14 16:07:19 · 1063 阅读 · 0 评论 -
Go 阻塞
在Go语言中,阻塞通常指的是一个goroutine(轻量级线程)在等待另一个goroutine完成操作(如I/O操作、channel通信等)时,暂时停止执行的现象。Go语言提供了多种同步和通信机制,可以用于实现阻塞的效果。原创 2024-05-11 18:17:06 · 644 阅读 · 1 评论 -
Go 一个类型转换工具包strconv包
Go 语言的strconv包提供了用于基本数据类型之间转换的函数,包括字符串到其他基本类型的转换,以及其他基本类型到字符串的转换。原创 2024-05-11 16:53:19 · 327 阅读 · 1 评论 -
Go 处理错误
import ("fmt"// 实现了Error的接口e = MyError("自定义的错误")原创 2024-05-11 16:15:47 · 307 阅读 · 1 评论 -
在Go语言中,可以这样使用Json
实现该接口的对象需要将自己的数据打包和解包。如果实现了该接口,json在打包解包时则会调用自定义的方法,不再对该对象进行其他处理。原创 2024-05-10 19:15:06 · 894 阅读 · 0 评论 -
Go md5加密&SHA-256&SHA-3
Go Packages - Go Packages原创 2024-04-30 11:51:15 · 73 阅读 · 1 评论 -
Go 并发与并行的理解
在Go语言(Golang)中,(Concurrency)和(Parallelism)是两个既有联系又有所区别的概念。原创 2024-04-30 11:45:55 · 315 阅读 · 1 评论 -
Go 日期时间操作
【代码】Go 日期时间操作。原创 2024-04-30 10:50:23 · 65 阅读 · 1 评论 -
Go 定时任务
【代码】Go定时任务。原创 2024-04-25 11:36:08 · 126 阅读 · 0 评论