![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 65
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
-
快速学Go依赖注入工具wire
Wire是代码依赖工具,它没有采用反射机制或运行时状态,使用Wire可以有效避免手动编写硬代码依赖。原创 2023-05-21 20:55:58 · 1640 阅读 · 0 评论 -
Golang实现简单WebSocket服务
我们每天接触到各类应用,如社交、在线文档、直播等,后端都需要使用WebSocket技术提供实时通信能力。本文介绍如何使用Golang实现实时后端WebSocket服务,首先使用Gin框架搭建http服务,然后使用库实现简单后端WebSocket服务,示例实现从0到1的过程,适合初学者快速入门。原创 2023-05-18 21:29:44 · 2596 阅读 · 0 评论 -
使用gopsutil获取OS信息
psutil (process and system utilities)是Python实现的跨平台库,用于获取进程和系统信息工具(CPU, memory, disk, network, sensors),gopsutil是Go语言实现版本。gopsutil屏蔽了不同系统的差异,有良好的可移植性。另外,通过移植C结构体至Go,gopsutil没有cgo代码,跨平台编译更容易。原创 2023-04-29 18:08:05 · 1671 阅读 · 0 评论 -
Golang实现更安全的HTTP基本认证(Basic Authentication)
本文介绍了Go如何实现安全http基本认证,首先介绍原理,后面给出详细实现过程,最后通过curl和GO http客户端进行验证。详细内容参考:https://www.alexedwards.net/blog/basic-authentication-in-go。原创 2023-04-10 18:00:14 · 2955 阅读 · 2 评论 -
Golang1.18新特性介绍——泛型
泛型可以让更通用,无需给参数或返回值显示指定特定类型,如,写函数或结构体时,无需具体指定值的类型。具体值类型之后传入,从而避免大量冗余模板代码。泛型的目标就是消除模板代码。举例:反转数组函数无需知道数组元素类型,但如果不采用泛型则不能保障类型安全,或给每个具体类型重试实现同样逻辑,增加维护成本。原创 2023-03-27 22:10:20 · 1728 阅读 · 0 评论 -
Golang 操作TSV文件实战教程
本文介绍TSV文件类型及其应用,同时介绍Golang语句读取TSV文件并转为struct的实现过程。原创 2023-03-19 19:24:53 · 821 阅读 · 0 评论 -
Golang httptest实战教程
本文介绍httptest包,可以很方便测试http服务端处理逻辑,以及模拟http服务端测试客户端请求逻辑。由于很方面模拟,从而可以把一组参数和期望值进行组合,循环进行测试并对比结果,可以极大地提升测试效率。原创 2023-03-14 15:20:11 · 798 阅读 · 0 评论 -
Golang 实现http协议的心跳检测程序
本文介绍如何使用Golang实现心跳程序。实现心跳程序,其他应用可以简单集成。客户端程序通过HTTP协议进行检测,返回当前程序状态、版本ID以及已运行时间。原创 2023-03-12 15:40:46 · 1805 阅读 · 1 评论 -
Golang编译选项(ldflags)有趣应用
本文介绍了git提交日志,如何在构建时给Go程序增加信息,如GIT提交日志、编译时间等信息。最后还顺便介绍了压缩可执行文件的选项。原创 2023-03-11 17:09:06 · 1793 阅读 · 2 评论 -
Golang使用gob序列化结构体教程
gob流是自描述的,这意味着我们不需要创建单独的文件来解释(使用protobuff格式需要创建文件)gob流中的每个数据项之前都有其类型说明(一些预定义的类型)原创 2023-02-28 16:30:51 · 1377 阅读 · 0 评论 -
Golang 处理parquet文件实战教程
Parquet是Apache基金会支持的项目,是面向列存储二进制文件格式。支持不同类型的压缩方式,广泛用于数据科学和大数据环境,如Hadoop生态。本文主要介绍Go如何生成和处理parquet文件。原创 2023-02-27 18:17:25 · 1899 阅读 · 1 评论 -
利用Golang pipe实现远程交互
pipe实现从一个进程重定向至另一个进程,它是双向数据通道,用于实现进行间通信。go version本文介绍了Golang管道的使用,除了实现远程命令交互,还介绍了获取标准输入内容、判断标准输入数据来源。读者组合这些简单示例,一定能够编写出炫酷的应用。原创 2023-02-23 10:37:51 · 1252 阅读 · 0 评论 -
Golang实现ttl机制保存内存数据
本文解释Golang如果实现ttl机制在内存存储自动失效数据。首先介绍时间戳原理,然后定义数据结构,并简单实现Set、Get、Del方法实现了ttl机制。未来再增加序列化功能:保存和恢复。参考实现:https://github.com/leprosus/golang-ttl-map。原创 2023-02-19 21:06:02 · 839 阅读 · 0 评论 -
Golang基于文件魔数判断文件类型
本文介绍了基于文件魔数判断文件类型的方法,主要涉及如何ReadSeek读取文件指定字节内容,然后介绍文件魔数,最后给出示例基于魔数判断文件类型。参考代码:https://github.com/telkomdev/go-filesig。原创 2023-02-16 21:23:56 · 1360 阅读 · 1 评论 -
RSA公钥加密机制跨语言应用实战
RSA, 即 Rivest–Shamir–Adleman,是非对称加密算法。不同于对称加密算法(如AES、DES),它需要两个密钥,公钥可共享给任何人,用于加密信息;私钥仅我们自己保存,用于解密数据。X.509 是定义公钥证书格式的标准,用于描述公钥及其他信息。PKCS8 是存储私钥的标准。为了安全起见,可以使用对称加密算法对私钥再次进行加密。该标准不仅可以处理RSA私钥,还可以处理其他算法。PKCS8私钥通常通过PEM编码格式进行交换。原创 2023-02-12 20:12:46 · 1451 阅读 · 0 评论 -
基于Golang哈希算法监控配置文件变化
数据加密算法规范非常复杂,在大多数应用场景中需要广泛研究。但Golang提供了专门的库,实现了许多流行的加密算法。本文演示了如何使用对配置文件进行监控,变化则重新加载配置文件。原创 2023-02-11 20:03:40 · 1014 阅读 · 1 评论 -
Golang实现AES对称加密算法示例教程
本文介绍Go如何实现对称加密,包括生成随机字符,Base64编码和解码,实现AES加密和解密,注意使用了内置的模块。原创 2023-02-09 22:12:51 · 3982 阅读 · 1 评论 -
拦截信号优雅关闭Golang应用
本文介绍了信号的概念及常用信号,并给出了应用广泛的几个示例,例如优雅地关闭应用服务、在命令行应用中接收终止命令。原创 2023-01-31 09:45:58 · 1931 阅读 · 7 评论 -
Golang 插件开发入门教程
plugin包给编写复杂Go应用提供了很好的机制,通常编程接口很简单,插件可以基于接口有不同复杂实现。应用动态加载插件,让程序更灵活、易扩展。原创 2023-01-30 19:51:15 · 1767 阅读 · 0 评论 -
Golang filepath包常用方法介绍
本文介绍与文件路径相关包,该工具包位于path/filepath中,该包试图与目标操作系统定义的文件路径兼容。本文介绍一些常用函数,如获取文件绝对路径,获取文件名或目录名、遍历文件、分割文件路径、文件名模式匹配等函数,并给具体示例进行说明。原创 2023-01-29 17:43:14 · 3260 阅读 · 0 评论 -
Golang使用cron调度定时任务
cron v3是非常流行的包,它实现了cron规范,包括解析器和执行器。我们利用它调度任务在特定时间间隔执行。因为使用Go Modules,需要Go 1.11以上版本。v3版本是最新版本,修复之前版本的大量bug。cron表达式Field nameMandatorySecondsYes0-59* / , -MinutesYes0-59* / , -HoursYes0-23* / , -Yes1-31* / , -?原创 2023-01-28 20:19:13 · 2672 阅读 · 2 评论 -
利用Golang可选参数实现可选模式
Floors intconst (return hHouse可能采用不同材料,有多层,并可能包括壁炉。NewHouse构造函数返回House指针,所有属性包括缺省值。正常情况下,首先构造House,然后根据不同需求修改属性值。使用函数可选参数,可以给构造函数传入一组修改器函数。首先定义函数类型,接受House这是可选函数的签名,下面定义一些可选函数用于修改*House上面每个函数是可选构造函数,返回另一个函数,带*House参数,没有返回值。我们看到返回的函数修改了*House实例的属性。原创 2023-01-26 13:19:57 · 1401 阅读 · 0 评论 -
Golang应用执行Shell命令实战教程
代替使用os.Stdout,还能通过实现io.Writer接口创建自定义写输出。再次运行程序,会获得下面的输出。到目前为止,我们已经学习了多种执行unix shell命令和与之交互的方法。当您希望执行通常不提供太多输出的简单命令时使用cmd.Output对于具有连续或长时间输出的函数应使用cmd.Run,并通过cmd.Stdout和cmd.Stdin与之交互在生产场景中,如果进程在给定时间内没有响应,须有超时并结束功能,可以使用取消上下文发送终止命令。原创 2023-01-25 21:05:31 · 4146 阅读 · 0 评论 -
Golang创建构造函数最佳实践
如果属性需要设置默认值或进行初始化,自定义构造函数可能会很有用。slices: 6,通过使用构造函数可以自定义实例创建过程:给字段设置缺省值,当然还可以利用可选参数方式给不同属性设置默认值。还可以执行合理性检查,如toppings是否为nil并初始化。可以利用make或new构造一些数据类型并更好控制内存和容量。原创 2023-01-19 15:43:57 · 2053 阅读 · 0 评论 -
深入理解Golang Unix域socket通信
unix域socket和网络socket在安全性方面有差异。unix域比网络更安全,因为它不需要对外暴露给网络,进行在同一台服务器上的进程间通信。unix域仅使用文件系统权限去控制访问,指定用户和组创建socket文件并仅有权限的用户和组才能访问进程。这意味着仅收取进程能连接至socket和交互数据。相反,网络socket暴露在网络上并任何机器都可以连接并访问,很容易受到恶意用户(如黑客和恶意软件)的攻击。网络socket使用tcp/udp协议,这些协议有他们自己安全机制,如加密和认证。原创 2023-01-17 16:35:10 · 3328 阅读 · 0 评论 -
Golang Makefile实战教程
Golang是开发大型项目的流行语言。较大的项目会有多人协作,并且需要持续的自动化构建。通过自动化开发、测试和发布等任务来简化构建过程,会带来更快、更可靠、更简单的开发体验。原创 2023-01-04 22:15:36 · 1895 阅读 · 4 评论 -
Golang 构造最佳随机密码
为了保护系统或数据安全,我们需要最佳随机密码。这里使用unix系统定义的文件设备,从中获取随机数生成器的种子。原创 2022-12-30 11:42:31 · 1647 阅读 · 6 评论 -
Golang Context 的几种应用场景
Golang context主要用于定义超时取消,取消后续操作,在不同操作中传递值。本文通过简单易懂的示例进行说明。原创 2022-12-27 17:00:24 · 992 阅读 · 0 评论 -
Golang 构建解析URL对象
net/url包用于帮助维护和解析URL对象,URL结构包括必要字段,使用其String方法可以生成url的字符串形式。当需要在字符串形式的url中增加额外操作时,使用Parse函数把字符串转为URL结构类型,从而方便修改。在很多场景中,通过好用的工具操作URL对象比拼接字符串要方便的多。Go标准库提供了维护URL工具,本文通过示例介绍其主要功能。原创 2022-12-26 17:26:10 · 675 阅读 · 0 评论 -
在Golang应用中嵌入资源文件
在应用程序中附带代码以外的其他资源可能会很有用,常用的实现方法是嵌入对象或数据。在数据库中存储数据应用中,需要定义schema,在应用启动时创建表,但如果找不到schema文件呢?Go1.16提供embed包让实现变得简单,之前很多第三方包实现类似功能。原创 2022-12-25 20:32:47 · 764 阅读 · 0 评论 -
更好用的Go同步并发任务实现
因为协程任务可能会返回错误,要捕获错误通常需要适用channel同步消息。本文介绍来自Golang team的非官方包errgroup,相对sync.WaitGroup更好用,errgroup不仅可以并发地运行许多goroutine,还可以在管道中串行地运行它们,在进行下一个任务之前检查每个任务的错误。,我们看到g.Go()的参数是能返回错误的函数。如果没错返回nil,反之返回error,当有错时整个执行结束并给向同步函数抛出错误。该实例模拟使用group同步单个并行任务,使用上下文和错误处理。原创 2022-12-23 14:12:43 · 210 阅读 · 0 评论 -
Golang合并yaml文件配置信息
当前有趋势使用环境变量代替配置文件,主要是为了方便容器部署,因为文件需要额外文件权限。但环境变量也有缺点,如长度和因数量太多造成的复杂性,另外嵌套也很难实现,此时配置文件则更合适。本文就介绍Golang读写配置文件,以及合并配置获得最终配置信息。原创 2022-12-17 22:23:09 · 696 阅读 · 0 评论 -
获取Golang环境变量的三种方式
本文介绍了使用viper,godotenv 和 os包操作环境变量,同时提供相应的示例,希望对你有帮助。原创 2022-12-16 21:30:27 · 5218 阅读 · 0 评论 -
Golang 生成压缩文件教程
与其他语言一样,内置标准库默认支持文件压缩功能。本文介绍Golang如何创建压缩文件,增加一个或多个文件生成压缩文件。也可以在压缩文件中创建文件夹,用于对文件进行分类管理。Golang标准库提供了创建和读取压缩文件功能。原创 2022-12-15 17:20:23 · 1588 阅读 · 0 评论 -
Golang函数式编程实例教程
首先定义用于测试的结构体WorkWith}// 基于判断函数过滤集合,返回符合条件的集合元素}}}// 基于转换函数转换集合元素,返回集合的元素为转换后的元素// length}}原创 2022-12-14 17:42:47 · 255 阅读 · 0 评论 -
快速学习Golang 泛型
本文是关于Go泛型的,因为泛型是Golang的新成员。通过对比带泛型和不带泛型的函数,泛型可以很明显地节省时间和精力。泛型不是接口的替代品,两者被设计为一起工作,避免重复代码,让Go类型更安全、代码更整洁。原创 2022-12-11 15:39:35 · 1208 阅读 · 0 评论 -
快速学习 Golang RPC 教程
Remote Procedure Call (RPC) 是一种使用TCP协议从另一个系统调用应用程序功能执行的方法。Go有原生支持RPC服务器实现,本文通过简单实例介绍RPC的实现过程。原创 2022-12-10 22:10:00 · 930 阅读 · 0 评论 -
快速掌握Golang单元测试与断言教程
Go 在testing包中内置测试命令go test,提供了最小化但完整的测试体验。标准工具链还包括基准测试和基于代码覆盖的语句,类似于NCover(.NET)或Istanbul(Node.js)。本文详细讲解go编写单元测试的过程,包括性能测试及测试工具的使用,另外还介绍第三方断言库的使用。原创 2022-11-29 17:16:19 · 1921 阅读 · 1 评论 -
Golang 错误处理机制详解
本文介绍Golang错误处理机制,包括不同类型错误处理、定义运行时错误等内容。原创 2022-11-28 21:52:21 · 1377 阅读 · 0 评论 -
认识Golang的字符(char)类型
Golang 没有char类型,但可以通过byte、rune、string类型实现类似功能。本文详细说明几种类型之间的差异。原创 2022-11-27 17:20:15 · 3295 阅读 · 0 评论